blob: ae415014b9dd2299f0efec77f931a5ba0cb7d6d4 [file] [log] [blame] [view] [edit]
# Composite audio driver
The `Composite` interface is a FIDL protocol exposed by audio drivers. The `Composite` interface
is generic and allows the configuration of various audio hardware types including those supported
by the `StreamConfig`, `Dai` and `Codec` FIDL interfaces. The `Composite` interface is more
generic and provides more flexible routing within audio subsystems.
In this protocol, ring buffer and DAI endpoints are configured based on the topology exposed via
the [Audio Signal Processing](signal-processing.md) APIs. In particular, endpoints represent the
hardware that is abstracted, specifically the number of ring buffers and DAI interconnects. Audio
hardware that can be represented by other audio driver types (`StreamConfig`, `Dai`, `Codec`) can
instead be represented with a `Composite` driver. For example, a `Composite` driver can represent
a `Codec` with a topology that has zero RingBuffer endpoints and one DAI interconnect endpoint.
When an audio driver provides the `Composite` interface, its client is responsible for configuring
the hardware, including data topology. Driver responsibilities include using the
`SignalProcessing` protocol to enumerate the topologies and capabilities supported by the hardware
it abstracts.
The `Composite` FIDL protocol is defined at
[composite.fidl](/sdk/fidl/fuchsia.hardware.audio/composite.fidl).