Mac OS Sound
| Previous | Chapter Contents | Chapter Top | Next |
Important: Sound Input Manager 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.
The following is an example of how to use the sound conversion architecture to convert a buffer of silence to IMA 4:1, changing the sampling rate in the process.
enum {
kTargetBytes = 20 * 1024
};
void main(void)
{
SoundConverter sc;
SoundComponentData inputFormat, outputFormat;
unsigned long inputFrames, inputBytes;
unsigned long outputFrames, outputBytes;
Ptr inputPtr, outputPtr;
OSErr err;
inputFormat.flags = 0;
inputFormat.format = kOffsetBinary;
inputFormat.numChannels = 1;
inputFormat.sampleSize = 8;
inputFormat.sampleRate = rate22050hz;
inputFormat.sampleCount = 0;
inputFormat.buffer = nil;
inputFormat.reserved = 0;
outputFormat.flags = 0;
outputFormat.format = kIMA4SubType;
outputFormat.numChannels = 1;
outputFormat.sampleSize = 16;
outputFormat.sampleRate = rate44100hz;
outputFormat.sampleCount = 0;
outputFormat.buffer = nil;
outputFormat.reserved = 0;
err = SoundConverterOpen(&inputFormat, &outputFormat, &sc);
if (err != noErr)
DebugStr("\pOpen failed");
err = SoundConverterGetBufferSizes(sc, kTargetBytes,
&inputFrames, &inputBytes, &outputBytes);
if (err != noErr)
DebugStr("\pGetBufferSizes failed");
inputPtr = NewPtrClear(inputBytes);
outputPtr = NewPtrClear(outputBytes);
// fill input buffer with 8-bit silence
{
int i;
Ptr dp = inputPtr;
for (i = 0; i < inputBytes; i++)
*dp++ = 0x80;
}
err = SoundConverterBeginConversion(sc);
if (err != noErr)
DebugStr("\pBegin Conversion failed");
err = SoundConverterConvertBuffer(sc, inputPtr, inputFrames,
outputPtr, &outputFrames, &outputBytes);
if (err != noErr)
DebugStr("\pConversion failed");
err = SoundConverterEndConversion(sc,
outputPtr,&outputFrames, &outputBytes);
if (err != noErr)
DebugStr("\pEnd Conversion failed");
err = SoundConverterClose(sc);
if (err != noErr)
DebugStr("\pClose failed");
}
Mac OS Sound
| Previous | Chapter Contents | Chapter Top | Next |
Important: Sound Input Manager 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.