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 "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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 | 107 |
108 AudioParameters out_params(AudioParameters::AUDIO_PCM_LOW_LATENCY, | 108 AudioParameters out_params(AudioParameters::AUDIO_PCM_LOW_LATENCY, |
109 kChannelLayout, | 109 kChannelLayout, |
110 kOutputSamplesPerSecond, | 110 kOutputSamplesPerSecond, |
111 SampleFormatToBytesPerChannel(kSampleFormat) * 8, | 111 SampleFormatToBytesPerChannel(kSampleFormat) * 8, |
112 512); | 112 512); |
113 renderer_.reset(new AudioRendererImpl( | 113 renderer_.reset(new AudioRendererImpl( |
114 message_loop_.task_runner(), sink_.get(), | 114 message_loop_.task_runner(), sink_.get(), |
115 base::Bind(&AudioRendererImplTest::CreateAudioDecoderForTest, | 115 base::Bind(&AudioRendererImplTest::CreateAudioDecoderForTest, |
116 base::Unretained(this)), | 116 base::Unretained(this)), |
117 new MediaLog())); | 117 &media_log_)); |
118 renderer_->tick_clock_.reset(tick_clock_); | 118 renderer_->tick_clock_.reset(tick_clock_); |
119 tick_clock_->Advance(base::TimeDelta::FromSeconds(1)); | 119 tick_clock_->Advance(base::TimeDelta::FromSeconds(1)); |
120 } | 120 } |
121 | 121 |
122 virtual ~AudioRendererImplTest() { | 122 virtual ~AudioRendererImplTest() { |
123 SCOPED_TRACE("~AudioRendererImplTest()"); | 123 SCOPED_TRACE("~AudioRendererImplTest()"); |
124 } | 124 } |
125 | 125 |
126 // Mock out demuxer reads. | 126 // Mock out demuxer reads. |
127 void ConfigureDemuxerStream(bool supports_config_changes) { | 127 void ConfigureDemuxerStream(bool supports_config_changes) { |
128 EXPECT_CALL(demuxer_stream_, Read(_)) | 128 EXPECT_CALL(demuxer_stream_, Read(_)) |
129 .WillRepeatedly( | 129 .WillRepeatedly( |
130 RunCallback<0>(DemuxerStream::kOk, | 130 RunCallback<0>(DemuxerStream::kOk, |
131 scoped_refptr<DecoderBuffer>(new DecoderBuffer(0)))); | 131 scoped_refptr<DecoderBuffer>(new DecoderBuffer(0)))); |
132 EXPECT_CALL(demuxer_stream_, SupportsConfigChanges()) | 132 EXPECT_CALL(demuxer_stream_, SupportsConfigChanges()) |
133 .WillRepeatedly(Return(supports_config_changes)); | 133 .WillRepeatedly(Return(supports_config_changes)); |
134 } | 134 } |
135 | 135 |
136 // Reconfigures a renderer without config change support using given params. | 136 // Reconfigures a renderer without config change support using given params. |
137 void ConfigureBasicRenderer(const AudioParameters& params) { | 137 void ConfigureBasicRenderer(const AudioParameters& params) { |
138 hardware_params_ = params; | 138 hardware_params_ = params; |
139 sink_ = new FakeAudioRendererSink(hardware_params_); | 139 sink_ = new FakeAudioRendererSink(hardware_params_); |
140 renderer_.reset(new AudioRendererImpl( | 140 renderer_.reset(new AudioRendererImpl( |
141 message_loop_.task_runner(), sink_.get(), | 141 message_loop_.task_runner(), sink_.get(), |
142 base::Bind(&AudioRendererImplTest::CreateAudioDecoderForTest, | 142 base::Bind(&AudioRendererImplTest::CreateAudioDecoderForTest, |
143 base::Unretained(this)), | 143 base::Unretained(this)), |
144 new MediaLog())); | 144 &media_log_)); |
145 testing::Mock::VerifyAndClearExpectations(&demuxer_stream_); | 145 testing::Mock::VerifyAndClearExpectations(&demuxer_stream_); |
146 ConfigureDemuxerStream(false); | 146 ConfigureDemuxerStream(false); |
147 } | 147 } |
148 | 148 |
149 // Reconfigures a renderer with config change support using given params. | 149 // Reconfigures a renderer with config change support using given params. |
150 void ConfigureConfigChangeRenderer(const AudioParameters& params, | 150 void ConfigureConfigChangeRenderer(const AudioParameters& params, |
151 const AudioParameters& hardware_params) { | 151 const AudioParameters& hardware_params) { |
152 hardware_params_ = hardware_params; | 152 hardware_params_ = hardware_params; |
153 sink_ = new FakeAudioRendererSink(hardware_params_); | 153 sink_ = new FakeAudioRendererSink(hardware_params_); |
154 renderer_.reset(new AudioRendererImpl( | 154 renderer_.reset(new AudioRendererImpl( |
155 message_loop_.task_runner(), sink_.get(), | 155 message_loop_.task_runner(), sink_.get(), |
156 base::Bind(&AudioRendererImplTest::CreateAudioDecoderForTest, | 156 base::Bind(&AudioRendererImplTest::CreateAudioDecoderForTest, |
157 base::Unretained(this)), | 157 base::Unretained(this)), |
158 new MediaLog())); | 158 &media_log_)); |
159 testing::Mock::VerifyAndClearExpectations(&demuxer_stream_); | 159 testing::Mock::VerifyAndClearExpectations(&demuxer_stream_); |
160 ConfigureDemuxerStream(true); | 160 ConfigureDemuxerStream(true); |
161 } | 161 } |
162 | 162 |
163 // RendererClient implementation. | 163 // RendererClient implementation. |
164 MOCK_METHOD1(OnError, void(PipelineStatus)); | 164 MOCK_METHOD1(OnError, void(PipelineStatus)); |
165 void OnEnded() override { | 165 void OnEnded() override { |
166 CHECK(!ended_); | 166 CHECK(!ended_); |
167 ended_ = true; | 167 ended_ = true; |
168 } | 168 } |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 | 441 |
442 if (!reset_cb_.is_null()) | 442 if (!reset_cb_.is_null()) |
443 base::ResetAndReturn(&reset_cb_).Run(); | 443 base::ResetAndReturn(&reset_cb_).Run(); |
444 | 444 |
445 base::RunLoop().RunUntilIdle(); | 445 base::RunLoop().RunUntilIdle(); |
446 } | 446 } |
447 | 447 |
448 // Fixture members. | 448 // Fixture members. |
449 AudioParameters hardware_params_; | 449 AudioParameters hardware_params_; |
450 base::MessageLoop message_loop_; | 450 base::MessageLoop message_loop_; |
| 451 MediaLog media_log_; |
451 std::unique_ptr<AudioRendererImpl> renderer_; | 452 std::unique_ptr<AudioRendererImpl> renderer_; |
452 scoped_refptr<FakeAudioRendererSink> sink_; | 453 scoped_refptr<FakeAudioRendererSink> sink_; |
453 base::SimpleTestTickClock* tick_clock_; | 454 base::SimpleTestTickClock* tick_clock_; |
454 PipelineStatistics last_statistics_; | 455 PipelineStatistics last_statistics_; |
455 | 456 |
456 MockDemuxerStream demuxer_stream_; | 457 MockDemuxerStream demuxer_stream_; |
457 | 458 |
458 // Used for satisfying reads. | 459 // Used for satisfying reads. |
459 AudioDecoder::OutputCB output_cb_; | 460 AudioDecoder::OutputCB output_cb_; |
460 AudioDecoder::DecodeCB decode_cb_; | 461 AudioDecoder::DecodeCB decode_cb_; |
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1090 // Advance far enough that we shouldn't be clamped to current time (tested | 1091 // Advance far enough that we shouldn't be clamped to current time (tested |
1091 // already above). | 1092 // already above). |
1092 tick_clock_->Advance(kOneSecond); | 1093 tick_clock_->Advance(kOneSecond); |
1093 EXPECT_EQ( | 1094 EXPECT_EQ( |
1094 current_time + timestamp_helper.GetFrameDuration(frames_to_consume.value), | 1095 current_time + timestamp_helper.GetFrameDuration(frames_to_consume.value), |
1095 CurrentMediaWallClockTime(&is_time_moving)); | 1096 CurrentMediaWallClockTime(&is_time_moving)); |
1096 EXPECT_TRUE(is_time_moving); | 1097 EXPECT_TRUE(is_time_moving); |
1097 } | 1098 } |
1098 | 1099 |
1099 } // namespace media | 1100 } // namespace media |
OLD | NEW |