diff options
author | xhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-01 05:40:13 +0000 |
---|---|---|
committer | xhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-01 05:40:13 +0000 |
commit | 4b1e6bef6d12091316f8c71162fe7c5920b61645 (patch) | |
tree | 6e30611be298404cb0566ced55f8f80d59a218f8 /media | |
parent | e19c0b6240b6e61156cd4d45144fcf94ccf130e0 (diff) | |
download | chromium_src-4b1e6bef6d12091316f8c71162fe7c5920b61645.zip chromium_src-4b1e6bef6d12091316f8c71162fe7c5920b61645.tar.gz chromium_src-4b1e6bef6d12091316f8c71162fe7c5920b61645.tar.bz2 |
Use AppendCluster() to remove duplicate code in ChunkDemuxerTest.
BUG=none
TEST=none
Review URL: https://chromiumcodereview.appspot.com/21454003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@214964 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/filters/chunk_demuxer_unittest.cc | 398 |
1 files changed, 128 insertions, 270 deletions
diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc index 8719f87..0113cd1 100644 --- a/media/filters/chunk_demuxer_unittest.cc +++ b/media/filters/chunk_demuxer_unittest.cc @@ -285,9 +285,17 @@ class ChunkDemuxerTest : public testing::Test { AppendData(kSourceId, data, length); } + void AppendCluster(const std::string& source_id, + scoped_ptr<Cluster> cluster) { + AppendData(source_id, cluster->data(), cluster->size()); + } + + void AppendCluster(scoped_ptr<Cluster> cluster) { + AppendCluster(kSourceId, cluster.Pass()); + } + void AppendCluster(int timecode, int block_count) { - scoped_ptr<Cluster> cluster(GenerateCluster(timecode, block_count)); - AppendData(kSourceId, cluster->data(), cluster->size()); + AppendCluster(GenerateCluster(timecode, block_count)); } void AppendSingleStreamCluster(const std::string& source_id, int track_number, @@ -303,9 +311,9 @@ class ChunkDemuxerTest : public testing::Test { } ASSERT_NE(block_duration, 0); int end_timecode = timecode + block_count * block_duration; - scoped_ptr<Cluster> cluster(GenerateSingleStreamCluster( - timecode, end_timecode, track_number, block_duration)); - AppendData(source_id, cluster->data(), cluster->size()); + AppendCluster(source_id, + GenerateSingleStreamCluster( + timecode, end_timecode, track_number, block_duration)); } void AppendSingleStreamCluster(const std::string& source_id, int track_number, @@ -332,8 +340,7 @@ class ChunkDemuxerTest : public testing::Test { cb.AddSimpleBlock(track_number, timestamp_in_ms, block_flags, &data[0], data.size()); } - scoped_ptr<Cluster> cluster(cb.Finish()); - AppendData(source_id, cluster->data(), cluster->size()); + AppendCluster(source_id, cb.Finish()); } void AppendData(const std::string& source_id, @@ -394,8 +401,7 @@ class ChunkDemuxerTest : public testing::Test { } void AppendEmptyCluster(int timecode) { - scoped_ptr<Cluster> empty_cluster = GenerateEmptyCluster(timecode); - AppendData(empty_cluster->data(), empty_cluster->size()); + AppendCluster(GenerateEmptyCluster(timecode)); } PipelineStatusCB CreateInitDoneCB(const base::TimeDelta& expected_duration, @@ -958,8 +964,7 @@ TEST_F(ChunkDemuxerTest, TestShutdownBeforeAllInitSegmentsAppended) { // arrives. TEST_F(ChunkDemuxerTest, TestAppendDataAfterSeek) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> first_cluster(kDefaultFirstCluster()); - AppendData(first_cluster->data(), first_cluster->size()); + AppendCluster(kDefaultFirstCluster()); InSequence s; @@ -969,11 +974,9 @@ TEST_F(ChunkDemuxerTest, TestAppendDataAfterSeek) { EXPECT_CALL(*this, Checkpoint(2)); - scoped_ptr<Cluster> cluster(kDefaultSecondCluster()); - Checkpoint(1); - AppendData(cluster->data(), cluster->size()); + AppendCluster(kDefaultSecondCluster()); message_loop_.RunUntilIdle(); @@ -983,8 +986,7 @@ TEST_F(ChunkDemuxerTest, TestAppendDataAfterSeek) { // Test that parsing errors are handled for clusters appended after init. TEST_F(ChunkDemuxerTest, TestErrorWhileParsingClusterAfterInit) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> first_cluster(kDefaultFirstCluster()); - AppendData(first_cluster->data(), first_cluster->size()); + AppendCluster(kDefaultFirstCluster()); EXPECT_CALL(host_, OnDemuxerError(PIPELINE_ERROR_DECODE)); AppendGarbage(); @@ -1022,8 +1024,7 @@ TEST_F(ChunkDemuxerTest, TestSeekWhileParsingCluster) { // Append the new cluster and verify that only the blocks // in the new cluster are returned. - scoped_ptr<Cluster> cluster_b(GenerateCluster(5000, 6)); - AppendData(cluster_b->data(), cluster_b->size()); + AppendCluster(GenerateCluster(5000, 6)); GenerateExpectedReads(5000, 6); } @@ -1040,8 +1041,7 @@ TEST_F(ChunkDemuxerTest, TestAppendDataBeforeInit) { TEST_F(ChunkDemuxerTest, TestRead) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> cluster(kDefaultFirstCluster()); - AppendData(cluster->data(), cluster->size()); + AppendCluster(kDefaultFirstCluster()); bool audio_read_done = false; bool video_read_done = false; @@ -1058,18 +1058,12 @@ TEST_F(ChunkDemuxerTest, TestRead) { TEST_F(ChunkDemuxerTest, TestOutOfOrderClusters) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> cluster(kDefaultFirstCluster()); - AppendData(cluster->data(), cluster->size()); + AppendCluster(kDefaultFirstCluster()); + AppendCluster(GenerateCluster(10, 4)); - scoped_ptr<Cluster> cluster_a(GenerateCluster(10, 4)); - AppendData(cluster_a->data(), cluster_a->size()); - - // Cluster B starts before cluster_a and has data - // that overlaps. - scoped_ptr<Cluster> cluster_b(GenerateCluster(5, 4)); - - // Make sure that AppendData() does not fail. - AppendData(cluster_b->data(), cluster_b->size()); + // Make sure that AppendCluster() does not fail with a cluster that has + // overlaps with the previously appended cluster. + AppendCluster(GenerateCluster(5, 4)); // Verify that AppendData() can still accept more data. scoped_ptr<Cluster> cluster_c(GenerateCluster(45, 2)); @@ -1078,8 +1072,7 @@ TEST_F(ChunkDemuxerTest, TestOutOfOrderClusters) { TEST_F(ChunkDemuxerTest, TestNonMonotonicButAboveClusterTimecode) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> first_cluster(kDefaultFirstCluster()); - AppendData(first_cluster->data(), first_cluster->size()); + AppendCluster(kDefaultFirstCluster()); ClusterBuilder cb; @@ -1090,10 +1083,9 @@ TEST_F(ChunkDemuxerTest, TestNonMonotonicButAboveClusterTimecode) { AddSimpleBlock(&cb, kVideoTrackNum, 10); AddSimpleBlock(&cb, kAudioTrackNum, 7); AddSimpleBlock(&cb, kVideoTrackNum, 15); - scoped_ptr<Cluster> cluster_a(cb.Finish()); EXPECT_CALL(host_, OnDemuxerError(PIPELINE_ERROR_DECODE)); - AppendData(cluster_a->data(), cluster_a->size()); + AppendCluster(cb.Finish()); // Verify that AppendData() ignores data after the error. scoped_ptr<Cluster> cluster_b(GenerateCluster(20, 2)); @@ -1102,8 +1094,7 @@ TEST_F(ChunkDemuxerTest, TestNonMonotonicButAboveClusterTimecode) { TEST_F(ChunkDemuxerTest, TestBackwardsAndBeforeClusterTimecode) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> first_cluster(kDefaultFirstCluster()); - AppendData(first_cluster->data(), first_cluster->size()); + AppendCluster(kDefaultFirstCluster()); ClusterBuilder cb; @@ -1114,10 +1105,9 @@ TEST_F(ChunkDemuxerTest, TestBackwardsAndBeforeClusterTimecode) { AddSimpleBlock(&cb, kVideoTrackNum, 5); AddSimpleBlock(&cb, kAudioTrackNum, 3); AddSimpleBlock(&cb, kVideoTrackNum, 3); - scoped_ptr<Cluster> cluster_a(cb.Finish()); EXPECT_CALL(host_, OnDemuxerError(PIPELINE_ERROR_DECODE)); - AppendData(cluster_a->data(), cluster_a->size()); + AppendCluster(cb.Finish()); // Verify that AppendData() ignores data after the error. scoped_ptr<Cluster> cluster_b(GenerateCluster(6, 2)); @@ -1127,8 +1117,7 @@ TEST_F(ChunkDemuxerTest, TestBackwardsAndBeforeClusterTimecode) { TEST_F(ChunkDemuxerTest, TestPerStreamMonotonicallyIncreasingTimestamps) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> first_cluster(kDefaultFirstCluster()); - AppendData(first_cluster->data(), first_cluster->size()); + AppendCluster(kDefaultFirstCluster()); ClusterBuilder cb; @@ -1139,13 +1128,12 @@ TEST_F(ChunkDemuxerTest, TestPerStreamMonotonicallyIncreasingTimestamps) { AddSimpleBlock(&cb, kVideoTrackNum, 5); AddSimpleBlock(&cb, kAudioTrackNum, 4); AddSimpleBlock(&cb, kVideoTrackNum, 7); - scoped_ptr<Cluster> cluster(cb.Finish()); EXPECT_CALL(host_, OnDemuxerError(PIPELINE_ERROR_DECODE)); - AppendData(cluster->data(), cluster->size()); + AppendCluster(cb.Finish()); } -// Test the case where a cluster is passed to AppendData() before +// Test the case where a cluster is passed to AppendCluster() before // INFO & TRACKS data. TEST_F(ChunkDemuxerTest, TestClusterBeforeInitSegment) { EXPECT_CALL(*this, DemuxerOpened()); @@ -1154,9 +1142,7 @@ TEST_F(ChunkDemuxerTest, TestClusterBeforeInitSegment) { ASSERT_EQ(AddId(), ChunkDemuxer::kOk); - scoped_ptr<Cluster> cluster(GenerateCluster(0, 1)); - - AppendData(cluster->data(), cluster->size()); + AppendCluster(GenerateCluster(0, 1)); } // Test cases where we get an MarkEndOfStream() call during initialization. @@ -1193,8 +1179,7 @@ TEST_F(ChunkDemuxerTest, TestEndOfStreamWithNoMediaAppend) { TEST_F(ChunkDemuxerTest, TestDecodeErrorEndOfStream) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> cluster(kDefaultFirstCluster()); - AppendData(cluster->data(), cluster->size()); + AppendCluster(kDefaultFirstCluster()); CheckExpectedRanges(kDefaultFirstClusterRange); EXPECT_CALL(host_, OnDemuxerError(PIPELINE_ERROR_DECODE)); @@ -1205,8 +1190,7 @@ TEST_F(ChunkDemuxerTest, TestDecodeErrorEndOfStream) { TEST_F(ChunkDemuxerTest, TestNetworkErrorEndOfStream) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> cluster(kDefaultFirstCluster()); - AppendData(cluster->data(), cluster->size()); + AppendCluster(kDefaultFirstCluster()); CheckExpectedRanges(kDefaultFirstClusterRange); EXPECT_CALL(host_, OnDemuxerError(PIPELINE_ERROR_NETWORK)); @@ -1266,8 +1250,7 @@ class EndOfStreamHelper { TEST_F(ChunkDemuxerTest, TestEndOfStreamWithPendingReads) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> cluster(GenerateCluster(0, 2)); - AppendData(cluster->data(), cluster->size()); + AppendCluster(GenerateCluster(0, 2)); bool audio_read_done_1 = false; bool video_read_done_1 = false; @@ -1302,8 +1285,7 @@ TEST_F(ChunkDemuxerTest, TestEndOfStreamWithPendingReads) { TEST_F(ChunkDemuxerTest, TestReadsAfterEndOfStream) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> cluster(GenerateCluster(0, 2)); - AppendData(cluster->data(), cluster->size()); + AppendCluster(GenerateCluster(0, 2)); bool audio_read_done_1 = false; bool video_read_done_1 = false; @@ -1580,14 +1562,12 @@ TEST_F(ChunkDemuxerTest, TestAVHeadersWithVideoOnlyType) { TEST_F(ChunkDemuxerTest, TestMultipleHeaders) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> cluster_a(kDefaultFirstCluster()); - AppendData(cluster_a->data(), cluster_a->size()); + AppendCluster(kDefaultFirstCluster()); // Append another identical initialization segment. AppendInitSegment(true, true); - scoped_ptr<Cluster> cluster_b(kDefaultSecondCluster()); - AppendData(cluster_b->data(), cluster_b->size()); + AppendCluster(kDefaultSecondCluster()); GenerateExpectedReads(0, 9); } @@ -1597,16 +1577,12 @@ TEST_F(ChunkDemuxerTest, TestAddSeparateSourcesForAudioAndVideo) { std::string video_id = "video1"; ASSERT_TRUE(InitDemuxerAudioAndVideoSources(audio_id, video_id)); - scoped_ptr<Cluster> cluster_a( - GenerateSingleStreamCluster(0, 92, kAudioTrackNum, kAudioBlockDuration)); - - scoped_ptr<Cluster> cluster_v( - GenerateSingleStreamCluster(0, 132, kVideoTrackNum, kVideoBlockDuration)); - // Append audio and video data into separate source ids. - AppendData(audio_id, cluster_a->data(), cluster_a->size()); + AppendCluster(audio_id, + GenerateSingleStreamCluster(0, 92, kAudioTrackNum, kAudioBlockDuration)); GenerateAudioStreamExpectedReads(0, 4); - AppendData(video_id, cluster_v->data(), cluster_v->size()); + AppendCluster(video_id, + GenerateSingleStreamCluster(0, 132, kVideoTrackNum, kVideoBlockDuration)); GenerateVideoStreamExpectedReads(0, 4); } @@ -1635,16 +1611,12 @@ TEST_F(ChunkDemuxerTest, TestRemoveId) { std::string video_id = "video1"; ASSERT_TRUE(InitDemuxerAudioAndVideoSources(audio_id, video_id)); - scoped_ptr<Cluster> cluster_a( + // Append audio and video data into separate source ids. + AppendCluster(audio_id, GenerateSingleStreamCluster(0, 92, kAudioTrackNum, kAudioBlockDuration)); - - scoped_ptr<Cluster> cluster_v( + AppendCluster(video_id, GenerateSingleStreamCluster(0, 132, kVideoTrackNum, kVideoBlockDuration)); - // Append audio and video data into separate source ids. - AppendData(audio_id, cluster_a->data(), cluster_a->size()); - AppendData(video_id, cluster_v->data(), cluster_v->size()); - // Read() from audio should return normal buffers. GenerateAudioStreamExpectedReads(0, 4); @@ -1676,8 +1648,7 @@ TEST_F(ChunkDemuxerTest, TestSeekCanceled) { ASSERT_TRUE(InitDemuxer(true, true)); // Append cluster at the beginning of the stream. - scoped_ptr<Cluster> start_cluster(GenerateCluster(0, 4)); - AppendData(start_cluster->data(), start_cluster->size()); + AppendCluster(GenerateCluster(0, 4)); // Seek to an unbuffered region. Seek(base::TimeDelta::FromSeconds(50)); @@ -1707,8 +1678,7 @@ TEST_F(ChunkDemuxerTest, TestSeekCanceledWhileWaitingForSeek) { ASSERT_TRUE(InitDemuxer(true, true)); // Append cluster at the beginning of the stream. - scoped_ptr<Cluster> start_cluster(GenerateCluster(0, 4)); - AppendData(start_cluster->data(), start_cluster->size()); + AppendCluster(GenerateCluster(0, 4)); // Start waiting for a seek. base::TimeDelta seek_time1 = base::TimeDelta::FromSeconds(50); @@ -1738,15 +1708,13 @@ TEST_F(ChunkDemuxerTest, TestSeekAudioAndVideoSources) { std::string video_id = "video1"; ASSERT_TRUE(InitDemuxerAudioAndVideoSources(audio_id, video_id)); - scoped_ptr<Cluster> cluster_a1( + AppendCluster( + audio_id, GenerateSingleStreamCluster(0, 92, kAudioTrackNum, kAudioBlockDuration)); - - scoped_ptr<Cluster> cluster_v1( + AppendCluster( + video_id, GenerateSingleStreamCluster(0, 132, kVideoTrackNum, kVideoBlockDuration)); - AppendData(audio_id, cluster_a1->data(), cluster_a1->size()); - AppendData(video_id, cluster_v1->data(), cluster_v1->size()); - // Read() should return buffers at 0. bool audio_read_done = false; bool video_read_done = false; @@ -1774,16 +1742,12 @@ TEST_F(ChunkDemuxerTest, TestSeekAudioAndVideoSources) { EXPECT_FALSE(audio_read_done); EXPECT_FALSE(video_read_done); - scoped_ptr<Cluster> cluster_a2( - GenerateSingleStreamCluster(3000, 3092, kAudioTrackNum, - kAudioBlockDuration)); - - scoped_ptr<Cluster> cluster_v2( - GenerateSingleStreamCluster(3000, 3132, kVideoTrackNum, - kVideoBlockDuration)); - - AppendData(audio_id, cluster_a2->data(), cluster_a2->size()); - AppendData(video_id, cluster_v2->data(), cluster_v2->size()); + AppendCluster(audio_id, + GenerateSingleStreamCluster( + 3000, 3092, kAudioTrackNum, kAudioBlockDuration)); + AppendCluster(video_id, + GenerateSingleStreamCluster( + 3000, 3132, kVideoTrackNum, kVideoBlockDuration)); message_loop_.RunUntilIdle(); @@ -1799,13 +1763,8 @@ TEST_F(ChunkDemuxerTest, TestSeekAudioAndVideoSources) { TEST_F(ChunkDemuxerTest, TestEndOfStreamAfterPastEosSeek) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> cluster_a1( - GenerateSingleStreamCluster(0, 120, kAudioTrackNum, 10)); - scoped_ptr<Cluster> cluster_v1( - GenerateSingleStreamCluster(0, 100, kVideoTrackNum, 5)); - - AppendData(cluster_a1->data(), cluster_a1->size()); - AppendData(cluster_v1->data(), cluster_v1->size()); + AppendCluster(GenerateSingleStreamCluster(0, 120, kAudioTrackNum, 10)); + AppendCluster(GenerateSingleStreamCluster(0, 100, kVideoTrackNum, 5)); // Seeking past the end of video. // Note: audio data is available for that seek point. @@ -1833,20 +1792,10 @@ TEST_F(ChunkDemuxerTest, TestEndOfStreamAfterPastEosSeek) { TEST_F(ChunkDemuxerTest, TestEndOfStreamDuringPendingSeek) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> cluster_a1( - GenerateSingleStreamCluster(0, 120, kAudioTrackNum, 10)); - scoped_ptr<Cluster> cluster_v1( - GenerateSingleStreamCluster(0, 100, kVideoTrackNum, 5)); - - scoped_ptr<Cluster> cluster_a2( - GenerateSingleStreamCluster(200, 300, kAudioTrackNum, 10)); - scoped_ptr<Cluster> cluster_v2( - GenerateSingleStreamCluster(200, 300, kVideoTrackNum, 5)); - - AppendData(cluster_a1->data(), cluster_a1->size()); - AppendData(cluster_v1->data(), cluster_v1->size()); - AppendData(cluster_a2->data(), cluster_a2->size()); - AppendData(cluster_v2->data(), cluster_v2->size()); + AppendCluster(GenerateSingleStreamCluster(0, 120, kAudioTrackNum, 10)); + AppendCluster(GenerateSingleStreamCluster(0, 100, kVideoTrackNum, 5)); + AppendCluster(GenerateSingleStreamCluster(200, 300, kAudioTrackNum, 10)); + AppendCluster(GenerateSingleStreamCluster(200, 300, kVideoTrackNum, 5)); bool seek_cb_was_called = false; base::TimeDelta seek_time = base::TimeDelta::FromMilliseconds(160); @@ -1857,8 +1806,7 @@ TEST_F(ChunkDemuxerTest, TestEndOfStreamDuringPendingSeek) { EXPECT_FALSE(seek_cb_was_called); - EXPECT_CALL(host_, SetDuration( - base::TimeDelta::FromMilliseconds(300))); + EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(300))); MarkEndOfStream(PIPELINE_OK); message_loop_.RunUntilIdle(); @@ -1866,12 +1814,8 @@ TEST_F(ChunkDemuxerTest, TestEndOfStreamDuringPendingSeek) { demuxer_->UnmarkEndOfStream(); - scoped_ptr<Cluster> cluster_a3( - GenerateSingleStreamCluster(140, 180, kAudioTrackNum, 10)); - scoped_ptr<Cluster> cluster_v3( - GenerateSingleStreamCluster(140, 180, kVideoTrackNum, 5)); - AppendData(cluster_a3->data(), cluster_a3->size()); - AppendData(cluster_v3->data(), cluster_v3->size()); + AppendCluster(GenerateSingleStreamCluster(140, 180, kAudioTrackNum, 10)); + AppendCluster(GenerateSingleStreamCluster(140, 180, kVideoTrackNum, 5)); message_loop_.RunUntilIdle(); @@ -1890,17 +1834,14 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioIdOnly) { AppendInitSegment(true, false); // Test a simple cluster. - scoped_ptr<Cluster> cluster_1(GenerateSingleStreamCluster(0, 92, - kAudioTrackNum, kAudioBlockDuration)); - AppendData(cluster_1->data(), cluster_1->size()); + AppendCluster( + GenerateSingleStreamCluster(0, 92, kAudioTrackNum, kAudioBlockDuration)); CheckExpectedRanges("{ [0,92) }"); // Append a disjoint cluster to check for two separate ranges. - scoped_ptr<Cluster> cluster_2(GenerateSingleStreamCluster(150, 219, - kAudioTrackNum, kAudioBlockDuration)); - - AppendData(cluster_2->data(), cluster_2->size()); + AppendCluster(GenerateSingleStreamCluster( + 150, 219, kAudioTrackNum, kAudioBlockDuration)); CheckExpectedRanges("{ [0,92) [150,219) }"); } @@ -1915,18 +1856,14 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_VideoIdOnly) { AppendInitSegment(false, true); // Test a simple cluster. - scoped_ptr<Cluster> cluster_1(GenerateSingleStreamCluster(0, 132, - kVideoTrackNum, kVideoBlockDuration)); - - AppendData(cluster_1->data(), cluster_1->size()); + AppendCluster( + GenerateSingleStreamCluster(0, 132, kVideoTrackNum, kVideoBlockDuration)); CheckExpectedRanges("{ [0,132) }"); // Append a disjoint cluster to check for two separate ranges. - scoped_ptr<Cluster> cluster_2(GenerateSingleStreamCluster(200, 299, - kVideoTrackNum, kVideoBlockDuration)); - - AppendData(cluster_2->data(), cluster_2->size()); + AppendCluster(GenerateSingleStreamCluster( + 200, 299, kVideoTrackNum, kVideoBlockDuration)); CheckExpectedRanges("{ [0,132) [200,299) }"); } @@ -1939,86 +1876,52 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) { // Buffered Range: 0 -> 23 // Audio block duration is smaller than video block duration, // so the buffered ranges should correspond to the audio blocks. - scoped_ptr<Cluster> cluster_a0( - GenerateSingleStreamCluster(0, kAudioBlockDuration, kAudioTrackNum, - kAudioBlockDuration)); - - scoped_ptr<Cluster> cluster_v0( - GenerateSingleStreamCluster(0, kVideoBlockDuration, kVideoTrackNum, - kVideoBlockDuration)); - - AppendData(cluster_a0->data(), cluster_a0->size()); - AppendData(cluster_v0->data(), cluster_v0->size()); + AppendCluster(GenerateSingleStreamCluster( + 0, kAudioBlockDuration, kAudioTrackNum, kAudioBlockDuration)); + AppendCluster(GenerateSingleStreamCluster( + 0, kVideoBlockDuration, kVideoTrackNum, kVideoBlockDuration)); CheckExpectedRanges("{ [0,23) }"); // Audio: 300 -> 400 // Video: 320 -> 420 // Buffered Range: 320 -> 400 (end overlap) - scoped_ptr<Cluster> cluster_a1( - GenerateSingleStreamCluster(300, 400, kAudioTrackNum, 50)); - - scoped_ptr<Cluster> cluster_v1( - GenerateSingleStreamCluster(320, 420, kVideoTrackNum, 50)); - - AppendData(cluster_a1->data(), cluster_a1->size()); - AppendData(cluster_v1->data(), cluster_v1->size()); + AppendCluster(GenerateSingleStreamCluster(300, 400, kAudioTrackNum, 50)); + AppendCluster(GenerateSingleStreamCluster(320, 420, kVideoTrackNum, 50)); CheckExpectedRanges("{ [0,23) [320,400) }"); // Audio: 520 -> 590 // Video: 500 -> 570 // Buffered Range: 520 -> 570 (front overlap) - scoped_ptr<Cluster> cluster_a2( - GenerateSingleStreamCluster(520, 590, kAudioTrackNum, 70)); - - scoped_ptr<Cluster> cluster_v2( - GenerateSingleStreamCluster(500, 570, kVideoTrackNum, 70)); - - AppendData(cluster_a2->data(), cluster_a2->size()); - AppendData(cluster_v2->data(), cluster_v2->size()); + AppendCluster(GenerateSingleStreamCluster(520, 590, kAudioTrackNum, 70)); + AppendCluster(GenerateSingleStreamCluster(500, 570, kVideoTrackNum, 70)); CheckExpectedRanges("{ [0,23) [320,400) [520,570) }"); // Audio: 720 -> 750 // Video: 700 -> 770 // Buffered Range: 720 -> 750 (complete overlap, audio) - scoped_ptr<Cluster> cluster_a3( - GenerateSingleStreamCluster(720, 750, kAudioTrackNum, 30)); - - scoped_ptr<Cluster> cluster_v3( - GenerateSingleStreamCluster(700, 770, kVideoTrackNum, 70)); - - AppendData(cluster_a3->data(), cluster_a3->size()); - AppendData(cluster_v3->data(), cluster_v3->size()); + AppendCluster(GenerateSingleStreamCluster(720, 750, kAudioTrackNum, 30)); + AppendCluster(GenerateSingleStreamCluster(700, 770, kVideoTrackNum, 70)); CheckExpectedRanges("{ [0,23) [320,400) [520,570) [720,750) }"); // Audio: 900 -> 970 // Video: 920 -> 950 // Buffered Range: 920 -> 950 (complete overlap, video) - scoped_ptr<Cluster> cluster_a4( - GenerateSingleStreamCluster(900, 970, kAudioTrackNum, 70)); - - scoped_ptr<Cluster> cluster_v4( - GenerateSingleStreamCluster(920, 950, kVideoTrackNum, 30)); - - AppendData(cluster_a4->data(), cluster_a4->size()); - AppendData(cluster_v4->data(), cluster_v4->size()); + AppendCluster(GenerateSingleStreamCluster(900, 970, kAudioTrackNum, 70)); + AppendCluster(GenerateSingleStreamCluster(920, 950, kVideoTrackNum, 30)); CheckExpectedRanges("{ [0,23) [320,400) [520,570) [720,750) [920,950) }"); // Appending within buffered range should not affect buffered ranges. - scoped_ptr<Cluster> cluster_a5( - GenerateSingleStreamCluster(930, 950, kAudioTrackNum, 20)); - AppendData(cluster_a5->data(), cluster_a5->size()); + AppendCluster(GenerateSingleStreamCluster(930, 950, kAudioTrackNum, 20)); CheckExpectedRanges("{ [0,23) [320,400) [520,570) [720,750) [920,950) }"); // Appending to single stream outside buffered ranges should not affect // buffered ranges. - scoped_ptr<Cluster> cluster_v5( - GenerateSingleStreamCluster(1230, 1240, kVideoTrackNum, 10)); - AppendData(cluster_v5->data(), cluster_v5->size()); + AppendCluster(GenerateSingleStreamCluster(1230, 1240, kVideoTrackNum, 10)); CheckExpectedRanges("{ [0,23) [320,400) [520,570) [720,750) [920,950) }"); } @@ -2028,13 +1931,8 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) { TEST_F(ChunkDemuxerTest, GetBufferedRanges_EndOfStream) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> cluster_a( - GenerateSingleStreamCluster(0, 90, kAudioTrackNum, 90)); - scoped_ptr<Cluster> cluster_v( - GenerateSingleStreamCluster(0, 100, kVideoTrackNum, 100)); - - AppendData(cluster_a->data(), cluster_a->size()); - AppendData(cluster_v->data(), cluster_v->size()); + AppendCluster(GenerateSingleStreamCluster(0, 90, kAudioTrackNum, 90)); + AppendCluster(GenerateSingleStreamCluster(0, 100, kVideoTrackNum, 100)); CheckExpectedRanges("{ [0,90) }"); @@ -2048,8 +1946,7 @@ TEST_F(ChunkDemuxerTest, TestDifferentStreamTimecodes) { ASSERT_TRUE(InitDemuxer(true, true)); // Create a cluster where the video timecode begins 25ms after the audio. - scoped_ptr<Cluster> start_cluster(GenerateCluster(0, 25, 8)); - AppendData(start_cluster->data(), start_cluster->size()); + AppendCluster(GenerateCluster(0, 25, 8)); Seek(base::TimeDelta::FromSeconds(0)); GenerateExpectedReads(0, 25, 8); @@ -2059,8 +1956,7 @@ TEST_F(ChunkDemuxerTest, TestDifferentStreamTimecodes) { // Generate a cluster to fulfill this seek, where audio timecode begins 25ms // after the video. - scoped_ptr<Cluster> middle_cluster(GenerateCluster(5025, 5000, 8)); - AppendData(middle_cluster->data(), middle_cluster->size()); + AppendCluster(GenerateCluster(5025, 5000, 8)); GenerateExpectedReads(5025, 5000, 8); } @@ -2071,14 +1967,10 @@ TEST_F(ChunkDemuxerTest, TestDifferentStreamTimecodesSeparateSources) { // Generate two streams where the video stream starts 5ms after the audio // stream and append them. - scoped_ptr<Cluster> cluster_v( - GenerateSingleStreamCluster(30, 4 * kVideoBlockDuration + 30, - kVideoTrackNum, kVideoBlockDuration)); - scoped_ptr<Cluster> cluster_a( - GenerateSingleStreamCluster(25, 4 * kAudioBlockDuration + 25, - kAudioTrackNum, kAudioBlockDuration)); - AppendData(audio_id, cluster_a->data(), cluster_a->size()); - AppendData(video_id, cluster_v->data(), cluster_v->size()); + AppendCluster(audio_id, GenerateSingleStreamCluster( + 25, 4 * kAudioBlockDuration + 25, kAudioTrackNum, kAudioBlockDuration)); + AppendCluster(video_id, GenerateSingleStreamCluster( + 30, 4 * kVideoBlockDuration + 30, kVideoTrackNum, kVideoBlockDuration)); // Both streams should be able to fulfill a seek to 25. Seek(base::TimeDelta::FromMilliseconds(25)); @@ -2093,14 +1985,10 @@ TEST_F(ChunkDemuxerTest, TestDifferentStreamTimecodesOutOfRange) { // Generate two streams where the video stream starts 10s after the audio // stream and append them. - scoped_ptr<Cluster> cluster_v( - GenerateSingleStreamCluster(10000, 4 * kVideoBlockDuration + 10000, - kVideoTrackNum, kVideoBlockDuration)); - scoped_ptr<Cluster> cluster_a( - GenerateSingleStreamCluster(0, 4 * kAudioBlockDuration + 0, - kAudioTrackNum, kAudioBlockDuration)); - AppendData(audio_id, cluster_a->data(), cluster_a->size()); - AppendData(video_id, cluster_v->data(), cluster_v->size()); + AppendCluster(audio_id, GenerateSingleStreamCluster(0, + 4 * kAudioBlockDuration + 0, kAudioTrackNum, kAudioBlockDuration)); + AppendCluster(video_id, GenerateSingleStreamCluster(10000, + 4 * kVideoBlockDuration + 10000, kVideoTrackNum, kVideoBlockDuration)); // Should not be able to fulfill a seek to 0. base::TimeDelta seek_time = base::TimeDelta::FromMilliseconds(0); @@ -2118,8 +2006,7 @@ TEST_F(ChunkDemuxerTest, TestClusterWithNoBuffers) { AppendEmptyCluster(0); // Sanity check that data can be appended after this cluster correctly. - scoped_ptr<Cluster> media_data(GenerateCluster(0, 2)); - AppendData(media_data->data(), media_data->size()); + AppendCluster(GenerateCluster(0, 2)); ExpectRead(DemuxerStream::AUDIO, 0); ExpectRead(DemuxerStream::VIDEO, 0); } @@ -2172,13 +2059,11 @@ TEST_F(ChunkDemuxerTest, TestEndOfStreamStillSetAfterSeek) { EXPECT_CALL(host_, SetDuration(_)) .Times(AnyNumber()); - scoped_ptr<Cluster> cluster_a(kDefaultFirstCluster()); - scoped_ptr<Cluster> cluster_b(kDefaultSecondCluster()); base::TimeDelta kLastAudioTimestamp = base::TimeDelta::FromMilliseconds(92); base::TimeDelta kLastVideoTimestamp = base::TimeDelta::FromMilliseconds(99); - AppendData(cluster_a->data(), cluster_a->size()); - AppendData(cluster_b->data(), cluster_b->size()); + AppendCluster(kDefaultFirstCluster()); + AppendCluster(kDefaultSecondCluster()); MarkEndOfStream(PIPELINE_OK); DemuxerStream::Status status; @@ -2222,14 +2107,12 @@ TEST_F(ChunkDemuxerTest, TestEndOfStreamDuringSeek) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> cluster_a(kDefaultFirstCluster()); - scoped_ptr<Cluster> cluster_b(kDefaultSecondCluster()); - AppendData(cluster_a->data(), cluster_a->size()); + AppendCluster(kDefaultFirstCluster()); base::TimeDelta seek_time = base::TimeDelta::FromSeconds(0); demuxer_->StartWaitingForSeek(seek_time); - AppendData(cluster_b->data(), cluster_b->size()); + AppendCluster(kDefaultSecondCluster()); EXPECT_CALL(host_, SetDuration( base::TimeDelta::FromMilliseconds(kDefaultSecondClusterEndTimestamp))); MarkEndOfStream(PIPELINE_OK); @@ -2390,8 +2273,7 @@ TEST_F(ChunkDemuxerTest, TestTimestampPositiveOffset) { ASSERT_TRUE(demuxer_->SetTimestampOffset( kSourceId, base::TimeDelta::FromSeconds(30))); - scoped_ptr<Cluster> cluster(GenerateCluster(0, 2)); - AppendData(cluster->data(), cluster->size()); + AppendCluster(GenerateCluster(0, 2)); Seek(base::TimeDelta::FromMilliseconds(30000)); @@ -2403,8 +2285,7 @@ TEST_F(ChunkDemuxerTest, TestTimestampNegativeOffset) { ASSERT_TRUE(demuxer_->SetTimestampOffset( kSourceId, base::TimeDelta::FromSeconds(-1))); - scoped_ptr<Cluster> cluster = GenerateCluster(1000, 2); - AppendData(cluster->data(), cluster->size()); + AppendCluster(GenerateCluster(1000, 2)); GenerateExpectedReads(0, 2); } @@ -2414,30 +2295,14 @@ TEST_F(ChunkDemuxerTest, TestTimestampOffsetSeparateStreams) { std::string video_id = "video1"; ASSERT_TRUE(InitDemuxerAudioAndVideoSources(audio_id, video_id)); - scoped_ptr<Cluster> cluster_a1( - GenerateSingleStreamCluster( - 2500, 2500 + kAudioBlockDuration * 4, kAudioTrackNum, - kAudioBlockDuration)); - - scoped_ptr<Cluster> cluster_v1( - GenerateSingleStreamCluster( - 2500, 2500 + kVideoBlockDuration * 4, kVideoTrackNum, - kVideoBlockDuration)); - - scoped_ptr<Cluster> cluster_a2( - GenerateSingleStreamCluster( - 0, kAudioBlockDuration * 4, kAudioTrackNum, kAudioBlockDuration)); - - scoped_ptr<Cluster> cluster_v2( - GenerateSingleStreamCluster( - 0, kVideoBlockDuration * 4, kVideoTrackNum, kVideoBlockDuration)); - ASSERT_TRUE(demuxer_->SetTimestampOffset( audio_id, base::TimeDelta::FromMilliseconds(-2500))); ASSERT_TRUE(demuxer_->SetTimestampOffset( video_id, base::TimeDelta::FromMilliseconds(-2500))); - AppendData(audio_id, cluster_a1->data(), cluster_a1->size()); - AppendData(video_id, cluster_v1->data(), cluster_v1->size()); + AppendCluster(audio_id, GenerateSingleStreamCluster(2500, + 2500 + kAudioBlockDuration * 4, kAudioTrackNum, kAudioBlockDuration)); + AppendCluster(video_id, GenerateSingleStreamCluster(2500, + 2500 + kVideoBlockDuration * 4, kVideoTrackNum, kVideoBlockDuration)); GenerateAudioStreamExpectedReads(0, 4); GenerateVideoStreamExpectedReads(0, 4); @@ -2447,8 +2312,10 @@ TEST_F(ChunkDemuxerTest, TestTimestampOffsetSeparateStreams) { audio_id, base::TimeDelta::FromMilliseconds(27300))); ASSERT_TRUE(demuxer_->SetTimestampOffset( video_id, base::TimeDelta::FromMilliseconds(27300))); - AppendData(audio_id, cluster_a2->data(), cluster_a2->size()); - AppendData(video_id, cluster_v2->data(), cluster_v2->size()); + AppendCluster(audio_id, GenerateSingleStreamCluster( + 0, kAudioBlockDuration * 4, kAudioTrackNum, kAudioBlockDuration)); + AppendCluster(video_id, GenerateSingleStreamCluster( + 0, kVideoBlockDuration * 4, kVideoTrackNum, kVideoBlockDuration)); GenerateVideoStreamExpectedReads(27300, 4); GenerateAudioStreamExpectedReads(27300, 4); } @@ -2476,17 +2343,14 @@ TEST_F(ChunkDemuxerTest, TestDurationChange) { static const int kStreamDuration = kDefaultDuration().InMilliseconds(); // Add data leading up to the currently set duration. - scoped_ptr<Cluster> first_cluster = GenerateCluster( - kStreamDuration - kAudioBlockDuration, - kStreamDuration - kVideoBlockDuration, 2); - AppendData(first_cluster->data(), first_cluster->size()); + AppendCluster(GenerateCluster(kStreamDuration - kAudioBlockDuration, + kStreamDuration - kVideoBlockDuration, + 2)); CheckExpectedRanges(kSourceId, "{ [201191,201224) }"); // Add data at the currently set duration. The duration should not increase. - scoped_ptr<Cluster> second_cluster = GenerateCluster( - kDefaultDuration().InMilliseconds(), 2); - AppendData(second_cluster->data(), second_cluster->size()); + AppendCluster(GenerateCluster(kDefaultDuration().InMilliseconds(), 2)); // Range should not be affected. CheckExpectedRanges(kSourceId, "{ [201191,201224) }"); @@ -2494,12 +2358,11 @@ TEST_F(ChunkDemuxerTest, TestDurationChange) { // Now add data past the duration and expect a new duration to be signalled. static const int kNewStreamDuration = kStreamDuration + kAudioBlockDuration * 2; - scoped_ptr<Cluster> third_cluster = GenerateCluster( - kStreamDuration + kAudioBlockDuration, - kStreamDuration + kVideoBlockDuration, 2); EXPECT_CALL(host_, SetDuration( base::TimeDelta::FromMilliseconds(kNewStreamDuration))); - AppendData(third_cluster->data(), third_cluster->size()); + AppendCluster(GenerateCluster(kStreamDuration + kAudioBlockDuration, + kStreamDuration + kVideoBlockDuration, + 2)); // See that the range has increased appropriately. CheckExpectedRanges(kSourceId, "{ [201191,201270) }"); @@ -2509,19 +2372,17 @@ TEST_F(ChunkDemuxerTest, TestDurationChangeTimestampOffset) { ASSERT_TRUE(InitDemuxer(true, true)); ASSERT_TRUE(demuxer_->SetTimestampOffset(kSourceId, kDefaultDuration())); - scoped_ptr<Cluster> cluster = GenerateCluster(0, 4); EXPECT_CALL(host_, SetDuration( kDefaultDuration() + base::TimeDelta::FromMilliseconds( kAudioBlockDuration * 2))); - AppendData(cluster->data(), cluster->size()); + AppendCluster(GenerateCluster(0, 4)); } TEST_F(ChunkDemuxerTest, TestEndOfStreamTruncateDuration) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> cluster_a(kDefaultFirstCluster()); - AppendData(cluster_a->data(), cluster_a->size()); + AppendCluster(kDefaultFirstCluster()); EXPECT_CALL(host_, SetDuration( base::TimeDelta::FromMilliseconds(kDefaultFirstClusterEndTimestamp))); @@ -2540,14 +2401,12 @@ TEST_F(ChunkDemuxerTest, TestAppendAfterEndOfStream) { EXPECT_CALL(host_, SetDuration(_)) .Times(AnyNumber()); - scoped_ptr<Cluster> cluster_a(kDefaultFirstCluster()); - AppendData(cluster_a->data(), cluster_a->size()); + AppendCluster(kDefaultFirstCluster()); MarkEndOfStream(PIPELINE_OK); demuxer_->UnmarkEndOfStream(); - scoped_ptr<Cluster> cluster_b(kDefaultSecondCluster()); - AppendData(cluster_b->data(), cluster_b->size()); + AppendCluster(kDefaultSecondCluster()); MarkEndOfStream(PIPELINE_OK); } @@ -2563,8 +2422,7 @@ TEST_F(ChunkDemuxerTest, TestShutdownBeforeInitialize) { TEST_F(ChunkDemuxerTest, ReadAfterAudioDisabled) { ASSERT_TRUE(InitDemuxer(true, true)); - scoped_ptr<Cluster> cluster(kDefaultFirstCluster()); - AppendData(cluster->data(), cluster->size()); + AppendCluster(kDefaultFirstCluster()); DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::AUDIO); ASSERT_TRUE(stream); |