diff -r 43e37759235e -r 51a74ef9ed63 Symbian3/SDK/Source/GUID-39B5850D-EAAD-56BC-B75A-2104033814E6.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/SDK/Source/GUID-39B5850D-EAAD-56BC-B75A-2104033814E6.dita Wed Mar 31 11:11:55 2010 +0100 @@ -0,0 +1,106 @@ + + + + + +Audio +Component Framework Overview +

This document provides an overview of the Audio Component Framework (ACF) +API.

+
Purpose

In the Advanced Audio Adaptation Framework +(A3F) architecture, the client defines the required audio functionality by +grouping several audio processing units together. Audio processing units are +logical entities, not directly related to any specific audio hardware, that +represent basic audio functions. Examples of audio processing units include:

    +
  • Source - a source of +multimedia data.

  • +
  • CODEC - an encoder or +decoder of multimedia data.

  • +
  • Sink - a consumer of +multimedia data.

  • +

ACF provides a collective notion for the audio processing units being +grouped together so that they can be considered as a single entity. Audio +processing units are grouped into audio streams. An audio stream consists +of at least a source, a codec and a sink. The audio stream allows control +of the audio processing units connected to the stream, for example, starting +or pausing, and also provides information about the state of the audio processing +units connected to it, for example, uninitialized or active.

Furthermore, +one or more audio streams can be grouped into a logical unit called a context. +The following diagram shows a context which contains two audio streams:

+ Audio streams in a context + +

Using a context means that, for the purposes of pre-emption, all +audio streams in the context can be controlled as a single unit. For example, +if an audio stream needs to be stopped because it uses a resource that is +required by another higher priority audio stream, then all the other audio +streams in the context can be stopped at the same time.

+
Audio Component Framework API Library Details

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 ACF 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 Audio +Component Library (ACL) API and the ACF API.

+
Description

ACF is responsible for delivering transactional +behaviour. This means ensuring that when a change is applied to one audio +processing unit in a context, the same change is applied to all the audio +processing units in the context and if any fail then no change is made.

In +order to apply changes to the audio processing units in a context, the client +must call the asynchronous Commit() method. +On success, event callbacks are sent to the client to state that the Commit() was +properly received and processed. If the Commit() fails, then +the implementation is "rolled-back". Alternatively, the client may receive +an event callback stating that audio resources were lost due to pre-emption +by a higher priority audio client.

+
Key Audio Component Framework API Classes

ACF comprises +the following key classes:

    +
  • MAudioSource - +generic interface for different types of audio sources.

  • +
  • MAudioCodec - +the generic abstract interface for codecs.

  • +
  • MAudioSink - +generic interface for different types of audio sinks.

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

  • +
  • MAudioContext - +the interface to an audio context. The client can use MAudioContext to +manage the audio streams and audio processing units contained in a context.

  • +
+
Using Audio Component Framework API

ACF can be +used to:

    +
  • Apply changes made to +the audio processing units in a context.

    Pending changes are applied +using the asynchronous Commit() call. +When a Commit() has been completed, the client is informed +by the appropriate ContextEvent() callback +of MAudioContextObserver.

  • +
+
See Also

Audio +Component Framework Tutorial

Audio +Processing Tutorial

+
\ No newline at end of file