Index: media/cast/sender/video_sender.cc |
diff --git a/media/cast/sender/video_sender.cc b/media/cast/sender/video_sender.cc |
index e47fafa6a8f658647dcfb1e90974289e1b60542b..9f8b6f9bd2e0f9c7eaf49019d46c219e930f72e5 100644 |
--- a/media/cast/sender/video_sender.cc |
+++ b/media/cast/sender/video_sender.cc |
@@ -40,6 +40,7 @@ VideoSender::VideoSender( |
video_config.target_playout_delay, |
NewFixedCongestionControl( |
(video_config.min_bitrate + video_config.max_bitrate) / 2)), |
+ frames_in_encoder_(0), |
last_bitrate_(0), |
weak_factory_(this) { |
cast_initialization_status_ = STATUS_VIDEO_UNINITIALIZED; |
@@ -126,7 +127,7 @@ void VideoSender::InsertRawVideoFrame( |
if (video_encoder_->EncodeVideoFrame( |
video_frame, |
capture_time, |
- base::Bind(&FrameSender::SendEncodedFrame, |
+ base::Bind(&VideoSender::OnEncodedVideoFrame, |
weak_factory_.GetWeakPtr(), |
bitrate))) { |
frames_in_encoder_++; |
@@ -135,9 +136,24 @@ void VideoSender::InsertRawVideoFrame( |
} |
} |
+int VideoSender::GetNumberOfFramesInEncoder() const { |
+ return frames_in_encoder_; |
+} |
+ |
void VideoSender::OnAck(uint32 frame_id) { |
video_encoder_->LatestFrameIdToReference(frame_id); |
} |
+void VideoSender::OnEncodedVideoFrame( |
+ int encoder_bitrate, |
+ scoped_ptr<EncodedFrame> encoded_frame) { |
+ DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); |
+ |
+ frames_in_encoder_--; |
+ DCHECK_GE(frames_in_encoder_, 0); |
+ |
+ SendEncodedFrame(encoder_bitrate, encoded_frame.Pass()); |
+} |
+ |
} // namespace cast |
} // namespace media |