| Index: media/filters/ffmpeg_video_decoder.cc
|
| diff --git a/media/filters/ffmpeg_video_decoder.cc b/media/filters/ffmpeg_video_decoder.cc
|
| index 9dd4058513cff2f0d9a5b10b9983f44ba8373f64..105199f197660c4095dd5ac74e0a0bf9cfc60ab7 100644
|
| --- a/media/filters/ffmpeg_video_decoder.cc
|
| +++ b/media/filters/ffmpeg_video_decoder.cc
|
| @@ -58,6 +58,7 @@ static int GetThreadCount(CodecID codec_id) {
|
| FFmpegVideoDecoder::FFmpegVideoDecoder(
|
| const scoped_refptr<base::MessageLoopProxy>& message_loop)
|
| : message_loop_(message_loop),
|
| + weak_factory_(this),
|
| state_(kUninitialized),
|
| codec_context_(NULL),
|
| av_frame_(NULL) {
|
| @@ -134,6 +135,7 @@ void FFmpegVideoDecoder::Initialize(const scoped_refptr<DemuxerStream>& stream,
|
| const StatisticsCB& statistics_cb) {
|
| DCHECK(message_loop_->BelongsToCurrentThread());
|
| PipelineStatusCB initialize_cb = BindToCurrentLoop(status_cb);
|
| + weak_this_ = weak_factory_.GetWeakPtr();
|
|
|
| FFmpegGlue::InitializeFFmpeg();
|
| DCHECK(!demuxer_stream_) << "Already initialized.";
|
| @@ -224,7 +226,8 @@ void FFmpegVideoDecoder::ReturnFrameOrReadFromDemuxerStream() {
|
| DCHECK_NE(state_, kUninitialized);
|
| DCHECK_NE(state_, kDecodeFinished);
|
| DCHECK(!read_cb_.is_null());
|
| - demuxer_stream_->Read(base::Bind(&FFmpegVideoDecoder::BufferReady, this));
|
| + demuxer_stream_->Read(base::Bind(
|
| + &FFmpegVideoDecoder::BufferReady, weak_this_));
|
| }
|
|
|
| void FFmpegVideoDecoder::BufferReady(
|
|
|