Index: media/cast/video_sender/video_sender.cc |
diff --git a/media/cast/video_sender/video_sender.cc b/media/cast/video_sender/video_sender.cc |
index 153b579a6960c52b3fc5f7c785503b2546810f50..af036d116a5a948b1aba7110d2bb5bed118fef1b 100644 |
--- a/media/cast/video_sender/video_sender.cc |
+++ b/media/cast/video_sender/video_sender.cc |
@@ -50,7 +50,7 @@ VideoSender::VideoSender( |
max_frame_rate_(video_config.max_frame_rate), |
cast_environment_(cast_environment), |
transport_sender_(transport_sender), |
- rtp_stats_(kVideoFrequency), |
+ rtp_timestamp_helper_(kVideoFrequency), |
rtcp_feedback_(new LocalRtcpVideoSenderFeedback(this)), |
last_acked_frame_id_(-1), |
last_sent_frame_id_(-1), |
@@ -112,9 +112,6 @@ VideoSender::VideoSender( |
base::Bind(cast_initialization_cb, STATUS_VIDEO_INITIALIZED)); |
memset(frame_id_to_rtp_timestamp_, 0, sizeof(frame_id_to_rtp_timestamp_)); |
- |
- transport_sender_->SubscribeVideoRtpStatsCallback( |
- base::Bind(&VideoSender::StoreStatistics, weak_factory_.GetWeakPtr())); |
} |
VideoSender::~VideoSender() { |
@@ -191,6 +188,8 @@ void VideoSender::SendEncodedVideoFrameMainThread( |
frame_id_to_rtp_timestamp_[frame_id & 0xff] = encoded_frame->rtp_timestamp; |
last_sent_frame_id_ = static_cast<int>(encoded_frame->frame_id); |
+ rtp_timestamp_helper_.StoreLatestTime(capture_time, |
+ encoded_frame->rtp_timestamp); |
transport_sender_->InsertCodedVideoFrame(encoded_frame.get(), capture_time); |
UpdateFramesInFlight(); |
InitializeTimers(); |
@@ -216,18 +215,14 @@ void VideoSender::ScheduleNextRtcpReport() { |
time_to_next); |
} |
-void VideoSender::StoreStatistics( |
- const transport::RtcpSenderInfo& sender_info, |
- base::TimeTicks time_sent, |
- uint32 rtp_timestamp) { |
- rtp_stats_.Store(sender_info, time_sent, rtp_timestamp); |
-} |
- |
void VideoSender::SendRtcpReport() { |
DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); |
- |
- rtp_stats_.UpdateInfo(cast_environment_->Clock()->NowTicks()); |
- rtcp_->SendRtcpFromRtpSender(rtp_stats_.sender_info()); |
+ const base::TimeTicks now = cast_environment_->Clock()->NowTicks(); |
+ uint32 now_as_rtp_timestamp = 0; |
+ if (rtp_timestamp_helper_.GetCurrentTimeAsRtpTimestamp( |
+ now, &now_as_rtp_timestamp)) { |
+ rtcp_->SendRtcpFromRtpSender(now, now_as_rtp_timestamp); |
+ } |
ScheduleNextRtcpReport(); |
} |