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 theComp3to1procedure 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 theinStateparameter.numChannels- The number of channels in the buffer pointed to by the
inBufferparameter.whichChannel- The channel to compress, when
numChannelsis greater than 1. This parameter must be in the range of 1 tonumChannels.DESCRIPTION
TheComp3to1procedure compressescntsamples of sound stored in the buffer specified byinBufferand places the result in the buffer specified byoutBuffer, which must be at leastcnt/3bytes 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, ifnumChannelsis 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
whichChannelparameter. Thus, if you use theComp3to1procedure 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 theComp3to1procedure for each channel to be compressed and then interleave the compressed sound data on a packet basis.The
Comp3to1procedure 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
inStateandoutStateparameters to allow the MACE compression routines to preserve information about algorithms across calls. Alternatively, you may passNILstate buffers and let the Sound Manager allocate the buffers internally.SPECIAL CONSIDERATIONS
Because theComp3to1procedure might allocate and dispose of memory, you should not call it at interrupt time.ASSEMBLY-LANGUAGE INFORMATION
The trap macro and routine selector for theComp3to1procedure are
Trap macro Selector _SoundDispatch $00040010