| Index: media/filters/ffmpeg_video_decoder.cc
|
| diff --git a/media/filters/ffmpeg_video_decoder.cc b/media/filters/ffmpeg_video_decoder.cc
|
| index 097ebb01cff6858376757d9c539ae1deab444c49..f05fa3f98e36b743b761173552a35f7a85c8defa 100644
|
| --- a/media/filters/ffmpeg_video_decoder.cc
|
| +++ b/media/filters/ffmpeg_video_decoder.cc
|
| @@ -179,6 +179,9 @@ void FFmpegVideoDecoder::Reset(const base::Closure& closure) {
|
| return;
|
| }
|
|
|
| + if (decryptor_)
|
| + decryptor_->CancelDecrypt();
|
| +
|
| reset_cb_ = closure;
|
|
|
| // Defer the reset if a read is pending.
|
| @@ -205,7 +208,7 @@ void FFmpegVideoDecoder::Stop(const base::Closure& closure) {
|
| }
|
|
|
| if (decryptor_)
|
| - decryptor_->Stop();
|
| + decryptor_->CancelDecrypt();
|
|
|
| stop_cb_ = closure;
|
|
|
| @@ -322,6 +325,12 @@ void FFmpegVideoDecoder::DoBufferDecrypted(
|
| DCHECK_NE(state_, kDecodeFinished);
|
| DCHECK(!read_cb_.is_null());
|
|
|
| + if (!stop_cb_.is_null()) {
|
| + base::ResetAndReturn(&read_cb_).Run(kOk, NULL);
|
| + DoStop();
|
| + return;
|
| + }
|
| +
|
| if (!reset_cb_.is_null()) {
|
| base::ResetAndReturn(&read_cb_).Run(kOk, NULL);
|
| DoReset();
|
|
|