afInitCompression(3dm) afInitCompression(3dm) NAME afInitCompression, afInitCompressionParams, afAware - configure the audio compression type and parameters in an AFfilesetup structure for an audio track SYNOPSIS #include <dmedia/audiofile.h> void afInitCompression(AFfilesetup setup, int track, int compression) void afInitCompressionParams(AFfilesetup setup, int track, int compression, AUpvlist pvlist, int numitems) PARAMETER setup is an AFfilesetup structure, previously created by a call to afNewFileSetup(3dm). track is a positive integer which identifies an audio track in a file configuration. Since all currently supported file formats contain one audio track per file, the constant value AF_DEFAULT_TRACK should always be used here. compression is a positive integer symbolic constant which indicates the type of audio compression for the audio track. pvlist is an AUpvlist structure, previously created by a call to AUpvnew(3dm), initialized with parameters, parameter types, and parameter values using AUpvsetparam(3dm), AUpvsetvaltype(3dm), and AUpvsetval(3dm). numitems is the number of valid entries in the pvlist as set via AUpvnew(3dm). DESCRIPTION afInitCompression() and afInitCompressionParams() allows you to configure audio tracks for compressed data. afInitCompression() allows a one-parameter compression scheme to set up a default codec configuration with a set of default compression parameters. afInitCompressionParams() allows not only the choice of codec, but also for a list of codec specific compression parameters to be set. afInitCompressionParams() is now obsolete, having been replaced by afInitFormatParams(3dm). It exists only for backwards compatibility. The only compression schemes which have parameters handled via afInitCompressionParams() are MPEG1 and the Aware, Inc. MultiRate. All other compression schemes which have parameters must be handled via DMparams(3dm) using afInitFormatParams(3dm). Fifteen values for compression may currently be passed to afInitCompression() or afInitCompressionParams() AF_COMPRESSION_NONE no compression AF_COMPRESSION_G711_ULAW 64kbps CCITT G.711 ulaw encoding, 8 kHz 16-bit AF_COMPRESSION_G711_ALAW 64 kbps CCITT G.711 alaw encoding, 8kHz 16-bit AF_COMPRESSION_G722 64 kbps CCITT G.722 ADPCM, 16 kHz 16-bit AF_COMPRESSION_G726 16, 24, 32, or 40 kbps CCITT G.726 ADPCM, 8 kHz 16-bit AF_COMPRESSION_G728 16 kbps CCITT G.728 ADPCM, 8 kHz 16-bit AF_COMPRESSION_GSM 13 kbps European GSM 06.10 encoding, 8 kHz 16-bit AF_COMPRESSION_DVI_AUDIO 32 kbps DVI ADPCM, 8 kHz 16-bit AF_COMPRESSION_FS1016 48, 72, or 96 kbps US Federal Standard 1016 CELP, 8 kHz, 16-bit AF_COMPRESSION_MPEG1 ISO/MPEG-1 Layers I and II. Equivalent to AF_COMPRESSION_DEFAULT_MPEG_II. AF_COMPRESSION_AWARE_MULTIRATE Aware, Inc's MultiRate I near-lossless or lossless algorithm. Equivalent to AF_COMPRESSION_AWARE_DEFAULT_MULTIRATE. AF_COMPRESSION_DEFAULT_MPEG_I ISO/MPEG-1-audio layer I, joint-stereo, fixed rate at 192 Kbps/channel AF_COMPRESSION_DEFAULT_MPEG_II ISO/MPEG-1-audio layer II, joint-stereo, fixed rate at 128 Kbps/channel AF_COMPRESSION_AWARE_DEFAULT_MULTIRATE Aware, Inc. MultiRate I operating in near- lossless mode. AF_COMPRESSION_AWARE_DEFAULT_LOSSLESS Aware, Inc. MultiRate I operating in lossless mode. For afInitCompressionParams(), the parameters and values passed in pvlist should be taken from the following. Parameter type is AU_PVTYPE_LONG unless otherwise noted. AF_MPEG_PARAM_LAYER selects which MPEG layer: AF_MPEG_LAYER_I AF_MPEG_LAYER_II (default) AF_MPEG_PARAM_CHANNEL_POLICY / AF_AWARE_PARAM_CHANNEL_POLICY chooses how multiple channels should be treated: AF_MPEG_STEREO / AF_AWARE_STEREO indicates that the channels are part of a single multi-channel signal. This includes 4-channel, etc.; AF_MPEG_JOINT_STEREO (default) indicates that the algorithm may attempt to exploit redundancy between channels for greater coding gain; Not valid for MultiRate. AF_MPEG_INDEPENDENT / AF_AWARE_INDEPENDENT indicates that the separate channels are unrelated and should be processed separately, such as multi-lingual sound tracks. Note that all of these settings are equivalent for single channel input. AF_MPEG_PARAM_BITRATE_TARGET (not for Aware MultiRate) specifies the desired bitrate for all channels of compressed data, in bits per second. Note that for some schemes such as MPEG's maxrate (not implemented) this is treated as an upper limit, whereas for MPEG's fixrate, this is strictly achieved as a constant rate. The following is a list of valid bitrates for MPEG. Layer 1: 32000, 64000, 96000, 128000, 160000, 192000, 224000, 256000, 288000, 320000, 352000, 384000, 416000, and 448000. Layer 2: 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000, and 384000. Default value is 192 kbps / channel for layer 1 and 128 kbps / channel for layer 2. AF_MPEG_PARAM_BITRATE_POLICY / AF_AWARE_PARAM_BITRATE_POLICY Provides for different modes of bit assignment: The valid values depend on the algorithm, as indicated below. AF_MPEG_PARAM_BITRATE_POLICY (SGI MPEG): AF_MPEG_FIXED_RATE (default) Fixed bitrate per second. The Compression ratio is determined by value of AF_MPEG_PARAM_BITRATE_TARGET. AF_MPEG_CONST_QUAL Bitrate is driven by the psychoacoustic model. Enough bits are assigned so that a constant Mask to Noise ratio is attained. See AF_MPEG_PARAM_CONST_QUAL_NMR. AF_AWARE_PARAM_BITRATE_POLICY (Aware MultiRate): AF_AWARE_CONST_QUAL Enough bits are assigned so that the signal is 90+ dB above the quantization noise. Compression ratios are typically between 2.5:1 and 4:1. AF_AWARE_LOSSLESS Enough bits are assigned to provide for perfect reconstruction. Compression ratios are typically between 2:1 and 3:1. AF_MPEG_PARAM_CONST_QUAL_NMR (not for Aware MultiRate) For SGI MPEG with AF_AWARE_CONST_QUAL, sets the constant quality mode noise-to-mask ratio in dB. Zero yields a theoretic psychoacoustic imperceptible compression. Positive values provide more compression and noise becomes audible. Negative values cause less compression and less perceptible noise. The type of value of this parameter is AU_PVTYPE_DOUBLE. All compression encoding is handled automatically by afWriteFrames(3dm). An application program only needs to work with linear PCM data. AIFF files do not support compression, so the configuration parameter compression will be ignored by afOpenFile(3dm), and the value AF_COMPRESSION_NONE will automatically be associated with the audio data. VALID INPUT AUDIO DATA FORMATS Many compression schemes have restrictions on sampling rates and channel counts: Sampling rates for MPEG must be 32 kHz, 44.1 kHz, or 48 kHz. Sampling rates for MultiRate must be 8 kHz, 11.025 kHz, 16 kHz, 22.05 kHz, 32 kHz, 44.1 kHz, or 48 kHz. Both MPEG and MultiRate must have 1- or 2-channel input. G728 and GSM compression must always be 8 kHz sampling rate. G726, G728, and GSM compression must have 1-channel input. CAVEATS The Audio File Library will continue to support additional file formats and compression types. Be aware of this. Not all file formats are able to store audio data with all of the supported compression types. For example, AIFF-C can store compressed data whereas AIFF can't. See afGetCompression(3dm) for more information. SEE ALSO afNewFileSetup(3dm), afOpenFile(3dm), afWriteFrames(3dm), afGetCompression(3dm), AwareIntro(3dm), afInitFormatParams(3dm) Page 5