| Index: media/filters/decrypting_demuxer_stream.cc
|
| diff --git a/media/filters/decrypting_demuxer_stream.cc b/media/filters/decrypting_demuxer_stream.cc
|
| index 00e70e22a1692e3f29817ba9a337b2f4de017926..aa8498abb46bfa861d7bc4a5298863d7c895cd48 100644
|
| --- a/media/filters/decrypting_demuxer_stream.cc
|
| +++ b/media/filters/decrypting_demuxer_stream.cc
|
| @@ -17,13 +17,11 @@
|
|
|
| namespace media {
|
|
|
| -static bool IsStreamValidAndEncrypted(DemuxerStream* stream) {
|
| +static bool IsStreamValid(DemuxerStream* stream) {
|
| return ((stream->type() == DemuxerStream::AUDIO &&
|
| - stream->audio_decoder_config().IsValidConfig() &&
|
| - stream->audio_decoder_config().is_encrypted()) ||
|
| + stream->audio_decoder_config().IsValidConfig()) ||
|
| (stream->type() == DemuxerStream::VIDEO &&
|
| - stream->video_decoder_config().IsValidConfig() &&
|
| - stream->video_decoder_config().is_encrypted()));
|
| + stream->video_decoder_config().IsValidConfig()));
|
| }
|
|
|
| DecryptingDemuxerStream::DecryptingDemuxerStream(
|
| @@ -227,16 +225,26 @@ void DecryptingDemuxerStream::DecryptBuffer(
|
| return;
|
| }
|
|
|
| + DCHECK_EQ(kOk, status);
|
| +
|
| if (buffer->end_of_stream()) {
|
| DVLOG(2) << "DoDecryptBuffer() - EOS buffer.";
|
| state_ = kIdle;
|
| - base::ResetAndReturn(&read_cb_).Run(status, buffer);
|
| + base::ResetAndReturn(&read_cb_).Run(kOk, buffer);
|
| + return;
|
| + }
|
| +
|
| + // TODO(xhwang): Unify clear buffer handling in clear and encrypted stream.
|
| + // See http://crbug.com/675003
|
| + if (!buffer->decrypt_config()) {
|
| + DVLOG(2) << "DoDecryptBuffer() - clear buffer in clear stream.";
|
| + state_ = kIdle;
|
| + base::ResetAndReturn(&read_cb_).Run(kOk, buffer);
|
| return;
|
| }
|
|
|
| - DCHECK(buffer->decrypt_config());
|
| if (!buffer->decrypt_config()->is_encrypted()) {
|
| - DVLOG(2) << "DoDecryptBuffer() - clear buffer.";
|
| + DVLOG(2) << "DoDecryptBuffer() - clear buffer in encrypted stream.";
|
| scoped_refptr<DecoderBuffer> decrypted = DecoderBuffer::CopyFrom(
|
| buffer->data(), buffer->data_size());
|
| decrypted->set_timestamp(buffer->timestamp());
|
| @@ -362,9 +370,8 @@ Decryptor::StreamType DecryptingDemuxerStream::GetDecryptorStreamType() const {
|
| }
|
|
|
| void DecryptingDemuxerStream::InitializeDecoderConfig() {
|
| - // The decoder selector or upstream demuxer make sure the stream is valid and
|
| - // potentially encrypted.
|
| - DCHECK(IsStreamValidAndEncrypted(demuxer_stream_));
|
| + // The decoder selector or upstream demuxer make sure the stream is valid.
|
| + DCHECK(IsStreamValid(demuxer_stream_));
|
|
|
| switch (demuxer_stream_->type()) {
|
| case AUDIO: {
|
|
|