| 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.
|
|
|