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

Unified Diff: media/base/audio_renderer_mixer_input.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: nit fixes 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
« no previous file with comments | « media/base/audio_renderer_mixer_input.h ('k') | media/base/audio_renderer_mixer_input_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/audio_renderer_mixer_input.cc
diff --git a/media/base/audio_renderer_mixer_input.cc b/media/base/audio_renderer_mixer_input.cc
index d0d38d3b8eef902f69b9a342cdaffcbe0109235b..42aa1bb3f39f1b4671d61f69afa9951bc1fb3aea 100644
--- a/media/base/audio_renderer_mixer_input.cc
+++ b/media/base/audio_renderer_mixer_input.cc
@@ -13,17 +13,19 @@ namespace media {
AudioRendererMixerInput::AudioRendererMixerInput(
const GetMixerCB& get_mixer_cb,
const RemoveMixerCB& remove_mixer_cb,
+ const GetHardwareParamsCB& get_hardware_params_cb,
const std::string& device_id,
const url::Origin& security_origin)
- : initialized_(false),
+ : started_(false),
playing_(false),
volume_(1.0f),
get_mixer_cb_(get_mixer_cb),
remove_mixer_cb_(remove_mixer_cb),
+ get_hardware_params_cb_(get_hardware_params_cb),
device_id_(device_id),
security_origin_(security_origin),
- mixer_(NULL),
- callback_(NULL),
+ mixer_(nullptr),
+ callback_(nullptr),
error_cb_(base::Bind(&AudioRendererMixerInput::OnRenderError,
base::Unretained(this))) {}
@@ -39,12 +41,14 @@ void AudioRendererMixerInput::Initialize(
params_ = params;
callback_ = callback;
- initialized_ = true;
}
void AudioRendererMixerInput::Start() {
- DCHECK(initialized_);
+ DCHECK(!started_);
DCHECK(!mixer_);
+ DCHECK(callback_); // Initialized.
+
+ started_ = true;
mixer_ = get_mixer_cb_.Run(params_, device_id_, security_origin_, nullptr);
if (!mixer_) {
callback_->OnRenderError();
@@ -64,10 +68,7 @@ void AudioRendererMixerInput::Start() {
void AudioRendererMixerInput::Stop() {
// Stop() may be called at any time, if Pause() hasn't been called we need to
// remove our mixer input before shutdown.
- if (playing_) {
- mixer_->RemoveMixerInput(params_, this);
- playing_ = false;
- }
+ Pause();
if (mixer_) {
// TODO(dalecurtis): This is required so that |callback_| isn't called after
@@ -75,9 +76,11 @@ void AudioRendererMixerInput::Stop() {
// should instead have sane ownership semantics: http://crbug.com/151051
mixer_->RemoveErrorCallback(error_cb_);
remove_mixer_cb_.Run(params_, device_id_, security_origin_);
- mixer_ = NULL;
+ mixer_ = nullptr;
}
+ started_ = false;
+
if (!pending_switch_callback_.is_null()) {
base::ResetAndReturn(&pending_switch_callback_)
.Run(OUTPUT_DEVICE_STATUS_ERROR_INTERNAL);
@@ -145,6 +148,7 @@ void AudioRendererMixerInput::SwitchOutputDevice(
security_origin_ = security_origin;
mixer_ = new_mixer;
mixer_->AddErrorCallback(error_cb_);
+ started_ = true;
if (was_playing)
Play();
@@ -153,14 +157,19 @@ void AudioRendererMixerInput::SwitchOutputDevice(
}
AudioParameters AudioRendererMixerInput::GetOutputParameters() {
- return mixer_->GetOutputDevice()->GetOutputParameters();
+ if (mixer_)
+ return mixer_->GetOutputDevice()->GetOutputParameters();
+ return get_hardware_params_cb_.Run(device_id_, security_origin_);
}
OutputDeviceStatus AudioRendererMixerInput::GetDeviceStatus() {
- if (!mixer_)
+ if (mixer_)
+ return mixer_->GetOutputDevice()->GetDeviceStatus();
+
+ if (started_)
return OUTPUT_DEVICE_STATUS_ERROR_INTERNAL;
- return mixer_->GetOutputDevice()->GetDeviceStatus();
+ return OUTPUT_DEVICE_STATUS_OK;
}
double AudioRendererMixerInput::ProvideInput(AudioBus* audio_bus,
« no previous file with comments | « media/base/audio_renderer_mixer_input.h ('k') | media/base/audio_renderer_mixer_input_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698