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

Side by Side Diff: media/audio/audio_output_controller.h

Issue 8818012: Remove the AudioManager singleton. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Address comments from Avi Created 9 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/callback.h" 8 #include "base/callback.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/weak_ptr.h"
11 #include "base/synchronization/lock.h" 12 #include "base/synchronization/lock.h"
12 #include "base/time.h" 13 #include "base/time.h"
13 #include "media/audio/audio_buffers_state.h" 14 #include "media/audio/audio_buffers_state.h"
14 #include "media/audio/audio_io.h" 15 #include "media/audio/audio_io.h"
15 #include "media/audio/audio_manager.h" 16 #include "media/audio/audio_manager.h"
16 #include "media/audio/simple_sources.h" 17 #include "media/audio/simple_sources.h"
17 18
18 class MessageLoop; 19 class MessageLoop;
19 20
20 // An AudioOutputController controls an AudioOutputStream and provides data 21 // An AudioOutputController controls an AudioOutputStream and provides data
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 virtual bool DataReady() = 0; 109 virtual bool DataReady() = 0;
109 }; 110 };
110 111
111 virtual ~AudioOutputController(); 112 virtual ~AudioOutputController();
112 113
113 // Factory method for creating an AudioOutputController. 114 // Factory method for creating an AudioOutputController.
114 // If successful, an audio controller thread is created. The audio device 115 // If successful, an audio controller thread is created. The audio device
115 // will be created on the audio controller thread and when that is done 116 // will be created on the audio controller thread and when that is done
116 // event handler will receive a OnCreated() call. 117 // event handler will receive a OnCreated() call.
117 static scoped_refptr<AudioOutputController> Create( 118 static scoped_refptr<AudioOutputController> Create(
119 AudioManager* audio_manager,
118 EventHandler* event_handler, 120 EventHandler* event_handler,
119 const AudioParameters& params, 121 const AudioParameters& params,
120 // Soft limit for buffer capacity in this controller. This parameter 122 // Soft limit for buffer capacity in this controller. This parameter
121 // is used only in regular latency mode. 123 // is used only in regular latency mode.
122 uint32 buffer_capacity); 124 uint32 buffer_capacity);
123 125
124 // Factory method for creating a low latency audio stream. 126 // Factory method for creating a low latency audio stream.
125 static scoped_refptr<AudioOutputController> CreateLowLatency( 127 static scoped_refptr<AudioOutputController> CreateLowLatency(
128 AudioManager* audio_manager,
126 EventHandler* event_handler, 129 EventHandler* event_handler,
127 const AudioParameters& params, 130 const AudioParameters& params,
128 // External synchronous reader for audio controller. 131 // External synchronous reader for audio controller.
129 SyncReader* sync_reader); 132 SyncReader* sync_reader);
130 133
131 // Methods to control playback of the stream. 134 // Methods to control playback of the stream.
132 135
133 // Starts the playback of this audio output stream. 136 // Starts the playback of this audio output stream.
134 void Play(); 137 void Play();
135 138
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 kPaused, 182 kPaused,
180 kClosed, 183 kClosed,
181 kError, 184 kError,
182 }; 185 };
183 186
184 private: 187 private:
185 // We are polling sync reader if data became available. 188 // We are polling sync reader if data became available.
186 static const int kPollNumAttempts; 189 static const int kPollNumAttempts;
187 static const int kPollPauseInMilliseconds; 190 static const int kPollPauseInMilliseconds;
188 191
189 AudioOutputController(EventHandler* handler, 192 AudioOutputController(AudioManager* audio_manager,
193 EventHandler* handler,
190 uint32 capacity, SyncReader* sync_reader); 194 uint32 capacity, SyncReader* sync_reader);
191 195
192 // The following methods are executed on the audio controller thread. 196 // The following methods are executed on the audio controller thread.
193 void DoCreate(const AudioParameters& params); 197 void DoCreate(const AudioParameters& params);
194 void DoPlay(); 198 void DoPlay();
195 void PollAndStartIfDataReady(); 199 void PollAndStartIfDataReady();
196 void DoPause(); 200 void DoPause();
197 void DoFlush(); 201 void DoFlush();
198 void DoClose(const base::Closure& closed_task); 202 void DoClose(const base::Closure& closed_task);
199 void DoSetVolume(double volume); 203 void DoSetVolume(double volume);
200 void DoReportError(int code); 204 void DoReportError(int code);
201 205
202 // Helper method to submit a OnMoreData() call to the event handler. 206 // Helper method to submit a OnMoreData() call to the event handler.
203 void SubmitOnMoreData_Locked(); 207 void SubmitOnMoreData_Locked();
204 208
205 // Helper method that starts physical stream. 209 // Helper method that starts physical stream.
206 void StartStream(); 210 void StartStream();
207 211
208 // Helper method that stops, closes, and NULLs |*stream_|. 212 // Helper method that stops, closes, and NULLs |*stream_|.
209 void StopCloseAndClearStream(); 213 void StopCloseAndClearStream();
210 214
215 scoped_refptr<AudioManager> audio_manager_;
211 // |handler_| may be called only if |state_| is not kClosed. 216 // |handler_| may be called only if |state_| is not kClosed.
212 EventHandler* handler_; 217 EventHandler* handler_;
213 AudioOutputStream* stream_; 218 AudioOutputStream* stream_;
214 219
215 // The current volume of the audio stream. 220 // The current volume of the audio stream.
216 double volume_; 221 double volume_;
217 222
218 // |state_| is written on the audio controller thread and is read on the 223 // |state_| is written on the audio controller thread and is read on the
219 // hardware audio thread. These operations need to be locked. But lock 224 // hardware audio thread. These operations need to be locked. But lock
220 // is not required for reading on the audio controller thread. 225 // is not required for reading on the audio controller thread.
(...skipping 11 matching lines...) Expand all
232 // SyncReader is used only in low latency mode for synchronous reading. 237 // SyncReader is used only in low latency mode for synchronous reading.
233 SyncReader* sync_reader_; 238 SyncReader* sync_reader_;
234 239
235 // The message loop of audio thread that this object runs on. 240 // The message loop of audio thread that this object runs on.
236 MessageLoop* message_loop_; 241 MessageLoop* message_loop_;
237 242
238 // When starting stream we wait for data to become available. 243 // When starting stream we wait for data to become available.
239 // Number of times left. 244 // Number of times left.
240 int number_polling_attempts_left_; 245 int number_polling_attempts_left_;
241 246
247 // Used to post delayed tasks to ourselves that we can cancel.
henrika (OOO until Aug 14) 2011/12/07 10:08:34 Can you add some more details on why you had to in
tommi (sloooow) - chröme 2011/12/07 12:26:44 Improved comment.
248 base::WeakPtrFactory<AudioOutputController> weak_this_;
249
242 DISALLOW_COPY_AND_ASSIGN(AudioOutputController); 250 DISALLOW_COPY_AND_ASSIGN(AudioOutputController);
243 }; 251 };
244 252
245 } // namespace media 253 } // namespace media
246 254
247 #endif // MEDIA_AUDIO_AUDIO_OUTPUT_CONTROLLER_H_ 255 #endif // MEDIA_AUDIO_AUDIO_OUTPUT_CONTROLLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698