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 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 } | 127 } |
128 | 128 |
129 static void OnSeekDone_OKExpected(bool* called, PipelineStatus status) { | 129 static void OnSeekDone_OKExpected(bool* called, PipelineStatus status) { |
130 EXPECT_EQ(status, PIPELINE_OK); | 130 EXPECT_EQ(status, PIPELINE_OK); |
131 *called = true; | 131 *called = true; |
132 } | 132 } |
133 | 133 |
134 static void LogFunc(const std::string& str) { DVLOG(1) << str; } | 134 static void LogFunc(const std::string& str) { DVLOG(1) << str; } |
135 | 135 |
136 // Test parameter determines which coded frame processor is used to process | 136 // Test parameter determines which coded frame processor is used to process |
137 // appended data. If true, LegacyFrameProcessor is used. Otherwise, (not yet | 137 // appended data. If true, LegacyFrameProcessor is used. Otherwise, the new |
138 // supported), a more compliant frame processor is used. | 138 // FrameProcessor is used. |
139 // TODO(wolenetz): Enable usage of new frame processor based on this flag. | |
140 // See http://crbug.com/249422. | |
141 class ChunkDemuxerTest : public ::testing::TestWithParam<bool> { | 139 class ChunkDemuxerTest : public ::testing::TestWithParam<bool> { |
142 protected: | 140 protected: |
143 enum CodecsIndex { | 141 enum CodecsIndex { |
144 AUDIO, | 142 AUDIO, |
145 VIDEO, | 143 VIDEO, |
146 MAX_CODECS_INDEX | 144 MAX_CODECS_INDEX |
147 }; | 145 }; |
148 | 146 |
149 // Default cluster to append first for simple tests. | 147 // Default cluster to append first for simple tests. |
150 scoped_ptr<Cluster> kDefaultFirstCluster() { | 148 scoped_ptr<Cluster> kDefaultFirstCluster() { |
(...skipping 2659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2810 // Add data leading up to the currently set duration. | 2808 // Add data leading up to the currently set duration. |
2811 AppendCluster(GenerateCluster(kStreamDuration - kAudioBlockDuration, | 2809 AppendCluster(GenerateCluster(kStreamDuration - kAudioBlockDuration, |
2812 kStreamDuration - kVideoBlockDuration, | 2810 kStreamDuration - kVideoBlockDuration, |
2813 2)); | 2811 2)); |
2814 | 2812 |
2815 CheckExpectedRanges(kSourceId, "{ [201191,201224) }"); | 2813 CheckExpectedRanges(kSourceId, "{ [201191,201224) }"); |
2816 | 2814 |
2817 // Add data beginning at the currently set duration and expect a new duration | 2815 // Add data beginning at the currently set duration and expect a new duration |
2818 // to be signaled. Note that the last video block will have a higher end | 2816 // to be signaled. Note that the last video block will have a higher end |
2819 // timestamp than the last audio block. | 2817 // timestamp than the last audio block. |
2820 // TODO(wolenetz): Compliant coded frame processor will emit a max of one | 2818 if (use_legacy_frame_processor_) { |
2821 // duration change per each ProcessFrames(). Remove the first expectation here | 2819 const int kNewStreamDurationAudio = kStreamDuration + kAudioBlockDuration; |
2822 // once compliant coded frame processor is used. See http://crbug.com/249422. | 2820 EXPECT_CALL(host_, SetDuration( |
2823 const int kNewStreamDurationAudio = kStreamDuration + kAudioBlockDuration; | |
2824 EXPECT_CALL(host_, SetDuration( | |
2825 base::TimeDelta::FromMilliseconds(kNewStreamDurationAudio))); | 2821 base::TimeDelta::FromMilliseconds(kNewStreamDurationAudio))); |
| 2822 } |
2826 const int kNewStreamDurationVideo = kStreamDuration + kVideoBlockDuration; | 2823 const int kNewStreamDurationVideo = kStreamDuration + kVideoBlockDuration; |
2827 EXPECT_CALL(host_, SetDuration( | 2824 EXPECT_CALL(host_, SetDuration( |
2828 base::TimeDelta::FromMilliseconds(kNewStreamDurationVideo))); | 2825 base::TimeDelta::FromMilliseconds(kNewStreamDurationVideo))); |
2829 AppendCluster(GenerateCluster(kDefaultDuration().InMilliseconds(), 2)); | 2826 AppendCluster(GenerateCluster(kDefaultDuration().InMilliseconds(), 2)); |
2830 | 2827 |
2831 CheckExpectedRanges(kSourceId, "{ [201191,201247) }"); | 2828 CheckExpectedRanges(kSourceId, "{ [201191,201247) }"); |
2832 | 2829 |
2833 // Add more data to the end of each media type. Note that the last audio block | 2830 // Add more data to the end of each media type. Note that the last audio block |
2834 // will have a higher end timestamp than the last video block. | 2831 // will have a higher end timestamp than the last video block. |
2835 const int kFinalStreamDuration = kStreamDuration + kAudioBlockDuration * 3; | 2832 const int kFinalStreamDuration = kStreamDuration + kAudioBlockDuration * 3; |
2836 EXPECT_CALL(host_, SetDuration( | 2833 EXPECT_CALL(host_, SetDuration( |
2837 base::TimeDelta::FromMilliseconds(kFinalStreamDuration))); | 2834 base::TimeDelta::FromMilliseconds(kFinalStreamDuration))); |
2838 AppendCluster(GenerateCluster(kStreamDuration + kAudioBlockDuration, | 2835 AppendCluster(GenerateCluster(kStreamDuration + kAudioBlockDuration, |
2839 kStreamDuration + kVideoBlockDuration, | 2836 kStreamDuration + kVideoBlockDuration, |
2840 3)); | 2837 3)); |
2841 | 2838 |
2842 // See that the range has increased appropriately (but not to the full | 2839 // See that the range has increased appropriately (but not to the full |
2843 // duration of 201293, since there is not enough video appended for that). | 2840 // duration of 201293, since there is not enough video appended for that). |
2844 CheckExpectedRanges(kSourceId, "{ [201191,201290) }"); | 2841 CheckExpectedRanges(kSourceId, "{ [201191,201290) }"); |
2845 } | 2842 } |
2846 | 2843 |
2847 TEST_P(ChunkDemuxerTest, DurationChangeTimestampOffset) { | 2844 TEST_P(ChunkDemuxerTest, DurationChangeTimestampOffset) { |
2848 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); | 2845 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
2849 | 2846 |
2850 ASSERT_TRUE(SetTimestampOffset(kSourceId, kDefaultDuration())); | 2847 ASSERT_TRUE(SetTimestampOffset(kSourceId, kDefaultDuration())); |
2851 | 2848 |
2852 // TODO(wolenetz): Compliant coded frame processor will emit a max of one | 2849 if (use_legacy_frame_processor_) { |
2853 // duration change per each ProcessFrames(). Remove the first expectation here | 2850 EXPECT_CALL(host_, SetDuration( |
2854 // once compliant coded frame processor is used. See http://crbug.com/249422. | 2851 kDefaultDuration() + base::TimeDelta::FromMilliseconds( |
2855 EXPECT_CALL(host_, SetDuration( | 2852 kAudioBlockDuration * 2))); |
2856 kDefaultDuration() + base::TimeDelta::FromMilliseconds( | 2853 } |
2857 kAudioBlockDuration * 2))); | |
2858 EXPECT_CALL(host_, SetDuration( | 2854 EXPECT_CALL(host_, SetDuration( |
2859 kDefaultDuration() + base::TimeDelta::FromMilliseconds( | 2855 kDefaultDuration() + base::TimeDelta::FromMilliseconds( |
2860 kVideoBlockDuration * 2))); | 2856 kVideoBlockDuration * 2))); |
2861 AppendCluster(GenerateCluster(0, 4)); | 2857 AppendCluster(GenerateCluster(0, 4)); |
2862 } | 2858 } |
2863 | 2859 |
2864 TEST_P(ChunkDemuxerTest, EndOfStreamTruncateDuration) { | 2860 TEST_P(ChunkDemuxerTest, EndOfStreamTruncateDuration) { |
2865 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); | 2861 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
2866 | 2862 |
2867 AppendCluster(kDefaultFirstCluster()); | 2863 AppendCluster(kDefaultFirstCluster()); |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3268 | 3264 |
3269 // NOTE: we start at 175 here because the buffer at 125 was returned | 3265 // NOTE: we start at 175 here because the buffer at 125 was returned |
3270 // to the pending read initiated above. | 3266 // to the pending read initiated above. |
3271 CheckExpectedBuffers(text_stream, "175 225"); | 3267 CheckExpectedBuffers(text_stream, "175 225"); |
3272 | 3268 |
3273 // Verify that audio & video streams continue to return expected values. | 3269 // Verify that audio & video streams continue to return expected values. |
3274 CheckExpectedBuffers(audio_stream, "160 180"); | 3270 CheckExpectedBuffers(audio_stream, "160 180"); |
3275 CheckExpectedBuffers(video_stream, "180 210"); | 3271 CheckExpectedBuffers(video_stream, "180 210"); |
3276 } | 3272 } |
3277 | 3273 |
3278 // TODO(wolenetz): Enable testing of new frame processor based on this flag, | 3274 // Generate two sets of tests: one using FrameProcessor, and one using |
3279 // once the new processor has landed. See http://crbug.com/249422. | 3275 // LegacyFrameProcessor. |
| 3276 INSTANTIATE_TEST_CASE_P(NewFrameProcessor, ChunkDemuxerTest, Values(false)); |
3280 INSTANTIATE_TEST_CASE_P(LegacyFrameProcessor, ChunkDemuxerTest, Values(true)); | 3277 INSTANTIATE_TEST_CASE_P(LegacyFrameProcessor, ChunkDemuxerTest, Values(true)); |
3281 | 3278 |
3282 } // namespace media | 3279 } // namespace media |
OLD | NEW |