Audio Virtualization Architecture#

The Audio Server para-virtualizes the AHUB modules of the Audio Processing Engine. The audio server runs on a CCPLEX core in the Hypervisor environment. Guest OS communicates with the Audio Server via IVC. The architecture is as follows:

image1

  • Each AHUB module can be allocated to a Guest OS via PCT configuration. A single AHUB module cannot be shared between multiple Guest OS.

  • AHUB modules are configured statically through audio server DT.

  • AHUB modules can be interconnected in different ways according to the use case via IVC calls.

This lays the foundation for a virtualization architecture where control of AHUB is transferred from the Guest OS to the Audio Server. This enables the Audio Server to manage the use of AHUB resources by different Guest OS.

The Audio Server is implemented as a control-only software framework having the following responsibilities:

  • Parsing audio server DT and applying initial configuration to AHUB modules.

  • Managing Cross-bar (XBAR) interconnections between various sub-modules of AHUB, establishing further audio processing paths after ADMAIF.

  • Apply runtime parameters to AHUB modules as per Guest OS requests.

  • Allocate ADMA channels to ADMA pages as defined in PCT.

  • Allocate & manage access to AHUB resources by different Guest OS as defined in PCT.

Actual PCM data flows into the AHUB modules via ADMA. The Audio Server sets up the control flow by enabling and interconnecting the AHUB modules via IVC calls.

Note

The Guest OS can access AHUB resources only via audio server. Kindly refer “Audio Virtualization Driver” section for further information.

Note

The Audio Codec or A2B interface chips are outside the scope of the Audio Server, and can be initialized as a part of a Guest OS.