Previous Book Contents Book Index Next

Inside Macintosh: Sound /
Chapter 2 - Sound Manager / Sound Manager Reference
Sound Manager Routines / Compressing and Expanding Audio Data


Legacy Documentclose button

Important: Inside Macintosh: Sound is deprecated as of Mac OS X v10.5. For new audio development in Mac OS X, use Core Audio. See the Audio page in the ADC Reference Library.

Comp3to1

You can use the Comp3to1 procedure to compress sound data at a ratio of 3:1.

PROCEDURE Comp3to1 (inBuffer: Ptr; outBuffer: Ptr; cnt: LongInt;
                     inState: Ptr; outState: Ptr; 
                     numChannels: LongInt; whichChannel: LongInt);
inBuffer
A pointer to a buffer of samples to be compressed.
outBuffer
A pointer to a buffer where the samples are to be written.
cnt
The number of samples to compress.
inState
A pointer to a 128-byte buffer from which the input state of the algorithm is read, or NIL. To initialize the algorithm, this buffer should be filled with zeros.
outState
A pointer to a 128-byte buffer to which the output state of the algorithm is written, or NIL. This buffer might be the same as that specified by the inState parameter.
numChannels
The number of channels in the buffer pointed to by the inBuffer parameter.
whichChannel
The channel to compress, when numChannels is greater than 1. This parameter must be in the range of 1 to numChannels.
DESCRIPTION
The Comp3to1 procedure compresses cnt samples of sound stored in the buffer specified by inBuffer and places the result in the buffer specified by outBuffer, which must be at least cnt/3 bytes in size. The original samples can be monophonic or include multiple channels of sound, but they must be in 8-bit offset binary format. Also, if numChannels is greater than 1, then the noncompressed sound must be stored in interleaved format on a sample basis.

If you compress polyphonic sound, you retain only one channel of sound, which you specify in the whichChannel parameter. Thus, if you use the Comp3to1 procedure to compress three-channel sound, you will have effectively compressed the sound to one-ninth its original size in bytes. To retain multiple channels of sound after compression, you must call the Comp3to1 procedure for each channel to be compressed and then interleave the compressed sound data on a packet basis.

The Comp3to1 procedure compresses every 48 bytes of sound data to exactly 16 bytes of compressed sound data and compresses remaining bytes to no more than one-third the original size.

You can use the inState and outState parameters to allow the MACE compression routines to preserve information about algorithms across calls. Alternatively, you may pass NIL state buffers and let the Sound Manager allocate the buffers internally.

SPECIAL CONSIDERATIONS
Because the Comp3to1 procedure might allocate and dispose of memory, you should not call it at interrupt time.

ASSEMBLY-LANGUAGE INFORMATION
The trap macro and routine selector for the Comp3to1 procedure are
Trap macroSelector
_SoundDispatch$00040010


Previous Book Contents Book Index Next

© Apple Computer, Inc.
2 JUL 1996