Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(385)

Unified Diff: media/filters/decrypting_demuxer_stream.cc

Issue 2543623003: media: Allow config change between clear and encrypted streams (Closed)
Patch Set: comments addressed Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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: {
« no previous file with comments | « media/filters/decrypting_audio_decoder_unittest.cc ('k') | media/filters/decrypting_demuxer_stream_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698