class RingBufferProperties
Defined at line 7047 of file fidling/gen/sdk/fidl/fuchsia.hardware.audio/fuchsia.hardware.audio/cpp/fidl/fuchsia.hardware.audio/cpp/natural_types.h
Properties of the ring buffer. These values don't change once the ring buffer is created.
Public Methods
void RingBufferProperties (Storage_ storage)
void RingBufferProperties ()
Defined at line 7052 of file fidling/gen/sdk/fidl/fuchsia.hardware.audio/fuchsia.hardware.audio/cpp/fidl/fuchsia.hardware.audio/cpp/natural_types.h
void RingBufferProperties (RingBufferProperties && )
Defined at line 7053 of file fidling/gen/sdk/fidl/fuchsia.hardware.audio/fuchsia.hardware.audio/cpp/fidl/fuchsia.hardware.audio/cpp/natural_types.h
void RingBufferProperties (const RingBufferProperties & other)
RingBufferProperties & operator= (RingBufferProperties && )
Defined at line 7054 of file fidling/gen/sdk/fidl/fuchsia.hardware.audio/fuchsia.hardware.audio/cpp/fidl/fuchsia.hardware.audio/cpp/natural_types.h
RingBufferProperties & operator= (const RingBufferProperties & other)
bool operator== (const RingBufferProperties & other)
bool operator!= (const RingBufferProperties & other)
bool IsEmpty ()
const std::optional<bool> & needs_cache_flush_or_invalidate ()
When set to true, indicates that the ring buffer runs in a different cache coherency domain,
and thus clients must ensure that their data writes are flushed all the way to main memory
(during playback), or that their view of the ring buffer must be invalidated before any
reads (during capture). This is because there may be hardware external to the CPUs that
reads/writes main memory, bypassing the CPUs.
When set to false, indicates that the ring buffer runs in the same cache coherency domain as
the CPUs, hence the driver is not required to flush/invalidate the ring buffer.
Note that in this case, the driver and client still must synchronize their data access, for
instance by inserting the appropriate acquire fences before reading and releasing fences
after writing, or (more commonly) by obeying the Producer/Consumer pattern described in
[Ring Buffer Behavior](https://fuchsia.dev/fuchsia-src/development/audio/ring_buffer.md).
Required.
::std::optional<bool> & needs_cache_flush_or_invalidate ()
When set to true, indicates that the ring buffer runs in a different cache coherency domain,
and thus clients must ensure that their data writes are flushed all the way to main memory
(during playback), or that their view of the ring buffer must be invalidated before any
reads (during capture). This is because there may be hardware external to the CPUs that
reads/writes main memory, bypassing the CPUs.
When set to false, indicates that the ring buffer runs in the same cache coherency domain as
the CPUs, hence the driver is not required to flush/invalidate the ring buffer.
Note that in this case, the driver and client still must synchronize their data access, for
instance by inserting the appropriate acquire fences before reading and releasing fences
after writing, or (more commonly) by obeying the Producer/Consumer pattern described in
[Ring Buffer Behavior](https://fuchsia.dev/fuchsia-src/development/audio/ring_buffer.md).
Required.
RingBufferProperties & needs_cache_flush_or_invalidate (std::optional<bool> value)
When set to true, indicates that the ring buffer runs in a different cache coherency domain,
and thus clients must ensure that their data writes are flushed all the way to main memory
(during playback), or that their view of the ring buffer must be invalidated before any
reads (during capture). This is because there may be hardware external to the CPUs that
reads/writes main memory, bypassing the CPUs.
When set to false, indicates that the ring buffer runs in the same cache coherency domain as
the CPUs, hence the driver is not required to flush/invalidate the ring buffer.
Note that in this case, the driver and client still must synchronize their data access, for
instance by inserting the appropriate acquire fences before reading and releasing fences
after writing, or (more commonly) by obeying the Producer/Consumer pattern described in
[Ring Buffer Behavior](https://fuchsia.dev/fuchsia-src/development/audio/ring_buffer.md).
Required.
const std::optional<int64_t> & turn_on_delay ()
The driver's best estimate of the time needed for the hardware to emit (during playback) or
accept (during capture) frames, after a channel is activated by `SetActiveChannels`.
The driver estimates that after `SetActiveChannels(channel)->(set_time)` enables a channel,
its data will resume flowing at approximately `set_time` + `turn_on_delay`.
Hardware can take time to become fully operational (e.g. due to a power state change, or
communication delays between a Bluetooth driver's multiple hardware entities). The client
must take this delay into account, if it is unacceptable to drop the actual audio frames
and instead play/capture silence during this interval.
If not included, `turn_on_delay` is unknown.
Optional.
::std::optional<int64_t> & turn_on_delay ()
The driver's best estimate of the time needed for the hardware to emit (during playback) or
accept (during capture) frames, after a channel is activated by `SetActiveChannels`.
The driver estimates that after `SetActiveChannels(channel)->(set_time)` enables a channel,
its data will resume flowing at approximately `set_time` + `turn_on_delay`.
Hardware can take time to become fully operational (e.g. due to a power state change, or
communication delays between a Bluetooth driver's multiple hardware entities). The client
must take this delay into account, if it is unacceptable to drop the actual audio frames
and instead play/capture silence during this interval.
If not included, `turn_on_delay` is unknown.
Optional.
RingBufferProperties & turn_on_delay (std::optional<int64_t> value)
The driver's best estimate of the time needed for the hardware to emit (during playback) or
accept (during capture) frames, after a channel is activated by `SetActiveChannels`.
The driver estimates that after `SetActiveChannels(channel)->(set_time)` enables a channel,
its data will resume flowing at approximately `set_time` + `turn_on_delay`.
Hardware can take time to become fully operational (e.g. due to a power state change, or
communication delays between a Bluetooth driver's multiple hardware entities). The client
must take this delay into account, if it is unacceptable to drop the actual audio frames
and instead play/capture silence during this interval.
If not included, `turn_on_delay` is unknown.
Optional.
const std::optional<uint32_t> & driver_transfer_bytes ()
Size (in bytes) of the temporary buffers or FIFOs used by the driver when consuming or
generating the ring buffer contents.
The `driver_transfer_bytes` field is covered extensively in
[Ring Buffer Behavior](https://fuchsia.dev/fuchsia-src/development/audio/ring_buffer.md).
`driver_transfer_bytes` must not include the impact of delays caused by hardware or software
processing abstracted by the driver. Those delays are communicated by `internal_delay` and
`external_delay` fields in `DelayInfo`; they are orthogonal to this value.
Required.
::std::optional<uint32_t> & driver_transfer_bytes ()
Size (in bytes) of the temporary buffers or FIFOs used by the driver when consuming or
generating the ring buffer contents.
The `driver_transfer_bytes` field is covered extensively in
[Ring Buffer Behavior](https://fuchsia.dev/fuchsia-src/development/audio/ring_buffer.md).
`driver_transfer_bytes` must not include the impact of delays caused by hardware or software
processing abstracted by the driver. Those delays are communicated by `internal_delay` and
`external_delay` fields in `DelayInfo`; they are orthogonal to this value.
Required.
RingBufferProperties & driver_transfer_bytes (std::optional<uint32_t> value)
Size (in bytes) of the temporary buffers or FIFOs used by the driver when consuming or
generating the ring buffer contents.
The `driver_transfer_bytes` field is covered extensively in
[Ring Buffer Behavior](https://fuchsia.dev/fuchsia-src/development/audio/ring_buffer.md).
`driver_transfer_bytes` must not include the impact of delays caused by hardware or software
processing abstracted by the driver. Those delays are communicated by `internal_delay` and
`external_delay` fields in `DelayInfo`; they are orthogonal to this value.
Required.
void RingBufferProperties (::fidl::internal::DefaultConstructPossiblyInvalidObjectTag )
Friends
class MemberVisitor
class NaturalTableCodingTraits