| Index: media/audio/win/audio_manager_win.cc
 | 
| diff --git a/media/audio/win/audio_manager_win.cc b/media/audio/win/audio_manager_win.cc
 | 
| index 4a361727d281d468029cf7a747b55bd44c1c3bbf..634e3ef34a9fe48e20d28798686c839086e3767d 100644
 | 
| --- a/media/audio/win/audio_manager_win.cc
 | 
| +++ b/media/audio/win/audio_manager_win.cc
 | 
| @@ -34,6 +34,9 @@ DEFINE_GUID(AM_KSCATEGORY_AUDIO, 0x6994ad04, 0x93ef, 0x11d0,
 | 
|  
 | 
|  namespace {
 | 
|  
 | 
| +// Maximum number of output streams that can be open simultaneously.
 | 
| +const size_t kMaxOutputStreams = 50;
 | 
| +
 | 
|  // Up to 8 channels can be passed to the driver.
 | 
|  // This should work, given the right drivers, but graceful error handling is
 | 
|  // needed.
 | 
| @@ -91,6 +94,10 @@ string16 GetDeviceAndDriverInfo(HDEVINFO device_info,
 | 
|  
 | 
|  }  // namespace
 | 
|  
 | 
| +AudioManagerWin::AudioManagerWin()
 | 
| +    : num_output_streams_(0) {
 | 
| +}
 | 
| +
 | 
|  bool AudioManagerWin::HasAudioOutputDevices() {
 | 
|    return (::waveOutGetNumDevs() != 0);
 | 
|  }
 | 
| @@ -108,11 +115,18 @@ AudioOutputStream* AudioManagerWin::MakeAudioOutputStream(
 | 
|    if (!params.IsValid() || (params.channels > kWinMaxChannels))
 | 
|      return NULL;
 | 
|  
 | 
| +  // Limit the number of audio streams opened.
 | 
| +  if (num_output_streams_ >= kMaxOutputStreams) {
 | 
| +    return NULL;
 | 
| +  }
 | 
| +
 | 
|    if (params.format == AudioParameters::AUDIO_MOCK) {
 | 
|      return FakeAudioOutputStream::MakeFakeStream(params);
 | 
|    } else if (params.format == AudioParameters::AUDIO_PCM_LINEAR) {
 | 
| +    num_output_streams_++;
 | 
|      return new PCMWaveOutAudioOutputStream(this, params, 3, WAVE_MAPPER);
 | 
|    } else if (params.format == AudioParameters::AUDIO_PCM_LOW_LATENCY) {
 | 
| +    num_output_streams_++;
 | 
|      // TODO(cpu): waveout cannot hit 20ms latency. Use other method.
 | 
|      return new PCMWaveOutAudioOutputStream(this, params, 2, WAVE_MAPPER);
 | 
|    }
 | 
| @@ -135,13 +149,13 @@ AudioInputStream* AudioManagerWin::MakeAudioInputStream(
 | 
|  }
 | 
|  
 | 
|  void AudioManagerWin::ReleaseOutputStream(PCMWaveOutAudioOutputStream* stream) {
 | 
| -  if (stream)
 | 
| -    delete stream;
 | 
| +  DCHECK(stream);
 | 
| +  num_output_streams_--;
 | 
| +  delete stream;
 | 
|  }
 | 
|  
 | 
|  void AudioManagerWin::ReleaseInputStream(PCMWaveInAudioInputStream* stream) {
 | 
| -  if (stream)
 | 
| -    delete stream;
 | 
| +  delete stream;
 | 
|  }
 | 
|  
 | 
|  void AudioManagerWin::MuteAll() {
 | 
| 
 |