# Customize audio graph

Each audio use case is a graph with subgraphs of
a specific type. Each subgraph has one or more functional
software blocks (referred to as modules) that perform a specific
function.

## Audio graph terms

Audio graph terms

| **Use case** | A graph of modules from source endpoint(s) to sink endpoint(s)<br>that meets the product defined use case. |
| --- | --- |
| **Graph** | A logical interpretation of a group of one or more subgraphs<br>connected together to create a specific use case. |
| **Subgraph** | A logical abstraction for a group of modules that connect<br>and are manipulated as a single entity. |
| **Container** | Object that allows the system designer to group and run<br>audio processing modules together in a single software thread. |
| **Module** | The smallest independent processing unit in the signal<br>processing framework. |
| **Key value (KV) pair** | The individual key and associated values in a key vector.<br>For example, a key can be a sound device and a value can be<br>headphone, speaker, or some other sound device. |
| **Key vector** | Uniquely identifies a graph or subgraph through a set of KV<br>pairs. |
| **Graph key vector (GKV)** | GKV is a unique identifier that gets a graph, which is<br>represented by KV pairs. The graph or system<br>designer associates a set of unique &lt;keys&gt; and &lt;values&gt; when<br>creating a subgraph from the QACT UI canvas. |
| **Calibration key vector (CKV)** | CKV is a unique identifier that gets calibration data,<br>which is represented by KV pairs. The graph<br>or system designer associates a set of unique &lt;keys&gt; and<br>&lt;values&gt; when storing calibration data. |
| **Tag and tag key vector (TKV)** | A tag is an identifier that sets runtime parameters for one or<br>more modules. It allows updating module configurations (for example,<br>enabling/disabling features like echo cancellation or<br>equalization) in a graph at runtime. |

## Graph segments

An audio use case has the following segments.

The front-end
represents stream and streamPP subgraphs, while the back-end
represents the per-stream per-device (PSPD), devicePP, and device subgraphs.

Graph segments

| **Stream** | Gives a data write/read interface and performs decoding and<br>encoding of compressed data. |
| --- | --- |
| **StreamPP** | Has stream-based processing modules (for example,<br>equalizer). |
| **PSPD** | Has a module to convert the stream media format to the<br>device media format. |
| **DevicePP** | Has processing modules for sound device tuning. |
| **Device** | Hardware endpoint such as CodecDMA (SoundWire), I2S, or TDM port. |

Once a front-end connects to a back-end using a routing mixer control,
the full GKV forms by concatenating the subgraph GKVs and the CKVs
assigned using mixer controls. Upon opening the front-end PCM or compress
device, AGM invokes GSL APIs with concatenated GKVs and CKVs to set up
the graph in SPF and apply calibration. At the same time, AGM opens a
kernel PCM device corresponding to the connected back-ends to begin
audio peripheral setup.

## Sample audio graph

The following figure shows an example audio graph for a playback scenario.

![../../_images/sample_audio_graph.png](data:image/png;base64,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)

Sample audio graph for playback

In this graph:

1. The stream subgraph has a write shared memory endpoint, PCM
decoder, and PCM converter. The client passes PCM samples to write
shared memory endpoint.
2. If conversion is necessary, the PCM converter converts PCM samples to a format supported by the
stream-specific postprocessing modules.
3. Output of the stream subgraph is fed into the stream-device subgraph,
which has the media format converter (MFC). MFC converts the
stream-subgraph PCM to the device-subgraph PCM format.
4. After conversion, output of the stream-device subgraph is fed into
the device PP subgraph for device-specific postprocessing. A mixer
is placed at the beginning of subgraph to mix input streams.
5. Output of the devicePP subgraph is then fed into the device subgraph,
which has a hardware endpoint module such as an I2S driver.

The following is the GKV for this example graph:

GKV1: <StreamRX1 KVs, StreamRX2 PP KVs, StreamRX1DeviceRX KVs, DeviceRX PP KVs, DeviceRX KVs>
    
    GKV2: <StreamRX2 KVs, StreamRX2 PP KVs, StreamRX2DeviceRX KVs, DeviceRX PP KVs, DeviceRX KVs>
    Copy to clipboard

### Audio graph manager

