From de9667080f91bb108c1acd749db468c75e6c7977 Mon Sep 17 00:00:00 2001 From: Kongqun Yang Date: Tue, 2 Aug 2016 16:43:23 -0700 Subject: [PATCH] Do not partially encrypt a segment Mimic iso-bmff behavior: either all the samples in a segment are encrypted or all the samples are clear. Change-Id: I03bdbbf5a4b690f4d87c4dceb0f8155e6fae941e --- .../bear-640x360-vp9-altref-enc-golden.webm | Bin 81250 -> 80514 bytes .../webm/encrypted_segmenter_unittest.cc | 79 +++++++++++------- packager/media/formats/webm/segmenter.cc | 20 +++-- packager/media/formats/webm/segmenter.h | 1 + 4 files changed, 60 insertions(+), 40 deletions(-) diff --git a/packager/app/test/testdata/bear-640x360-vp9-altref-enc-golden.webm b/packager/app/test/testdata/bear-640x360-vp9-altref-enc-golden.webm index 63cc98e9e45de2aa60a2d928325b9448a9b34e34..a9a1e2172520d3d6faf5c1ba5d0eb848e6240743 100644 GIT binary patch delta 43103 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 z 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 A!vFvP delta 43752 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

;y;+XdMIzIN8j-X-NxG0%%Bycj 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 #Kh6+h!-v0&3*n} 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 GGygx8+a3b| diff --git a/packager/media/formats/webm/encrypted_segmenter_unittest.cc b/packager/media/formats/webm/encrypted_segmenter_unittest.cc index cb02d9cad9..7e0a537d26 100644 --- a/packager/media/formats/webm/encrypted_segmenter_unittest.cc +++ b/packager/media/formats/webm/encrypted_segmenter_unittest.cc @@ -19,7 +19,6 @@ const std::string kKeyId = "4c6f72656d20697073756d20646f6c6f"; const std::string kIv = "0123456789012345"; const std::string kKey = "01234567890123456789012345678901"; const std::string kPsshData = ""; - const uint8_t kBasicSupportData[] = { // ID: EBML Header, Payload Size: 31 0x1a, 0x45, 0xdf, 0xa3, 0x9f, @@ -37,8 +36,8 @@ const uint8_t kBasicSupportData[] = { 0x42, 0x87, 0x81, 0x02, // DocTypeReadVersion: 2 0x42, 0x85, 0x81, 0x02, - // ID: Segment, Payload Size: 411 - 0x18, 0x53, 0x80, 0x67, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x9b, + // ID: Segment, Payload Size: 432 + 0x18, 0x53, 0x80, 0x67, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, // ID: SeekHead, Payload Size: 58 0x11, 0x4d, 0x9b, 0x74, 0xba, // ID: Seek, Payload Size: 11 @@ -63,8 +62,8 @@ const uint8_t kBasicSupportData[] = { 0x4d, 0xbb, 0x8c, // SeekID: binary(4) (Cues) 0x53, 0xab, 0x84, 0x1c, 0x53, 0xbb, 0x6b, - // SeekPosition: 392 - 0x53, 0xac, 0x82, 0x01, 0x88, + // SeekPosition: 398 + 0x53, 0xac, 0x82, 0x01, 0x8e, // ID: Void, Payload Size: 24 0xec, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -131,8 +130,8 @@ const uint8_t kBasicSupportData[] = { 0x54, 0xb0, 0x81, 0x64, // DisplayHeight: 100 0x54, 0xba, 0x81, 0x64, - // ID: Cluster, Payload Size: 101 - 0x1f, 0x43, 0xb6, 0x75, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, + // ID: Cluster, Payload Size: 45 + 0x1f, 0x43, 0xb6, 0x75, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, // Timecode: 0 0xe7, 0x81, 0x00, // ID: SimpleBlock, Payload Size: 10 @@ -141,44 +140,48 @@ const uint8_t kBasicSupportData[] = { 0x00, // Frame Data: 0xde, 0xad, 0xbe, 0xef, 0x00, - // ID: SimpleBlock, Payload Size: 18 - 0xa3, 0x92, 0x81, 0x03, 0xe8, 0x80, + // ID: SimpleBlock, Payload Size: 10 + 0xa3, 0x8a, 0x81, 0x03, 0xe8, 0x80, + // Signal Byte: Clear + 0x00, + // Frame Data: + 0xde, 0xad, 0xbe, 0xef, 0x00, + // ID: BlockGroup, Payload Size: 16 + 0xa0, 0x90, + // ID: Block, Payload Size: 10 + 0xa1, 0x8a, 0x81, 0x07, 0xd0, 0x00, + // Signal Byte: Clear + 0x00, + // Frame Data: + 0xde, 0xad, 0xbe, 0xef, 0x00, + // BlockDuration: 1000 + 0x9b, 0x82, 0x03, 0xe8, + // ID: Cluster, Payload Size: 50 + 0x1f, 0x43, 0xb6, 0x75, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, + // Timecode: 3000 + 0xe7, 0x82, 0x0b, 0xb8, + // ID: SimpleBlock: Payload Size: 18 + 0xa3, 0x92, 0x81, 0x00,0x00, 0x80, // Signal Byte: Encrypted 0x01, // IV: 0x01, 0x23, 0x45, 0x67, 0x89, 0x01, 0x23, 0x45, // Frame Data: 0xcc, 0x03, 0xef, 0xc4, 0xf4, - // ID: SimpleBlock, Payload Size: 18 - 0xa3, 0x92, 0x81, 0x07, 0xd0, 0x80, - // Signal Byte: Encrypted - 0x01, - // IV: - 0x01, 0x23, 0x45, 0x67, 0x89, 0x01, 0x23, 0x46, - // Frame Data: - 0xbf, 0x38, 0x72, 0x20, 0xac, - // ID: SimpleBlock, Payload Size: 18 - 0xa3, 0x92, 0x81, 0x0b, 0xb8, 0x80, - // Signal Byte: Encrypted - 0x01, - // IV: - 0x01, 0x23, 0x45, 0x67, 0x89, 0x01, 0x23, 0x47, - // Frame Data: - 0x0d, 0x8e, 0xae, 0xbe, 0xd0, // ID: BlockGroup, Payload Size: 24 0xa0, 0x98, // ID: Block, Payload Size: 18 - 0xa1, 0x92, 0x81, 0x0f, 0xa0, 0x00, + 0xa1, 0x92, 0x81, 0x03, 0xe8, 0x00, // Signal Byte: Encrypted 0x01, // IV: - 0x01, 0x23, 0x45, 0x67, 0x89, 0x01, 0x23, 0x48, + 0x01, 0x23, 0x45, 0x67, 0x89, 0x01, 0x23, 0x46, // Frame Data: - 0xa5, 0x97, 0xf8, 0x9e, 0x87, + 0xbf, 0x38, 0x72, 0x20, 0xac, // BlockDuration: 1000 0x9b, 0x82, 0x03, 0xe8, - // ID: Cues, Payload Size: 14 - 0x1c, 0x53, 0xbb, 0x6b, 0x8e, + // ID: Cues, Payload Size: 29 + 0x1c, 0x53, 0xbb, 0x6b, 0x9d, // ID: CuePoint, Payload Size: 12 0xbb, 0x8c, // CueTime: 0 @@ -188,7 +191,17 @@ const uint8_t kBasicSupportData[] = { // CueTrack: 1 0xf7, 0x81, 0x01, // CueClusterPosition: 279 - 0xf1, 0x82, 0x01, 0x17 + 0xf1, 0x82, 0x01, 0x17, + // ID: CuePoint, Payload Size: 13 + 0xbb, 0x8d, + // CueTime: 3000 + 0xb3, 0x82, 0x0b, 0xb8, + // ID: CueTrackPositions, Payload Size: 7 + 0xb7, 0x87, + // CueTrack: 1 + 0xf7, 0x81, 0x01, + // CueClusterPosition: 336 + 0xf1, 0x82, 0x01, 0x50, }; } // namespace @@ -213,9 +226,12 @@ class EncrypedSegmenterTest : public SegmentTestBase { TEST_F(EncrypedSegmenterTest, BasicSupport) { MuxerOptions options = CreateMuxerOptions(); + options.segment_duration = 3.0; ASSERT_NO_FATAL_FAILURE(InitializeSegmenter(options)); // Write the samples to the Segmenter. + // There should be 2 segments with the first segment in clear and the second + // segment encrypted. for (int i = 0; i < 5; i++) { scoped_refptr sample = CreateSample(kKeyFrame, kDuration, kNoSideData); @@ -228,4 +244,3 @@ TEST_F(EncrypedSegmenterTest, BasicSupport) { } // namespace media } // namespace shaka - diff --git a/packager/media/formats/webm/segmenter.cc b/packager/media/formats/webm/segmenter.cc index 044418dcd0..b94ae57ab3 100644 --- a/packager/media/formats/webm/segmenter.cc +++ b/packager/media/formats/webm/segmenter.cc @@ -32,6 +32,8 @@ int64_t kSecondsToNs = 1000000000L; Segmenter::Segmenter(const MuxerOptions& options) : reference_frame_timestamp_(0), options_(options), + clear_lead_(0), + enable_encryption_(false), info_(NULL), muxer_listener_(NULL), progress_listener_(NULL), @@ -144,6 +146,15 @@ Status Segmenter::AddSample(scoped_refptr sample) { segment_length_sec_ = 0; cluster_length_sec_ = 0; wrote_frame = true; + + if (encryptor_ && !enable_encryption_) { + if (sample->pts() - first_timestamp_ >= + clear_lead_ * info_->time_scale()) { + enable_encryption_ = true; + if (muxer_listener_) + muxer_listener_->OnEncryptionStart(); + } + } } } else if (cluster_length_sec_ >= options_.fragment_duration) { if (sample->is_key_frame() || !options_.fragment_sap_aligned) { @@ -161,20 +172,13 @@ Status Segmenter::AddSample(scoped_refptr sample) { // Encrypt the frame. if (encryptor_) { - const bool encrypt_frame = - static_cast(sample->pts() - first_timestamp_) / - info_->time_scale() >= - clear_lead_; - status = encryptor_->EncryptFrame(sample, encrypt_frame); + status = encryptor_->EncryptFrame(sample, enable_encryption_); if (!status.ok()) { LOG(ERROR) << "Error encrypting frame."; return status; } - if (encrypt_frame && muxer_listener_) - muxer_listener_->OnEncryptionStart(); } - // Add the sample to the durations even though we have not written the frame // yet. This is needed to make sure we split Clusters at the correct point. // These are only used in this method. diff --git a/packager/media/formats/webm/segmenter.h b/packager/media/formats/webm/segmenter.h index 2bf03a11ac..a5697d802b 100644 --- a/packager/media/formats/webm/segmenter.h +++ b/packager/media/formats/webm/segmenter.h @@ -135,6 +135,7 @@ class Segmenter { const MuxerOptions& options_; std::unique_ptr encryptor_; double clear_lead_; + bool enable_encryption_; // Encryption is enabled only after clear_lead_. std::unique_ptr cluster_; mkvmuxer::Cues cues_;