Index: media/cast/sender/video_sender.cc |
diff --git a/media/cast/sender/video_sender.cc b/media/cast/sender/video_sender.cc |
index 0e9b72fed19b0f58003951d66073053c53d36b24..096e0421607b946aad99cd1e50df30bdd1d54c3e 100644 |
--- a/media/cast/sender/video_sender.cc |
+++ b/media/cast/sender/video_sender.cc |
@@ -186,6 +186,14 @@ void VideoSender::InsertRawVideoFrame( |
VLOG(1) << "New target delay: " << new_target_delay.InMilliseconds(); |
playout_delay_change_cb_.Run(new_target_delay); |
} |
+ |
+ // Some encoder implementations have a frame window for analysis. Since we |
+ // are dropping this frame, unless we instruct the encoder to flush all the |
+ // frames that have been enqueued for encoding, frames_in_encoder_ and |
+ // last_enqueued_frame_reference_time_ will never be updated and we will |
+ // drop every subsequent frame for the rest of the session. |
+ video_encoder_->EmitFrames(); |
+ |
return; |
} |