| Index: media/filters/decrypting_audio_decoder.cc
|
| diff --git a/media/filters/decrypting_audio_decoder.cc b/media/filters/decrypting_audio_decoder.cc
|
| index 8a898147e5a2d9fc531db8e5690e6365ce9b4ee4..bd4975302b47d35c3bdb9486691c7b21f01ecdfd 100644
|
| --- a/media/filters/decrypting_audio_decoder.cc
|
| +++ b/media/filters/decrypting_audio_decoder.cc
|
| @@ -297,11 +297,9 @@ void DecryptingAudioDecoder::DeliverFrame(
|
| if (scoped_pending_buffer_to_decode->end_of_stream()) {
|
| state_ = kDecodeFinished;
|
| output_cb_.Run(AudioBuffer::CreateEOSBuffer());
|
| - base::ResetAndReturn(&decode_cb_).Run(kOk);
|
| - return;
|
| + } else {
|
| + state_ = kIdle;
|
| }
|
| -
|
| - state_ = kIdle;
|
| base::ResetAndReturn(&decode_cb_).Run(kOk);
|
| return;
|
| }
|
| @@ -310,6 +308,14 @@ void DecryptingAudioDecoder::DeliverFrame(
|
| DCHECK(!frames.empty());
|
| ProcessDecodedFrames(frames);
|
|
|
| + if (scoped_pending_buffer_to_decode->end_of_stream()) {
|
| + // Set |pending_buffer_to_decode_| back as we need to keep flushing the
|
| + // decryptor until kNeedMoreData is returned.
|
| + pending_buffer_to_decode_ = scoped_pending_buffer_to_decode;
|
| + DecodePendingBuffer();
|
| + return;
|
| + }
|
| +
|
| state_ = kIdle;
|
| base::ResetAndReturn(&decode_cb_).Run(kOk);
|
| }
|
|
|