| Index: media/filters/video_frame_stream.cc
|
| diff --git a/media/filters/video_frame_stream.cc b/media/filters/video_frame_stream.cc
|
| index 72ee20df8723644a816ec22db8a4138edd4a94b7..8a788daa50a7dc45fe707bcba8f41c1a173123a9 100644
|
| --- a/media/filters/video_frame_stream.cc
|
| +++ b/media/filters/video_frame_stream.cc
|
| @@ -19,11 +19,13 @@ namespace media {
|
|
|
| VideoFrameStream::VideoFrameStream(
|
| const scoped_refptr<base::MessageLoopProxy>& message_loop,
|
| + ScopedVector<VideoDecoder> decoders,
|
| const SetDecryptorReadyCB& set_decryptor_ready_cb)
|
| : message_loop_(message_loop),
|
| weak_factory_(this),
|
| state_(UNINITIALIZED),
|
| - set_decryptor_ready_cb_(set_decryptor_ready_cb) {
|
| + decoder_selector_(
|
| + message_loop_, decoders.Pass(), set_decryptor_ready_cb) {
|
| }
|
|
|
| VideoFrameStream::~VideoFrameStream() {
|
| @@ -31,7 +33,6 @@ VideoFrameStream::~VideoFrameStream() {
|
| }
|
|
|
| void VideoFrameStream::Initialize(const scoped_refptr<DemuxerStream>& stream,
|
| - const VideoDecoderList& decoders,
|
| const StatisticsCB& statistics_cb,
|
| const InitCB& init_cb) {
|
| DCHECK(message_loop_->BelongsToCurrentThread());
|
| @@ -44,20 +45,8 @@ void VideoFrameStream::Initialize(const scoped_refptr<DemuxerStream>& stream,
|
| init_cb_ = init_cb;
|
| stream_ = stream;
|
|
|
| - scoped_ptr<VideoDecoderSelector> decoder_selector(
|
| - new VideoDecoderSelector(message_loop_,
|
| - 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(
|
| - this,
|
| - statistics_cb,
|
| - base::Bind(&VideoFrameStream::OnDecoderSelected, weak_this_,
|
| - base::Passed(&decoder_selector)));
|
| + decoder_selector_.SelectVideoDecoder(this, statistics_cb, base::Bind(
|
| + &VideoFrameStream::OnDecoderSelected, weak_this_));
|
| }
|
|
|
| void VideoFrameStream::ReadFrame(const VideoDecoder::ReadCB& read_cb) {
|
| @@ -128,7 +117,7 @@ void VideoFrameStream::Stop(const base::Closure& closure) {
|
| // we don't need this here. See: http://crbug.com/173313
|
| stream_ = NULL;
|
| decrypting_demuxer_stream_ = NULL;
|
| - decoder_ = NULL;
|
| + decoder_.reset();
|
| message_loop_->PostTask(FROM_HERE, base::ResetAndReturn(&stop_cb_));
|
| }
|
|
|
| @@ -164,8 +153,7 @@ void VideoFrameStream::EnableBitstreamConverter() {
|
| }
|
|
|
| void VideoFrameStream::OnDecoderSelected(
|
| - scoped_ptr<VideoDecoderSelector> decoder_selector,
|
| - const scoped_refptr<VideoDecoder>& selected_decoder,
|
| + scoped_ptr<VideoDecoder> selected_decoder,
|
| const scoped_refptr<DecryptingDemuxerStream>& decrypting_demuxer_stream) {
|
| DCHECK(message_loop_->BelongsToCurrentThread());
|
| DCHECK_EQ(state_, UNINITIALIZED);
|
| @@ -175,7 +163,7 @@ void VideoFrameStream::OnDecoderSelected(
|
| state_ = UNINITIALIZED;
|
| base::ResetAndReturn(&init_cb_).Run(false, false);
|
| } else {
|
| - decoder_ = selected_decoder;
|
| + decoder_ = selected_decoder.Pass();
|
| decrypting_demuxer_stream_ = decrypting_demuxer_stream;
|
| state_ = NORMAL;
|
| base::ResetAndReturn(&init_cb_).Run(true, decoder_->HasAlpha());
|
| @@ -239,7 +227,7 @@ void VideoFrameStream::OnDecoderStopped() {
|
| // we don't need this here. See: http://crbug.com/173313
|
| stream_ = NULL;
|
| decrypting_demuxer_stream_ = NULL;
|
| - decoder_ = NULL;
|
| + decoder_.reset();
|
| base::ResetAndReturn(&stop_cb_).Run();
|
| }
|
|
|
|
|