From d501b457d04877eead01a8d9c47d2d19844fc376 Mon Sep 17 00:00:00 2001 From: Kongqun Yang Date: Fri, 29 Jul 2016 16:06:20 -0700 Subject: [PATCH] Fix WebM keyframe detection in BlockGroup The right way to detect the presence of a keyframe in a BlockGroup is to look for the absence of the ReferenceBlock element [1]. Closes b/30433206 [1] https://matroska.org/technical/specs/index.html#ReferenceBlock Change-Id: I2b3c8704cbabcd5cbee38448e5528425865561a4 --- packager/app/test/packager_test.py | 8 + .../testdata/bear-vp9-blockgroup-golden.webm | Bin 0 -> 67362 bytes .../media/formats/webm/cluster_builder.cc | 20 +- packager/media/formats/webm/cluster_builder.h | 3 + .../media/formats/webm/webm_cluster_parser.cc | 73 +++--- .../media/formats/webm/webm_cluster_parser.h | 9 +- .../webm/webm_cluster_parser_unittest.cc | 213 +++++++++--------- .../media/test/data/bear-vp9-blockgroup.webm | Bin 0 -> 67871 bytes 8 files changed, 172 insertions(+), 154 deletions(-) create mode 100644 packager/app/test/testdata/bear-vp9-blockgroup-golden.webm create mode 100644 packager/media/test/data/bear-vp9-blockgroup.webm diff --git a/packager/app/test/packager_test.py b/packager/app/test/packager_test.py index 6bed8b64c0..1e82f9f451 100755 --- a/packager/app/test/packager_test.py +++ b/packager/app/test/packager_test.py @@ -143,6 +143,14 @@ class PackagerAppTest(unittest.TestCase): self._DiffGold(self.output[1], 'bear-320x240-vp9-golden.webm') self._DiffGold(self.mpd_output, 'bear-320x240-vp9-opus-webm-golden.mpd') + def testPackageVp9WebmWithBlockgroup(self): + self.packager.Package( + self._GetStreams(['video'], + output_format='webm', + test_files=['bear-vp9-blockgroup.webm']), + self._GetFlags()) + self._DiffGold(self.output[0], 'bear-vp9-blockgroup-golden.webm') + def testPackageVorbisWebm(self): self.packager.Package( self._GetStreams(['audio'], diff --git a/packager/app/test/testdata/bear-vp9-blockgroup-golden.webm b/packager/app/test/testdata/bear-vp9-blockgroup-golden.webm new file mode 100644 index 0000000000000000000000000000000000000000..9ab11de17049dbc71feb1a8194089b1b63426842 GIT binary patch literal 67362 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

