| Index: content/renderer/media/webrtc_local_audio_renderer.cc
|
| diff --git a/content/renderer/media/webrtc_local_audio_renderer.cc b/content/renderer/media/webrtc_local_audio_renderer.cc
|
| index f39a017b94db441164f527fba3b8790aca8d46b0..7738bdc4ed65344514ad53d6918819a8d462cbaf 100644
|
| --- a/content/renderer/media/webrtc_local_audio_renderer.cc
|
| +++ b/content/renderer/media/webrtc_local_audio_renderer.cc
|
| @@ -17,7 +17,6 @@
|
| #include "content/renderer/media/webrtc_audio_capturer.h"
|
| #include "content/renderer/media/webrtc_audio_renderer.h"
|
| #include "content/renderer/render_frame_impl.h"
|
| -#include "media/audio/audio_output_device.h"
|
| #include "media/base/audio_bus.h"
|
| #include "media/base/audio_shifter.h"
|
|
|
| @@ -126,9 +125,9 @@ void WebRtcLocalAudioRenderer::Start() {
|
| MediaStreamAudioSink::AddToAudioTrack(this, audio_track_);
|
| // ...and |sink_| will get audio data from us.
|
| DCHECK(!sink_.get());
|
| - sink_ =
|
| - AudioDeviceFactory::NewOutputDevice(source_render_frame_id_, session_id_,
|
| - output_device_id_, security_origin_);
|
| + sink_ = AudioDeviceFactory::NewOutputDevice(
|
| + AudioDeviceFactory::kSourceLocalUserMedia, source_render_frame_id_,
|
| + session_id_, output_device_id_, security_origin_);
|
|
|
| base::AutoLock auto_lock(thread_lock_);
|
| last_render_time_ = base::TimeTicks::Now();
|
| @@ -238,11 +237,14 @@ void WebRtcLocalAudioRenderer::SwitchOutputDevice(
|
| DVLOG(1) << "WebRtcLocalAudioRenderer::SwitchOutputDevice()";
|
| DCHECK(task_runner_->BelongsToCurrentThread());
|
|
|
| - scoped_refptr<media::AudioOutputDevice> new_sink =
|
| - AudioDeviceFactory::NewOutputDevice(source_render_frame_id_, session_id_,
|
| - device_id, security_origin);
|
| - if (new_sink->GetDeviceStatus() != media::OUTPUT_DEVICE_STATUS_OK) {
|
| - callback.Run(new_sink->GetDeviceStatus());
|
| + scoped_refptr<media::AudioRendererSink> new_sink =
|
| + AudioDeviceFactory::NewOutputDevice(
|
| + AudioDeviceFactory::kSourceLocalUserMedia, source_render_frame_id_,
|
| + session_id_, device_id, security_origin);
|
| + media::OutputDeviceStatus new_sink_status =
|
| + new_sink->GetOutputDevice()->GetDeviceStatus();
|
| + if (new_sink_status != media::OUTPUT_DEVICE_STATUS_OK) {
|
| + callback.Run(new_sink_status);
|
| return;
|
| }
|
|
|
| @@ -255,7 +257,8 @@ void WebRtcLocalAudioRenderer::SwitchOutputDevice(
|
|
|
| sink_started_ = false;
|
| sink_ = new_sink;
|
| - int frames_per_buffer = sink_->GetOutputParameters().frames_per_buffer();
|
| + int frames_per_buffer =
|
| + sink_->GetOutputDevice()->GetOutputParameters().frames_per_buffer();
|
| sink_params_ = source_params_;
|
| sink_params_.set_frames_per_buffer(WebRtcAudioRenderer::GetOptimalBufferSize(
|
| source_params_.sample_rate(), frames_per_buffer));
|
| @@ -271,7 +274,7 @@ media::AudioParameters WebRtcLocalAudioRenderer::GetOutputParameters() {
|
| if (!sink_.get())
|
| return media::AudioParameters();
|
|
|
| - return sink_->GetOutputParameters();
|
| + return sink_->GetOutputDevice()->GetOutputParameters();
|
| }
|
|
|
| media::OutputDeviceStatus WebRtcLocalAudioRenderer::GetDeviceStatus() {
|
| @@ -279,7 +282,7 @@ media::OutputDeviceStatus WebRtcLocalAudioRenderer::GetDeviceStatus() {
|
| if (!sink_.get())
|
| return media::OUTPUT_DEVICE_STATUS_ERROR_INTERNAL;
|
|
|
| - return sink_->GetDeviceStatus();
|
| + return sink_->GetOutputDevice()->GetDeviceStatus();
|
| }
|
|
|
| void WebRtcLocalAudioRenderer::MaybeStartSink() {
|
| @@ -296,12 +299,14 @@ void WebRtcLocalAudioRenderer::MaybeStartSink() {
|
| }
|
|
|
| if (!sink_params_.IsValid() || !playing_ || !volume_ || sink_started_ ||
|
| - sink_->GetDeviceStatus() != media::OUTPUT_DEVICE_STATUS_OK)
|
| + sink_->GetOutputDevice()->GetDeviceStatus() !=
|
| + media::OUTPUT_DEVICE_STATUS_OK)
|
| return;
|
|
|
| DVLOG(1) << "WebRtcLocalAudioRenderer::MaybeStartSink() -- Starting sink_.";
|
| sink_->Initialize(sink_params_, this);
|
| sink_->Start();
|
| + sink_->Play(); // Not all the sinks play on start.
|
| sink_started_ = true;
|
| UMA_HISTOGRAM_ENUMERATION("Media.LocalRendererSinkStates",
|
| kSinkStarted, kSinkStatesMax);
|
| @@ -343,10 +348,11 @@ void WebRtcLocalAudioRenderer::ReconfigureSink(
|
| // parameters. Then, invoke MaybeStartSink() to restart everything again.
|
| sink_->Stop();
|
| sink_started_ = false;
|
| - sink_ =
|
| - AudioDeviceFactory::NewOutputDevice(source_render_frame_id_, session_id_,
|
| - output_device_id_, security_origin_);
|
| - int frames_per_buffer = sink_->GetOutputParameters().frames_per_buffer();
|
| + sink_ = AudioDeviceFactory::NewOutputDevice(
|
| + AudioDeviceFactory::kSourceLocalUserMedia, source_render_frame_id_,
|
| + session_id_, output_device_id_, security_origin_);
|
| + int frames_per_buffer =
|
| + sink_->GetOutputDevice()->GetOutputParameters().frames_per_buffer();
|
| sink_params_ = source_params_;
|
| sink_params_.set_frames_per_buffer(WebRtcAudioRenderer::GetOptimalBufferSize(
|
| source_params_.sample_rate(), frames_per_buffer));
|
|
|