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

Side by Side Diff: media/base/audio_renderer_mixer_unittest.cc

Issue 2067863003: Mixing audio with different latency requirements (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Unit tests, cleanup Created 4 years, 5 months 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
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 // MSVC++ requires this to be set before any other includes to get M_PI. 5 // MSVC++ requires this to be set before any other includes to get M_PI.
6 #define _USE_MATH_DEFINES 6 #define _USE_MATH_DEFINES
7 7
8 #include "media/base/audio_renderer_mixer.h" 8 #include "media/base/audio_renderer_mixer.h"
9 9
10 #include <stddef.h> 10 #include <stddef.h>
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 67
68 // Create output parameters based on test parameters. 68 // Create output parameters based on test parameters.
69 output_parameters_ = AudioParameters( 69 output_parameters_ = AudioParameters(
70 AudioParameters::AUDIO_PCM_LOW_LATENCY, kChannelLayout, 70 AudioParameters::AUDIO_PCM_LOW_LATENCY, kChannelLayout,
71 std::tr1::get<2>(GetParam()), 16, kLowLatencyBufferSize); 71 std::tr1::get<2>(GetParam()), 16, kLowLatencyBufferSize);
72 72
73 sink_ = new MockAudioRendererSink(); 73 sink_ = new MockAudioRendererSink();
74 EXPECT_CALL(*sink_.get(), Start()); 74 EXPECT_CALL(*sink_.get(), Start());
75 EXPECT_CALL(*sink_.get(), Stop()); 75 EXPECT_CALL(*sink_.get(), Stop());
76 76
77 mixer_.reset(new AudioRendererMixer(output_parameters_, sink_)); 77 mixer_.reset(
78 new AudioRendererMixer(output_parameters_, sink_, std::string()));
78 mixer_callback_ = sink_->callback(); 79 mixer_callback_ = sink_->callback();
79 80
80 audio_bus_ = AudioBus::Create(output_parameters_); 81 audio_bus_ = AudioBus::Create(output_parameters_);
81 expected_audio_bus_ = AudioBus::Create(output_parameters_); 82 expected_audio_bus_ = AudioBus::Create(output_parameters_);
82 83
83 // Allocate one callback for generating expected results. 84 // Allocate one callback for generating expected results.
84 double step = kSineCycles / static_cast<double>( 85 double step = kSineCycles / static_cast<double>(
85 output_parameters_.frames_per_buffer()); 86 output_parameters_.frames_per_buffer());
86 expected_callback_.reset(new FakeAudioRenderCallback(step)); 87 expected_callback_.reset(new FakeAudioRenderCallback(step));
87 } 88 }
88 89
89 AudioRendererMixer* GetMixer(int owner_id, 90 AudioRendererMixer* GetMixer(int owner_id,
90 const AudioParameters& params, 91 const AudioParameters& params,
92 AudioLatency::LatencyType latency,
91 const std::string& device_id, 93 const std::string& device_id,
92 const url::Origin& security_origin, 94 const url::Origin& security_origin,
93 OutputDeviceStatus* device_status) final { 95 OutputDeviceStatus* device_status) final {
94 return mixer_.get(); 96 return mixer_.get();
95 }; 97 };
96 98
97 MOCK_METHOD4(ReturnMixer, 99 MOCK_METHOD1(ReturnMixer, void(const AudioRendererMixer*));
98 void(int,
99 const AudioParameters&,
100 const std::string&,
101 const url::Origin&));
102 100
103 MOCK_METHOD4( 101 MOCK_METHOD4(
104 GetOutputDeviceInfo, 102 GetOutputDeviceInfo,
105 OutputDeviceInfo(int, int, const std::string&, const url::Origin&)); 103 OutputDeviceInfo(int, int, const std::string&, const url::Origin&));
106 104
107 void InitializeInputs(int inputs_per_sample_rate) { 105 void InitializeInputs(int inputs_per_sample_rate) {
108 mixer_inputs_.reserve(inputs_per_sample_rate * input_parameters_.size()); 106 mixer_inputs_.reserve(inputs_per_sample_rate * input_parameters_.size());
109 fake_callbacks_.reserve(inputs_per_sample_rate * input_parameters_.size()); 107 fake_callbacks_.reserve(inputs_per_sample_rate * input_parameters_.size());
110 108
111 for (size_t i = 0, input = 0; i < input_parameters_.size(); ++i) { 109 for (size_t i = 0, input = 0; i < input_parameters_.size(); ++i) {
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 std::max(1.f, static_cast<float>(floor(mixer_inputs_.size() / 2.f))))); 324 std::max(1.f, static_cast<float>(floor(mixer_inputs_.size() / 2.f)))));
327 325
328 for (size_t i = 1; i < mixer_inputs_.size(); i += 2) 326 for (size_t i = 1; i < mixer_inputs_.size(); i += 2)
329 mixer_inputs_[i]->Stop(); 327 mixer_inputs_[i]->Stop();
330 } 328 }
331 329
332 scoped_refptr<AudioRendererMixerInput> CreateMixerInput() { 330 scoped_refptr<AudioRendererMixerInput> CreateMixerInput() {
333 return new AudioRendererMixerInput( 331 return new AudioRendererMixerInput(
334 this, 332 this,
335 // Zero frame id, default device ID and security origin. 333 // Zero frame id, default device ID and security origin.
336 0, std::string(), url::Origin()); 334 0, std::string(), url::Origin(), AudioLatency::LATENCY_PLAYBACK);
337 } 335 }
338 336
339 protected: 337 protected:
340 virtual ~AudioRendererMixerTest() {} 338 virtual ~AudioRendererMixerTest() {}
341 339
342 scoped_refptr<MockAudioRendererSink> sink_; 340 scoped_refptr<MockAudioRendererSink> sink_;
343 std::unique_ptr<AudioRendererMixer> mixer_; 341 std::unique_ptr<AudioRendererMixer> mixer_;
344 AudioRendererSink::RenderCallback* mixer_callback_; 342 AudioRendererSink::RenderCallback* mixer_callback_;
345 std::vector<AudioParameters> input_parameters_; 343 std::vector<AudioParameters> input_parameters_;
346 AudioParameters output_parameters_; 344 AudioParameters output_parameters_;
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 INSTANTIATE_TEST_CASE_P( 545 INSTANTIATE_TEST_CASE_P(
548 AudioRendererMixerBehavioralTest, 546 AudioRendererMixerBehavioralTest,
549 AudioRendererMixerBehavioralTest, 547 AudioRendererMixerBehavioralTest,
550 testing::ValuesIn(std::vector<AudioRendererMixerTestData>( 548 testing::ValuesIn(std::vector<AudioRendererMixerTestData>(
551 1, 549 1,
552 std::tr1::make_tuple(&kTestInputLower, 550 std::tr1::make_tuple(&kTestInputLower,
553 1, 551 1,
554 kTestInputLower, 552 kTestInputLower,
555 0.00000048)))); 553 0.00000048))));
556 } // namespace media 554 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698