| Index: media/filters/ffmpeg_video_decoder.cc
|
| diff --git a/media/filters/ffmpeg_video_decoder.cc b/media/filters/ffmpeg_video_decoder.cc
|
| index 5c419f5ff218f77d3aef074c7f015885571632c1..04350fc094d7a0d3bd926edc4ff76ee79cc47185 100644
|
| --- a/media/filters/ffmpeg_video_decoder.cc
|
| +++ b/media/filters/ffmpeg_video_decoder.cc
|
| @@ -72,10 +72,10 @@ bool FFmpegVideoDecoder::IsCodecSupported(VideoCodec codec) {
|
| return avcodec_find_decoder(VideoCodecToCodecID(codec)) != nullptr;
|
| }
|
|
|
| -FFmpegVideoDecoder::FFmpegVideoDecoder(
|
| - const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
|
| - : task_runner_(task_runner), state_(kUninitialized),
|
| - decode_nalus_(false) {}
|
| +FFmpegVideoDecoder::FFmpegVideoDecoder()
|
| + : state_(kUninitialized), decode_nalus_(false) {
|
| + thread_checker_.DetachFromThread();
|
| +}
|
|
|
| int FFmpegVideoDecoder::GetVideoBuffer(struct AVCodecContext* codec_context,
|
| AVFrame* frame,
|
| @@ -168,7 +168,7 @@ void FFmpegVideoDecoder::Initialize(const VideoDecoderConfig& config,
|
| const SetCdmReadyCB& /* set_cdm_ready_cb */,
|
| const InitCB& init_cb,
|
| const OutputCB& output_cb) {
|
| - DCHECK(task_runner_->BelongsToCurrentThread());
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| DCHECK(config.IsValidConfig());
|
| DCHECK(!output_cb.is_null());
|
|
|
| @@ -198,7 +198,7 @@ void FFmpegVideoDecoder::Initialize(const VideoDecoderConfig& config,
|
|
|
| void FFmpegVideoDecoder::Decode(const scoped_refptr<DecoderBuffer>& buffer,
|
| const DecodeCB& decode_cb) {
|
| - DCHECK(task_runner_->BelongsToCurrentThread());
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| DCHECK(buffer.get());
|
| DCHECK(!decode_cb.is_null());
|
| CHECK_NE(state_, kUninitialized);
|
| @@ -258,15 +258,16 @@ void FFmpegVideoDecoder::Decode(const scoped_refptr<DecoderBuffer>& buffer,
|
| }
|
|
|
| void FFmpegVideoDecoder::Reset(const base::Closure& closure) {
|
| - DCHECK(task_runner_->BelongsToCurrentThread());
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| avcodec_flush_buffers(codec_context_.get());
|
| state_ = kNormal;
|
| - task_runner_->PostTask(FROM_HERE, closure);
|
| + // PostTask() to avoid calling |closure| inmediately.
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, closure);
|
| }
|
|
|
| FFmpegVideoDecoder::~FFmpegVideoDecoder() {
|
| - DCHECK(task_runner_->BelongsToCurrentThread());
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| if (state_ != kUninitialized)
|
| ReleaseFFmpegResources();
|
|
|