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( |
Ami GONE FROM CHROMIUM
2013/03/22 23:48:01
Again, BindToCurrentLoop ?
scherkus (not reviewing)
2013/03/28 02:00:01
ditto
|
+ &FFmpegVideoDecoder::BufferReady, weak_this_)); |
} |
void FFmpegVideoDecoder::BufferReady( |