OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <algorithm> | 5 #include <algorithm> |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "base/strings/string_split.h" | 10 #include "base/strings/string_split.h" |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
165 use_legacy_frame_processor_ = GetParam(); | 165 use_legacy_frame_processor_ = GetParam(); |
166 CreateNewDemuxer(); | 166 CreateNewDemuxer(); |
167 } | 167 } |
168 | 168 |
169 void CreateNewDemuxer() { | 169 void CreateNewDemuxer() { |
170 base::Closure open_cb = | 170 base::Closure open_cb = |
171 base::Bind(&ChunkDemuxerTest::DemuxerOpened, base::Unretained(this)); | 171 base::Bind(&ChunkDemuxerTest::DemuxerOpened, base::Unretained(this)); |
172 Demuxer::NeedKeyCB need_key_cb = | 172 Demuxer::NeedKeyCB need_key_cb = |
173 base::Bind(&ChunkDemuxerTest::DemuxerNeedKey, base::Unretained(this)); | 173 base::Bind(&ChunkDemuxerTest::DemuxerNeedKey, base::Unretained(this)); |
174 demuxer_.reset( | 174 demuxer_.reset( |
175 new ChunkDemuxer(open_cb, need_key_cb, base::Bind(&LogFunc), false)); | 175 new ChunkDemuxer(open_cb, need_key_cb, base::Bind(&LogFunc), true)); |
176 } | 176 } |
177 | 177 |
178 virtual ~ChunkDemuxerTest() { | 178 virtual ~ChunkDemuxerTest() { |
179 ShutdownDemuxer(); | 179 ShutdownDemuxer(); |
180 } | 180 } |
181 | 181 |
182 void CreateInitSegment(int stream_flags, | 182 void CreateInitSegment(int stream_flags, |
183 bool is_audio_encrypted, bool is_video_encrypted, | 183 bool is_audio_encrypted, bool is_video_encrypted, |
184 scoped_ptr<uint8[]>* buffer, | 184 scoped_ptr<uint8[]>* buffer, |
185 int* size) { | 185 int* size) { |
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
570 PIPELINE_OK), true); | 570 PIPELINE_OK), true); |
571 | 571 |
572 if (AddId(kSourceId, HAS_AUDIO | HAS_VIDEO) != ChunkDemuxer::kOk) | 572 if (AddId(kSourceId, HAS_AUDIO | HAS_VIDEO) != ChunkDemuxer::kOk) |
573 return false; | 573 return false; |
574 | 574 |
575 // Append the whole bear1 file. | 575 // Append the whole bear1 file. |
576 // TODO(wolenetz/acolwell): Remove this extra SetDuration expectation once | 576 // TODO(wolenetz/acolwell): Remove this extra SetDuration expectation once |
577 // the files are fixed to have the correct duration in their init segments, | 577 // the files are fixed to have the correct duration in their init segments, |
578 // and the CreateInitDoneCB() call, above, is fixed to used that duration. | 578 // and the CreateInitDoneCB() call, above, is fixed to used that duration. |
579 // See http://crbug.com/354284. | 579 // See http://crbug.com/354284. |
580 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2768))); | 580 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2746))); |
581 AppendData(bear1->data(), bear1->data_size()); | 581 AppendData(bear1->data(), bear1->data_size()); |
582 // Last audio frame has timestamp 2721 and duration 24 (estimated from max | 582 // Last audio frame has timestamp 2721 and duration 24 (estimated from max |
583 // seen so far for audio track). | 583 // seen so far for audio track). |
584 // Last video frame has timestamp 2703 and duration 33 (from TrackEntry | 584 // Last video frame has timestamp 2703 and duration 33 (from TrackEntry |
585 // DefaultDuration for video track). | 585 // DefaultDuration for video track). |
586 CheckExpectedRanges(kSourceId, "{ [0,2736) }"); | 586 CheckExpectedRanges(kSourceId, "{ [0,2736) }"); |
587 | 587 |
588 // Append initialization segment for bear2. | 588 // Append initialization segment for bear2. |
589 // Note: Offsets here and below are derived from | 589 // Note: Offsets here and below are derived from |
590 // media/test/data/bear-640x360-manifest.js and | 590 // media/test/data/bear-640x360-manifest.js and |
(...skipping 1073 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1664 {33, 3}, | 1664 {33, 3}, |
1665 {67, 6}, | 1665 {67, 6}, |
1666 {100, 9}, | 1666 {100, 9}, |
1667 {133, 12}, | 1667 {133, 12}, |
1668 {kSkip, kSkip}, | 1668 {kSkip, kSkip}, |
1669 }; | 1669 }; |
1670 | 1670 |
1671 // TODO(wolenetz/acolwell): Remove this SetDuration expectation and update the | 1671 // TODO(wolenetz/acolwell): Remove this SetDuration expectation and update the |
1672 // ParseWebMFile() call's expected duration, below, once the file is fixed to | 1672 // ParseWebMFile() call's expected duration, below, once the file is fixed to |
1673 // have the correct duration in the init segment. See http://crbug.com/354284. | 1673 // have the correct duration in the init segment. See http://crbug.com/354284. |
1674 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2768))); | 1674 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2746))); |
1675 | 1675 |
1676 ASSERT_TRUE(ParseWebMFile("bear-320x240.webm", buffer_timestamps, | 1676 ASSERT_TRUE(ParseWebMFile("bear-320x240.webm", buffer_timestamps, |
1677 base::TimeDelta::FromMilliseconds(2744))); | 1677 base::TimeDelta::FromMilliseconds(2744))); |
1678 } | 1678 } |
1679 | 1679 |
1680 TEST_P(ChunkDemuxerTest, WebMFile_LiveAudioAndVideo) { | 1680 TEST_P(ChunkDemuxerTest, WebMFile_LiveAudioAndVideo) { |
1681 struct BufferTimestamps buffer_timestamps[] = { | 1681 struct BufferTimestamps buffer_timestamps[] = { |
1682 {0, 0}, | 1682 {0, 0}, |
1683 {33, 3}, | 1683 {33, 3}, |
1684 {67, 6}, | 1684 {67, 6}, |
(...skipping 12 matching lines...) Expand all Loading... | |
1697 {kSkip, 3}, | 1697 {kSkip, 3}, |
1698 {kSkip, 6}, | 1698 {kSkip, 6}, |
1699 {kSkip, 9}, | 1699 {kSkip, 9}, |
1700 {kSkip, 12}, | 1700 {kSkip, 12}, |
1701 {kSkip, kSkip}, | 1701 {kSkip, kSkip}, |
1702 }; | 1702 }; |
1703 | 1703 |
1704 // TODO(wolenetz/acolwell): Remove this SetDuration expectation and update the | 1704 // TODO(wolenetz/acolwell): Remove this SetDuration expectation and update the |
1705 // ParseWebMFile() call's expected duration, below, once the file is fixed to | 1705 // ParseWebMFile() call's expected duration, below, once the file is fixed to |
1706 // have the correct duration in the init segment. See http://crbug.com/354284. | 1706 // have the correct duration in the init segment. See http://crbug.com/354284. |
1707 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2768))); | 1707 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2746))); |
1708 | 1708 |
1709 ASSERT_TRUE(ParseWebMFile("bear-320x240-audio-only.webm", buffer_timestamps, | 1709 ASSERT_TRUE(ParseWebMFile("bear-320x240-audio-only.webm", buffer_timestamps, |
1710 base::TimeDelta::FromMilliseconds(2744), | 1710 base::TimeDelta::FromMilliseconds(2744), |
1711 HAS_AUDIO)); | 1711 HAS_AUDIO)); |
1712 } | 1712 } |
1713 | 1713 |
1714 TEST_P(ChunkDemuxerTest, WebMFile_VideoOnly) { | 1714 TEST_P(ChunkDemuxerTest, WebMFile_VideoOnly) { |
1715 struct BufferTimestamps buffer_timestamps[] = { | 1715 struct BufferTimestamps buffer_timestamps[] = { |
1716 {0, kSkip}, | 1716 {0, kSkip}, |
1717 {33, kSkip}, | 1717 {33, kSkip}, |
(...skipping 16 matching lines...) Expand all Loading... | |
1734 TEST_P(ChunkDemuxerTest, WebMFile_AltRefFrames) { | 1734 TEST_P(ChunkDemuxerTest, WebMFile_AltRefFrames) { |
1735 struct BufferTimestamps buffer_timestamps[] = { | 1735 struct BufferTimestamps buffer_timestamps[] = { |
1736 {0, 0}, | 1736 {0, 0}, |
1737 {33, 3}, | 1737 {33, 3}, |
1738 {33, 6}, | 1738 {33, 6}, |
1739 {67, 9}, | 1739 {67, 9}, |
1740 {100, 12}, | 1740 {100, 12}, |
1741 {kSkip, kSkip}, | 1741 {kSkip, kSkip}, |
1742 }; | 1742 }; |
1743 | 1743 |
1744 // TODO(wolenetz/acolwell): Remove this SetDuration expectation and update the | |
1745 // ParseWebMFile() call's expected duration, below, once the file is fixed to | |
1746 // have the correct duration in the init segment. See http://crbug.com/354284. | |
1747 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2768))); | |
1748 | |
1749 ASSERT_TRUE(ParseWebMFile("bear-320x240-altref.webm", buffer_timestamps, | 1744 ASSERT_TRUE(ParseWebMFile("bear-320x240-altref.webm", buffer_timestamps, |
1750 base::TimeDelta::FromMilliseconds(2767))); | 1745 base::TimeDelta::FromMilliseconds(2767))); |
1751 } | 1746 } |
1752 | 1747 |
1753 // Verify that we output buffers before the entire cluster has been parsed. | 1748 // Verify that we output buffers before the entire cluster has been parsed. |
1754 TEST_P(ChunkDemuxerTest, IncrementalClusterParsing) { | 1749 TEST_P(ChunkDemuxerTest, IncrementalClusterParsing) { |
1755 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); | 1750 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
1756 AppendEmptyCluster(0); | 1751 AppendEmptyCluster(0); |
1757 | 1752 |
1758 scoped_ptr<Cluster> cluster(GenerateCluster(0, 6)); | 1753 scoped_ptr<Cluster> cluster(GenerateCluster(0, 6)); |
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2287 CheckExpectedRanges("{ [0,66) }"); | 2282 CheckExpectedRanges("{ [0,66) }"); |
2288 | 2283 |
2289 // Verify that the range reverts to the intersection when end of stream | 2284 // Verify that the range reverts to the intersection when end of stream |
2290 // has been cancelled. | 2285 // has been cancelled. |
2291 demuxer_->UnmarkEndOfStream(); | 2286 demuxer_->UnmarkEndOfStream(); |
2292 CheckExpectedRanges("{ [0,46) }"); | 2287 CheckExpectedRanges("{ [0,46) }"); |
2293 | 2288 |
2294 // Append and remove data so that the 2 streams' end ranges do not overlap. | 2289 // Append and remove data so that the 2 streams' end ranges do not overlap. |
2295 | 2290 |
2296 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(246))); | 2291 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(246))); |
2297 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(366))); | 2292 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(398))); |
2298 AppendSingleStreamCluster(kSourceId, kAudioTrackNum, "200K 223K"); | 2293 AppendSingleStreamCluster(kSourceId, kAudioTrackNum, "200K 223K"); |
2299 AppendSingleStreamCluster(kSourceId, kVideoTrackNum, | 2294 AppendSingleStreamCluster(kSourceId, kVideoTrackNum, |
2300 "200K 233 266 299 300K 333"); | 2295 "200K 233 266 299 332K 365"); |
2301 | 2296 |
2302 // At this point, the per-stream ranges are as follows: | 2297 // At this point, the per-stream ranges are as follows: |
2303 // Audio: [0,46) [200,246) | 2298 // Audio: [0,46) [200,246) |
2304 // Video: [0,66) [200,366) | 2299 // Video: [0,66) [200,398) |
2305 CheckExpectedRanges("{ [0,46) [200,246) }"); | 2300 CheckExpectedRanges("{ [0,46) [200,246) }"); |
2306 | 2301 |
2307 demuxer_->Remove(kSourceId, base::TimeDelta::FromMilliseconds(200), | 2302 demuxer_->Remove(kSourceId, base::TimeDelta::FromMilliseconds(200), |
2308 base::TimeDelta::FromMilliseconds(300)); | 2303 base::TimeDelta::FromMilliseconds(300)); |
2309 | 2304 |
2310 // At this point, the per-stream ranges are as follows: | 2305 // At this point, the per-stream ranges are as follows: |
2311 // Audio: [0,46) | 2306 // Audio: [0,46) |
2312 // Video: [0,66) [300,366) | 2307 // Video: [0,66) [332,398) |
2313 CheckExpectedRanges("{ [0,46) }"); | 2308 CheckExpectedRanges("{ [0,46) }"); |
2314 | 2309 |
2315 AppendSingleStreamCluster(kSourceId, kAudioTrackNum, "200K 223K"); | 2310 AppendSingleStreamCluster(kSourceId, kAudioTrackNum, "200K 223K"); |
2316 AppendSingleStreamCluster(kSourceId, kVideoTrackNum, "200K 233"); | 2311 AppendSingleStreamCluster(kSourceId, kVideoTrackNum, "200K 233"); |
2317 | 2312 |
2318 // At this point, the per-stream ranges are as follows: | 2313 // At this point, the per-stream ranges are as follows: |
2319 // Audio: [0,46) [200,246) | 2314 // Audio: [0,46) [200,246) |
2320 // Video: [0,66) [200,266) [300,366) | 2315 // Video: [0,66) [200,234) [332,398) |
acolwell GONE FROM CHROMIUM
2014/04/11 18:16:05
nit: s/234/266/? Otherwise I'd expect the range in
DaleCurtis
2014/04/11 20:38:11
Done.
| |
2321 // NOTE: The last range on each stream do not overlap in time. | 2316 // NOTE: The last range on each stream do not overlap in time. |
2322 CheckExpectedRanges("{ [0,46) [200,246) }"); | 2317 CheckExpectedRanges("{ [0,46) [200,246) }"); |
2323 | 2318 |
2324 MarkEndOfStream(PIPELINE_OK); | 2319 MarkEndOfStream(PIPELINE_OK); |
2325 | 2320 |
2326 // NOTE: The last range on each stream gets extended to the highest | 2321 // NOTE: The last range on each stream gets extended to the highest |
2327 // end timestamp according to the spec. The last audio range gets extended | 2322 // end timestamp according to the spec. The last audio range gets extended |
2328 // from [200,246) to [200,366) which is why the intersection results in the | 2323 // from [200,246) to [200,266) which is why the intersection results in the |
acolwell GONE FROM CHROMIUM
2014/04/11 18:16:05
nit: s/266/398/
DaleCurtis
2014/04/11 20:38:11
Done.
| |
2329 // middle range getting larger AND the new range appearing. | 2324 // middle range getting larger AND the new range appearing. |
2330 CheckExpectedRanges("{ [0,46) [200,266) [300,366) }"); | 2325 CheckExpectedRanges("{ [0,46) [200,266) [332,398) }"); |
2331 } | 2326 } |
2332 | 2327 |
2333 TEST_P(ChunkDemuxerTest, DifferentStreamTimecodes) { | 2328 TEST_P(ChunkDemuxerTest, DifferentStreamTimecodes) { |
2334 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); | 2329 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
2335 | 2330 |
2336 // Create a cluster where the video timecode begins 25ms after the audio. | 2331 // Create a cluster where the video timecode begins 25ms after the audio. |
2337 AppendCluster(GenerateCluster(0, 25, 8)); | 2332 AppendCluster(GenerateCluster(0, 25, 8)); |
2338 | 2333 |
2339 Seek(base::TimeDelta::FromSeconds(0)); | 2334 Seek(base::TimeDelta::FromSeconds(0)); |
2340 GenerateExpectedReads(0, 25, 8); | 2335 GenerateExpectedReads(0, 25, 8); |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2576 DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO); | 2571 DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO); |
2577 | 2572 |
2578 // Fetch initial audio config and verify it matches what we expect. | 2573 // Fetch initial audio config and verify it matches what we expect. |
2579 const AudioDecoderConfig& audio_config_1 = audio->audio_decoder_config(); | 2574 const AudioDecoderConfig& audio_config_1 = audio->audio_decoder_config(); |
2580 ASSERT_TRUE(audio_config_1.IsValidConfig()); | 2575 ASSERT_TRUE(audio_config_1.IsValidConfig()); |
2581 EXPECT_EQ(audio_config_1.samples_per_second(), 44100); | 2576 EXPECT_EQ(audio_config_1.samples_per_second(), 44100); |
2582 EXPECT_EQ(audio_config_1.extra_data_size(), 3863u); | 2577 EXPECT_EQ(audio_config_1.extra_data_size(), 3863u); |
2583 | 2578 |
2584 ExpectRead(DemuxerStream::AUDIO, 0); | 2579 ExpectRead(DemuxerStream::AUDIO, 0); |
2585 | 2580 |
2581 // The first config change seen is from a splice frame representing an overlap | |
2582 // of buffer from config 1 by buffers from config 2. | |
2586 ReadUntilNotOkOrEndOfStream(DemuxerStream::AUDIO, &status, &last_timestamp); | 2583 ReadUntilNotOkOrEndOfStream(DemuxerStream::AUDIO, &status, &last_timestamp); |
2587 | |
2588 ASSERT_EQ(status, DemuxerStream::kConfigChanged); | 2584 ASSERT_EQ(status, DemuxerStream::kConfigChanged); |
2589 EXPECT_EQ(last_timestamp.InMilliseconds(), 524); | 2585 EXPECT_EQ(last_timestamp.InMilliseconds(), 524); |
2586 ASSERT_TRUE(audio_config_1.Matches(audio->audio_decoder_config())); | |
2587 | |
2588 // The next is due to a typical config difference. | |
2589 ReadUntilNotOkOrEndOfStream(DemuxerStream::AUDIO, &status, &last_timestamp); | |
2590 ASSERT_EQ(status, DemuxerStream::kConfigChanged); | |
2591 EXPECT_EQ(last_timestamp.InMilliseconds(), 527); | |
2590 | 2592 |
2591 // Fetch the new decoder config. | 2593 // Fetch the new decoder config. |
2592 const AudioDecoderConfig& audio_config_2 = audio->audio_decoder_config(); | 2594 const AudioDecoderConfig& audio_config_2 = audio->audio_decoder_config(); |
2593 ASSERT_TRUE(audio_config_2.IsValidConfig()); | 2595 ASSERT_TRUE(audio_config_2.IsValidConfig()); |
2594 EXPECT_EQ(audio_config_2.samples_per_second(), 44100); | 2596 EXPECT_EQ(audio_config_2.samples_per_second(), 44100); |
2595 EXPECT_EQ(audio_config_2.extra_data_size(), 3935u); | 2597 EXPECT_EQ(audio_config_2.extra_data_size(), 3935u); |
2596 | 2598 |
2597 ExpectRead(DemuxerStream::AUDIO, 527); | 2599 // The next config change is from a splice frame representing an overlap of |
2598 | 2600 // buffers from config 2 by buffers from config 1. |
2599 // Read until the next config change. | |
2600 ReadUntilNotOkOrEndOfStream(DemuxerStream::AUDIO, &status, &last_timestamp); | 2601 ReadUntilNotOkOrEndOfStream(DemuxerStream::AUDIO, &status, &last_timestamp); |
2601 ASSERT_EQ(status, DemuxerStream::kConfigChanged); | 2602 ASSERT_EQ(status, DemuxerStream::kConfigChanged); |
2602 EXPECT_EQ(last_timestamp.InMilliseconds(), 759); | 2603 EXPECT_EQ(last_timestamp.InMilliseconds(), 782); |
2604 ASSERT_TRUE(audio_config_2.Matches(audio->audio_decoder_config())); | |
2605 | |
2606 ReadUntilNotOkOrEndOfStream(DemuxerStream::AUDIO, &status, &last_timestamp); | |
2607 | |
2608 ASSERT_EQ(status, DemuxerStream::kConfigChanged); | |
2609 EXPECT_EQ(last_timestamp.InMilliseconds(), 779); | |
2603 | 2610 |
2604 // Get the new config and verify that it matches the first one. | 2611 // Get the new config and verify that it matches the first one. |
2605 ASSERT_TRUE(audio_config_1.Matches(audio->audio_decoder_config())); | 2612 ASSERT_TRUE(audio_config_1.Matches(audio->audio_decoder_config())); |
2606 | 2613 |
2607 ExpectRead(DemuxerStream::AUDIO, 779); | |
2608 | |
2609 // Read until the end of the stream just to make sure there aren't any other | 2614 // Read until the end of the stream just to make sure there aren't any other |
2610 // config changes. | 2615 // config changes. |
2611 ReadUntilNotOkOrEndOfStream(DemuxerStream::AUDIO, &status, &last_timestamp); | 2616 ReadUntilNotOkOrEndOfStream(DemuxerStream::AUDIO, &status, &last_timestamp); |
2612 ASSERT_EQ(status, DemuxerStream::kOk); | 2617 ASSERT_EQ(status, DemuxerStream::kOk); |
2618 EXPECT_EQ(last_timestamp.InMilliseconds(), 2744); | |
2613 } | 2619 } |
2614 | 2620 |
2615 TEST_P(ChunkDemuxerTest, ConfigChange_Seek) { | 2621 TEST_P(ChunkDemuxerTest, ConfigChange_Seek) { |
2616 InSequence s; | 2622 InSequence s; |
2617 | 2623 |
2618 ASSERT_TRUE(InitDemuxerWithConfigChangeData()); | 2624 ASSERT_TRUE(InitDemuxerWithConfigChangeData()); |
2619 | 2625 |
2620 DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO); | 2626 DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO); |
2621 | 2627 |
2622 // Fetch initial video config and verify it matches what we expect. | 2628 // Fetch initial video config and verify it matches what we expect. |
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3207 // Verify that audio & video streams continue to return expected values. | 3213 // Verify that audio & video streams continue to return expected values. |
3208 CheckExpectedBuffers(audio_stream, "160 180"); | 3214 CheckExpectedBuffers(audio_stream, "160 180"); |
3209 CheckExpectedBuffers(video_stream, "180 210"); | 3215 CheckExpectedBuffers(video_stream, "180 210"); |
3210 } | 3216 } |
3211 | 3217 |
3212 // TODO(wolenetz): Enable testing of new frame processor based on this flag, | 3218 // TODO(wolenetz): Enable testing of new frame processor based on this flag, |
3213 // once the new processor has landed. See http://crbug.com/249422. | 3219 // once the new processor has landed. See http://crbug.com/249422. |
3214 INSTANTIATE_TEST_CASE_P(LegacyFrameProcessor, ChunkDemuxerTest, Values(true)); | 3220 INSTANTIATE_TEST_CASE_P(LegacyFrameProcessor, ChunkDemuxerTest, Values(true)); |
3215 | 3221 |
3216 } // namespace media | 3222 } // namespace media |
OLD | NEW |