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

Side by Side Diff: media/renderers/audio_renderer_impl_unittest.cc

Issue 2522673003: Don't run WSOLA over always muted channels. (Closed)
Patch Set: Fix cast tests. Created 4 years 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 unified diff | Download patch
« no previous file with comments | « media/renderers/audio_renderer_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "media/renderers/audio_renderer_impl.h" 5 #include "media/renderers/audio_renderer_impl.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 ScopedVector<AudioDecoder> decoders; 121 ScopedVector<AudioDecoder> decoders;
122 decoders.push_back(decoder_); 122 decoders.push_back(decoder_);
123 renderer_.reset(new AudioRendererImpl(message_loop_.task_runner(), 123 renderer_.reset(new AudioRendererImpl(message_loop_.task_runner(),
124 sink_.get(), std::move(decoders), 124 sink_.get(), std::move(decoders),
125 new MediaLog())); 125 new MediaLog()));
126 testing::Mock::VerifyAndClearExpectations(&demuxer_stream_); 126 testing::Mock::VerifyAndClearExpectations(&demuxer_stream_);
127 EXPECT_CALL(demuxer_stream_, SupportsConfigChanges()) 127 EXPECT_CALL(demuxer_stream_, SupportsConfigChanges())
128 .WillRepeatedly(Return(false)); 128 .WillRepeatedly(Return(false));
129 } 129 }
130 130
131 // Reconfigures a renderer with config change support using given params.
132 void ConfigureConfigChangeRenderer(const AudioParameters& params,
133 const AudioParameters& hardware_params) {
134 hardware_params_ = hardware_params;
135 sink_ = new FakeAudioRendererSink(hardware_params_);
136 decoder_ = new MockAudioDecoder();
137 ScopedVector<AudioDecoder> decoders;
138 decoders.push_back(decoder_);
139 renderer_.reset(new AudioRendererImpl(message_loop_.task_runner(),
140 sink_.get(), std::move(decoders),
141 new MediaLog()));
142 testing::Mock::VerifyAndClearExpectations(&demuxer_stream_);
143 EXPECT_CALL(demuxer_stream_, SupportsConfigChanges())
144 .WillRepeatedly(Return(true));
145 }
146
131 void ExpectUnsupportedAudioDecoder() { 147 void ExpectUnsupportedAudioDecoder() {
132 EXPECT_CALL(*decoder_, Initialize(_, _, _, _)) 148 EXPECT_CALL(*decoder_, Initialize(_, _, _, _))
133 .WillOnce(DoAll(SaveArg<3>(&output_cb_), RunCallback<2>(false))); 149 .WillOnce(DoAll(SaveArg<3>(&output_cb_), RunCallback<2>(false)));
134 } 150 }
135 151
136 // RendererClient implementation. 152 // RendererClient implementation.
137 MOCK_METHOD1(OnError, void(PipelineStatus)); 153 MOCK_METHOD1(OnError, void(PipelineStatus));
138 void OnEnded() override { 154 void OnEnded() override {
139 CHECK(!ended_); 155 CHECK(!ended_);
140 ended_ = true; 156 ended_ = true;
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 382
367 InputFrames converter_input_frames_left() const { 383 InputFrames converter_input_frames_left() const {
368 return InputFrames( 384 return InputFrames(
369 renderer_->buffer_converter_->input_frames_left_for_testing()); 385 renderer_->buffer_converter_->input_frames_left_for_testing());
370 } 386 }
371 387
372 base::TimeDelta CurrentMediaTime() { 388 base::TimeDelta CurrentMediaTime() {
373 return renderer_->CurrentMediaTime(); 389 return renderer_->CurrentMediaTime();
374 } 390 }
375 391
392 std::vector<bool> channel_mask() const { return renderer_->channel_mask_; }
393
376 bool ended() const { return ended_; } 394 bool ended() const { return ended_; }
377 395
378 // Fixture members. 396 // Fixture members.
379 AudioParameters hardware_params_; 397 AudioParameters hardware_params_;
380 base::MessageLoop message_loop_; 398 base::MessageLoop message_loop_;
381 std::unique_ptr<AudioRendererImpl> renderer_; 399 std::unique_ptr<AudioRendererImpl> renderer_;
382 scoped_refptr<FakeAudioRendererSink> sink_; 400 scoped_refptr<FakeAudioRendererSink> sink_;
383 base::SimpleTestTickClock* tick_clock_; 401 base::SimpleTestTickClock* tick_clock_;
384 PipelineStatistics last_statistics_; 402 PipelineStatistics last_statistics_;
385 403
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 // Verify in the no-config-changes-expected case. 589 // Verify in the no-config-changes-expected case.
572 ConfigureBasicRenderer(AudioParameters( 590 ConfigureBasicRenderer(AudioParameters(
573 AudioParameters::AUDIO_PCM_LOW_LATENCY, kChannelLayout, 591 AudioParameters::AUDIO_PCM_LOW_LATENCY, kChannelLayout,
574 kOutputSamplesPerSecond, SampleFormatToBytesPerChannel(kSampleFormat) * 8, 592 kOutputSamplesPerSecond, SampleFormatToBytesPerChannel(kSampleFormat) * 8,
575 1024 * 15)); 593 1024 * 15));
576 594
577 Initialize(); 595 Initialize();
578 EXPECT_GT(buffer_capacity().value, hardware_params_.frames_per_buffer()); 596 EXPECT_GT(buffer_capacity().value, hardware_params_.frames_per_buffer());
579 } 597 }
580 598
599 // Verify that the proper reduced search space is configured for playback rate
600 // changes when upmixing is applied to the input.
601 TEST_F(AudioRendererImplTest, ChannelMask) {
602 Initialize();
603 AudioParameters hw_params(AudioParameters::AUDIO_PCM_LOW_LATENCY,
604 CHANNEL_LAYOUT_7_1, kOutputSamplesPerSecond,
605 SampleFormatToBytesPerChannel(kSampleFormat) * 8,
606 1024);
607 ConfigureConfigChangeRenderer(
608 AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY,
609 CHANNEL_LAYOUT_STEREO, kOutputSamplesPerSecond,
610 SampleFormatToBytesPerChannel(kSampleFormat) * 8, 1024),
611 hw_params);
612 std::vector<bool> mask = channel_mask();
613 EXPECT_TRUE(mask.empty());
614 Initialize();
615 mask = channel_mask();
616 EXPECT_FALSE(mask.empty());
617 for (int ch = 0; ch < hw_params.channels(); ++ch) {
618 if (ch > 1)
619 ASSERT_FALSE(mask[ch]);
620 else
621 ASSERT_TRUE(mask[ch]);
622 }
623 }
624
581 TEST_F(AudioRendererImplTest, Underflow_Flush) { 625 TEST_F(AudioRendererImplTest, Underflow_Flush) {
582 Initialize(); 626 Initialize();
583 Preroll(); 627 Preroll();
584 StartTicking(); 628 StartTicking();
585 629
586 // Force underflow. 630 // Force underflow.
587 EXPECT_TRUE(ConsumeBufferedData(frames_buffered())); 631 EXPECT_TRUE(ConsumeBufferedData(frames_buffered()));
588 WaitForPendingRead(); 632 WaitForPendingRead();
589 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)); 633 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_NOTHING));
590 EXPECT_FALSE(ConsumeBufferedData(OutputFrames(1))); 634 EXPECT_FALSE(ConsumeBufferedData(OutputFrames(1)));
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 // Advance far enough that we shouldn't be clamped to current time (tested 1037 // Advance far enough that we shouldn't be clamped to current time (tested
994 // already above). 1038 // already above).
995 tick_clock_->Advance(kOneSecond); 1039 tick_clock_->Advance(kOneSecond);
996 EXPECT_EQ( 1040 EXPECT_EQ(
997 current_time + timestamp_helper.GetFrameDuration(frames_to_consume.value), 1041 current_time + timestamp_helper.GetFrameDuration(frames_to_consume.value),
998 CurrentMediaWallClockTime(&is_time_moving)); 1042 CurrentMediaWallClockTime(&is_time_moving));
999 EXPECT_TRUE(is_time_moving); 1043 EXPECT_TRUE(is_time_moving);
1000 } 1044 }
1001 1045
1002 } // namespace media 1046 } // namespace media
OLDNEW
« no previous file with comments | « media/renderers/audio_renderer_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698