class AudioDriver

Defined at line 44 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 43 of file ../../src/media/audio/audio_core/audio_driver.cc

void AudioDriver (AudioDevice * owner, DriverTimeoutHandler timeout_handler)

Defined at line 45 of file ../../src/media/audio/audio_core/audio_driver.cc

zx_status_t Init (zx::channel stream_channel)

Defined at line 53 of file ../../src/media/audio/audio_core/audio_driver.cc

void ~AudioDriver ()

Defined at line 72 of file ../../src/media/audio/audio_core/audio_driver.h

bool plugged ()

Defined at line 78 of file ../../src/media/audio/audio_core/audio_driver.h

zx::time plug_time ()

Defined at line 83 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 91 of file ../../src/media/audio/audio_core/audio_driver.h

zx::time ref_start_time ()

Defined at line 92 of file ../../src/media/audio/audio_core/audio_driver.h

zx::duration external_delay ()

Defined at line 94 of file ../../src/media/audio/audio_core/audio_driver.h

zx::duration internal_delay ()

Defined at line 95 of file ../../src/media/audio/audio_core/audio_driver.h

std::optional<zx::duration> driver_transfer_delay ()

Defined at line 96 of file ../../src/media/audio/audio_core/audio_driver.h

std::optional<uint32_t> driver_transfer_frames ()

Defined at line 97 of file ../../src/media/audio/audio_core/audio_driver.h

void Cleanup ()

Defined at line 98 of file ../../src/media/audio/audio_core/audio_driver.cc

zx_koid_t stream_channel_koid ()

Defined at line 99 of file ../../src/media/audio/audio_core/audio_driver.h

const HwGainState & hw_gain_state ()

Defined at line 100 of file ../../src/media/audio/audio_core/audio_driver.h

uint32_t clock_domain ()

Defined at line 101 of file ../../src/media/audio/audio_core/audio_driver.h

const TimelineFunction & ref_time_to_frac_presentation_frame ()

Defined at line 103 of file ../../src/media/audio/audio_core/audio_driver.h

const TimelineFunction & ref_time_to_frac_safe_read_or_write_frame ()

Defined at line 106 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 113 of file ../../src/media/audio/audio_core/audio_driver.h

const std::string & manufacturer_name ()

Defined at line 114 of file ../../src/media/audio/audio_core/audio_driver.h

const std::string & product_name ()

Defined at line 115 of file ../../src/media/audio/audio_core/audio_driver.h

std::optional<Format> GetFormat ()

Defined at line 118 of file ../../src/media/audio/audio_core/audio_driver.cc

zx_status_t GetDriverInfo ()

Defined at line 124 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 139 of file ../../src/media/audio/audio_core/audio_driver.h

const std::shared_ptr<WritableRingBuffer> & writable_ring_buffer ()

Defined at line 143 of file ../../src/media/audio/audio_core/audio_driver.h

std::shared_ptr<Clock> reference_clock ()

Defined at line 148 of file ../../src/media/audio/audio_core/audio_driver.h

zx::duration turn_on_delay ()

Defined at line 149 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 152 of file ../../src/media/audio/audio_core/audio_driver.h

std::vector<ChannelAttributes> channel_config ()

Defined at line 153 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 298 of file ../../src/media/audio/audio_core/audio_driver.cc

zx_status_t Start ()

Defined at line 726 of file ../../src/media/audio/audio_core/audio_driver.cc

zx_status_t Stop ()

Defined at line 900 of file ../../src/media/audio/audio_core/audio_driver.cc

zx_status_t SetPlugDetectEnabled (bool enabled)

Defined at line 940 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 1063 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 1091 of file ../../src/media/audio/audio_core/audio_driver.cc

zx_status_t SetActiveChannels (uint64_t chan_bit_mask)

Defined at line 1103 of file ../../src/media/audio/audio_core/audio_driver.cc

Reporter::AudioDriverInfo info_for_reporter ()

Defined at line 1160 of file ../../src/media/audio/audio_core/audio_driver.cc

Enumerations

enum class State : uint8_t
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 52 of file ../../src/media/audio/audio_core/audio_driver.h