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

Unified Diff: content/renderer/media/webrtc_audio_renderer.cc

Issue 23731007: Implicit audio output device selection for getUserMedia. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/webrtc_audio_renderer.cc
diff --git a/content/renderer/media/webrtc_audio_renderer.cc b/content/renderer/media/webrtc_audio_renderer.cc
index caa4ab8ba4f8b0748b80cefb4e185d30b2d6d385..664ae335c7790be09b7cbd55ad9eef885703e2de 100644
--- a/content/renderer/media/webrtc_audio_renderer.cc
+++ b/content/renderer/media/webrtc_audio_renderer.cc
@@ -9,11 +9,9 @@
#include "base/strings/string_util.h"
#include "content/renderer/media/audio_device_factory.h"
#include "content/renderer/media/webrtc_audio_device_impl.h"
-#include "content/renderer/render_thread_impl.h"
#include "media/audio/audio_output_device.h"
#include "media/audio/audio_parameters.h"
#include "media/audio/sample_rates.h"
-#include "media/base/audio_hardware_config.h"
#if defined(OS_WIN)
#include "base/win/windows_version.h"
@@ -90,13 +88,19 @@ void AddHistogramFramesPerBuffer(int param) {
} // namespace
-WebRtcAudioRenderer::WebRtcAudioRenderer(int source_render_view_id)
+WebRtcAudioRenderer::WebRtcAudioRenderer(int source_render_view_id,
+ int session_id,
+ int sample_rate,
+ int frames_per_buffer)
: state_(UNINITIALIZED),
source_render_view_id_(source_render_view_id),
+ session_id_(session_id),
source_(NULL),
play_ref_count_(0),
audio_delay_milliseconds_(0),
- fifo_delay_milliseconds_(0) {
+ fifo_delay_milliseconds_(0),
+ sample_rate_(sample_rate),
+ frames_per_buffer_(frames_per_buffer) {
}
WebRtcAudioRenderer::~WebRtcAudioRenderer() {
@@ -120,10 +124,10 @@ bool WebRtcAudioRenderer::Initialize(WebRtcAudioRendererSource* source) {
DVLOG(1) << "Using mono audio output for Android";
channel_layout = media::CHANNEL_LAYOUT_MONO;
#endif
- // Ask the renderer for the default audio output hardware sample-rate.
- media::AudioHardwareConfig* hardware_config =
- RenderThreadImpl::current()->GetAudioHardwareConfig();
- int sample_rate = hardware_config->GetOutputSampleRate();
+
+ // TODO(tommi,henrika): Maybe we should just change |sample_rate_| to be
+ // immutable and change its value instead of using a temporary?
+ int sample_rate = sample_rate_;
DVLOG(1) << "Audio output hardware sample rate: " << sample_rate;
// WebRTC does not yet support higher rates than 96000 on the client side
@@ -178,7 +182,7 @@ bool WebRtcAudioRenderer::Initialize(WebRtcAudioRendererSource* source) {
#if defined(OS_ANDROID)
buffer_size = kDefaultOutputBufferSize;
#else
- buffer_size = hardware_config->GetOutputBufferSize();
+ buffer_size = frames_per_buffer_;
#endif
sink_params.Reset(media::AudioParameters::AUDIO_PCM_LOW_LATENCY,
@@ -206,7 +210,6 @@ bool WebRtcAudioRenderer::Initialize(WebRtcAudioRendererSource* source) {
}
}
-
// Allocate local audio buffers based on the parameters above.
// It is assumed that each audio sample contains 16 bits and each
// audio frame contains one or two audio samples depending on the
@@ -219,7 +222,12 @@ bool WebRtcAudioRenderer::Initialize(WebRtcAudioRendererSource* source) {
// Configure the audio rendering client and start rendering.
sink_ = AudioDeviceFactory::NewOutputDevice(source_render_view_id_);
- sink_->Initialize(sink_params, this);
+
+ // TODO(tommi): Rename InitializeUnifiedStream to rather reflect association
+ // with a session.
+ DCHECK_GE(session_id_, 0);
+ sink_->InitializeUnifiedStream(sink_params, this, session_id_);
+
sink_->Start();
// User must call Play() before any audio can be heard.
« no previous file with comments | « content/renderer/media/webrtc_audio_renderer.h ('k') | content/renderer/media/webrtc_local_audio_renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698