| Index: media/base/audio_renderer_mixer.cc
|
| diff --git a/media/base/audio_renderer_mixer.cc b/media/base/audio_renderer_mixer.cc
|
| index 10a19cded57347cfc31fc10a901050c680f671f6..b717101b0b297482008a9c835e6f9bb923f1641d 100644
|
| --- a/media/base/audio_renderer_mixer.cc
|
| +++ b/media/base/audio_renderer_mixer.cc
|
| @@ -17,21 +17,26 @@ enum { kPauseDelaySeconds = 10 };
|
|
|
| AudioRendererMixer::AudioRendererMixer(
|
| const AudioParameters& output_params,
|
| - const scoped_refptr<AudioRendererSink>& sink)
|
| + AudioRendererSink* sink,
|
| + const ReleaseSinkCallback& release_sink_cb)
|
| : audio_sink_(sink),
|
| + release_sink_cb_(release_sink_cb),
|
| output_params_(output_params),
|
| master_converter_(output_params, output_params, true),
|
| pause_delay_(base::TimeDelta::FromSeconds(kPauseDelaySeconds)),
|
| last_play_time_(base::TimeTicks::Now()),
|
| // Initialize |playing_| to true since Start() results in an auto-play.
|
| playing_(true) {
|
| + DCHECK(audio_sink_);
|
| audio_sink_->Initialize(output_params, this);
|
| audio_sink_->Start();
|
| }
|
|
|
| AudioRendererMixer::~AudioRendererMixer() {
|
| - // AudioRendererSinks must be stopped before being destructed.
|
| + // AudioRendererSink must be stopped before mixer is destructed.
|
| audio_sink_->Stop();
|
| + // Releasing the sink.
|
| + release_sink_cb_.Run(audio_sink_);
|
|
|
| // Ensure that all mixer inputs have removed themselves prior to destruction.
|
| DCHECK(master_converter_.empty());
|
|
|