class RingBufferProperties
Defined at line 6187 of file fidling/gen/sdk/fidl/fuchsia.hardware.audio/fuchsia.hardware.audio/cpp/fidl/fuchsia.hardware.audio/cpp/wire_types.h
Properties of the ring buffer. These values don't change once the ring buffer is created.
Public Methods
bool IsEmpty ()
Returns whether no field is set.
bool HasUnknownData ()
Returns whether the table references unknown fields.
::fidl::WireTableBuilder< ::fuchsia_hardware_audio::wire::RingBufferProperties> Builder (::fidl::AnyArena & arena)
Return a builder that by defaults allocates of an arena.
::fidl::WireTableExternalBuilder< ::fuchsia_hardware_audio::wire::RingBufferProperties> ExternalBuilder (::fidl::ObjectView< ::fidl::WireTableFrame< ::fuchsia_hardware_audio::wire::RingBufferProperties>> frame)
Return a builder that relies on explicitly allocating |fidl::ObjectView|s.
void Allocate (::fidl::AnyArena & allocator)
void Init (::fidl::ObjectView< ::fidl::WireTableFrame< ::fuchsia_hardware_audio::wire::RingBufferProperties>> && frame_ptr)
void RingBufferProperties ()
Defined at line 6189 of file fidling/gen/sdk/fidl/fuchsia.hardware.audio/fuchsia.hardware.audio/cpp/fidl/fuchsia.hardware.audio/cpp/wire_types.h
void RingBufferProperties (RingBufferProperties && other)
Defined at line 6192 of file fidling/gen/sdk/fidl/fuchsia.hardware.audio/fuchsia.hardware.audio/cpp/fidl/fuchsia.hardware.audio/cpp/wire_types.h
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.
bool has_needs_cache_flush_or_invalidate ()
RingBufferProperties & operator= (const RingBufferProperties & other)
Defined at line 6191 of file fidling/gen/sdk/fidl/fuchsia.hardware.audio/fuchsia.hardware.audio/cpp/fidl/fuchsia.hardware.audio/cpp/wire_types.h
RingBufferProperties & operator= (RingBufferProperties && other)
Defined at line 6193 of file fidling/gen/sdk/fidl/fuchsia.hardware.audio/fuchsia.hardware.audio/cpp/fidl/fuchsia.hardware.audio/cpp/wire_types.h
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.
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.
bool has_driver_transfer_bytes ()
RingBufferProperties & set_needs_cache_flush_or_invalidate (bool elem)
RingBufferProperties & clear_needs_cache_flush_or_invalidate ()
RingBufferProperties & set_turn_on_delay (::fidl::ObjectView<int64_t> elem)
RingBufferProperties & set_turn_on_delay (std::nullptr_t )
RingBufferProperties & clear_turn_on_delay ()
RingBufferProperties & set_driver_transfer_bytes (uint32_t elem)
RingBufferProperties & clear_driver_transfer_bytes ()
void RingBufferProperties (::fidl::AnyArena & allocator)
void RingBufferProperties (::fidl::ObjectView< ::fidl::WireTableFrame< ::fuchsia_hardware_audio::wire::RingBufferProperties>> && frame)
This constructor allows a user controlled allocation (not using a Arena).
It should only be used when performance is key.
As soon as the frame is given to the table, it must not be used directly or for another table.
void RingBufferProperties (const RingBufferProperties & other)
Defined at line 6190 of file fidling/gen/sdk/fidl/fuchsia.hardware.audio/fuchsia.hardware.audio/cpp/fidl/fuchsia.hardware.audio/cpp/wire_types.h
bool has_turn_on_delay ()
void ~RingBufferProperties ()
Defined at line 6195 of file fidling/gen/sdk/fidl/fuchsia.hardware.audio/fuchsia.hardware.audio/cpp/fidl/fuchsia.hardware.audio/cpp/wire_types.h
Friends
class WireTableBaseBuilder
class WireTableBaseBuilder