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

Side by Side Diff: content/renderer/media/audio_renderer_mixer_manager.cc

Issue 1666363005: Switching audio clients to using RestartableAudioRendererSink interface as a sink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: export fix Created 4 years, 10 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 #include "content/renderer/media/audio_renderer_mixer_manager.h" 5 #include "content/renderer/media/audio_renderer_mixer_manager.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
11 #include "build/build_config.h" 11 #include "build/build_config.h"
12 #include "content/renderer/media/audio_device_factory.h" 12 #include "content/renderer/media/audio_device_factory.h"
13 #include "media/audio/audio_output_device.h" 13 #include "media/audio/audio_output_device.h"
14 #include "media/base/audio_hardware_config.h" 14 #include "media/base/audio_hardware_config.h"
15 #include "media/base/audio_renderer_mixer.h" 15 #include "media/base/audio_renderer_mixer.h"
16 #include "media/base/audio_renderer_mixer_input.h" 16 #include "media/base/audio_renderer_mixer_input.h"
17 17
18 namespace content { 18 namespace content {
19 19
20 // static
21 media::AudioParameters AudioRendererMixerManager::GetOutputHWParams(
DaleCurtis 2016/02/10 23:25:33 Put this in function order relative to the header
o1ka 2016/02/11 17:18:23 Done.
22 int render_frame_id,
23 int session_id,
24 const std::string& device_id,
25 const url::Origin& security_origin) {
26 media::AudioParameters params; // Invalid parameters to return by default.
27
28 // TODO(olka): first try to lookup an existing device (cached or belonging
29 // to some mixer) and reuse it.
DaleCurtis 2016/02/10 23:25:33 Can you file a bug and list it here too?
o1ka 2016/02/11 17:18:23 Done.
30
31 // AudioOutputDevice is the only interface we have to communicate with output
32 // device via IPC. So, that's how we get the parameters when there is no
33 // AudioOutputDevice:
34 scoped_refptr<media::AudioOutputDevice> device =
35 AudioDeviceFactory::NewOutputDevice(render_frame_id, session_id,
36 device_id, security_origin);
37
38 if (device->GetDeviceStatus() == media::OUTPUT_DEVICE_STATUS_OK)
39 params = device->GetOutputParameters();
40
41 device->Stop(); // TODO(olka): temporary cash for future reuse.
42 return params;
43 }
44
20 AudioRendererMixerManager::AudioRendererMixerManager() 45 AudioRendererMixerManager::AudioRendererMixerManager()
21 : sink_for_testing_(nullptr) {} 46 : sink_for_testing_(nullptr) {}
22 47
23 AudioRendererMixerManager::~AudioRendererMixerManager() { 48 AudioRendererMixerManager::~AudioRendererMixerManager() {
24 // References to AudioRendererMixers may be owned by garbage collected 49 // References to AudioRendererMixers may be owned by garbage collected
25 // objects. During process shutdown they may be leaked, so, transitively, 50 // objects. During process shutdown they may be leaked, so, transitively,
26 // |mixers_| may leak (i.e., may be non-empty at this time) as well. 51 // |mixers_| may leak (i.e., may be non-empty at this time) as well.
27 } 52 }
28 53
29 media::AudioRendererMixerInput* AudioRendererMixerManager::CreateInput( 54 media::AudioRendererMixerInput* AudioRendererMixerManager::CreateInput(
30 int source_render_frame_id, 55 int source_render_frame_id,
31 const std::string& device_id, 56 const std::string& device_id,
32 const url::Origin& security_origin) { 57 const url::Origin& security_origin) {
33 return new media::AudioRendererMixerInput( 58 return new media::AudioRendererMixerInput(
34 base::Bind(&AudioRendererMixerManager::GetMixer, base::Unretained(this), 59 base::Bind(&AudioRendererMixerManager::GetMixer, base::Unretained(this),
35 source_render_frame_id), 60 source_render_frame_id),
36 base::Bind(&AudioRendererMixerManager::RemoveMixer, 61 base::Bind(&AudioRendererMixerManager::RemoveMixer,
37 base::Unretained(this), source_render_frame_id), 62 base::Unretained(this), source_render_frame_id),
38 device_id, security_origin); 63 base::Bind(&AudioRendererMixerManager::GetOutputHWParams,
64 source_render_frame_id, 0), // Session id is 0.
65 device_id,
66 security_origin);
39 } 67 }
40 68
41 void AudioRendererMixerManager::SetAudioRendererSinkForTesting( 69 void AudioRendererMixerManager::SetAudioRendererSinkForTesting(
42 media::AudioRendererSink* sink) { 70 media::AudioRendererSink* sink) {
43 sink_for_testing_ = sink; 71 sink_for_testing_ = sink;
44 } 72 }
45 73
46 media::AudioRendererMixer* AudioRendererMixerManager::GetMixer( 74 media::AudioRendererMixer* AudioRendererMixerManager::GetMixer(
47 int source_render_frame_id, 75 int source_render_frame_id,
48 const media::AudioParameters& params, 76 const media::AudioParameters& params,
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 int source_render_frame_id, 169 int source_render_frame_id,
142 const media::AudioParameters& params, 170 const media::AudioParameters& params,
143 const std::string& device_id, 171 const std::string& device_id,
144 const url::Origin& security_origin) 172 const url::Origin& security_origin)
145 : source_render_frame_id(source_render_frame_id), 173 : source_render_frame_id(source_render_frame_id),
146 params(params), 174 params(params),
147 device_id(device_id), 175 device_id(device_id),
148 security_origin(security_origin) {} 176 security_origin(security_origin) {}
149 177
150 } // namespace content 178 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698