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

Unified Diff: content/renderer/media/track_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: Rebase 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/track_audio_renderer.cc
diff --git a/content/renderer/media/track_audio_renderer.cc b/content/renderer/media/track_audio_renderer.cc
index 10826eb7375a881c394c20a373c232bad2283082..3a764c05eceaea9ef71c6a57baa49bf407959f9d 100644
--- a/content/renderer/media/track_audio_renderer.cc
+++ b/content/renderer/media/track_audio_renderer.cc
@@ -12,7 +12,6 @@
#include "base/trace_event/trace_event.h"
#include "content/renderer/media/audio_device_factory.h"
#include "content/renderer/media/media_stream_audio_track.h"
-#include "media/audio/audio_output_device.h"
#include "media/base/audio_bus.h"
#include "media/base/audio_shifter.h"
@@ -151,9 +150,9 @@ void TrackAudioRenderer::Start() {
MediaStreamAudioSink::AddToAudioTrack(this, audio_track_);
// ...and |sink_| will get audio data from us.
DCHECK(!sink_.get());
- sink_ =
- AudioDeviceFactory::NewOutputDevice(playout_render_frame_id_, session_id_,
- output_device_id_, security_origin_);
+ sink_ = AudioDeviceFactory::NewAudioRendererSink(
+ AudioDeviceFactory::kSourceNonRtcAudioTrack, playout_render_frame_id_,
+ session_id_, output_device_id_, security_origin_);
base::AutoLock auto_lock(thread_lock_);
prior_elapsed_render_time_ = base::TimeDelta();
@@ -253,11 +252,14 @@ void TrackAudioRenderer::SwitchOutputDevice(
HaltAudioFlowWhileLockHeld();
}
- scoped_refptr<media::AudioOutputDevice> new_sink =
- AudioDeviceFactory::NewOutputDevice(playout_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::NewAudioRendererSink(
+ AudioDeviceFactory::kSourceNonRtcAudioTrack, playout_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;
}
@@ -283,7 +285,8 @@ media::AudioParameters TrackAudioRenderer::GetOutputParameters() {
// Output parameters consist of the same channel layout and sample rate as the
// source, but having the buffer duration preferred by the hardware.
- const media::AudioParameters& preferred_params = sink_->GetOutputParameters();
+ const media::AudioParameters& preferred_params =
+ sink_->GetOutputDevice()->GetOutputParameters();
return media::AudioParameters(
preferred_params.format(), source_params_.channel_layout(),
source_params_.sample_rate(), source_params_.bits_per_sample(),
@@ -296,7 +299,7 @@ media::OutputDeviceStatus TrackAudioRenderer::GetDeviceStatus() {
if (!sink_.get())
return media::OUTPUT_DEVICE_STATUS_ERROR_INTERNAL;
- return sink_->GetDeviceStatus();
+ return sink_->GetOutputDevice()->GetDeviceStatus();
}
void TrackAudioRenderer::MaybeStartSink() {
@@ -313,7 +316,8 @@ void TrackAudioRenderer::MaybeStartSink() {
CreateAudioShifter();
if (sink_started_ ||
- sink_->GetDeviceStatus() != media::OUTPUT_DEVICE_STATUS_OK) {
+ sink_->GetOutputDevice()->GetDeviceStatus() !=
+ media::OUTPUT_DEVICE_STATUS_OK) {
return;
}
@@ -324,6 +328,7 @@ void TrackAudioRenderer::MaybeStartSink() {
sink_->Initialize(GetOutputParameters(), this);
sink_->Start();
sink_->SetVolume(volume_);
+ sink_->Play(); // Not all the sinks play on start.
Henrik Grunell 2016/02/15 12:21:17 Ahh, the fact that sinks behave differently is hor
o1ka 2016/02/17 17:40:44 Acknowledged.
sink_started_ = true;
if (IsLocalRenderer()) {
UMA_HISTOGRAM_ENUMERATION("Media.LocalRendererSinkStates", kSinkStarted,
@@ -347,9 +352,9 @@ void TrackAudioRenderer::ReconfigureSink(const media::AudioParameters& params) {
// parameters. Then, invoke MaybeStartSink() to restart everything again.
sink_->Stop();
sink_started_ = false;
- sink_ =
- AudioDeviceFactory::NewOutputDevice(playout_render_frame_id_, session_id_,
- output_device_id_, security_origin_);
+ sink_ = AudioDeviceFactory::NewAudioRendererSink(
+ AudioDeviceFactory::kSourceNonRtcAudioTrack, playout_render_frame_id_,
+ session_id_, output_device_id_, security_origin_);
MaybeStartSink();
}

Powered by Google App Engine
This is Rietveld 408576698