Index: content/renderer/media/capture_video_decoder.cc |
=================================================================== |
--- content/renderer/media/capture_video_decoder.cc (revision 109978) |
+++ content/renderer/media/capture_video_decoder.cc (working copy) |
@@ -67,6 +67,13 @@ |
this, callback)); |
} |
+void CaptureVideoDecoder::Flush(const base::Closure& callback) { |
+ message_loop_proxy_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&CaptureVideoDecoder::FlushOnDecoderThread, |
+ this, callback)); |
+} |
+ |
void CaptureVideoDecoder::Stop(const base::Closure& callback) { |
message_loop_proxy_->PostTask( |
FROM_HERE, |
@@ -158,6 +165,18 @@ |
media::VideoDecoder::Pause(callback); |
} |
+void CaptureVideoDecoder::FlushOnDecoderThread(const base::Closure& callback) { |
+ DVLOG(1) << "FlushOnDecoderThread"; |
+ DCHECK(message_loop_proxy_->BelongsToCurrentThread()); |
+ if (!read_cb_.is_null()) { |
+ scoped_refptr<media::VideoFrame> video_frame = |
+ media::VideoFrame::CreateBlackFrame(natural_size_.width(), |
+ natural_size_.height()); |
+ DeliverFrame(video_frame); |
+ } |
+ media::VideoDecoder::Flush(callback); |
+} |
+ |
void CaptureVideoDecoder::StopOnDecoderThread(const base::Closure& callback) { |
DVLOG(1) << "StopOnDecoderThread"; |
DCHECK(message_loop_proxy_->BelongsToCurrentThread()); |