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

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: mixing inputs of the same latency Created 4 years, 6 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 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 expected_audio_bus_ = AudioBus::Create(output_parameters_); 81 expected_audio_bus_ = AudioBus::Create(output_parameters_);
82 82
83 // Allocate one callback for generating expected results. 83 // Allocate one callback for generating expected results.
84 double step = kSineCycles / static_cast<double>( 84 double step = kSineCycles / static_cast<double>(
85 output_parameters_.frames_per_buffer()); 85 output_parameters_.frames_per_buffer());
86 expected_callback_.reset(new FakeAudioRenderCallback(step)); 86 expected_callback_.reset(new FakeAudioRenderCallback(step));
87 } 87 }
88 88
89 AudioRendererMixer* GetMixer(int owner_id, 89 AudioRendererMixer* GetMixer(int owner_id,
90 const AudioParameters& params, 90 const AudioParameters& params,
91 AudioLatency::LatencyType latency,
91 const std::string& device_id, 92 const std::string& device_id,
92 const url::Origin& security_origin, 93 const url::Origin& security_origin,
93 OutputDeviceStatus* device_status) final { 94 OutputDeviceStatus* device_status) final {
94 return mixer_.get(); 95 return mixer_.get();
95 }; 96 };
96 97
97 MOCK_METHOD4(ReturnMixer, 98 MOCK_METHOD1(ReturnMixer, void(const AudioRendererMixer*));
98 void(int,
99 const AudioParameters&,
100 const std::string&,
101 const url::Origin&));
102 99
103 MOCK_METHOD4( 100 MOCK_METHOD4(
104 GetOutputDeviceInfo, 101 GetOutputDeviceInfo,
105 OutputDeviceInfo(int, int, const std::string&, const url::Origin&)); 102 OutputDeviceInfo(int, int, const std::string&, const url::Origin&));
106 103
107 void InitializeInputs(int inputs_per_sample_rate) { 104 void InitializeInputs(int inputs_per_sample_rate) {
108 mixer_inputs_.reserve(inputs_per_sample_rate * input_parameters_.size()); 105 mixer_inputs_.reserve(inputs_per_sample_rate * input_parameters_.size());
109 fake_callbacks_.reserve(inputs_per_sample_rate * input_parameters_.size()); 106 fake_callbacks_.reserve(inputs_per_sample_rate * input_parameters_.size());
110 107
111 for (size_t i = 0, input = 0; i < input_parameters_.size(); ++i) { 108 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))))); 323 std::max(1.f, static_cast<float>(floor(mixer_inputs_.size() / 2.f)))));
327 324
328 for (size_t i = 1; i < mixer_inputs_.size(); i += 2) 325 for (size_t i = 1; i < mixer_inputs_.size(); i += 2)
329 mixer_inputs_[i]->Stop(); 326 mixer_inputs_[i]->Stop();
330 } 327 }
331 328
332 scoped_refptr<AudioRendererMixerInput> CreateMixerInput() { 329 scoped_refptr<AudioRendererMixerInput> CreateMixerInput() {
333 return new AudioRendererMixerInput( 330 return new AudioRendererMixerInput(
334 this, 331 this,
335 // Zero frame id, default device ID and security origin. 332 // Zero frame id, default device ID and security origin.
336 0, std::string(), url::Origin()); 333 0, std::string(), url::Origin(), AudioLatency::LATENCY_PLAYBACK);
337 } 334 }
338 335
339 protected: 336 protected:
340 virtual ~AudioRendererMixerTest() {} 337 virtual ~AudioRendererMixerTest() {}
341 338
342 scoped_refptr<MockAudioRendererSink> sink_; 339 scoped_refptr<MockAudioRendererSink> sink_;
343 std::unique_ptr<AudioRendererMixer> mixer_; 340 std::unique_ptr<AudioRendererMixer> mixer_;
344 AudioRendererSink::RenderCallback* mixer_callback_; 341 AudioRendererSink::RenderCallback* mixer_callback_;
345 std::vector<AudioParameters> input_parameters_; 342 std::vector<AudioParameters> input_parameters_;
346 AudioParameters output_parameters_; 343 AudioParameters output_parameters_;
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 INSTANTIATE_TEST_CASE_P( 544 INSTANTIATE_TEST_CASE_P(
548 AudioRendererMixerBehavioralTest, 545 AudioRendererMixerBehavioralTest,
549 AudioRendererMixerBehavioralTest, 546 AudioRendererMixerBehavioralTest,
550 testing::ValuesIn(std::vector<AudioRendererMixerTestData>( 547 testing::ValuesIn(std::vector<AudioRendererMixerTestData>(
551 1, 548 1,
552 std::tr1::make_tuple(&kTestInputLower, 549 std::tr1::make_tuple(&kTestInputLower,
553 1, 550 1,
554 kTestInputLower, 551 kTestInputLower,
555 0.00000048)))); 552 0.00000048))));
556 } // namespace media 553 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698