| Index: media/filters/video_renderer_base.cc
|
| diff --git a/media/filters/video_renderer_base.cc b/media/filters/video_renderer_base.cc
|
| index ca8f3429c737089d9b4ec07aeda5501aec64689b..9318f161da953ac3b62d961fa139106634ab0ad6 100644
|
| --- a/media/filters/video_renderer_base.cc
|
| +++ b/media/filters/video_renderer_base.cc
|
| @@ -24,13 +24,15 @@ base::TimeDelta VideoRendererBase::kMaxLastFrameDuration() {
|
|
|
| VideoRendererBase::VideoRendererBase(
|
| const scoped_refptr<base::MessageLoopProxy>& message_loop,
|
| + ScopedVector<VideoDecoder> decoders,
|
| const SetDecryptorReadyCB& set_decryptor_ready_cb,
|
| const PaintCB& paint_cb,
|
| const SetOpaqueCB& set_opaque_cb,
|
| bool drop_frames)
|
| : message_loop_(message_loop),
|
| weak_factory_(this),
|
| - set_decryptor_ready_cb_(set_decryptor_ready_cb),
|
| + decoder_selector_(new VideoDecoderSelector(
|
| + message_loop, decoders.Pass(), set_decryptor_ready_cb)),
|
| received_end_of_stream_(false),
|
| frame_available_(&lock_),
|
| state_(kUninitialized),
|
| @@ -162,7 +164,6 @@ void VideoRendererBase::Preroll(base::TimeDelta time,
|
| }
|
|
|
| void VideoRendererBase::Initialize(const scoped_refptr<DemuxerStream>& stream,
|
| - const VideoDecoderList& decoders,
|
| const PipelineStatusCB& init_cb,
|
| const StatisticsCB& statistics_cb,
|
| const TimeCB& max_time_cb,
|
| @@ -174,7 +175,6 @@ void VideoRendererBase::Initialize(const scoped_refptr<DemuxerStream>& stream,
|
| DCHECK(message_loop_->BelongsToCurrentThread());
|
| base::AutoLock auto_lock(lock_);
|
| DCHECK(stream);
|
| - DCHECK(!decoders.empty());
|
| DCHECK_EQ(stream->type(), DemuxerStream::VIDEO);
|
| DCHECK(!init_cb.is_null());
|
| DCHECK(!statistics_cb.is_null());
|
| @@ -196,25 +196,14 @@ void VideoRendererBase::Initialize(const scoped_refptr<DemuxerStream>& stream,
|
| get_duration_cb_ = get_duration_cb;
|
| state_ = kInitializing;
|
|
|
| - scoped_ptr<VideoDecoderSelector> decoder_selector(
|
| - new VideoDecoderSelector(base::MessageLoopProxy::current(),
|
| - decoders,
|
| - set_decryptor_ready_cb_));
|
| -
|
| - // To avoid calling |decoder_selector| methods and passing ownership of
|
| - // |decoder_selector| in the same line.
|
| - VideoDecoderSelector* decoder_selector_ptr = decoder_selector.get();
|
| -
|
| - decoder_selector_ptr->SelectVideoDecoder(
|
| + decoder_selector_->SelectVideoDecoder(
|
| stream,
|
| statistics_cb,
|
| - base::Bind(&VideoRendererBase::OnDecoderSelected, weak_this_,
|
| - base::Passed(&decoder_selector)));
|
| + base::Bind(&VideoRendererBase::OnDecoderSelected, weak_this_));
|
| }
|
|
|
| void VideoRendererBase::OnDecoderSelected(
|
| - scoped_ptr<VideoDecoderSelector> decoder_selector,
|
| - const scoped_refptr<VideoDecoder>& selected_decoder,
|
| + scoped_ptr<VideoDecoder> decoder,
|
| const scoped_refptr<DecryptingDemuxerStream>& decrypting_demuxer_stream) {
|
| DCHECK(message_loop_->BelongsToCurrentThread());
|
| base::AutoLock auto_lock(lock_);
|
| @@ -224,13 +213,13 @@ void VideoRendererBase::OnDecoderSelected(
|
|
|
| DCHECK_EQ(state_, kInitializing);
|
|
|
| - if (!selected_decoder) {
|
| + if (!decoder) {
|
| state_ = kUninitialized;
|
| base::ResetAndReturn(&init_cb_).Run(DECODER_ERROR_NOT_SUPPORTED);
|
| return;
|
| }
|
|
|
| - decoder_ = selected_decoder;
|
| + decoder_ = decoder.Pass();
|
| decrypting_demuxer_stream_ = decrypting_demuxer_stream;
|
|
|
| // We're all good! Consider ourselves flushed. (ThreadMain() should never
|
|
|