OLD | NEW |
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 #ifndef MEDIA_AUDIO_AUDIO_OUTPUT_CONTROLLER_H_ | 5 #ifndef MEDIA_AUDIO_AUDIO_OUTPUT_CONTROLLER_H_ |
6 #define MEDIA_AUDIO_AUDIO_OUTPUT_CONTROLLER_H_ | 6 #define MEDIA_AUDIO_AUDIO_OUTPUT_CONTROLLER_H_ |
7 | 7 |
8 #include "base/atomic_ref_count.h" | 8 #include "base/atomic_ref_count.h" |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/cancelable_callback.h" | 10 #include "base/cancelable_callback.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 // Close this synchronous reader. | 100 // Close this synchronous reader. |
101 virtual void Close() = 0; | 101 virtual void Close() = 0; |
102 }; | 102 }; |
103 | 103 |
104 // Factory method for creating an AudioOutputController. | 104 // Factory method for creating an AudioOutputController. |
105 // This also creates and opens an AudioOutputStream on the audio manager | 105 // This also creates and opens an AudioOutputStream on the audio manager |
106 // thread, and if this is successful, the |event_handler| will receive an | 106 // thread, and if this is successful, the |event_handler| will receive an |
107 // OnCreated() call from the same audio manager thread. |audio_manager| must | 107 // OnCreated() call from the same audio manager thread. |audio_manager| must |
108 // outlive AudioOutputController. | 108 // outlive AudioOutputController. |
109 // The |output_device_id| can be either empty (default device) or specify a | 109 // The |output_device_id| can be either empty (default device) or specify a |
110 // specific hardware device for audio output. The |input_device_id| is | 110 // specific hardware device for audio output. |
111 // used only for unified audio when opening up input and output at the same | |
112 // time (controlled by |params.input_channel_count()|). | |
113 static scoped_refptr<AudioOutputController> Create( | 111 static scoped_refptr<AudioOutputController> Create( |
114 AudioManager* audio_manager, EventHandler* event_handler, | 112 AudioManager* audio_manager, EventHandler* event_handler, |
115 const AudioParameters& params, const std::string& output_device_id, | 113 const AudioParameters& params, const std::string& output_device_id, |
116 const std::string& input_device_id, SyncReader* sync_reader); | 114 SyncReader* sync_reader); |
117 | 115 |
118 // Methods to control playback of the stream. | 116 // Methods to control playback of the stream. |
119 | 117 |
120 // Starts the playback of this audio output stream. | 118 // Starts the playback of this audio output stream. |
121 void Play(); | 119 void Play(); |
122 | 120 |
123 // Pause this audio output stream. | 121 // Pause this audio output stream. |
124 void Pause(); | 122 void Pause(); |
125 | 123 |
126 // Closes the audio output stream. The state is changed and the resources | 124 // Closes the audio output stream. The state is changed and the resources |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 virtual ~AudioOutputController(); | 184 virtual ~AudioOutputController(); |
187 | 185 |
188 private: | 186 private: |
189 // We are polling sync reader if data became available. | 187 // We are polling sync reader if data became available. |
190 static const int kPollNumAttempts; | 188 static const int kPollNumAttempts; |
191 static const int kPollPauseInMilliseconds; | 189 static const int kPollPauseInMilliseconds; |
192 | 190 |
193 AudioOutputController(AudioManager* audio_manager, EventHandler* handler, | 191 AudioOutputController(AudioManager* audio_manager, EventHandler* handler, |
194 const AudioParameters& params, | 192 const AudioParameters& params, |
195 const std::string& output_device_id, | 193 const std::string& output_device_id, |
196 const std::string& input_device_id, | |
197 SyncReader* sync_reader); | 194 SyncReader* sync_reader); |
198 | 195 |
199 // The following methods are executed on the audio manager thread. | 196 // The following methods are executed on the audio manager thread. |
200 void DoCreate(bool is_for_device_change); | 197 void DoCreate(bool is_for_device_change); |
201 void DoPlay(); | 198 void DoPlay(); |
202 void DoPause(); | 199 void DoPause(); |
203 void DoClose(); | 200 void DoClose(); |
204 void DoSetVolume(double volume); | 201 void DoSetVolume(double volume); |
205 std::string DoGetOutputDeviceId() const; | 202 std::string DoGetOutputDeviceId() const; |
206 void DoSwitchOutputDevice(const std::string& output_device_id); | 203 void DoSwitchOutputDevice(const std::string& output_device_id); |
(...skipping 20 matching lines...) Expand all Loading... |
227 void WedgeCheck(); | 224 void WedgeCheck(); |
228 | 225 |
229 AudioManager* const audio_manager_; | 226 AudioManager* const audio_manager_; |
230 const AudioParameters params_; | 227 const AudioParameters params_; |
231 EventHandler* const handler_; | 228 EventHandler* const handler_; |
232 | 229 |
233 // Specifies the device id of the output device to open or empty for the | 230 // Specifies the device id of the output device to open or empty for the |
234 // default output device. | 231 // default output device. |
235 std::string output_device_id_; | 232 std::string output_device_id_; |
236 | 233 |
237 // Used by the unified IO to open the correct input device. | |
238 const std::string input_device_id_; | |
239 | |
240 AudioOutputStream* stream_; | 234 AudioOutputStream* stream_; |
241 | 235 |
242 // When non-NULL, audio is being diverted to this stream. | 236 // When non-NULL, audio is being diverted to this stream. |
243 AudioOutputStream* diverting_to_stream_; | 237 AudioOutputStream* diverting_to_stream_; |
244 | 238 |
245 // The current volume of the audio stream. | 239 // The current volume of the audio stream. |
246 double volume_; | 240 double volume_; |
247 | 241 |
248 // |state_| is written on the audio manager thread and is read on the | 242 // |state_| is written on the audio manager thread and is read on the |
249 // hardware audio thread. These operations need to be locked. But lock | 243 // hardware audio thread. These operations need to be locked. But lock |
(...skipping 24 matching lines...) Expand all Loading... |
274 // Flags when we've asked for a stream to start but it never did. | 268 // Flags when we've asked for a stream to start but it never did. |
275 base::AtomicRefCount on_more_io_data_called_; | 269 base::AtomicRefCount on_more_io_data_called_; |
276 scoped_ptr<base::OneShotTimer<AudioOutputController> > wedge_timer_; | 270 scoped_ptr<base::OneShotTimer<AudioOutputController> > wedge_timer_; |
277 | 271 |
278 DISALLOW_COPY_AND_ASSIGN(AudioOutputController); | 272 DISALLOW_COPY_AND_ASSIGN(AudioOutputController); |
279 }; | 273 }; |
280 | 274 |
281 } // namespace media | 275 } // namespace media |
282 | 276 |
283 #endif // MEDIA_AUDIO_AUDIO_OUTPUT_CONTROLLER_H_ | 277 #endif // MEDIA_AUDIO_AUDIO_OUTPUT_CONTROLLER_H_ |
OLD | NEW |