| Index: media/audio/audio_output_resampler.cc
|
| diff --git a/media/audio/audio_output_resampler.cc b/media/audio/audio_output_resampler.cc
|
| index 7cf195e00cc50a75bbbfa1009c1391dd46eaf0b9..1fa4e9a31bc479a884f03adfe8de735e2bfe48cf 100644
|
| --- a/media/audio/audio_output_resampler.cc
|
| +++ b/media/audio/audio_output_resampler.cc
|
| @@ -294,6 +294,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()) /
|
|
|