Index: content/renderer/media/renderer_webaudiodevice_impl.cc |
diff --git a/content/renderer/media/renderer_webaudiodevice_impl.cc b/content/renderer/media/renderer_webaudiodevice_impl.cc |
index 6c366c1f71777690f71c0becb3ec59d80d402f92..b69114b8a88bb3b85d17e2095bd956048dc95f8b 100644 |
--- a/content/renderer/media/renderer_webaudiodevice_impl.cc |
+++ b/content/renderer/media/renderer_webaudiodevice_impl.cc |
@@ -14,9 +14,8 @@ |
#include "base/thread_task_runner_handle.h" |
#include "base/time/time.h" |
#include "build/build_config.h" |
-#include "content/renderer/media/audio_device_factory.h" |
+#include "content/renderer/media/restartable_audio_output_device_factory.h" |
#include "content/renderer/render_frame_impl.h" |
-#include "media/audio/audio_output_device.h" |
#include "media/audio/null_audio_sink.h" |
#include "media/base/media_switches.h" |
#include "third_party/WebKit/public/web/WebLocalFrame.h" |
@@ -53,13 +52,13 @@ RendererWebAudioDeviceImpl::RendererWebAudioDeviceImpl( |
} |
RendererWebAudioDeviceImpl::~RendererWebAudioDeviceImpl() { |
- DCHECK(!output_device_); |
+ DCHECK(!sink_); |
} |
void RendererWebAudioDeviceImpl::start() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- if (output_device_) |
+ if (sink_) |
return; // Already started. |
// Assumption: This method is being invoked within a V8 call stack. CHECKs |
@@ -72,11 +71,13 @@ void RendererWebAudioDeviceImpl::start() { |
WebLocalFrame* const web_frame = WebLocalFrame::frameForCurrentContext(); |
RenderFrame* const render_frame = |
web_frame ? RenderFrame::FromWebFrame(web_frame) : NULL; |
- output_device_ = AudioDeviceFactory::NewOutputDevice( |
+ sink_ = RestartableAudioOutputDeviceFactory::NewOutputDevice( |
+ RestartableAudioOutputDeviceFactory::kSourceWebAudio, |
render_frame ? render_frame->GetRoutingID() : MSG_ROUTING_NONE, |
session_id_, std::string(), security_origin_); |
- output_device_->Initialize(params_, this); |
- output_device_->Start(); |
+ sink_->Initialize(params_, this); |
+ sink_->Start(); |
+ sink_->Play(); |
DaleCurtis
2016/02/08 19:10:25
Why Play()? Does this preserve the play on start b
o1ka
2016/02/09 14:15:38
Yes, for mixer inputs
|
start_null_audio_sink_callback_.Reset( |
base::Bind(&media::NullAudioSink::Play, null_audio_sink_)); |
// Note: Default behavior is to auto-play on start. |
@@ -85,9 +86,9 @@ void RendererWebAudioDeviceImpl::start() { |
void RendererWebAudioDeviceImpl::stop() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- if (output_device_) { |
- output_device_->Stop(); |
- output_device_ = NULL; |
+ if (sink_) { |
+ sink_->Stop(); |
+ sink_ = NULL; |
} |
null_audio_sink_->Stop(); |
is_using_null_audio_sink_ = false; |
@@ -136,9 +137,9 @@ int RendererWebAudioDeviceImpl::Render(media::AudioBus* dest, |
task_runner_->PostTask( |
FROM_HERE, |
base::Bind(&media::NullAudioSink::Pause, null_audio_sink_)); |
- // Calling output_device_->Play() may trigger reentrancy into this |
+ // Calling sink_->Play() may trigger reentrancy into this |
// function, so this should be called at the end. |
- output_device_->Play(); |
+ sink_->Play(); |
return dest->frames(); |
} |
} else if (!is_using_null_audio_sink_) { |
@@ -148,7 +149,7 @@ int RendererWebAudioDeviceImpl::Render(media::AudioBus* dest, |
first_silence_time_ = now; |
if (now - first_silence_time_ |
> base::TimeDelta::FromSeconds(kSilenceInSecondsToEnterIdleMode)) { |
- output_device_->Pause(); |
+ sink_->Pause(); |
is_using_null_audio_sink_ = true; |
// If Stop() is called right after the task is posted, need to cancel |
// this task. |