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

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

Issue 1809093003: Moving SwitchOutputDevice out of OutputDevice interface, eliminating OutputDevice (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 9 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
« no previous file with comments | « content/renderer/media/track_audio_renderer.h ('k') | content/renderer/media/webmediaplayer_ms.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 23f2dadd52af10b6f2ce3df1849d1007dea8209c..c4ae69e5c3374def96dc3e6e504cf310b5bcb207 100644
--- a/content/renderer/media/track_audio_renderer.cc
+++ b/content/renderer/media/track_audio_renderer.cc
@@ -137,7 +137,7 @@ TrackAudioRenderer::TrackAudioRenderer(
TrackAudioRenderer::~TrackAudioRenderer() {
DCHECK(task_runner_->BelongsToCurrentThread());
- DCHECK(!sink_.get());
+ DCHECK(!sink_);
DVLOG(1) << "TrackAudioRenderer::~TrackAudioRenderer()";
}
@@ -149,7 +149,7 @@ void TrackAudioRenderer::Start() {
// We get audio data from |audio_track_|...
MediaStreamAudioSink::AddToAudioTrack(this, audio_track_);
// ...and |sink_| will get audio data from us.
- DCHECK(!sink_.get());
+ DCHECK(!sink_);
sink_ = AudioDeviceFactory::NewAudioRendererSink(
AudioDeviceFactory::kSourceNonRtcAudioTrack, playout_render_frame_id_,
session_id_, output_device_id_, security_origin_);
@@ -168,7 +168,7 @@ void TrackAudioRenderer::Stop() {
// Stop the output audio stream, i.e, stop asking for data to render.
// It is safer to call Stop() on the |sink_| to clean up the resources even
// when the |sink_| is never started.
- if (sink_.get()) {
+ if (sink_) {
sink_->Stop();
sink_ = NULL;
}
@@ -187,7 +187,7 @@ void TrackAudioRenderer::Play() {
DVLOG(1) << "TrackAudioRenderer::Play()";
DCHECK(task_runner_->BelongsToCurrentThread());
- if (!sink_.get())
+ if (!sink_)
return;
playing_ = true;
@@ -199,7 +199,7 @@ void TrackAudioRenderer::Pause() {
DVLOG(1) << "TrackAudioRenderer::Pause()";
DCHECK(task_runner_->BelongsToCurrentThread());
- if (!sink_.get())
+ if (!sink_)
return;
playing_ = false;
@@ -215,13 +215,13 @@ void TrackAudioRenderer::SetVolume(float volume) {
// Cache the volume. Whenever |sink_| is re-created, call SetVolume() with
// this cached volume.
volume_ = volume;
- if (sink_.get())
+ if (sink_)
sink_->SetVolume(volume);
}
-media::OutputDevice* TrackAudioRenderer::GetOutputDevice() {
+media::OutputDeviceInfo TrackAudioRenderer::GetOutputDeviceInfo() {
DCHECK(task_runner_->BelongsToCurrentThread());
- return this;
+ return sink_ ? sink_->GetOutputDeviceInfo() : media::OutputDeviceInfo();
}
base::TimeDelta TrackAudioRenderer::GetCurrentRenderTime() const {
@@ -243,7 +243,7 @@ bool TrackAudioRenderer::IsLocalRenderer() const {
void TrackAudioRenderer::SwitchOutputDevice(
const std::string& device_id,
const url::Origin& security_origin,
- const media::SwitchOutputDeviceCB& callback) {
+ const media::OutputDeviceStatusCB& callback) {
DVLOG(1) << "TrackAudioRenderer::SwitchOutputDevice()";
DCHECK(task_runner_->BelongsToCurrentThread());
@@ -256,8 +256,9 @@ void TrackAudioRenderer::SwitchOutputDevice(
AudioDeviceFactory::NewAudioRendererSink(
AudioDeviceFactory::kSourceNonRtcAudioTrack, playout_render_frame_id_,
session_id_, device_id, security_origin);
+
media::OutputDeviceStatus new_sink_status =
- new_sink->GetOutputDevice()->GetDeviceStatus();
+ new_sink->GetOutputDeviceInfo().device_status();
if (new_sink_status != media::OUTPUT_DEVICE_STATUS_OK) {
callback.Run(new_sink_status);
return;
@@ -267,7 +268,7 @@ void TrackAudioRenderer::SwitchOutputDevice(
security_origin_ = security_origin;
bool was_sink_started = sink_started_;
- if (sink_.get())
+ if (sink_)
sink_->Stop();
sink_started_ = false;
@@ -278,35 +279,11 @@ void TrackAudioRenderer::SwitchOutputDevice(
callback.Run(media::OUTPUT_DEVICE_STATUS_OK);
}
-media::AudioParameters TrackAudioRenderer::GetOutputParameters() {
- DCHECK(task_runner_->BelongsToCurrentThread());
- if (!sink_ || !source_params_.IsValid())
- return media::AudioParameters();
-
- // 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_->GetOutputDevice()->GetOutputParameters();
- return media::AudioParameters(
- preferred_params.format(), source_params_.channel_layout(),
- source_params_.sample_rate(), source_params_.bits_per_sample(),
- preferred_params.frames_per_buffer() * source_params_.sample_rate() /
- preferred_params.sample_rate());
-}
-
-media::OutputDeviceStatus TrackAudioRenderer::GetDeviceStatus() {
- DCHECK(task_runner_->BelongsToCurrentThread());
- if (!sink_.get())
- return media::OUTPUT_DEVICE_STATUS_ERROR_INTERNAL;
-
- return sink_->GetOutputDevice()->GetDeviceStatus();
-}
-
void TrackAudioRenderer::MaybeStartSink() {
DCHECK(task_runner_->BelongsToCurrentThread());
DVLOG(1) << "TrackAudioRenderer::MaybeStartSink()";
- if (!sink_.get() || !source_params_.IsValid() || !playing_)
+ if (!sink_ || !source_params_.IsValid() || !playing_)
return;
// Re-create the AudioShifter to drop old audio data and reset to a starting
@@ -315,17 +292,26 @@ void TrackAudioRenderer::MaybeStartSink() {
// time-sync state is invalid.
CreateAudioShifter();
- if (sink_started_ ||
- sink_->GetOutputDevice()->GetDeviceStatus() !=
- media::OUTPUT_DEVICE_STATUS_OK) {
+ if (sink_started_)
return;
- }
+ const media::OutputDeviceInfo& device_info = sink_->GetOutputDeviceInfo();
+ if (device_info.device_status() != media::OUTPUT_DEVICE_STATUS_OK)
+ return;
+
+ // 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& hardware_params = device_info.output_params();
+ media::AudioParameters sink_params(
+ hardware_params.format(), source_params_.channel_layout(),
+ source_params_.sample_rate(), source_params_.bits_per_sample(),
+ hardware_params.frames_per_buffer() * source_params_.sample_rate() /
+ hardware_params.sample_rate());
DVLOG(1) << ("TrackAudioRenderer::MaybeStartSink() -- Starting sink. "
"source_params_={")
<< source_params_.AsHumanReadableString() << "}, sink parameters={"
- << GetOutputParameters().AsHumanReadableString() << '}';
- sink_->Initialize(GetOutputParameters(), this);
+ << sink_params.AsHumanReadableString() << '}';
+ sink_->Initialize(sink_params, this);
sink_->Start();
sink_->SetVolume(volume_);
sink_->Play(); // Not all the sinks play on start.
@@ -345,7 +331,7 @@ void TrackAudioRenderer::ReconfigureSink(const media::AudioParameters& params) {
return;
source_params_ = params;
- if (!sink_.get())
+ if (!sink_)
return; // TrackAudioRenderer has not yet been started.
// Stop |sink_| and re-create a new one to be initialized with different audio
« no previous file with comments | « content/renderer/media/track_audio_renderer.h ('k') | content/renderer/media/webmediaplayer_ms.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698