| Index: media/audio/audio_output_resampler.cc
|
| diff --git a/media/audio/audio_output_resampler.cc b/media/audio/audio_output_resampler.cc
|
| index 86b40dda55fe2a1b1ebcacc2b0d6dad229c8c07a..3179ddbc6efbb9106fb75de45d355511fcc04e03 100644
|
| --- a/media/audio/audio_output_resampler.cc
|
| +++ b/media/audio/audio_output_resampler.cc
|
| @@ -291,6 +291,30 @@ void AudioOutputResampler::Shutdown() {
|
| DCHECK(callbacks_.empty());
|
| }
|
|
|
| +void AudioOutputResampler::CloseStreamsForWedgeFix() {
|
| + DCHECK(message_loop_->BelongsToCurrentThread());
|
| +
|
| + // Stop and close all active streams. Once all streams across all dispatchers
|
| + // have been closed the AudioManager will call RestartStreamsForWedgeFix().
|
| + for (CallbackMap::iterator it = callbacks_.begin(); it != callbacks_.end();
|
| + ++it) {
|
| + dispatcher_->StopStream(it->first);
|
| + dispatcher_->CloseStream(it->first);
|
| + }
|
| +
|
| + // Close all idle streams as well.
|
| + dispatcher_->CloseStreamsForWedgeFix();
|
| +}
|
| +
|
| +void AudioOutputResampler::RestartStreamsForWedgeFix() {
|
| + DCHECK(message_loop_->BelongsToCurrentThread());
|
| + for (CallbackMap::iterator it = callbacks_.begin(); it != callbacks_.end();
|
| + ++it) {
|
| + dispatcher_->OpenStream();
|
| + dispatcher_->StartStream(it->second, it->first);
|
| + }
|
| +}
|
| +
|
| OnMoreDataConverter::OnMoreDataConverter(const AudioParameters& input_params,
|
| const AudioParameters& output_params)
|
| : io_ratio_(static_cast<double>(input_params.GetBytesPerSecond()) /
|
|
|