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

Side by Side Diff: trunk/src/media/audio/audio_output_dispatcher.h

Issue 101473002: Revert 238325 "Attempt to fix audio wedges by restarting all str..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years 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
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 // AudioOutputDispatcher is a single-threaded base class that dispatches 5 // AudioOutputDispatcher is a single-threaded base class that dispatches
6 // creation and deletion of audio output streams. AudioOutputProxy objects use 6 // creation and deletion of audio output streams. AudioOutputProxy objects use
7 // this class to allocate and recycle actual audio output streams. When playback 7 // this class to allocate and recycle actual audio output streams. When playback
8 // is started, the proxy calls StartStream() to get an output stream that it 8 // is started, the proxy calls StartStream() to get an output stream that it
9 // uses to play audio. When playback is stopped, the proxy returns the stream 9 // uses to play audio. When playback is stopped, the proxy returns the stream
10 // back to the dispatcher by calling StopStream(). 10 // back to the dispatcher by calling StopStream().
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 // Called by AudioOutputProxy when the volume is set. 59 // Called by AudioOutputProxy when the volume is set.
60 virtual void StreamVolumeSet(AudioOutputProxy* stream_proxy, 60 virtual void StreamVolumeSet(AudioOutputProxy* stream_proxy,
61 double volume) = 0; 61 double volume) = 0;
62 62
63 // Called by AudioOutputProxy when the stream is closed. 63 // Called by AudioOutputProxy when the stream is closed.
64 virtual void CloseStream(AudioOutputProxy* stream_proxy) = 0; 64 virtual void CloseStream(AudioOutputProxy* stream_proxy) = 0;
65 65
66 // Called on the audio thread when the AudioManager is shutting down. 66 // Called on the audio thread when the AudioManager is shutting down.
67 virtual void Shutdown() = 0; 67 virtual void Shutdown() = 0;
68 68
69 // Called by the AudioManager to restart streams when a wedge is detected. A
70 // wedge means the OS failed to request any audio after StartStream(). When a
71 // wedge is detected all streams across all dispatchers must be closed. After
72 // all streams are closed, streams are restarted. See http://crbug.com/160920
73 virtual void CloseStreamsForWedgeFix() = 0;
74 virtual void RestartStreamsForWedgeFix() = 0;
75
76 // Accessor to the input device id used by unified IO. 69 // Accessor to the input device id used by unified IO.
77 const std::string& input_device_id() const { return input_device_id_; } 70 const std::string& input_device_id() const { return input_device_id_; }
78 71
79 protected: 72 protected:
80 friend class base::RefCountedThreadSafe<AudioOutputDispatcher>; 73 friend class base::RefCountedThreadSafe<AudioOutputDispatcher>;
81 friend class AudioOutputProxyTest; 74 friend class AudioOutputProxyTest;
82 75
83 virtual ~AudioOutputDispatcher(); 76 virtual ~AudioOutputDispatcher();
84 77
85 // A no-reference-held pointer (we don't want circular references) back to the 78 // A no-reference-held pointer (we don't want circular references) back to the
86 // AudioManager that owns this object. 79 // AudioManager that owns this object.
87 AudioManager* audio_manager_; 80 AudioManager* audio_manager_;
88 const scoped_refptr<base::MessageLoopProxy> message_loop_; 81 const scoped_refptr<base::MessageLoopProxy> message_loop_;
89 const AudioParameters params_; 82 const AudioParameters params_;
90 std::string output_device_id_; 83 std::string output_device_id_;
91 const std::string input_device_id_; 84 const std::string input_device_id_;
92 85
93 private: 86 private:
94 DISALLOW_COPY_AND_ASSIGN(AudioOutputDispatcher); 87 DISALLOW_COPY_AND_ASSIGN(AudioOutputDispatcher);
95 }; 88 };
96 89
97 } // namespace media 90 } // namespace media
98 91
99 #endif // MEDIA_AUDIO_AUDIO_OUTPUT_DISPATCHER_H_ 92 #endif // MEDIA_AUDIO_AUDIO_OUTPUT_DISPATCHER_H_
OLDNEW
« no previous file with comments | « trunk/src/media/audio/audio_output_controller.cc ('k') | trunk/src/media/audio/audio_output_dispatcher_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698