Audio Component Library Overview

This document provides an overview of the Audio Component Library (ACL) API.

Purpose

The ACL API is an open-ended library of audio processing units. The ACL API is used to define the audio processing units which can be built into an audio stream.

Audio Component Library API Library Details

The ACL API is implemented using a plugin pattern.

The DLL that provides the functionality and the library to which your code must link is identified below.

DLL LIB Short Description

audiocontextfactory.dll

audiocontextfactory.lib

These files are used for implementing the ACL API.

Architectural Relationship

This API is part of the Advanced Audio Adaptation Framework (A3F). A3F provides a new standardised implementation of DevSound which is configured by default from Symbian OS v9.5 onwards. A3F interacts with a specially customised DevSound (configured as optional) through the ACL API and the Audio Component Framework (ACF) API.

Description

Audio processing units are logical entities (not directly related to any specific audio hardware) that represent basic audio functions. The ACL API is an open-ended library of such logical audio processing units. The list of audio processing units in the ACL includes:

  • buffer source and sink

  • audio device source and sink

  • audio codec.

An audio stream links together several audio processing units. The ACL API enables the client to specify an audio stream and the individual audio processing units that it contains. An audio stream represents a connection between:

  • 1 source

  • 1 codec (either a decoder or an encoder)

  • 0 or 1 gain control

  • 1 sink.

An audio stream is also responsible for executing audio processing states as requested by the client. The audio processing units contained in an audio stream adapt to state changes as required. The possible states of an audio stream are:

  • EUninitialized - the state an audio stream is in initially.

  • EInitialized - the state after a successful initialization request.

  • EIdle - all resources have been allocated but use no CPU time (other than that expended to put the audio stream into the EIdle state) is consumed.

  • EPrimed - as with EIdle, but the audio stream can consume CPU time by filling its buffers. Note that no sound can be played when the audio stream is in EPrimed state.

  • EActive - all resources have been allocated, as with EIdle and EPrimed, but the audio stream has also started to process the actions requested by the client.

  • EDead - the audio stream can no longer function due to a fatal error.

Key Audio Component Library API Classes

The ACL API comprises the following key classes:

  • MAudioStream - the main control interface for the state of an audio stream.

Using Audio Component Library API

The ACL API can be used to:

  • Request that the state of an audio stream is changed to another state. The main state transitions are requested using the following methods:

    • Initialize() - requests a transition to the EInitialized state.

    • Load() - requests a transition to the EIdle state.

    • Activate() - starts the audio processing.

    • Stop() - requests a transition to the EIdle state.

    • Unload() - prepares the audio stream for releasing the resources reserved for it.

    • Uninitialize() - requests a transition to the EUnitialized state.

    • Prime() - requests a transition to the EPrimed state.