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

Unified Diff: media/filters/chunk_demuxer_unittest.cc

Issue 346613003: Fix WebMStreamParser to handle Cues between Clusters correctly. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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
« no previous file with comments | « no previous file | media/formats/webm/webm_stream_parser.h » ('j') | media/formats/webm/webm_stream_parser.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/chunk_demuxer_unittest.cc
diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc
index 74f2a01176fccd1e1e327f7c31699ea370043462..7672151b46cbbd58047bbdc4b154472c5180ba40 100644
--- a/media/filters/chunk_demuxer_unittest.cc
+++ b/media/filters/chunk_demuxer_unittest.cc
@@ -46,6 +46,11 @@ const uint8 kVP8Keyframe[] = {
// WebM Block bytes that represent a VP8 interframe.
const uint8 kVP8Interframe[] = { 0x11, 0x00, 0x00 };
+static const uint8 kCuesHeader[] = {
+ 0x1C, 0x53, 0xBB, 0x6B, // Cues ID
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // cues(size = 0)
+};
+
const int kTracksHeaderSize = sizeof(kTracksHeader);
const int kTracksSizeOffset = 4;
@@ -3480,6 +3485,30 @@ TEST_P(ChunkDemuxerTest, ClusterWithUnknownSize) {
CheckExpectedRanges(kSourceId, "{ [0,115) }");
}
+TEST_P(ChunkDemuxerTest, CuesBetweenClustersWithUnknownSize) {
+ ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO));
+
+ AppendCluster(GenerateCluster(0, 0, 4, true));
+ CheckExpectedRanges(kSourceId, "{ [0,46) }");
wolenetz 2014/06/18 22:47:53 nit: ClusterWithUnknownSize already does this. Can
Sergey Ulanov 2014/06/18 23:26:49 Done.
+
+ // Add Cues followed by a new cluster in a single Append() call.
+ std::vector<uint8> data(kCuesHeader, kCuesHeader + sizeof(kCuesHeader));
+ scoped_ptr<Cluster> cluster = GenerateCluster(46, 66, 5, true);
+ data.insert(data.end(), cluster->data(), cluster->data() + cluster->size());
+ AppendData(&*data.begin(), data.size());
wolenetz 2014/06/18 22:47:53 nit: s/&*data.begin()/data.data()/ ?
Sergey Ulanov 2014/06/18 23:26:49 This doesn't compile on android, I already tried:
wolenetz 2014/06/18 23:54:29 I see. Thanks. (std::vector::data() is C++11)
+
+ CheckExpectedRanges(kSourceId, "{ [0,115) }");
+}
+
+TEST_P(ChunkDemuxerTest, CuesBetweenClusters) {
+ ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO));
+
+ AppendCluster(GenerateCluster(0, 0, 4));
+ AppendData(kCuesHeader, sizeof(kCuesHeader));
+ AppendCluster(GenerateCluster(46, 66, 5));
+ CheckExpectedRanges(kSourceId, "{ [0,115) }");
+}
+
// Generate two sets of tests: one using FrameProcessor, and one using
// LegacyFrameProcessor.
INSTANTIATE_TEST_CASE_P(NewFrameProcessor, ChunkDemuxerTest, Values(false));
« no previous file with comments | « no previous file | media/formats/webm/webm_stream_parser.h » ('j') | media/formats/webm/webm_stream_parser.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698