Chromium Code Reviews| Index: media/filters/ffmpeg_video_decoder.cc |
| diff --git a/media/filters/ffmpeg_video_decoder.cc b/media/filters/ffmpeg_video_decoder.cc |
| index fe53f35c76ae9a57506190d9f1d6c48166452e50..0a08be84c122ec3481ae6a2eb3a5fbd510bf9978 100644 |
| --- a/media/filters/ffmpeg_video_decoder.cc |
| +++ b/media/filters/ffmpeg_video_decoder.cc |
| @@ -12,6 +12,7 @@ |
| #include "media/base/filter_host.h" |
| #include "media/base/limits.h" |
| #include "media/base/media_switches.h" |
| +#include "media/base/message_loop_factory.h" |
|
scherkus (not reviewing)
2012/03/09 20:01:16
not needed
tommi (sloooow) - chröme
2012/03/11 18:49:36
Done.
|
| #include "media/base/pipeline.h" |
| #include "media/base/video_decoder_config.h" |
| #include "media/base/video_frame.h" |
| @@ -51,8 +52,10 @@ static int GetThreadCount(CodecID codec_id) { |
| return decode_threads; |
| } |
| -FFmpegVideoDecoder::FFmpegVideoDecoder(MessageLoop* message_loop) |
| - : message_loop_(message_loop), |
| +FFmpegVideoDecoder::FFmpegVideoDecoder( |
| + const base::Callback<MessageLoop*()>& message_loop_cb) |
| + : message_loop_cb_(message_loop_cb), |
| + message_loop_(NULL), |
| state_(kUninitialized), |
| codec_context_(NULL), |
| av_frame_(NULL), |
| @@ -67,10 +70,12 @@ FFmpegVideoDecoder::~FFmpegVideoDecoder() { |
| void FFmpegVideoDecoder::Initialize(DemuxerStream* demuxer_stream, |
| const PipelineStatusCB& callback, |
| const StatisticsCallback& stats_callback) { |
| + message_loop_ = message_loop_cb_.Run(); |
|
Ami GONE FROM CHROMIUM
2012/03/09 16:15:06
add message_loop_cb_.Reset(); for clarity after th
tommi (sloooow) - chröme
2012/03/11 18:49:36
Done.
|
| if (MessageLoop::current() != message_loop_) { |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &FFmpegVideoDecoder::Initialize, this, |
| - make_scoped_refptr(demuxer_stream), callback, stats_callback)); |
| + message_loop_->PostTask(FROM_HERE, |
| + base::Bind(&FFmpegVideoDecoder::Initialize, this, |
|
Ami GONE FROM CHROMIUM
2012/03/09 16:15:06
This indentation violates the google style guide.
tommi (sloooow) - chröme
2012/03/11 18:49:36
Done.
|
| + make_scoped_refptr(demuxer_stream), callback, |
| + stats_callback)); |
| return; |
| } |
| @@ -126,8 +131,8 @@ void FFmpegVideoDecoder::Initialize(DemuxerStream* demuxer_stream, |
| void FFmpegVideoDecoder::Stop(const base::Closure& callback) { |
| if (MessageLoop::current() != message_loop_) { |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &FFmpegVideoDecoder::Stop, this, callback)); |
| + message_loop_->PostTask(FROM_HERE, |
| + base::Bind(&FFmpegVideoDecoder::Stop, this, callback)); |
| return; |
| } |
| @@ -138,8 +143,8 @@ void FFmpegVideoDecoder::Stop(const base::Closure& callback) { |
| void FFmpegVideoDecoder::Seek(base::TimeDelta time, const FilterStatusCB& cb) { |
| if (MessageLoop::current() != message_loop_) { |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &FFmpegVideoDecoder::Seek, this, time, cb)); |
| + message_loop_->PostTask(FROM_HERE, |
| + base::Bind(&FFmpegVideoDecoder::Seek, this, time, cb)); |
| return; |
| } |
| @@ -148,8 +153,8 @@ void FFmpegVideoDecoder::Seek(base::TimeDelta time, const FilterStatusCB& cb) { |
| void FFmpegVideoDecoder::Pause(const base::Closure& callback) { |
| if (MessageLoop::current() != message_loop_) { |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &FFmpegVideoDecoder::Pause, this, callback)); |
| + message_loop_->PostTask(FROM_HERE, |
| + base::Bind(&FFmpegVideoDecoder::Pause, this, callback)); |
| return; |
| } |
| @@ -158,8 +163,8 @@ void FFmpegVideoDecoder::Pause(const base::Closure& callback) { |
| void FFmpegVideoDecoder::Flush(const base::Closure& callback) { |
| if (MessageLoop::current() != message_loop_) { |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &FFmpegVideoDecoder::Flush, this, callback)); |
| + message_loop_->PostTask(FROM_HERE, |
| + base::Bind(&FFmpegVideoDecoder::Flush, this, callback)); |
| return; |
| } |
| @@ -171,8 +176,8 @@ void FFmpegVideoDecoder::Flush(const base::Closure& callback) { |
| void FFmpegVideoDecoder::Read(const ReadCB& callback) { |
| // Complete operation asynchronously on different stack of execution as per |
| // the API contract of VideoDecoder::Read() |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &FFmpegVideoDecoder::DoRead, this, callback)); |
| + message_loop_->PostTask(FROM_HERE, |
| + base::Bind(&FFmpegVideoDecoder::DoRead, this, callback)); |
| } |
| const gfx::Size& FFmpegVideoDecoder::natural_size() { |
| @@ -211,8 +216,8 @@ void FFmpegVideoDecoder::ReadFromDemuxerStream() { |
| void FFmpegVideoDecoder::DecodeBuffer(const scoped_refptr<Buffer>& buffer) { |
| // TODO(scherkus): fix FFmpegDemuxerStream::Read() to not execute our read |
| // callback on the same execution stack so we can get rid of forced task post. |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &FFmpegVideoDecoder::DoDecodeBuffer, this, buffer)); |
| + message_loop_->PostTask(FROM_HERE, |
| + base::Bind(&FFmpegVideoDecoder::DoDecodeBuffer, this, buffer)); |
| } |
| void FFmpegVideoDecoder::DoDecodeBuffer(const scoped_refptr<Buffer>& buffer) { |