| 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..8add184aa644b9cc0d44945efeab40f4466dc652 100644
|
| --- a/content/renderer/media/webrtc_local_audio_renderer.cc
|
| +++ b/content/renderer/media/webrtc_local_audio_renderer.cc
|
| @@ -12,14 +12,14 @@
|
| #include "base/synchronization/lock.h"
|
| #include "base/thread_task_runner_handle.h"
|
| #include "base/trace_event/trace_event.h"
|
| -#include "content/renderer/media/audio_device_factory.h"
|
| #include "content/renderer/media/media_stream_dispatcher.h"
|
| +#include "content/renderer/media/restartable_audio_output_device_factory.h"
|
| #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"
|
| +#include "media/base/restartable_audio_output_device.h"
|
|
|
| namespace content {
|
|
|
| @@ -126,9 +126,10 @@ 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_ = RestartableAudioOutputDeviceFactory::NewOutputDevice(
|
| + RestartableAudioOutputDeviceFactory::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,9 +239,10 @@ 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);
|
| + scoped_refptr<media::RestartableAudioOutputDevice> new_sink =
|
| + RestartableAudioOutputDeviceFactory::NewOutputDevice(
|
| + RestartableAudioOutputDeviceFactory::kSourceLocalUserMedia,
|
| + source_render_frame_id_, session_id_, device_id, security_origin);
|
| if (new_sink->GetDeviceStatus() != media::OUTPUT_DEVICE_STATUS_OK) {
|
| callback.Run(new_sink->GetDeviceStatus());
|
| return;
|
| @@ -302,6 +304,7 @@ void WebRtcLocalAudioRenderer::MaybeStartSink() {
|
| DVLOG(1) << "WebRtcLocalAudioRenderer::MaybeStartSink() -- Starting sink_.";
|
| sink_->Initialize(sink_params_, this);
|
| sink_->Start();
|
| + sink_->Play(); // RestartableAudioOutputDevice does not play on start.
|
| sink_started_ = true;
|
| UMA_HISTOGRAM_ENUMERATION("Media.LocalRendererSinkStates",
|
| kSinkStarted, kSinkStatesMax);
|
| @@ -343,9 +346,10 @@ 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_);
|
| + sink_ = RestartableAudioOutputDeviceFactory::NewOutputDevice(
|
| + RestartableAudioOutputDeviceFactory::kSourceLocalUserMedia,
|
| + source_render_frame_id_, session_id_, output_device_id_,
|
| + security_origin_);
|
| int frames_per_buffer = sink_->GetOutputParameters().frames_per_buffer();
|
| sink_params_ = source_params_;
|
| sink_params_.set_frames_per_buffer(WebRtcAudioRenderer::GetOptimalBufferSize(
|
|
|