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

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

Issue 1666363005: Switching audio clients to using RestartableAudioRendererSink interface as a sink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removing RestartableAudioOutputDevice interface Created 4 years, 10 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_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..8affdb560ca72199aa65d7f0d8f4717f85547765 100644
--- a/content/renderer/media/webrtc_local_audio_renderer.cc
+++ b/content/renderer/media/webrtc_local_audio_renderer.cc
@@ -12,12 +12,11 @@
#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"
@@ -126,9 +125,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,11 +238,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::RestartableAudioRendererSink> new_sink =
+ RestartableAudioOutputDeviceFactory::NewOutputDevice(
+ RestartableAudioOutputDeviceFactory::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 +258,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 +275,7 @@ media::AudioParameters WebRtcLocalAudioRenderer::GetOutputParameters() {
if (!sink_.get())
return media::AudioParameters();
- return sink_->GetOutputParameters();
+ return sink_->GetOutputDevice()->GetOutputParameters();
}
media::OutputDeviceStatus WebRtcLocalAudioRenderer::GetDeviceStatus() {
@@ -279,7 +283,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 +300,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(); // It used to be AudioOutputDevice which plays on start.
sink_started_ = true;
UMA_HISTOGRAM_ENUMERATION("Media.LocalRendererSinkStates",
kSinkStarted, kSinkStatesMax);
@@ -343,10 +349,12 @@ 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_ = RestartableAudioOutputDeviceFactory::NewOutputDevice(
+ RestartableAudioOutputDeviceFactory::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));

Powered by Google App Engine
This is Rietveld 408576698