Chromium Code Reviews| Index: media/filters/ffmpeg_video_decoder.cc |
| diff --git a/media/filters/ffmpeg_video_decoder.cc b/media/filters/ffmpeg_video_decoder.cc |
| index d75782f94922b0aba3d46b0f8b94c44edac4be3f..f09e336a3ad420aa1d96c8be0c5863c7e25a70b8 100644 |
| --- a/media/filters/ffmpeg_video_decoder.cc |
| +++ b/media/filters/ffmpeg_video_decoder.cc |
| @@ -251,24 +251,19 @@ void FFmpegVideoDecoder::ReadFromDemuxerStream() { |
| DCHECK_NE(state_, kDecodeFinished); |
| DCHECK(!read_cb_.is_null()); |
| - demuxer_stream_->Read(base::Bind(&FFmpegVideoDecoder::DecryptOrDecodeBuffer, |
| - this)); |
| -} |
| - |
| -void FFmpegVideoDecoder::DecryptOrDecodeBuffer( |
| - DemuxerStream::Status status, |
| - const scoped_refptr<DecoderBuffer>& buffer) { |
| - DCHECK_EQ(status != DemuxerStream::kOk, !buffer) << status; |
|
xhwang
2012/11/20 17:54:34
do we still want to keep this check?
scherkus (not reviewing)
2012/11/20 19:16:07
Done.
|
| - // TODO(scherkus): fix FFmpegDemuxerStream::Read() to not execute our read |
| - // callback on the same execution stack so we can get rid of forced task post. |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &FFmpegVideoDecoder::DoDecryptOrDecodeBuffer, this, status, buffer)); |
| + demuxer_stream_->Read(base::Bind( |
| + &FFmpegVideoDecoder::DoDecryptOrDecodeBuffer, this)); |
| } |
| void FFmpegVideoDecoder::DoDecryptOrDecodeBuffer( |
| DemuxerStream::Status status, |
| const scoped_refptr<DecoderBuffer>& buffer) { |
| - DCHECK(message_loop_->BelongsToCurrentThread()); |
| + if (!message_loop_->BelongsToCurrentThread()) { |
| + message_loop_->PostTask(FROM_HERE, base::Bind( |
| + &FFmpegVideoDecoder::DoDecryptOrDecodeBuffer, this, status, buffer)); |
| + return; |
| + } |
| + |
| DCHECK_NE(state_, kDecodeFinished); |
| if (state_ == kUninitialized) |