{}y85>-L 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 Ovw;A&hWCL1@qzmUAw4_* literal 0 HcmV?d00001 diff --git a/packager/media/formats/webm/cluster_builder.cc b/packager/media/formats/webm/cluster_builder.cc index 9921724170..17a7ae6af6 100644 --- a/packager/media/formats/webm/cluster_builder.cc +++ b/packager/media/formats/webm/cluster_builder.cc @@ -40,6 +40,11 @@ static const uint8_t kBlockGroupHeaderWithoutBlockDuration[] = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Block(size = 0) }; +static const uint8_t kBlockGroupReferenceBlock[] = { + 0xFB, // ReferenceBlock ID + 0x81, 0x00, // ReferenceBlock (size=1, value=0) +}; + enum { kClusterSizeOffset = 4, kClusterTimecodeOffset = 14, @@ -99,17 +104,21 @@ void ClusterBuilder::AddBlockGroup(int track_num, int64_t timecode, int duration, int flags, + bool is_key_frame, const uint8_t* data, int size) { - AddBlockGroupInternal(track_num, timecode, true, duration, flags, data, size); + AddBlockGroupInternal(track_num, timecode, true, duration, flags, + is_key_frame, data, size); } void ClusterBuilder::AddBlockGroupWithoutBlockDuration(int track_num, int64_t timecode, int flags, + bool is_key_frame, const uint8_t* data, int size) { - AddBlockGroupInternal(track_num, timecode, false, 0, flags, data, size); + AddBlockGroupInternal(track_num, timecode, false, 0, flags, is_key_frame, + data, size); } void ClusterBuilder::AddBlockGroupInternal(int track_num, @@ -117,6 +126,7 @@ void ClusterBuilder::AddBlockGroupInternal(int track_num, bool include_block_duration, int duration, int flags, + bool is_key_frame, const uint8_t* data, int size) { int block_size = size + 4; @@ -126,6 +136,9 @@ void ClusterBuilder::AddBlockGroupInternal(int track_num, } else { bytes_needed += sizeof(kBlockGroupHeaderWithoutBlockDuration); } + if (!is_key_frame) { + bytes_needed += sizeof(kBlockGroupReferenceBlock); + } int block_group_size = bytes_needed - 9; @@ -155,7 +168,10 @@ void ClusterBuilder::AddBlockGroupInternal(int track_num, flags &= 0x0f; WriteBlock(buf, track_num, timecode, flags, data, size); + buf += size + 4; + if (!is_key_frame) + memcpy(buf, kBlockGroupReferenceBlock, sizeof(kBlockGroupReferenceBlock)); bytes_used_ += bytes_needed; } diff --git a/packager/media/formats/webm/cluster_builder.h b/packager/media/formats/webm/cluster_builder.h index 7cd3bbbcdc..f21ce6ce21 100644 --- a/packager/media/formats/webm/cluster_builder.h +++ b/packager/media/formats/webm/cluster_builder.h @@ -41,11 +41,13 @@ class ClusterBuilder { int64_t timecode, int duration, int flags, + bool is_key_frame, const uint8_t* data, int size); void AddBlockGroupWithoutBlockDuration(int track_num, int64_t timecode, int flags, + bool is_key_frame, const uint8_t* data, int size); @@ -58,6 +60,7 @@ class ClusterBuilder { bool include_block_duration, int duration, int flags, + bool is_key_frame, const uint8_t* data, int size); void Reset(); diff --git a/packager/media/formats/webm/webm_cluster_parser.cc b/packager/media/formats/webm/webm_cluster_parser.cc index c2268e378f..3907db0289 100644 --- a/packager/media/formats/webm/webm_cluster_parser.cc +++ b/packager/media/formats/webm/webm_cluster_parser.cc @@ -23,27 +23,6 @@ namespace { const int64_t kMicrosecondsPerMillisecond = 1000; -// Helper function used to inspect block data to determine if the -// block is a keyframe. -// |data| contains the bytes in the block. -// |size| indicates the number of bytes in |data|. -bool IsKeyframe(bool is_video, Codec codec, const uint8_t* data, int size) { - // For now, assume that all blocks are keyframes for datatypes other than - // video. This is a valid assumption for Vorbis, WebVTT, & Opus. - if (!is_video) - return true; - - switch (codec) { - case kCodecVP8: - return VP8Parser::IsKeyframe(data, size); - case kCodecVP9: - return VP9Parser::IsKeyframe(data, size); - default: - NOTIMPLEMENTED() << "Unsupported codec " << codec; - return false; - } -} - } // namespace WebMClusterParser::WebMClusterParser( @@ -151,6 +130,7 @@ WebMParserClient* WebMClusterParser::OnListStart(int id) { block_duration_ = -1; discard_padding_ = -1; discard_padding_set_ = false; + reference_block_set_ = false; } else if (id == kWebMIdBlockAdditions) { block_add_id_ = -1; block_additional_data_.reset(); @@ -170,10 +150,10 @@ bool WebMClusterParser::OnListEnd(int id) { return false; } - bool result = ParseBlock(false, block_data_.get(), block_data_size_, - block_additional_data_.get(), - block_additional_data_size_, block_duration_, - discard_padding_set_ ? discard_padding_ : 0); + bool result = ParseBlock( + false, block_data_.get(), block_data_size_, block_additional_data_.get(), + block_additional_data_size_, block_duration_, + discard_padding_set_ ? discard_padding_ : 0, reference_block_set_); block_data_.reset(); block_data_size_ = -1; block_duration_ = -1; @@ -182,6 +162,7 @@ bool WebMClusterParser::OnListEnd(int id) { block_additional_data_size_ = 0; discard_padding_ = -1; discard_padding_set_ = false; + reference_block_set_ = false; return result; } @@ -212,7 +193,8 @@ bool WebMClusterParser::ParseBlock(bool is_simple_block, const uint8_t* additional, int additional_size, int duration, - int64_t discard_padding) { + int64_t discard_padding, + bool reference_block_set) { if (size < 4) return false; @@ -237,17 +219,24 @@ bool WebMClusterParser::ParseBlock(bool is_simple_block, if (timecode & 0x8000) timecode |= ~0xffff; + // The first bit of the flags is set when a SimpleBlock contains only + // keyframes. If this is a Block, then keyframe is inferred by the absence of + // the ReferenceBlock Element. + // http://www.matroska.org/technical/specs/index.html + bool is_key_frame = + is_simple_block ? (flags & 0x80) != 0 : !reference_block_set; + const uint8_t* frame_data = buf + 4; int frame_size = size - (frame_data - buf); - return OnBlock(is_simple_block, track_num, timecode, duration, flags, - frame_data, frame_size, additional, additional_size, - discard_padding); + return OnBlock(is_simple_block, track_num, timecode, duration, frame_data, + frame_size, additional, additional_size, discard_padding, + is_key_frame); } bool WebMClusterParser::OnBinary(int id, const uint8_t* data, int size) { switch (id) { case kWebMIdSimpleBlock: - return ParseBlock(true, data, size, NULL, 0, -1, 0); + return ParseBlock(true, data, size, NULL, 0, -1, 0, false); case kWebMIdBlock: if (block_data_) { @@ -293,6 +282,12 @@ bool WebMClusterParser::OnBinary(int id, const uint8_t* data, int size) { return true; } + case kWebMIdReferenceBlock: + // We use ReferenceBlock to determine whether the current Block contains a + // keyframe or not. Other than that, we don't care about the value of the + // ReferenceBlock element itself. + reference_block_set_ = true; + return true; default: return true; } @@ -302,12 +297,12 @@ bool WebMClusterParser::OnBlock(bool is_simple_block, int track_num, int timecode, int block_duration, - int flags, const uint8_t* data, int size, const uint8_t* additional, int additional_size, - int64_t discard_padding) { + int64_t discard_padding, + bool is_key_frame) { DCHECK_GE(size, 0); if (cluster_timecode_ == -1) { LOG(ERROR) << "Got a block before cluster timecode."; @@ -358,18 +353,6 @@ bool WebMClusterParser::OnBlock(bool is_simple_block, scoped_refptr buffer; if (stream_type != kStreamText) { - // The first bit of the flags is set when a SimpleBlock contains only - // keyframes. If this is a Block, then inspection of the payload is - // necessary to determine whether it contains a keyframe or not. - // http://www.matroska.org/technical/specs/index.html - bool is_keyframe = - is_simple_block - ? (flags & 0x80) != 0 - : IsKeyframe(stream_type == kStreamVideo, - video_stream_info_ ? video_stream_info_->codec() - : kUnknownCodec, - data, size); - // Every encrypted Block has a signal byte and IV prepended to it. Current // encrypted WebM request for comments specification is here // http://wiki.webmproject.org/encryption/webm-encryption-rfc @@ -385,7 +368,7 @@ bool WebMClusterParser::OnBlock(bool is_simple_block, } buffer = MediaSample::CopyFrom(data + data_offset, size - data_offset, - additional, additional_size, is_keyframe); + additional, additional_size, is_key_frame); if (decrypt_config) { if (!decryptor_source_) { diff --git a/packager/media/formats/webm/webm_cluster_parser.h b/packager/media/formats/webm/webm_cluster_parser.h index 78ad269690..5e21139176 100644 --- a/packager/media/formats/webm/webm_cluster_parser.h +++ b/packager/media/formats/webm/webm_cluster_parser.h @@ -163,17 +163,18 @@ class WebMClusterParser : public WebMParserClient { const uint8_t* additional, int additional_size, int duration, - int64_t discard_padding); + int64_t discard_padding, + bool reference_block_set); bool OnBlock(bool is_simple_block, int track_num, int timecode, int duration, - int flags, const uint8_t* data, int size, const uint8_t* additional, int additional_size, - int64_t discard_padding); + int64_t discard_padding, + bool is_key_frame); // Resets the Track objects associated with each text track. void ResetTextTracks(); @@ -215,6 +216,8 @@ class WebMClusterParser : public WebMParserClient { int64_t discard_padding_ = -1; bool discard_padding_set_ = false; + bool reference_block_set_ = false; + int64_t cluster_timecode_ = -1; int64_t cluster_start_time_; bool cluster_ended_ = false; diff --git a/packager/media/formats/webm/webm_cluster_parser_unittest.cc b/packager/media/formats/webm/webm_cluster_parser_unittest.cc index e1a2af2c1d..8235094fb8 100644 --- a/packager/media/formats/webm/webm_cluster_parser_unittest.cc +++ b/packager/media/formats/webm/webm_cluster_parser_unittest.cc @@ -121,17 +121,19 @@ struct BlockInfo { // Default data will be used if no data given. const uint8_t* data; int data_length; + + bool is_key_frame; }; const BlockInfo kDefaultBlockInfo[] = { - {kAudioTrackNum, 0, 23, true, NULL, 0}, - {kAudioTrackNum, 23, 23, true, NULL, 0}, + {kAudioTrackNum, 0, 23, true, NULL, 0, true}, + {kAudioTrackNum, 23, 23, true, NULL, 0, true}, // Assumes not using DefaultDuration - {kVideoTrackNum, 33, 34, true, NULL, 0}, - {kAudioTrackNum, 46, 23, true, NULL, 0}, - {kVideoTrackNum, 67, 33, false, NULL, 0}, - {kAudioTrackNum, 69, 23, false, NULL, 0}, - {kVideoTrackNum, 100, 33, false, NULL, 0}, + {kVideoTrackNum, 33, 34, true, NULL, 0, true}, + {kAudioTrackNum, 46, 23, true, NULL, 0, false}, + {kVideoTrackNum, 67, 33, false, NULL, 0, true}, + {kAudioTrackNum, 69, 23, false, NULL, 0, false}, + {kVideoTrackNum, 100, 33, false, NULL, 0, false}, }; const uint8_t kEncryptedFrame[] = { @@ -203,20 +205,22 @@ scoped_ptr CreateCluster(int timecode, if (block_info[i].use_simple_block) { CHECK_GE(block_info[i].duration, 0); - cb.AddSimpleBlock(block_info[i].track_num, block_info[i].timestamp, 0, - data, data_length); + cb.AddSimpleBlock(block_info[i].track_num, block_info[i].timestamp, + block_info[i].is_key_frame ? 0x80 : 0x00, data, + data_length); continue; } if (block_info[i].duration < 0) { - cb.AddBlockGroupWithoutBlockDuration(block_info[i].track_num, - block_info[i].timestamp, 0, data, - data_length); + cb.AddBlockGroupWithoutBlockDuration( + block_info[i].track_num, block_info[i].timestamp, 0, + block_info[i].is_key_frame, data, data_length); continue; } cb.AddBlockGroup(block_info[i].track_num, block_info[i].timestamp, - block_info[i].duration, 0, data, data_length); + block_info[i].duration, 0, block_info[i].is_key_frame, + data, data_length); } return cb.Finish(); @@ -277,6 +281,7 @@ bool VerifyBuffersHelper(const BufferQueue& audio_buffers, buffer->pts()); EXPECT_EQ(std::abs(block_info[i].duration) * kMicrosecondsPerMillisecond, buffer->duration()); + EXPECT_EQ(block_info[i].is_key_frame, buffer->is_key_frame()); } return true; @@ -476,29 +481,30 @@ TEST_F(WebMClusterParserTest, TracksWithSampleMissingDuration) { const BlockInfo kBlockInfo[] = { // Note that for simple blocks, duration is not encoded. - {kVideoTrackNum, 0, 0, true, NULL, 0}, - {kAudioTrackNum, 0, 23, false, NULL, 0}, - {kTextTrackNum, 10, 42, false, NULL, 0}, - {kAudioTrackNum, 23, 0, true, NULL, 0}, - {kVideoTrackNum, 33, 0, true, NULL, 0}, - {kAudioTrackNum, 36, 0, true, NULL, 0}, - {kVideoTrackNum, 66, 0, true, NULL, 0}, - {kAudioTrackNum, 70, 0, true, NULL, 0}, - {kAudioTrackNum, 83, 0, true, NULL, 0}, + {kVideoTrackNum, 0, 0, true, NULL, 0, false}, + {kAudioTrackNum, 0, 23, false, NULL, 0, false}, + {kTextTrackNum, 10, 42, false, NULL, 0, true}, + {kAudioTrackNum, 23, 0, true, NULL, 0, false}, + {kVideoTrackNum, 33, 0, true, NULL, 0, false}, + {kAudioTrackNum, 36, 0, true, NULL, 0, false}, + {kVideoTrackNum, 66, 0, true, NULL, 0, false}, + {kAudioTrackNum, 70, 0, true, NULL, 0, false}, + {kAudioTrackNum, 83, 0, true, NULL, 0, false}, }; // Samples are not emitted in the same order as |kBlockInfo| due to missing of // duration in some samples. const BlockInfo kExpectedBlockInfo[] = { - {kAudioTrackNum, 0, 23, false, NULL, 0}, - {kTextTrackNum, 10, 42, false, NULL, 0}, - {kVideoTrackNum, 0, 33, true, NULL, 0}, - {kAudioTrackNum, 23, 13, true, NULL, 0}, - {kVideoTrackNum, 33, 33, true, NULL, 0}, - {kAudioTrackNum, 36, 34, true, NULL, 0}, - {kAudioTrackNum, 70, 13, true, NULL, 0}, - {kAudioTrackNum, 83, kTestAudioFrameDefaultDurationInMs, true, NULL, 0}, - {kVideoTrackNum, 66, kExpectedVideoEstimationInMs, true, NULL, 0}, + {kAudioTrackNum, 0, 23, false, NULL, 0, false}, + {kTextTrackNum, 10, 42, false, NULL, 0, true}, + {kVideoTrackNum, 0, 33, true, NULL, 0, false}, + {kAudioTrackNum, 23, 13, true, NULL, 0, false}, + {kVideoTrackNum, 33, 33, true, NULL, 0, false}, + {kAudioTrackNum, 36, 34, true, NULL, 0, false}, + {kAudioTrackNum, 70, 13, true, NULL, 0, false}, + {kAudioTrackNum, 83, kTestAudioFrameDefaultDurationInMs, true, NULL, 0, + false}, + {kVideoTrackNum, 66, kExpectedVideoEstimationInMs, true, NULL, 0, false}, }; const int kExpectedBuffersOnPartialCluster[] = { 0, // Video simple block without duration should be held back @@ -609,8 +615,8 @@ TEST_F(WebMClusterParserTest, ParseClusterWithMultipleCalls) { // one of these scenarios. TEST_F(WebMClusterParserTest, ParseBlockGroup) { const BlockInfo kBlockInfo[] = { - {kAudioTrackNum, 0, 23, false, NULL, 0}, - {kVideoTrackNum, 33, 34, false, NULL, 0}, + {kAudioTrackNum, 0, 23, false, NULL, 0, true}, + {kVideoTrackNum, 33, 34, false, NULL, 0, true}, }; int block_count = arraysize(kBlockInfo); @@ -635,11 +641,11 @@ TEST_F(WebMClusterParserTest, ParseBlockGroup) { TEST_F(WebMClusterParserTest, ParseSimpleBlockAndBlockGroupMixture) { const BlockInfo kBlockInfo[] = { - {kAudioTrackNum, 0, 23, true, NULL, 0}, - {kAudioTrackNum, 23, 23, false, NULL, 0}, - {kVideoTrackNum, 33, 34, true, NULL, 0}, - {kAudioTrackNum, 46, 23, false, NULL, 0}, - {kVideoTrackNum, 67, 33, false, NULL, 0}, + {kAudioTrackNum, 0, 23, true, NULL, 0, false}, + {kAudioTrackNum, 23, 23, false, NULL, 0, false}, + {kVideoTrackNum, 33, 34, true, NULL, 0, false}, + {kAudioTrackNum, 46, 23, false, NULL, 0, false}, + {kVideoTrackNum, 67, 33, false, NULL, 0, false}, }; int block_count = arraysize(kBlockInfo); scoped_ptr cluster(CreateCluster(0, kBlockInfo, block_count)); @@ -656,21 +662,21 @@ TEST_F(WebMClusterParserTest, IgnoredTracks) { parser_.reset(CreateParserWithIgnoredTracks(ignored_tracks)); const BlockInfo kInputBlockInfo[] = { - {kAudioTrackNum, 0, 23, true, NULL, 0}, - {kAudioTrackNum, 23, 23, true, NULL, 0}, - {kVideoTrackNum, 33, 34, true, NULL, 0}, - {kTextTrackNum, 33, 99, true, NULL, 0}, - {kAudioTrackNum, 46, 23, true, NULL, 0}, - {kVideoTrackNum, 67, 34, true, NULL, 0}, + {kAudioTrackNum, 0, 23, true, NULL, 0, false}, + {kAudioTrackNum, 23, 23, true, NULL, 0, false}, + {kVideoTrackNum, 33, 34, true, NULL, 0, false}, + {kTextTrackNum, 33, 99, true, NULL, 0, false}, + {kAudioTrackNum, 46, 23, true, NULL, 0, false}, + {kVideoTrackNum, 67, 34, true, NULL, 0, false}, }; int input_block_count = arraysize(kInputBlockInfo); const BlockInfo kOutputBlockInfo[] = { - {kAudioTrackNum, 0, 23, true, NULL, 0}, - {kAudioTrackNum, 23, 23, true, NULL, 0}, - {kVideoTrackNum, 33, 34, true, NULL, 0}, - {kAudioTrackNum, 46, 23, true, NULL, 0}, - {kVideoTrackNum, 67, 34, true, NULL, 0}, + {kAudioTrackNum, 0, 23, true, NULL, 0, false}, + {kAudioTrackNum, 23, 23, true, NULL, 0, false}, + {kVideoTrackNum, 33, 34, true, NULL, 0, false}, + {kAudioTrackNum, 46, 23, true, NULL, 0, false}, + {kVideoTrackNum, 67, 34, true, NULL, 0, false}, }; int output_block_count = arraysize(kOutputBlockInfo); @@ -694,13 +700,13 @@ TEST_F(WebMClusterParserTest, ParseTextTracks) { kNoTimestamp, kNoTimestamp, text_tracks)); const BlockInfo kInputBlockInfo[] = { - {kAudioTrackNum, 0, 23, true, NULL, 0}, - {kAudioTrackNum, 23, 23, true, NULL, 0}, - {kVideoTrackNum, 33, 34, true, NULL, 0}, - {kTextTrackNum, 33, 42, false, NULL, 0}, - {kAudioTrackNum, 46, 23, true, NULL, 0}, - {kTextTrackNum, 55, 44, false, NULL, 0}, - {kVideoTrackNum, 67, 34, true, NULL, 0}, + {kAudioTrackNum, 0, 23, true, NULL, 0, false}, + {kAudioTrackNum, 23, 23, true, NULL, 0, false}, + {kVideoTrackNum, 33, 34, true, NULL, 0, false}, + {kTextTrackNum, 33, 42, false, NULL, 0, true}, + {kAudioTrackNum, 46, 23, true, NULL, 0, false}, + {kTextTrackNum, 55, 44, false, NULL, 0, true}, + {kVideoTrackNum, 67, 34, true, NULL, 0, false}, }; int input_block_count = arraysize(kInputBlockInfo); @@ -724,7 +730,7 @@ TEST_F(WebMClusterParserTest, TextTracksSimpleBlock) { kNoTimestamp, kNoTimestamp, text_tracks)); const BlockInfo kInputBlockInfo[] = { - { kTextTrackNum, 33, 42, true }, + {kTextTrackNum, 33, 42, true, NULL, 0, false}, }; int input_block_count = arraysize(kInputBlockInfo); @@ -753,14 +759,14 @@ TEST_F(WebMClusterParserTest, ParseMultipleTextTracks) { kNoTimestamp, kNoTimestamp, text_tracks)); const BlockInfo kInputBlockInfo[] = { - {kAudioTrackNum, 0, 23, true, NULL, 0}, - {kAudioTrackNum, 23, 23, true, NULL, 0}, - {kVideoTrackNum, 33, 34, true, NULL, 0}, - {kSubtitleTextTrackNum, 33, 42, false, NULL, 0}, - {kAudioTrackNum, 46, 23, true, NULL, 0}, - {kCaptionTextTrackNum, 55, 44, false, NULL, 0}, - {kVideoTrackNum, 67, 34, true, NULL, 0}, - {kSubtitleTextTrackNum, 67, 33, false, NULL, 0}, + {kAudioTrackNum, 0, 23, true, NULL, 0, false}, + {kAudioTrackNum, 23, 23, true, NULL, 0, false}, + {kVideoTrackNum, 33, 34, true, NULL, 0, false}, + {kSubtitleTextTrackNum, 33, 42, false, NULL, 0, false}, + {kAudioTrackNum, 46, 23, true, NULL, 0, false}, + {kCaptionTextTrackNum, 55, 44, false, NULL, 0, false}, + {kVideoTrackNum, 67, 34, true, NULL, 0, false}, + {kSubtitleTextTrackNum, 67, 33, false, NULL, 0, false}, }; int input_block_count = arraysize(kInputBlockInfo); @@ -907,7 +913,7 @@ TEST_F(WebMClusterParserTest, ParseInvalidTextBlockGroupWithoutDuration) { kNoTimestamp, kNoTimestamp, text_tracks)); const BlockInfo kBlockInfo[] = { - { kTextTrackNum, 33, -42, false }, + {kTextTrackNum, 33, -42, false, NULL, 0, false}, }; int block_count = arraysize(kBlockInfo); scoped_ptr cluster(CreateCluster(0, kBlockInfo, block_count)); @@ -924,13 +930,15 @@ TEST_F(WebMClusterParserTest, ParseWithDefaultDurationsSimpleBlocks) { const BlockInfo kBlockInfo[] = { // Note that for simple blocks, duration is not encoded. - {kAudioTrackNum, 0, 23, true, NULL, 0}, - {kAudioTrackNum, 23, 23, true, NULL, 0}, - {kVideoTrackNum, 33, 34, true, NULL, 0}, - {kAudioTrackNum, 46, 23, true, NULL, 0}, - {kVideoTrackNum, 67, 33, true, NULL, 0}, - {kAudioTrackNum, 69, kTestAudioFrameDefaultDurationInMs, true, NULL, 0}, - {kVideoTrackNum, 100, kTestVideoFrameDefaultDurationInMs, true, NULL, 0}, + {kAudioTrackNum, 0, 23, true, NULL, 0, false}, + {kAudioTrackNum, 23, 23, true, NULL, 0, false}, + {kVideoTrackNum, 33, 34, true, NULL, 0, false}, + {kAudioTrackNum, 46, 23, true, NULL, 0, false}, + {kVideoTrackNum, 67, 33, true, NULL, 0, false}, + {kAudioTrackNum, 69, kTestAudioFrameDefaultDurationInMs, true, NULL, 0, + false}, + {kVideoTrackNum, 100, kTestVideoFrameDefaultDurationInMs, true, NULL, 0, + false}, }; int block_count = arraysize(kBlockInfo); @@ -958,13 +966,13 @@ TEST_F(WebMClusterParserTest, ParseWithoutAnyDurationsSimpleBlocks) { // Flush() is called. We use the maximum seen so far for estimation. const BlockInfo kBlockInfo1[] = { - {kAudioTrackNum, 0, 23, true, NULL, 0}, - {kAudioTrackNum, 23, 22, true, NULL, 0}, - {kVideoTrackNum, 33, 33, true, NULL, 0}, - {kAudioTrackNum, 45, 23, true, NULL, 0}, - {kVideoTrackNum, 66, 34, true, NULL, 0}, - {kAudioTrackNum, 68, 24, true, NULL, 0}, - {kVideoTrackNum, 100, 35, true, NULL, 0}, + {kAudioTrackNum, 0, 23, true, NULL, 0, false}, + {kAudioTrackNum, 23, 22, true, NULL, 0, false}, + {kVideoTrackNum, 33, 33, true, NULL, 0, false}, + {kAudioTrackNum, 45, 23, true, NULL, 0, false}, + {kVideoTrackNum, 66, 34, true, NULL, 0, false}, + {kAudioTrackNum, 68, 24, true, NULL, 0, false}, + {kVideoTrackNum, 100, 35, true, NULL, 0, false}, }; int block_count1 = arraysize(kBlockInfo1); @@ -984,8 +992,8 @@ TEST_F(WebMClusterParserTest, ParseWithoutAnyDurationsSimpleBlocks) { const int kExpectedAudioEstimationInMs = 24; const int kExpectedVideoEstimationInMs = 35; const BlockInfo kBlockInfo2[] = { - {kAudioTrackNum, 92, kExpectedAudioEstimationInMs, true, NULL, 0}, - {kVideoTrackNum, 135, kExpectedVideoEstimationInMs, true, NULL, 0}, + {kAudioTrackNum, 92, kExpectedAudioEstimationInMs, true, NULL, 0, false}, + {kVideoTrackNum, 135, kExpectedVideoEstimationInMs, true, NULL, 0, false}, }; int block_count2 = arraysize(kBlockInfo2); @@ -1010,13 +1018,13 @@ TEST_F(WebMClusterParserTest, ParseWithoutAnyDurationsBlockGroups) { // for each track when Flush() is called. We use the maximum seen so far. const BlockInfo kBlockInfo1[] = { - {kAudioTrackNum, 0, -23, false, NULL, 0}, - {kAudioTrackNum, 23, -22, false, NULL, 0}, - {kVideoTrackNum, 33, -33, false, NULL, 0}, - {kAudioTrackNum, 45, -23, false, NULL, 0}, - {kVideoTrackNum, 66, -34, false, NULL, 0}, - {kAudioTrackNum, 68, -24, false, NULL, 0}, - {kVideoTrackNum, 100, -35, false, NULL, 0}, + {kAudioTrackNum, 0, -23, false, NULL, 0, false}, + {kAudioTrackNum, 23, -22, false, NULL, 0, false}, + {kVideoTrackNum, 33, -33, false, NULL, 0, false}, + {kAudioTrackNum, 45, -23, false, NULL, 0, false}, + {kVideoTrackNum, 66, -34, false, NULL, 0, false}, + {kAudioTrackNum, 68, -24, false, NULL, 0, false}, + {kVideoTrackNum, 100, -35, false, NULL, 0, false}, }; int block_count1 = arraysize(kBlockInfo1); @@ -1036,8 +1044,10 @@ TEST_F(WebMClusterParserTest, ParseWithoutAnyDurationsBlockGroups) { const int kExpectedAudioEstimationInMs = 24; const int kExpectedVideoEstimationInMs = 35; const BlockInfo kBlockInfo2[] = { - {kAudioTrackNum, 92, -kExpectedAudioEstimationInMs, false, NULL, 0}, - {kVideoTrackNum, 135, -kExpectedVideoEstimationInMs, false, NULL, 0}, + {kAudioTrackNum, 92, -kExpectedAudioEstimationInMs, false, NULL, 0, + false}, + {kVideoTrackNum, 135, -kExpectedVideoEstimationInMs, false, NULL, 0, + false}, }; int block_count2 = arraysize(kBlockInfo2); @@ -1056,17 +1066,10 @@ TEST_F(WebMClusterParserTest, ParseWithoutAnyDurationsBlockGroups) { TEST_F(WebMClusterParserTest, ParseDegenerateClusterYieldsHardcodedEstimatedDurations) { const BlockInfo kBlockInfo[] = { - { - kAudioTrackNum, - 0, - WebMClusterParser::kDefaultAudioBufferDurationInMs, - true - }, { - kVideoTrackNum, - 0, - WebMClusterParser::kDefaultVideoBufferDurationInMs, - true - }, + {kAudioTrackNum, 0, WebMClusterParser::kDefaultAudioBufferDurationInMs, + true, NULL, 0, false}, + {kVideoTrackNum, 0, WebMClusterParser::kDefaultVideoBufferDurationInMs, + true, NULL, 0, false}, }; int block_count = arraysize(kBlockInfo); @@ -1082,8 +1085,10 @@ TEST_F(WebMClusterParserTest, ResetParserToHaveDefaultDurations(); const BlockInfo kBlockInfo[] = { - { kAudioTrackNum, 0, kTestAudioFrameDefaultDurationInMs, true }, - { kVideoTrackNum, 0, kTestVideoFrameDefaultDurationInMs, true }, + {kAudioTrackNum, 0, kTestAudioFrameDefaultDurationInMs, true, NULL, 0, + false}, + {kVideoTrackNum, 0, kTestVideoFrameDefaultDurationInMs, true, NULL, 0, + false}, }; int block_count = arraysize(kBlockInfo); diff --git a/packager/media/test/data/bear-vp9-blockgroup.webm b/packager/media/test/data/bear-vp9-blockgroup.webm new file mode 100644 index 0000000000000000000000000000000000000000..ecffa7d76e28977a417243084042b64583a65715 GIT binary patch literal 67871 zcma&NV{j+k^FADHys>TDwl}tI+xo=Z*tTukb~d(c=fC%Ne{Y_5 W4>YAyU#?_~< zK63_3bh{u&C<0~qoeQ6|H= zU8W;asUiqfvdmPe5@7pJLQ}4``YYxClkkO`UH(dQG9A%>@5E8+_c8jw z{~rInqK0avE)ZTwKqNd!l;Q?R#y`f|!tg)!Xc_33=osl3)C8lP3~cPJP4sMB+)W(+ zQ>47QbOiwHG!&Y!E^$2wZx#puCf*MW0{$dk4GC7&Q z0LqnJ$&+0K{M9f(GEfKz`3CNRi-QCQlL!c`)-QUGEvC>@M(M4Kzi6(z0z*`ax5RXp zeVFb6>Ahz4s^z-S$4%la8g#|E3E~_Dy`z&+ymY=UcTbOg?39>%gr13wIC0)H6D zPuBfwx5{S)bvBw}xDz9TzgdWwE8m_vGhsJRhIM!8oQ7c^)K_k=Wjhl23=W)p%X%k% z-hIs>6GN__o3hMeOg*S|s8`2=$~!U~rjJH+b3`W=6TV+z zZiPf%$XC_KlMV84z{CP3g<=6XWNpV3_(LRrJ~d3j&HtDfy;XZWsac&P5REHhhRunq zSblzuZ0XT%P|##_lr9d#&Z`@M7v%NZzd1Qv3r)>`XJ(yWv5?{FtdGVTjM~_5XX}D_ zY8|`4G@a5;)n`Wd0|ZZ6fJg%sE&oi7IfH+inf}J*{Z1sbOP4Xb*25TKvhFDm9b>!Y zl27nw&w5>v#0&yFZaU&)cG#H8**bjm&Za^wnJHoCMeqBPIZfOSmMw4H@N>4BkDTqQ zO7)KiXJ0`okcqO(DhNVR=IV<#(JPB_wpN_*xQ}E8?^D$txD3)DTyRU|iXbGKMKX=Z zH=z^mAKNT!y-{+}W$Q*s(Wxi4hgGh4r4sEVgplBNp=_r&>{?5U;*A}&9H^@$SUXyI z0|^*T)fBMvD-sNu@nkCQ!s`dYgDgj@v9Hlky&GA?O>TGy^kI5fJEDmzTuqGTN+UJ~ zg2Xl$EYBsIwsopJ(7>F#?x@Ov>F#UAU5aB1eL4jr*#7X!A}TYcfl_G1SKfrG38=Tr z6SVeI6`NVA`BTa5ic;1F)PJ9PA9dpbz5Pky@kEg|#&9sPBRxZt`KjPB{oKH`uE|2N z@sKdiSCD5T3&e;l;cO7uMS!hR(cJ`^dUPM_V@jm&%BB})4K-mNpue?$sRV1{W(<8DnrOZU z25;MYrdr>qOc-G}T#;hSlE3}zx-!NMOr>#qvwO*~P)t7Em;0gBB`lI78~PDJzzCWq zZ;gKM9G|N8iW{*W#%WJUr}>f@d@rN*ltB=}ojp)a^sT~$*sU++{YPec8aYMP}6YII@Xz-CCLRGI?{XC@>9a<@9Ne z>v+JR6D-Yaa!J%bGq0H7Jx0yh5dodyu#w+TUp-jl)&zp?nrQ*$pPnK%H+?=SBg^~v zwI>B|Q*HOS%`EyzIGI>VEK*ivp>D??9=+lZi!VAJB9rV}s4`W3o!$waO_2h|g!t&= zq&~Rj5+ogYeq!fnu&UzrQK4zqoA1b(3*s05v}el6(us`v(m;-iNN*93(h`S-NOqglDDD zy~ul-Ay{hy-gu^+r#mRX3zxUG{UOc?(QN6>>6iYK4OPr4QW%zjc~I%$8g-h5M-*lM z1d!@E!D{X=Xi*K}QI=q{xN7{5;@OjZ&=YBQRCGX;2<1o1TX+BAB29F_n1Z}(6%{Kd z_uINIANyQC+QFEyS^F{gd{#Vz_!tM2M2C;T#Qb1DD&s~zGVxSwtZ>5$^75@q0t_&C zF`@df>zQJ?J&z5evBn=``?+=}HGok}>m4dzBVz_CO%G}=)FO&+ibl|Q; zOGM2-Rmw7(wU^~n<(FX=S6vzFlDC?C5#gvjqZ=8{mt{XGH#b}0K6a|O@jV!Fun^8J zGD~$uG;brc;vdj5nZVRp+7bKxb)*MSlcN!_5J7hT9|$l4a)sfPQ1K^_^TCfNz+K2n|%#4<>w{2gN>3T z`dt^=4Jixr-&xtER&lOWYR3RkfRu7@!dcq}f_I`m2%B0f{2%Q zmUp&@(PdqA^a@bhmSiAwXGVX5_u0f3hR{BtSB>LFc zW6W2^Fdxow=*0F=eZ!f?tyB+}OQRDMzs?1X zN%hw~Q8SA^;S+hAF%mS*Ve-NSwz<$8yfwId@;zXm#(w1soAH17af$*aXHYCeoBaKP zSjI>7%f;N{!c{`MwXdJ|dL$JHuCXU{;rgX5rln!M;}=K_xr5o}^u!LqlT3MS6|%NL zOSX_=cSv?wqQe2AZzi~in&L8$qSzv!y}5cm*bd!d|MT?e86byHSfi?B}!CU zR=QPZDUvhqg!wxa81sa#layqREGp9y-dQTC=D5YCl5E^JVtQla`_KVN#vJ}Vau{_>F&U{q3Y!6t8Nnbi0F?67kDhE5O-bgD?OM< zUL9z(-z<%yq3OJLCE?X~KFLjY?_0h%fvs&m{1X&UN7^ylpXd$^;5&{6 zrdP{&Jq52=$ZmtSB1>=>rN6e}hsmg+=7`P?fAc_nQ)EuIb^cjo^*vdsc%9R%I>YBa3^X3j37|RAx3zppEY^N63k`k_#t~-Rl~4NJPA+q ze2Qt(jeFt|z;v<~r&t!V_u`U(2g>UsVxWKWBJdORL-X1m@TouKtUtuK)Srd#qEvN< z_=UC+a_r<CQXz{@Neu$RetcFUAalyieBYIa~MVYmM>wFTrN?J!;*wM-;dW<@qkvwRf`M7v_c?f`^~YMALbqzf>x<`O=Bo^n0};WkwFWRqsM=6w@7i(F3R{!| z2L8|7F?}A3QC2J^1mWc{7_I|)d1U={C{-s$3hiNCddTjb$+{LuXoqH>22l&X1-ye; zlOw9W8a(NUh)chaby#u>N!n`rM6s509bM1;EMq{JHgRl(I>A)=vIO${dIwa{DG$w# zAVNd^dYl-9Mmz|&aHp+CiUrIdJ)Fo3T%cnQ(Uu8ji`9cb_1QMfbWOW|Y_2nk-6dHt z_pH<&g^v% zpZxJdyll{YpTP7Uj^1?@ErKLc2^rDp-Z0{R+Dos~&4I@**Lx**;`hkZC%@u;;{)m(Fsc&MT?NgcmUIc`!)Y;w$kwk``ER1T%Z9G>M(q& z`YgdpN`2o8sXtKeSl%E2h!7|QNFd&*&JzfTME~=<AbUfXo2 z+Sj#fQ0!-+(pWn&9y-FYs;#9B72e&-b@*{NH!INl-zHhWKkx5J_6 zE0^{=fG}5}Fi#*G0A&16hh7~4AW(fEAj-DlQ1~)?`&#Jv(>k)R8Jq@G3Bjp3(J>aB zb!{%3TF)0hYO|@wi2KP-asu&pM%tSEyW6wg^jf`Zv7Ldot$P4(dpUq4c zL#|p1mX!Ya=M&^h1Rw&|Z^1eO+Jtk&Fs)zyr#o5FAT%-?$3!n{sKi9!?Q_4s`*ZM8kz5AAlSNAs<+o*p0n+~4omr}ANaG^>4~OnVlbVPMSt;NoGb8_C-49OD*0#Si&pRdtn~XzyAy7f z@g3`HU`qu>cm(!gAUKE27Pa&@XZ1STReuzcKjEx>l?6UV6myb{*R{IzVinzJM9Z-2 zMuTDE&WPSMECR+{@j0n41>E)E+9F1u0@LdvdT~TxT2a#(oEZ{@JG7jTXNYqh@W92R zH&m^5`qNh=gO@#iHsHdh44M9b9>Re^B!=6zy70JocACnL>*$E$x*=*~l0C?kx+h%Gqw&%b@{z5S5Gz7pt&#{G=UdE<`L=fmeX! z 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 hb8n!HXj5&V`+^E>98