Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(847)

Side by Side Diff: media/cast/video_sender/video_sender.cc

Issue 270493003: Cast: Deduplicate event types in cast library. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/cast/video_sender/video_sender.h" 5 #include "media/cast/video_sender/video_sender.h"
6 6
7 #include <cstring> 7 #include <cstring>
8 #include <list> 8 #include <list>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 rtcp_.reset( 99 rtcp_.reset(
100 new Rtcp(cast_environment_, 100 new Rtcp(cast_environment_,
101 rtcp_feedback_.get(), 101 rtcp_feedback_.get(),
102 transport_sender_, 102 transport_sender_,
103 NULL, // paced sender. 103 NULL, // paced sender.
104 NULL, 104 NULL,
105 video_config.rtcp_mode, 105 video_config.rtcp_mode,
106 base::TimeDelta::FromMilliseconds(video_config.rtcp_interval), 106 base::TimeDelta::FromMilliseconds(video_config.rtcp_interval),
107 video_config.rtp_config.ssrc, 107 video_config.rtp_config.ssrc,
108 video_config.incoming_feedback_ssrc, 108 video_config.incoming_feedback_ssrc,
109 video_config.rtcp_c_name)); 109 video_config.rtcp_c_name,
110 false));
110 rtcp_->SetCastReceiverEventHistorySize(kReceiverRtcpEventHistorySize); 111 rtcp_->SetCastReceiverEventHistorySize(kReceiverRtcpEventHistorySize);
111 112
112 // TODO(pwestin): pass cast_initialization_cb to |video_encoder_| 113 // TODO(pwestin): pass cast_initialization_cb to |video_encoder_|
113 // and remove this call. 114 // and remove this call.
114 cast_environment_->PostTask( 115 cast_environment_->PostTask(
115 CastEnvironment::MAIN, 116 CastEnvironment::MAIN,
116 FROM_HERE, 117 FROM_HERE,
117 base::Bind(cast_initialization_cb, STATUS_VIDEO_INITIALIZED)); 118 base::Bind(cast_initialization_cb, STATUS_VIDEO_INITIALIZED));
118 cast_environment_->Logging()->AddRawEventSubscriber(&event_subscriber_); 119 cast_environment_->Logging()->AddRawEventSubscriber(&event_subscriber_);
119 120
(...skipping 17 matching lines...) Expand all
137 } 138 }
138 139
139 void VideoSender::InsertRawVideoFrame( 140 void VideoSender::InsertRawVideoFrame(
140 const scoped_refptr<media::VideoFrame>& video_frame, 141 const scoped_refptr<media::VideoFrame>& video_frame,
141 const base::TimeTicks& capture_time) { 142 const base::TimeTicks& capture_time) {
142 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 143 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
143 DCHECK(video_encoder_.get()) << "Invalid state"; 144 DCHECK(video_encoder_.get()) << "Invalid state";
144 145
145 RtpTimestamp rtp_timestamp = GetVideoRtpTimestamp(capture_time); 146 RtpTimestamp rtp_timestamp = GetVideoRtpTimestamp(capture_time);
146 cast_environment_->Logging()->InsertFrameEvent( 147 cast_environment_->Logging()->InsertFrameEvent(
147 capture_time, kVideoFrameCaptureBegin, rtp_timestamp, kFrameIdUnknown); 148 capture_time, FRAME_CAPTURE_BEGIN, VIDEO_EVENT,
149 rtp_timestamp, kFrameIdUnknown);
148 cast_environment_->Logging()->InsertFrameEvent( 150 cast_environment_->Logging()->InsertFrameEvent(
149 cast_environment_->Clock()->NowTicks(), 151 cast_environment_->Clock()->NowTicks(),
150 kVideoFrameCaptureEnd, 152 FRAME_CAPTURE_END, VIDEO_EVENT,
151 rtp_timestamp, 153 rtp_timestamp,
152 kFrameIdUnknown); 154 kFrameIdUnknown);
153 155
154 // Used by chrome/browser/extension/api/cast_streaming/performance_test.cc 156 // Used by chrome/browser/extension/api/cast_streaming/performance_test.cc
155 TRACE_EVENT_INSTANT2( 157 TRACE_EVENT_INSTANT2(
156 "cast_perf_test", "InsertRawVideoFrame", 158 "cast_perf_test", "InsertRawVideoFrame",
157 TRACE_EVENT_SCOPE_THREAD, 159 TRACE_EVENT_SCOPE_THREAD,
158 "timestamp", capture_time.ToInternalValue(), 160 "timestamp", capture_time.ToInternalValue(),
159 "rtp_timestamp", GetVideoRtpTimestamp(capture_time)); 161 "rtp_timestamp", GetVideoRtpTimestamp(capture_time));
160 162
(...skipping 14 matching lines...) Expand all
175 last_send_time_ = cast_environment_->Clock()->NowTicks(); 177 last_send_time_ = cast_environment_->Clock()->NowTicks();
176 if (encoded_frame->key_frame) { 178 if (encoded_frame->key_frame) {
177 VLOG(1) << "Send encoded key frame; frame_id:" 179 VLOG(1) << "Send encoded key frame; frame_id:"
178 << static_cast<int>(encoded_frame->frame_id); 180 << static_cast<int>(encoded_frame->frame_id);
179 } 181 }
180 182
181 DCHECK_GT(frames_in_encoder_, 0); 183 DCHECK_GT(frames_in_encoder_, 0);
182 frames_in_encoder_--; 184 frames_in_encoder_--;
183 uint32 frame_id = encoded_frame->frame_id; 185 uint32 frame_id = encoded_frame->frame_id;
184 cast_environment_->Logging()->InsertEncodedFrameEvent( 186 cast_environment_->Logging()->InsertEncodedFrameEvent(
185 last_send_time_, kVideoFrameEncoded, encoded_frame->rtp_timestamp, 187 last_send_time_, FRAME_ENCODED, VIDEO_EVENT, encoded_frame->rtp_timestamp,
186 frame_id, static_cast<int>(encoded_frame->data.size()), 188 frame_id, static_cast<int>(encoded_frame->data.size()),
187 encoded_frame->key_frame, current_requested_bitrate_); 189 encoded_frame->key_frame, current_requested_bitrate_);
188 190
189 // Used by chrome/browser/extension/api/cast_streaming/performance_test.cc 191 // Used by chrome/browser/extension/api/cast_streaming/performance_test.cc
190 TRACE_EVENT_INSTANT1( 192 TRACE_EVENT_INSTANT1(
191 "cast_perf_test", "VideoFrameEncoded", 193 "cast_perf_test", "VideoFrameEncoded",
192 TRACE_EVENT_SCOPE_THREAD, 194 TRACE_EVENT_SCOPE_THREAD,
193 "rtp_timestamp", GetVideoRtpTimestamp(capture_time)); 195 "rtp_timestamp", GetVideoRtpTimestamp(capture_time));
194 196
195 // Only use lowest 8 bits as key. 197 // Only use lowest 8 bits as key.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 void VideoSender::SendRtcpReport() { 233 void VideoSender::SendRtcpReport() {
232 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 234 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
233 235
234 transport::RtcpSenderLogMessage sender_log_message; 236 transport::RtcpSenderLogMessage sender_log_message;
235 RtcpEventMap rtcp_events; 237 RtcpEventMap rtcp_events;
236 event_subscriber_.GetRtcpEventsAndReset(&rtcp_events); 238 event_subscriber_.GetRtcpEventsAndReset(&rtcp_events);
237 239
238 for (RtcpEventMap::iterator it = rtcp_events.begin(); it != rtcp_events.end(); 240 for (RtcpEventMap::iterator it = rtcp_events.begin(); it != rtcp_events.end();
239 ++it) { 241 ++it) {
240 CastLoggingEvent event_type = it->second.type; 242 CastLoggingEvent event_type = it->second.type;
241 if (event_type == kVideoFrameCaptureBegin || 243 if (event_type == FRAME_CAPTURE_BEGIN ||
242 event_type == kVideoFrameSentToEncoder || 244 event_type == FRAME_ENCODED) {
243 event_type == kVideoFrameEncoded) {
244 transport::RtcpSenderFrameLogMessage frame_message; 245 transport::RtcpSenderFrameLogMessage frame_message;
245 frame_message.rtp_timestamp = it->first; 246 frame_message.rtp_timestamp = it->first;
246 switch (event_type) { 247 switch (event_type) {
247 case kVideoFrameCaptureBegin: 248 case FRAME_CAPTURE_BEGIN:
248 frame_message.frame_status = 249 frame_message.frame_status =
249 transport::kRtcpSenderFrameStatusDroppedByFlowControl; 250 transport::kRtcpSenderFrameStatusDroppedByFlowControl;
250 break; 251 break;
251 case kVideoFrameSentToEncoder: 252 case FRAME_ENCODED:
252 frame_message.frame_status =
253 transport::kRtcpSenderFrameStatusDroppedByEncoder;
254 break;
255 case kVideoFrameEncoded:
256 frame_message.frame_status = 253 frame_message.frame_status =
257 transport::kRtcpSenderFrameStatusSentToNetwork; 254 transport::kRtcpSenderFrameStatusSentToNetwork;
258 break; 255 break;
259 default: 256 default:
260 NOTREACHED(); 257 NOTREACHED();
261 break; 258 break;
262 } 259 }
263 sender_log_message.push_back(frame_message); 260 sender_log_message.push_back(frame_message);
264 } else { 261 } else {
265 // This shouldn't happen because RtcpEventMap isn't supposed to contain 262 // This shouldn't happen because RtcpEventMap isn't supposed to contain
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 // after establishing that the receiver is active. 423 // after establishing that the receiver is active.
427 if (last_acked_frame_id_ == -1) { 424 if (last_acked_frame_id_ == -1) {
428 ScheduleNextRtcpReport(); 425 ScheduleNextRtcpReport();
429 } 426 }
430 last_acked_frame_id_ = static_cast<int>(acked_frame_id); 427 last_acked_frame_id_ = static_cast<int>(acked_frame_id);
431 base::TimeTicks now = cast_environment_->Clock()->NowTicks(); 428 base::TimeTicks now = cast_environment_->Clock()->NowTicks();
432 429
433 RtpTimestamp rtp_timestamp = 430 RtpTimestamp rtp_timestamp =
434 frame_id_to_rtp_timestamp_[acked_frame_id & 0xff]; 431 frame_id_to_rtp_timestamp_[acked_frame_id & 0xff];
435 cast_environment_->Logging()->InsertFrameEvent( 432 cast_environment_->Logging()->InsertFrameEvent(
436 now, kVideoAckReceived, rtp_timestamp, acked_frame_id); 433 now, FRAME_ACK_RECEIVED, VIDEO_EVENT, rtp_timestamp, acked_frame_id);
437 434
438 VLOG(2) << "ReceivedAck:" << static_cast<int>(acked_frame_id); 435 VLOG(2) << "ReceivedAck:" << static_cast<int>(acked_frame_id);
439 active_session_ = true; 436 active_session_ = true;
440 DCHECK_NE(-1, last_acked_frame_id_); 437 DCHECK_NE(-1, last_acked_frame_id_);
441 UpdateFramesInFlight(); 438 UpdateFramesInFlight();
442 } 439 }
443 440
444 void VideoSender::UpdateFramesInFlight() { 441 void VideoSender::UpdateFramesInFlight() {
445 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 442 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
446 if (last_sent_frame_id_ != -1) { 443 if (last_sent_frame_id_ != -1) {
(...skipping 24 matching lines...) Expand all
471 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 468 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
472 MissingFramesAndPacketsMap missing_frames_and_packets; 469 MissingFramesAndPacketsMap missing_frames_and_packets;
473 PacketIdSet missing; 470 PacketIdSet missing;
474 missing_frames_and_packets.insert(std::make_pair(resend_frame_id, missing)); 471 missing_frames_and_packets.insert(std::make_pair(resend_frame_id, missing));
475 last_send_time_ = cast_environment_->Clock()->NowTicks(); 472 last_send_time_ = cast_environment_->Clock()->NowTicks();
476 transport_sender_->ResendPackets(false, missing_frames_and_packets); 473 transport_sender_->ResendPackets(false, missing_frames_and_packets);
477 } 474 }
478 475
479 } // namespace cast 476 } // namespace cast
480 } // namespace media 477 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/video_sender/external_video_encoder.cc ('k') | media/cast/video_sender/video_sender_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698