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()); |