The audio graph manager (AGM) gives interfaces to allow TinyALSA-based mixer controls and
PCM/compress plug-ins to interact and enable audio use cases.
AGM runs as part of the PulseAudio service that runs in the user space.

AGM gives APIs for mixer plugins and PCM/compress APIs to set up
audio use cases. It maintains many ALSA clients to set up use cases.
AGM also manages front-end to back-end connections.

The following figure shows the AGM block at a high level.

![../../_images/AGM_service_blocks.png](data:image/png;base64,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)

High-level AGM software block

AGM objects

| Object | Description |
| --- | --- |
| **Session** | <ul class="simple"><br><li><p>A session object is an audio playback or capture<br>session.</p></li><br><li><p>Invoking session-specific mixer controls or APIs<br>creates sessions.</p></li><br><li><p>Gives APIs for TinyALSA<br>plug-ins to configure streams and manages state transitions<br>of graph and device objects.</p></li><br></ul> |
| **Graph** | <ul class="simple"><br><li><p>A graph object is an audio use case.</p></li><br><li><p>Interacts with GSL to open, manage, and close graphs.</p></li><br><li><p>Gives APIs for graph creation,<br>manages graphs, and configures stream and device<br>endpoints.</p></li><br></ul> |
| **Device** | <ul class="simple"><br><li><p>A device object is an ALSA device from the ALSA<br>sound card.</p></li><br><li><p>Enumerates available audio interfaces and gives device<br>APIs for transitioning device states.</p></li><br></ul> |

### AudioReach graph services

The AudioReach™ Signal Processing Framework graph services (ARGS) consists of the graph service layer
(GSL), generic packet router (GPR), and acdb management layer (AML). It
handles initialization and creation of graphs, and creation of
packets for sending series of commands to the SPF.

ARGS components

| Component | Description |
| --- | --- |
| **GSL** | <ul class="simple"><br><li><p>The graph service layer (GSL) is a software driver for SPF<br>which manages graphs, subgraphs, buffers, and<br>configurations.</p></li><br><li><p>Loads and initializes graphs using graph key vectors<br>(GKVs).</p></li><br><li><p>Handles data commands and SPF module calibration.</p></li><br></ul> |
| **GPR** | <ul class="simple"><br><li><p>The generic packet router (GPR) routes audio message packets<br>across SPF and the graph service library.</p></li><br><li><p>Handles commands for constructing audio graphs and<br>processing audio.</p></li><br></ul> |
| **AML** | <ul class="simple"><br><li><p>The acdb management layer (AML) gives get/set APIs to get and adjust data in<br>acdb files.</p></li><br><li><p>Gives data abstractions and organization for how the audio driver and<br>its components consume the calibration data.</p></li><br></ul> |

## Audio calibration database

acdb is a static database on the apps processor. It has
all tuning/calibration parameters for the LPAI. The `*.acdb` file format
organizes calibration data for various audio modules for various use cases.

Edit this file format using QACT (a PC tool) and
place it on the device file system in the `/etc/acdbdata/` folder. During
use case initialization or device switch, the AML queries the acdb
database with a specified GKV and pushes the device calibration data to SPF.

### Signal processing framework

Signal processing framework (SPF) runs in the LPAI subsystem and performs audio data processing.

The following figure gives a high-level overview of the functional
blocks used in SPF.

![../../_images/spf_blocks.png](data:image/png;base64,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)

High-level SPF software block

SPF components

| Component | Description |
| --- | --- |
| **APM** | Audio processing manager (APM) sets up and manages the use case<br>graphs in the SPF. It gives the<br>standard APIs to the graph management library and APM client<br>to set up and configure audio use cases. |
| **Modules** | A module is a functional block in the SPF. It<br>performs real-time audio processing in<br>the LPAI subsystem. |
| **Containers** | A container is a framework implementation that runs a<br>group of data processing modules together in the same software<br>thread. Each container runs in its own software<br>thread. |

Last Published: Aug 13, 2025

[Previous Topic
Enable TinyALSA-based applications](https://docs.qualcomm.com/bundle/publicresource/80-70018-16/topics/tinyalsa.md) [Next Topic
Troubleshoot audio](https://docs.qualcomm.com/bundle/publicresource/80-70018-16/topics/troubleshoot.md)