Index: media/filters/video_renderer_impl.cc |
diff --git a/media/filters/video_renderer_impl.cc b/media/filters/video_renderer_impl.cc |
index 57be35d0010fd8cb6d9a46a23fca855081c0bce3..1d419c8a50ac232e2f6362f440acc165911e239b 100644 |
--- a/media/filters/video_renderer_impl.cc |
+++ b/media/filters/video_renderer_impl.cc |
@@ -25,7 +25,9 @@ VideoRendererImpl::VideoRendererImpl( |
const PaintCB& paint_cb, |
bool drop_frames) |
: task_runner_(task_runner), |
- video_frame_stream_(task_runner, decoders.Pass(), set_decryptor_ready_cb), |
+ video_frame_stream_(new VideoFrameStream(task_runner, |
+ decoders.Pass(), |
+ set_decryptor_ready_cb)), |
low_delay_(false), |
received_end_of_stream_(false), |
rendered_end_of_stream_(false), |
@@ -66,7 +68,7 @@ void VideoRendererImpl::Flush(const base::Closure& callback) { |
received_end_of_stream_ = false; |
rendered_end_of_stream_ = false; |
- video_frame_stream_.Reset( |
+ video_frame_stream_->Reset( |
base::Bind(&VideoRendererImpl::OnVideoFrameStreamResetDone, |
weak_factory_.GetWeakPtr())); |
} |
@@ -75,7 +77,7 @@ void VideoRendererImpl::Stop(const base::Closure& callback) { |
DCHECK(task_runner_->BelongsToCurrentThread()); |
base::AutoLock auto_lock(lock_); |
if (state_ == kUninitialized || state_ == kStopped) { |
- callback.Run(); |
+ task_runner_->PostTask(FROM_HERE, callback); |
return; |
} |
@@ -102,7 +104,8 @@ void VideoRendererImpl::Stop(const base::Closure& callback) { |
base::PlatformThread::Join(thread_to_join); |
} |
- video_frame_stream_.Stop(callback); |
+ video_frame_stream_.reset(); |
scherkus (not reviewing)
2014/07/16 17:49:48
ditto
xhwang
2014/07/16 23:45:49
ditto
|
+ task_runner_->PostTask(FROM_HERE, callback); |
} |
void VideoRendererImpl::StartPlayingFrom(base::TimeDelta timestamp) { |
@@ -153,7 +156,7 @@ void VideoRendererImpl::Initialize(DemuxerStream* stream, |
get_duration_cb_ = get_duration_cb; |
state_ = kInitializing; |
- video_frame_stream_.Initialize( |
+ video_frame_stream_->Initialize( |
stream, |
low_delay, |
statistics_cb, |
@@ -354,7 +357,7 @@ void VideoRendererImpl::FrameReady(VideoFrameStream::Status status, |
bool VideoRendererImpl::HaveEnoughData_Locked() { |
DCHECK_EQ(state_, kPlaying); |
return received_end_of_stream_ || |
- !video_frame_stream_.CanReadWithoutStalling() || |
+ !video_frame_stream_->CanReadWithoutStalling() || |
ready_frames_.size() >= static_cast<size_t>(limits::kMaxVideoFrames) || |
(low_delay_ && ready_frames_.size() > 0); |
} |
@@ -434,8 +437,8 @@ void VideoRendererImpl::AttemptRead_Locked() { |
switch (state_) { |
case kPlaying: |
pending_read_ = true; |
- video_frame_stream_.Read(base::Bind(&VideoRendererImpl::FrameReady, |
- weak_factory_.GetWeakPtr())); |
+ video_frame_stream_->Read(base::Bind(&VideoRendererImpl::FrameReady, |
+ weak_factory_.GetWeakPtr())); |
return; |
case kUninitialized: |