Chromium Code Reviews| Index: media/audio/mac/audio_low_latency_output_mac.h |
| =================================================================== |
| --- media/audio/mac/audio_low_latency_output_mac.h (revision 106304) |
| +++ media/audio/mac/audio_low_latency_output_mac.h (working copy) |
| @@ -1,12 +1,25 @@ |
| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| - |
| +// |
| +// Implementation notes: |
| +// |
| +// - It is recommended to first acquire the native sample rate of the default |
| +// output device and then use the same rate when creating this object. |
| +// Use AUAudioOutputStream::HardwareSampleRate() to retrieve the sample rate. |
| +// - Calling Close() also leads to self destruction. |
| +// - The latency consists of two parts: |
| +// 1, Hardware latency, which includes Audio Unit latency, audio device |
| +// latency and audio stream latency; |
| +// 2, The delay between now and the scheduled time stamp that tells when the |
| +// data we are providing is going to reach the hardware. |
| +// |
| #ifndef MEDIA_AUDIO_MAC_AUDIO_LOW_LATENCY_OUTPUT_MAC_H_ |
| #define MEDIA_AUDIO_MAC_AUDIO_LOW_LATENCY_OUTPUT_MAC_H_ |
| #include <AudioUnit/AudioUnit.h> |
| +#include "base/memory/scoped_ptr.h" |
| #include "media/audio/audio_io.h" |
| #include "media/audio/audio_parameters.h" |
| @@ -44,11 +57,18 @@ |
| UInt32 number_of_frames, |
| AudioBufferList* io_data); |
| - OSStatus Render(UInt32 number_of_frames, AudioBufferList* io_data); |
| + OSStatus Render(UInt32 number_of_frames, AudioBufferList* io_data, |
| + const AudioTimeStamp* output_time_stamp); |
| // Sets up the stream format for the default output Audio Unit. |
| bool Configure(); |
| + // Gets the fixed playout device hardware latency and stores it. |
| + double GetHardwareLatency(); |
|
scherkus (not reviewing)
2011/10/19 18:23:57
ditto on returning zero
no longer working on chromium
2011/10/20 11:25:51
Done.
|
| + |
| + // Gets the current playout latency value. |
| + double GetPlayoutLatency(const AudioTimeStamp* output_time_stamp); |
| + |
| // Our creator, the audio manager needs to be notified when we close. |
| AudioManagerMac* manager_; |
| @@ -63,9 +83,15 @@ |
| // The default output Audio Unit which talks to the audio hardware. |
| AudioUnit output_unit_; |
| + // The UID refers to the current output audio device. |
| + AudioDeviceID output_device_id_; |
| + |
| // Volume level from 0 to 1. |
| float volume_; |
| + // Fixed playout hardware latency in frames. |
| + double hardware_latency_frames_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(AUAudioOutputStream); |
| }; |