| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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_CONTROLLER_H_ | 5 #ifndef MEDIA_AUDIO_AUDIO_CONTROLLER_H_ |
| 6 #define MEDIA_AUDIO_AUDIO_CONTROLLER_H_ | 6 #define MEDIA_AUDIO_AUDIO_CONTROLLER_H_ |
| 7 | 7 |
| 8 #include "base/lock.h" | 8 #include "base/lock.h" |
| 9 #include "base/ref_counted.h" | 9 #include "base/ref_counted.h" |
| 10 #include "base/scoped_ptr.h" | 10 #include "base/scoped_ptr.h" |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 // Factory method for creating an AudioController, returns NULL if failed. | 100 // Factory method for creating an AudioController, returns NULL if failed. |
| 101 // If successful, an audio controller thread is created. The audio device | 101 // If successful, an audio controller thread is created. The audio device |
| 102 // will be created on the audio controller thread and when that is done | 102 // will be created on the audio controller thread and when that is done |
| 103 // event handler will receive a OnCreated() call. | 103 // event handler will receive a OnCreated() call. |
| 104 static scoped_refptr<AudioController> Create( | 104 static scoped_refptr<AudioController> Create( |
| 105 EventHandler* event_handler, | 105 EventHandler* event_handler, |
| 106 AudioManager::Format format, // Format of the stream. | 106 AudioManager::Format format, // Format of the stream. |
| 107 int channels, // Number of channels. | 107 int channels, // Number of channels. |
| 108 int sample_rate, // Sampling frequency/rate. | 108 int sample_rate, // Sampling frequency/rate. |
| 109 int bits_per_sample, // Number of bits per sample. | 109 int bits_per_sample, // Number of bits per sample. |
| 110 int hardware_buffer_size, // Size of the hardware buffer. | 110 uint32 hardware_buffer_size, // Size of the hardware buffer. |
| 111 | 111 |
| 112 // Soft limit for buffer capacity in this controller. This parameter | 112 // Soft limit for buffer capacity in this controller. This parameter |
| 113 // is used only in regular latency mode. | 113 // is used only in regular latency mode. |
| 114 uint32 buffer_capacity); | 114 uint32 buffer_capacity); |
| 115 | 115 |
| 116 // Factory method for creating a low latency audio stream. | 116 // Factory method for creating a low latency audio stream. |
| 117 static scoped_refptr<AudioController> CreateLowLatency( | 117 static scoped_refptr<AudioController> CreateLowLatency( |
| 118 EventHandler* event_handler, | 118 EventHandler* event_handler, |
| 119 AudioManager::Format format, // Format of the stream. | 119 AudioManager::Format format, // Format of the stream. |
| 120 int channels, // Number of channels. | 120 int channels, // Number of channels. |
| 121 int sample_rate, // Sampling frequency/rate. | 121 int sample_rate, // Sampling frequency/rate. |
| 122 int bits_per_sample, // Number of bits per sample. | 122 int bits_per_sample, // Number of bits per sample. |
| 123 int hardware_buffer_size, // Size of the hardware buffer. | 123 uint32 hardware_buffer_size, // Size of the hardware buffer. |
| 124 | 124 |
| 125 // External synchronous reader for audio controller. | 125 // External synchronous reader for audio controller. |
| 126 SyncReader* sync_reader); | 126 SyncReader* sync_reader); |
| 127 | 127 |
| 128 // Methods to control playback of the stream. | 128 // Methods to control playback of the stream. |
| 129 | 129 |
| 130 // Starts the playback of this audio output stream. | 130 // Starts the playback of this audio output stream. |
| 131 void Play(); | 131 void Play(); |
| 132 | 132 |
| 133 // Pause this audio output stream. | 133 // Pause this audio output stream. |
| 134 void Pause(); | 134 void Pause(); |
| 135 | 135 |
| 136 // Discard all audio data buffered in this output stream. This method only | 136 // Discard all audio data buffered in this output stream. This method only |
| 137 // has effect when the stream is paused. | 137 // has effect when the stream is paused. |
| 138 void Flush(); | 138 void Flush(); |
| 139 | 139 |
| 140 // Closes the audio output stream and shutdown the audio controller thread. | 140 // Closes the audio output stream and shutdown the audio controller thread. |
| 141 // This method returns only after all operations are completed. This | 141 // This method returns only after all operations are completed. This |
| 142 // controller cannot be used after this method is called. | 142 // controller cannot be used after this method is called. |
| 143 // |
| 144 // It is safe to call this method more than once. Calls after the first one |
| 145 // will have no effect. |
| 143 void Close(); | 146 void Close(); |
| 144 | 147 |
| 145 // Sets the volume of the audio output stream. | 148 // Sets the volume of the audio output stream. |
| 146 void SetVolume(double volume); | 149 void SetVolume(double volume); |
| 147 | 150 |
| 148 // Enqueue audio |data| into the controller. This method is used only in | 151 // Enqueue audio |data| into the controller. This method is used only in |
| 149 // the regular latency mode and it is illegal to call this method when | 152 // the regular latency mode and it is illegal to call this method when |
| 150 // SyncReader is present. | 153 // SyncReader is present. |
| 151 void EnqueueData(const uint8* data, uint32 size); | 154 void EnqueueData(const uint8* data, uint32 size); |
| 152 | 155 |
| 156 bool LowLatencyMode() const { return sync_reader_ != NULL; } |
| 157 |
| 153 /////////////////////////////////////////////////////////////////////////// | 158 /////////////////////////////////////////////////////////////////////////// |
| 154 // AudioSourceCallback methods. | 159 // AudioSourceCallback methods. |
| 155 virtual uint32 OnMoreData(AudioOutputStream* stream, void* dest, | 160 virtual uint32 OnMoreData(AudioOutputStream* stream, void* dest, |
| 156 uint32 max_size, uint32 pending_bytes); | 161 uint32 max_size, uint32 pending_bytes); |
| 157 virtual void OnClose(AudioOutputStream* stream); | 162 virtual void OnClose(AudioOutputStream* stream); |
| 158 virtual void OnError(AudioOutputStream* stream, int code); | 163 virtual void OnError(AudioOutputStream* stream, int code); |
| 159 | 164 |
| 160 private: | 165 private: |
| 161 AudioController(EventHandler* handler, | 166 AudioController(EventHandler* handler, |
| 162 uint32 capacity, SyncReader* sync_reader); | 167 uint32 capacity, SyncReader* sync_reader); |
| 163 | 168 |
| 164 // The following methods are executed on the audio controller thread. | 169 // The following methods are executed on the audio controller thread. |
| 165 void DoCreate(AudioManager::Format format, int channels, | 170 void DoCreate(AudioManager::Format format, int channels, |
| 166 int sample_rate, int bits_per_sample, | 171 int sample_rate, int bits_per_sample, |
| 167 int hardware_buffer_size); | 172 uint32 hardware_buffer_size); |
| 168 void DoPlay(); | 173 void DoPlay(); |
| 169 void DoPause(); | 174 void DoPause(); |
| 170 void DoFlush(); | 175 void DoFlush(); |
| 171 void DoClose(); | 176 void DoClose(); |
| 172 void DoSetVolume(double volume); | 177 void DoSetVolume(double volume); |
| 173 void DoReportError(int code); | 178 void DoReportError(int code); |
| 174 | 179 |
| 175 // Helper method to submit a OnMoreData() call to the event handler. | 180 // Helper method to submit a OnMoreData() call to the event handler. |
| 176 void SubmitOnMoreData_Locked(); | 181 void SubmitOnMoreData_Locked(); |
| 177 | 182 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 196 | 201 |
| 197 // The audio controller thread that this object runs on. | 202 // The audio controller thread that this object runs on. |
| 198 base::Thread thread_; | 203 base::Thread thread_; |
| 199 | 204 |
| 200 DISALLOW_COPY_AND_ASSIGN(AudioController); | 205 DISALLOW_COPY_AND_ASSIGN(AudioController); |
| 201 }; | 206 }; |
| 202 | 207 |
| 203 } // namespace media | 208 } // namespace media |
| 204 | 209 |
| 205 #endif // MEDIA_AUDIO_AUDIO_CONTROLLER_H_ | 210 #endif // MEDIA_AUDIO_AUDIO_CONTROLLER_H_ |
| OLD | NEW |