| Index: media/filters/source_buffer_stream_unittest.cc
|
| diff --git a/media/filters/source_buffer_stream_unittest.cc b/media/filters/source_buffer_stream_unittest.cc
|
| index ccd4f586ccfd569b4ef9b688504ba7e4e47070ef..97394107f60c4e6a97e7534c7bea2106d683424e 100644
|
| --- a/media/filters/source_buffer_stream_unittest.cc
|
| +++ b/media/filters/source_buffer_stream_unittest.cc
|
| @@ -58,14 +58,17 @@ class SourceBufferStreamTest : public testing::Test {
|
| void SetAudioStream() {
|
| video_config_ = TestVideoConfig::Invalid();
|
| accurate_durations_ = true;
|
| - AudioDecoderConfig config(kCodecVorbis,
|
| - kSampleFormatPlanarF32,
|
| - CHANNEL_LAYOUT_STEREO,
|
| - 1000,
|
| - NULL,
|
| - 0,
|
| - false);
|
| - stream_.reset(new SourceBufferStream(config, LogCB(), true));
|
| + audio_config_.Initialize(kCodecVorbis,
|
| + kSampleFormatPlanarF32,
|
| + CHANNEL_LAYOUT_STEREO,
|
| + 1000,
|
| + NULL,
|
| + 0,
|
| + false,
|
| + false,
|
| + base::TimeDelta(),
|
| + 0);
|
| + stream_.reset(new SourceBufferStream(audio_config_, LogCB(), true));
|
|
|
| // Equivalent to 2ms per frame.
|
| SetStreamInfo(500, 500);
|
| @@ -316,6 +319,13 @@ class SourceBufferStreamTest : public testing::Test {
|
| << "\nActual: " << actual.AsHumanReadableString();
|
| }
|
|
|
| + void CheckAudioConfig(const AudioDecoderConfig& config) {
|
| + const AudioDecoderConfig& actual = stream_->GetCurrentAudioDecoderConfig();
|
| + EXPECT_TRUE(actual.Matches(config))
|
| + << "Expected: " << config.AsHumanReadableString()
|
| + << "\nActual: " << actual.AsHumanReadableString();
|
| + }
|
| +
|
| const LogCB log_cb() {
|
| return base::Bind(&SourceBufferStreamTest::DebugMediaLog,
|
| base::Unretained(this));
|
| @@ -325,6 +335,7 @@ class SourceBufferStreamTest : public testing::Test {
|
|
|
| scoped_ptr<SourceBufferStream> stream_;
|
| VideoDecoderConfig video_config_;
|
| + AudioDecoderConfig audio_config_;
|
|
|
| private:
|
| base::TimeDelta ConvertToFrameDuration(int frames_per_second) {
|
| @@ -465,6 +476,7 @@ class SourceBufferStreamTest : public testing::Test {
|
| if (last_splice_frame) {
|
| // Require at least one additional buffer for a splice.
|
| CHECK(!pre_splice_buffers.empty());
|
| + buffer->SetConfigId(splice_config_id);
|
| buffer->ConvertToSpliceBuffer(pre_splice_buffers);
|
| pre_splice_buffers.clear();
|
| }
|
| @@ -3593,8 +3605,9 @@ TEST_F(SourceBufferStreamTest, SpliceFrame_ConfigChangeWithinSplice) {
|
| CheckExpectedBuffers("0K 3K C");
|
| CheckVideoConfig(new_config);
|
| CheckExpectedBuffers("6 9 C");
|
| + CheckExpectedBuffers("10 C");
|
| CheckVideoConfig(video_config_);
|
| - CheckExpectedBuffers("10 15");
|
| + CheckExpectedBuffers("15");
|
| CheckNoNextBuffer();
|
| }
|
|
|
| @@ -3628,8 +3641,9 @@ TEST_F(SourceBufferStreamTest,
|
| CheckExpectedBuffers("7K C");
|
| CheckVideoConfig(new_config);
|
| CheckExpectedBuffers("8 9 C");
|
| + CheckExpectedBuffers("10 C");
|
| CheckVideoConfig(video_config_);
|
| - CheckExpectedBuffers("10 20");
|
| + CheckExpectedBuffers("20");
|
| CheckNoNextBuffer();
|
| }
|
|
|
| @@ -3704,6 +3718,28 @@ TEST_F(SourceBufferStreamTest, Audio_SpliceFrame_CorrectMediaSegmentStartTime) {
|
| CheckNoNextBuffer();
|
| }
|
|
|
| +TEST_F(SourceBufferStreamTest, Audio_SpliceFrame_ConfigChange) {
|
| + SetAudioStream();
|
| +
|
| + AudioDecoderConfig new_config(kCodecVorbis,
|
| + kSampleFormatPlanarF32,
|
| + CHANNEL_LAYOUT_MONO,
|
| + 1000,
|
| + NULL,
|
| + 0,
|
| + false);
|
| + ASSERT_NE(new_config.channel_layout(), audio_config_.channel_layout());
|
| +
|
| + Seek(0);
|
| + CheckAudioConfig(audio_config_);
|
| + NewSegmentAppend("0K 2K 4K 6K");
|
| + stream_->UpdateAudioConfig(new_config);
|
| + NewSegmentAppend("5K 8K 12K");
|
| + CheckExpectedBuffers("0K 2K 4K 6K C 5K 8K 12K");
|
| + CheckAudioConfig(new_config);
|
| + CheckNoNextBuffer();
|
| +}
|
| +
|
| // TODO(vrk): Add unit tests where keyframes are unaligned between streams.
|
| // (crbug.com/133557)
|
|
|
|
|