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 buffers, DAI interconnects, and packet streams are configured based on
the topology exposed via the [Audio Signal Processing](https://fuchsia.dev/fuchsia-src/development/audio/drivers/signal-processing) APIs. In particular,
these elements represent the hardware that is abstracted, specifically the number of ring buffers,
DAI interconnects, and packet streams. 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 ring buffers
and one DAI interconnect.

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](https://cs.opensource.google/fuchsia/fuchsia/+/main:/sdk/fidl/fuchsia.hardware.audio/composite.fidl).
[](https://issues.fuchsia.dev/issues/new?component=1439230&template=1881640&description=Issue+on:+https://fuchsia.dev/docs/development/audio/drivers/composite.md "Report a bug or suggest improvements on this page") [](https://cs.opensource.google/fuchsia/fuchsia/+/main:docs/development/audio/drivers/composite.md "View the source code of this page") [](https://ci.android.com/edit?repo=fuchsia/fuchsia/main&file=docs/development/audio/drivers/composite.md&cloneRepo=fuchsia/fuchsia:refs/heads/main&fullPath=fuchsia/docs/development/audio/drivers/composite.md "Edit the source code of this page")