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

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

Issue 12383016: Merge AssociateStreamWithProducer message into CreateStream message for both audio output and input. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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 | Annotate | Revision Log
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/webrtc_local_audio_renderer.h" 5 #include "content/renderer/media/webrtc_local_audio_renderer.h"
6 6
7 #include "base/atomicops.h" 7 #include "base/atomicops.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/debug/trace_event.h" 11 #include "base/debug/trace_event.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/message_loop_proxy.h" 13 #include "base/message_loop_proxy.h"
14 #include "base/synchronization/lock.h" 14 #include "base/synchronization/lock.h"
15 #include "content/renderer/media/audio_device_factory.h" 15 #include "content/renderer/media/audio_device_factory.h"
16 #include "content/renderer/media/renderer_audio_output_device.h"
17 #include "content/renderer/media/webrtc_audio_capturer.h" 16 #include "content/renderer/media/webrtc_audio_capturer.h"
17 #include "media/audio/audio_output_device.h"
18 #include "media/base/bind_to_loop.h" 18 #include "media/base/bind_to_loop.h"
19 #include "media/base/media_switches.h" 19 #include "media/base/media_switches.h"
20 20
21 namespace content { 21 namespace content {
22 22
23 // WebRtcLocalAudioRenderer::AudioCallback wraps the AudioOutputDevice thread, 23 // WebRtcLocalAudioRenderer::AudioCallback wraps the AudioOutputDevice thread,
24 // receives callbacks on that thread and proxies these requests to the capture 24 // receives callbacks on that thread and proxies these requests to the capture
25 // sink. 25 // sink.
26 class WebRtcLocalAudioRenderer::AudioCallback 26 class WebRtcLocalAudioRenderer::AudioCallback
27 : public media::AudioRendererSink::RenderCallback { 27 : public media::AudioRendererSink::RenderCallback {
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 // tests have shown that it resolves issues with audio glitches for some 162 // tests have shown that it resolves issues with audio glitches for some
163 // cases where resampling is needed on the output side. 163 // cases where resampling is needed on the output side.
164 // TODO(henrika): verify this scheme on as many different devices and 164 // TODO(henrika): verify this scheme on as many different devices and
165 // combinations of sample rates as possible 165 // combinations of sample rates as possible
166 media::AudioParameters source_params = source_->audio_parameters(); 166 media::AudioParameters source_params = source_->audio_parameters();
167 media::AudioParameters sink_params(source_params.format(), 167 media::AudioParameters sink_params(source_params.format(),
168 source_params.channel_layout(), 168 source_params.channel_layout(),
169 source_params.sample_rate(), 169 source_params.sample_rate(),
170 source_params.bits_per_sample(), 170 source_params.bits_per_sample(),
171 2 * source_params.frames_per_buffer()); 171 2 * source_params.frames_per_buffer());
172 sink_ = AudioDeviceFactory::NewOutputDevice(); 172 sink_ = AudioDeviceFactory::NewOutputDevice(source_render_view_id_);
173 if (CommandLine::ForCurrentProcess()->HasSwitch( 173 if (CommandLine::ForCurrentProcess()->HasSwitch(
174 switches::kEnableWebAudioInput)) { 174 switches::kEnableWebAudioInput)) {
175 // TODO(henrika): we could utilize the unified audio here instead and do 175 // TODO(henrika): we could utilize the unified audio here instead and do
176 // sink_->InitializeIO(sink_params, 2, callback_.get()); 176 // sink_->InitializeIO(sink_params, 2, callback_.get());
177 // It would then be possible to avoid using the WebRtcAudioCapturer. 177 // It would then be possible to avoid using the WebRtcAudioCapturer.
178 DVLOG(1) << "enable-webaudio-input command-line flag is enabled"; 178 DVLOG(1) << "enable-webaudio-input command-line flag is enabled";
179 } 179 }
180 sink_->Initialize(sink_params, callback_.get()); 180 sink_->Initialize(sink_params, callback_.get());
181 sink_->SetSourceRenderView(source_render_view_id_);
182 181
183 // Start local rendering and the capturer. Note that, the capturer is owned 182 // Start local rendering and the capturer. Note that, the capturer is owned
184 // by the WebRTC ADM and might already bee running. 183 // by the WebRTC ADM and might already bee running.
185 source_->Start(); 184 source_->Start();
186 sink_->Start(); 185 sink_->Start();
187 callback_->Start(); 186 callback_->Start();
188 } 187 }
189 188
190 void WebRtcLocalAudioRenderer::Stop() { 189 void WebRtcLocalAudioRenderer::Stop() {
191 DCHECK(thread_checker_.CalledOnValidThread()); 190 DCHECK(thread_checker_.CalledOnValidThread());
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 DVLOG(1) << "WebRtcLocalAudioRenderer::OnSourceCaptureDeviceStopped()"; 260 DVLOG(1) << "WebRtcLocalAudioRenderer::OnSourceCaptureDeviceStopped()";
262 if (!Started()) 261 if (!Started())
263 return; 262 return;
264 263
265 // The capture device has stopped and we should therefore stop all activity 264 // The capture device has stopped and we should therefore stop all activity
266 // as well to save resources. 265 // as well to save resources.
267 Stop(); 266 Stop();
268 } 267 }
269 268
270 } // namespace content 269 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698