Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Unified Diff: media/filters/video_renderer_impl.cc

Issue 393313004: Fold DecoderStream::Stop() into the dtor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments addressed Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/video_renderer_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/video_renderer_impl.cc
diff --git a/media/filters/video_renderer_impl.cc b/media/filters/video_renderer_impl.cc
index 1cbf1bcdb90dea0c0901a5fca295fec44e2c9485..a544bacc1f023bc2ef51b059815b42407b23e6b0 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();
+ 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,
@@ -360,7 +363,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);
}
@@ -440,8 +443,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:
« no previous file with comments | « media/filters/video_renderer_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698