Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Side by Side Diff: media/audio/audio_manager_base.cc

Issue 12261027: Don't switch to fake audio output until stream open fails. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unittests. Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | media/audio/audio_output_proxy_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/audio/audio_manager_base.h" 5 #include "media/audio/audio_manager_base.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/message_loop_proxy.h" 10 #include "base/message_loop_proxy.h"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 // importantly it prevents instability on certain systems. 97 // importantly it prevents instability on certain systems.
98 // See bug: http://crbug.com/30242. 98 // See bug: http://crbug.com/30242.
99 if (num_output_streams_ >= max_num_output_streams_) { 99 if (num_output_streams_ >= max_num_output_streams_) {
100 DLOG(ERROR) << "Number of opened output audio streams " 100 DLOG(ERROR) << "Number of opened output audio streams "
101 << num_output_streams_ 101 << num_output_streams_
102 << " exceed the max allowed number " 102 << " exceed the max allowed number "
103 << max_num_output_streams_; 103 << max_num_output_streams_;
104 return NULL; 104 return NULL;
105 } 105 }
106 106
107 // If there are no audio output devices we should use a FakeAudioOutputStream
108 // to ensure video playback continues to work.
109 bool audio_output_disabled =
110 params.format() == AudioParameters::AUDIO_FAKE ||
111 !HasAudioOutputDevices();
scherkus (not reviewing) 2013/02/15 18:43:37 FYI this appeared to be the only production code u
DaleCurtis 2013/02/15 18:51:39 Yeah, that's why I was looking at this originally.
112
113 AudioOutputStream* stream = NULL; 107 AudioOutputStream* stream = NULL;
114 if (virtual_audio_input_stream_) { 108 if (virtual_audio_input_stream_) {
115 #if defined(OS_IOS) 109 #if defined(OS_IOS)
116 // We do not currently support iOS. It does not link. 110 // We do not currently support iOS. It does not link.
117 NOTIMPLEMENTED(); 111 NOTIMPLEMENTED();
118 return NULL; 112 return NULL;
119 #else 113 #else
120 stream = new VirtualAudioOutputStream( 114 stream = new VirtualAudioOutputStream(
121 params, message_loop_, virtual_audio_input_stream_, 115 params, message_loop_, virtual_audio_input_stream_,
122 base::Bind(&AudioManagerBase::ReleaseVirtualOutputStream, 116 base::Bind(&AudioManagerBase::ReleaseVirtualOutputStream,
123 base::Unretained(this))); 117 base::Unretained(this)));
124 #endif 118 #endif
125 } else if (audio_output_disabled) { 119 } else if (params.format() == AudioParameters::AUDIO_FAKE) {
126 stream = FakeAudioOutputStream::MakeFakeStream(this, params); 120 stream = FakeAudioOutputStream::MakeFakeStream(this, params);
127 } else if (params.format() == AudioParameters::AUDIO_PCM_LINEAR) { 121 } else if (params.format() == AudioParameters::AUDIO_PCM_LINEAR) {
128 stream = MakeLinearOutputStream(params); 122 stream = MakeLinearOutputStream(params);
129 } else if (params.format() == AudioParameters::AUDIO_PCM_LOW_LATENCY) { 123 } else if (params.format() == AudioParameters::AUDIO_PCM_LOW_LATENCY) {
130 stream = MakeLowLatencyOutputStream(params); 124 stream = MakeLowLatencyOutputStream(params);
131 } 125 }
132 126
133 if (stream) 127 if (stream)
134 ++num_output_streams_; 128 ++num_output_streams_;
135 129
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 output_listeners_.RemoveObserver(listener); 408 output_listeners_.RemoveObserver(listener);
415 } 409 }
416 410
417 void AudioManagerBase::NotifyAllOutputDeviceChangeListeners() { 411 void AudioManagerBase::NotifyAllOutputDeviceChangeListeners() {
418 DCHECK(message_loop_->BelongsToCurrentThread()); 412 DCHECK(message_loop_->BelongsToCurrentThread());
419 DVLOG(1) << "Firing OnDeviceChange() notifications."; 413 DVLOG(1) << "Firing OnDeviceChange() notifications.";
420 FOR_EACH_OBSERVER(AudioDeviceListener, output_listeners_, OnDeviceChange()); 414 FOR_EACH_OBSERVER(AudioDeviceListener, output_listeners_, OnDeviceChange());
421 } 415 }
422 416
423 } // namespace media 417 } // namespace media
OLDNEW
« no previous file with comments | « no previous file | media/audio/audio_output_proxy_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698