| Index: media/filters/video_renderer_base.cc
|
| diff --git a/media/filters/video_renderer_base.cc b/media/filters/video_renderer_base.cc
|
| index 683a1700e8f592569425c2f963ce580f8f9c37d2..4833d349774af4c6234d8a0aced0733bd88a7cef 100644
|
| --- a/media/filters/video_renderer_base.cc
|
| +++ b/media/filters/video_renderer_base.cc
|
| @@ -146,6 +146,8 @@ void VideoRendererBase::Initialize(VideoDecoder* decoder,
|
| decoder_ = decoder;
|
| scoped_ptr<FilterCallback> c(callback);
|
|
|
| + decoder_->set_fill_buffer_done_callback(
|
| + NewCallback(this, &VideoRendererBase::OnFillBufferDone));
|
| // Notify the pipeline of the video dimensions.
|
| if (!ParseMediaFormat(decoder->media_format(), &width_, &height_,
|
| &uses_egl_image_)) {
|
| @@ -312,7 +314,7 @@ void VideoRendererBase::GetCurrentFrame(scoped_refptr<VideoFrame>* frame_out) {
|
| *frame_out = current_frame_;
|
| }
|
|
|
| -void VideoRendererBase::OnReadComplete(VideoFrame* frame) {
|
| +void VideoRendererBase::OnFillBufferDone(scoped_refptr<VideoFrame> frame) {
|
| AutoLock auto_lock(lock_);
|
|
|
| // TODO(ajwong): Work around cause we don't synchronize on stop. Correct
|
| @@ -367,7 +369,11 @@ void VideoRendererBase::ScheduleRead_Locked() {
|
| DCHECK_NE(kEnded, state_);
|
| DCHECK_LT(pending_reads_, kMaxFrames);
|
| ++pending_reads_;
|
| - decoder_->Read(NewCallback(this, &VideoRendererBase::OnReadComplete));
|
| + // TODO(jiesun): We use dummy buffer to feed decoder to let decoder to
|
| + // provide buffer pools. In the future, we may want to implement real
|
| + // buffer pool to recycle buffers.
|
| + scoped_refptr<VideoFrame> video_frame;
|
| + decoder_->FillThisBuffer(video_frame);
|
| }
|
|
|
| base::TimeDelta VideoRendererBase::CalculateSleepDuration(
|
|
|