# Defining an audio pass-through configuration

In the audio pass-through configuration, the media payload of the audio and video RTP packets corresponds exactly to what the application receives from or submits to Video Access. Pass-through means that no media transformation is applied, and therefore this configuration does not consume any DSP resources on the board.

Voice quality is not degraded because no audio transcoding is performed. The recorded data can be played back only to terminals that support this media encoding.

The following illustration shows an audio pass-through configuration:

When no audio transcoding or silence detection is required, the application creates the following endpoints:

- A video endpoint (to handle MPEG-4, H.263, or H.264)

- An MSPP audio endpoint (for use with AMR, G.723, or G.711)

The application associates each endpoint with a corresponding ADI port and calls adiPlayMMFromMemory, adiPlayMMAsync, adiRecordMMToMemory, or adiRecordMMAsync to create the filters and initiate pass-through play or record. Refer to Video enhancements to the ADI service and Video enhancements to the MSPP service for more information.

Note: The application can synchronize audio and video streams on video I-frame detection. It can also stop the recording of audio and video streams simultaneously. See adiRecordMMToMemory or adiRecordMMAsync for more information.

## Function sequence

The following tables show a typical function sequence for an audio-pass through configuration. This sequence shows:

- Initialization

- Play operation

- Record operation

The sequence contains both video-specific and non-video-specific function calls.

### Initialization

Step | Call | Description
1 | ctaCreateQueue ( &queuehd) | Creates a CTA queue.
2 | ctaCreateContext ( &video_ctahd, queuehd) | Creates a CTA context for the video channel.
3 | ctaCreateContext ( &audio_ctahd, queuehd) | Creates a CTA context for the audio channel.
4 | ctaOpenServices ( video_ctahd, svclist, nsvcs) | Creates an ADI port for the pass-through video. The pass-through video channel consumes no DSP resources on the CG board. Therefore, the svclist parameter of ctaOpenServices must contain the following settings: Set the svclist.mvipaddr.mode parameter to 0 to prevent allocation of DSP resources for this channel on the CG board. The svclist.mvipaddr.stream and svclist.mvipaddr.timeslot parameters are not applicable when the mvipaddr.mode parameter is set to 0. Set these parameters to 0 for the pass-through video channel. The ADI service and the MSPP service are in the list of services.
5 | ctaOpenServices ( audio_ctahd, svclist, nsvcs) | Creates an ADI port for the pass-through audio. The pass-through audio channel consumes no DSP resources on the CG board. Therefore, the svclist parameter of ctaOpenServices must contain the following settings: Set the svclist.mvipaddr.mode parameter to 0. The svclist.mvipaddr.stream and svclist.mvipaddr.timeslot parameters are not applicable when the mvipaddr.mode parameter is set to 0. Set these parameters to 0. The ADI service and the MSPP service are in the list of services.
6 | mspCreateEndpoint ( video_ctahd, &video_ephd) | Creates a video RTP endpoint.
7 | mspCreateEndpoint ( audio_ctahd, &audio_ephd) | Creates an audio RTP endpoint.
8 | mspGetFilterHandle ( video_ctahd, video_ephd, &cg_video_ephd) | Translates the video MSPP ephd to a CG board ephd.
9 | mspGetFilterHandle ( audio_ctahd, audio_ephd, &cg_audio_ephd) | Translates the audio MSPP ephd to a CG board ephd.

### Play operation

Step | Call | Description
1 | adiPlayMMFromMemory ( video_ctahd, cg_video_ephd,,,,) or adiPlayMMAsync ( video_ctahd, cg_video_ephd,,,,) | Begins playing video portion of message.
2 | adiPlayMMFromMemory ( audio_ctahd, cg_audio_ephd,,,,) or adiPlayMMAsync ( audio_ctahd, cg_audio_ephd,,,,) | Begins playing audio portion of message.
3 | adiStopPlaying ( video_ctahd) | Stops playing video portion of message.
4 | adiStopPlaying ( audio_ctahd) | Stops playing audio portion of message.

### Record operation

Step | Call | Description
1 | adiRecordMMToMemory ( video_ctahd, cg_video_ephd, cg_audio_ephd) or adiRecordMMAsync ( video_ctahd, cg_video_ephd, cg_audio_ephd) | Begins recording video portion of message. The application passes both the audio board handle and the video board handle to the video record function, reflecting the inter-dependence between the audio and video streams (for example, for I-frame detection).
2 | adiRecordMMToMemory ( audio_ctahd, cg_video_ephd, cg_audio_ephd) or adiRecordMMAsync ( audio_ctahd, cg_video_ephd, cg_audio_ephd) | Begins recording audio portion of message. The application passes both the audio board handle and the video board handle to the audio record function, reflecting the inter-dependence between the audio and video streams (for example, for I-frame detection).
3 | adiStopRecording ( video_ctahd) | Stops recording video portion of message.
4 | adiStopRecording ( audio_ctahd) | Stops recording audio portion of message.