class AudioDriver
Defined at line 45 of file ../../src/media/audio/audio_core/audio_driver.h
Public Members
static duration kDefaultShortCmdTimeout
static duration kDefaultLongCmdTimeout
Public Methods
void AudioDriver (AudioDevice * owner)
Defined at line 44 of file ../../src/media/audio/audio_core/audio_driver.cc
void AudioDriver (AudioDevice * owner, DriverTimeoutHandler timeout_handler)
Defined at line 46 of file ../../src/media/audio/audio_core/audio_driver.cc
zx_status_t Init (zx::channel stream_channel)
Defined at line 54 of file ../../src/media/audio/audio_core/audio_driver.cc
void ~AudioDriver ()
Defined at line 73 of file ../../src/media/audio/audio_core/audio_driver.h
bool plugged ()
Defined at line 79 of file ../../src/media/audio/audio_core/audio_driver.h
zx::time plug_time ()
Defined at line 84 of file ../../src/media/audio/audio_core/audio_driver.h
State state ()
Methods which need to be called from the owner's execution domain. If there was a good way to
use the static lock analysis to ensure this, I would do so, but unfortunately the compiler is
unable to figure out that the owner calling these methods is always the same as owner_.
Defined at line 92 of file ../../src/media/audio/audio_core/audio_driver.h
zx::time ref_start_time ()
Defined at line 93 of file ../../src/media/audio/audio_core/audio_driver.h
zx::duration external_delay ()
Defined at line 95 of file ../../src/media/audio/audio_core/audio_driver.h
zx::duration internal_delay ()
Defined at line 96 of file ../../src/media/audio/audio_core/audio_driver.h
std::optional<zx::duration> driver_transfer_delay ()
Defined at line 97 of file ../../src/media/audio/audio_core/audio_driver.h
std::optional<uint32_t> driver_transfer_frames ()
Defined at line 98 of file ../../src/media/audio/audio_core/audio_driver.h
void Cleanup ()
Defined at line 99 of file ../../src/media/audio/audio_core/audio_driver.cc
zx_koid_t stream_channel_koid ()
Defined at line 100 of file ../../src/media/audio/audio_core/audio_driver.h
const HwGainState & hw_gain_state ()
Defined at line 101 of file ../../src/media/audio/audio_core/audio_driver.h
uint32_t clock_domain ()
Defined at line 102 of file ../../src/media/audio/audio_core/audio_driver.h
const TimelineFunction & ref_time_to_frac_presentation_frame ()
Defined at line 104 of file ../../src/media/audio/audio_core/audio_driver.h
const TimelineFunction & ref_time_to_frac_safe_read_or_write_frame ()
Defined at line 107 of file ../../src/media/audio/audio_core/audio_driver.h
const audio_stream_unique_id_t & persistent_unique_id ()
The following properties are only safe to access after the driver is beyond the
MissingDriverInfo state. After that state, these members must be treated as immutable, and the
driver class may no longer change them.
Defined at line 114 of file ../../src/media/audio/audio_core/audio_driver.h
const std::string & manufacturer_name ()
Defined at line 115 of file ../../src/media/audio/audio_core/audio_driver.h
const std::string & product_name ()
Defined at line 116 of file ../../src/media/audio/audio_core/audio_driver.h
std::optional<Format> GetFormat ()
Defined at line 119 of file ../../src/media/audio/audio_core/audio_driver.cc
zx_status_t GetDriverInfo ()
Defined at line 125 of file ../../src/media/audio/audio_core/audio_driver.cc
const std::shared_ptr<ReadableRingBuffer> & readable_ring_buffer ()
Accessors for the ring buffer pointer and the current output clock transformation.
Note: Only AudioDriver writes to these, and only when in our owner's mixing execution
domain. It is safe for our owner to read these objects, but only when operating in the mixing
domain. Unfortunately, it is not practical to use the static thread safety annotation to prove
that we are accessing these variable from the mixing domain. Instead, we...
1) Make these methods private.
2) Make the AudioDevice class (our owner) a friend.
3) Expose protected accessors in AudioDevice which demand that we execute in the mix domain.
This should be a strong enough guarantee to warrant disabling the thread safety analysis here.
Defined at line 140 of file ../../src/media/audio/audio_core/audio_driver.h
const std::shared_ptr<WritableRingBuffer> & writable_ring_buffer ()
Defined at line 144 of file ../../src/media/audio/audio_core/audio_driver.h
std::shared_ptr<Clock> reference_clock ()
Defined at line 149 of file ../../src/media/audio/audio_core/audio_driver.h
zx::duration turn_on_delay ()
Defined at line 150 of file ../../src/media/audio/audio_core/audio_driver.h
bool needs_cache_flush_or_invalidate ()
TODO(https://fxbug.dev/42065000): obey the flag when false. We behave as if it is always true.
Defined at line 153 of file ../../src/media/audio/audio_core/audio_driver.h
std::vector<ChannelAttributes> channel_config ()
Defined at line 154 of file ../../src/media/audio/audio_core/audio_driver.h
zx_status_t Configure (const Format & format, zx::duration min_ring_buffer_duration)
Defined at line 299 of file ../../src/media/audio/audio_core/audio_driver.cc
zx_status_t Start ()
Defined at line 713 of file ../../src/media/audio/audio_core/audio_driver.cc
zx_status_t Stop ()
Defined at line 876 of file ../../src/media/audio/audio_core/audio_driver.cc
zx_status_t SetPlugDetectEnabled (bool enabled)
Defined at line 916 of file ../../src/media/audio/audio_core/audio_driver.cc
zx_status_t SetGain (const AudioDeviceSettings::GainState & gain_state, audio_set_gain_flags_t set_flags)
Defined at line 1039 of file ../../src/media/audio/audio_core/audio_driver.cc
zx_status_t SelectBestFormat (uint32_t * frames_per_second_inout, uint32_t * channels_inout, fuchsia::media::AudioSampleFormat * sample_format_inout)
Defined at line 1067 of file ../../src/media/audio/audio_core/audio_driver.cc
zx_status_t SetActiveChannels (uint64_t chan_bit_mask)
Defined at line 1079 of file ../../src/media/audio/audio_core/audio_driver.cc
Reporter::AudioDriverInfo info_for_reporter ()
Defined at line 1136 of file ../../src/media/audio/audio_core/audio_driver.cc
Enumerations
enum State
| Name | Value |
|---|---|
| Uninitialized | 0 |
| MissingDriverInfo | 1 |
| Unconfigured | 2 |
| Configuring_SettingFormat | 3 |
| Configuring_GettingRingBufferProperties | 4 |
| Configuring_GettingDelayInfo | 5 |
| Configuring_GettingRingBufferVmo | 6 |
| Configured | 7 |
| Starting | 8 |
| Started | 9 |
| Stopping | 10 |
| Shutdown | 11 |
Defined at line 53 of file ../../src/media/audio/audio_core/audio_driver.h