Index: media/filters/decrypting_demuxer_stream.cc |
diff --git a/media/filters/decrypting_demuxer_stream.cc b/media/filters/decrypting_demuxer_stream.cc |
index c4e6b8478380de81a70ee42ac894d376a3cf770a..2eae710d1fa7503a8785e7881ae920fd02253494 100644 |
--- a/media/filters/decrypting_demuxer_stream.cc |
+++ b/media/filters/decrypting_demuxer_stream.cc |
@@ -244,6 +244,9 @@ void DecryptingDemuxerStream::DecryptBuffer( |
buffer->data(), buffer->data_size()); |
decrypted->set_timestamp(buffer->timestamp()); |
decrypted->set_duration(buffer->duration()); |
+ if (buffer->is_key_frame()) |
+ decrypted->set_is_key_frame(true); |
+ |
state_ = kIdle; |
base::ResetAndReturn(&read_cb_).Run(kOk, decrypted); |
return; |
@@ -307,6 +310,12 @@ void DecryptingDemuxerStream::DeliverBuffer( |
} |
DCHECK_EQ(status, Decryptor::kSuccess); |
+ |
+ // Copy the key frame flag from the encrypted to decrypted buffer, assuming |
+ // that the decryptor initialized the flag to false. |
+ if (pending_buffer_to_decrypt_->is_key_frame()) |
+ decrypted_buffer->set_is_key_frame(true); |
+ |
pending_buffer_to_decrypt_ = NULL; |
state_ = kIdle; |
base::ResetAndReturn(&read_cb_).Run(kOk, decrypted_buffer); |