Re: CoreAudio on macintel no Sound...
Re: CoreAudio on macintel no Sound...
- Subject: Re: CoreAudio on macintel no Sound...
- From: Brad Ford <email@hidden>
- Date: Mon, 25 Sep 2006 09:30:46 -0700
The code I included tells the SoundConverter that your SOURCE format
is Little Endian Float32. If you're going TO Little Endian Float32,
then you just need to change "siDecompressionParams" in the sample
below to "siCompressionParams".
-Brad Ford
QuickTime Engineering
On Sep 23, 2006, at 9:40 AM, Marc Van Olmen wrote:
On 21 Sep 2006, at 13:03, Brad Ford wrote:
No. SoundConverter can do little endian floats as well, but you
have to set up your siDecompression/siCompressionParams
correctly. There's a little extension that tells whether the
floats are big or little endian:
// add the extension that says "it's little endian".
Handle extension = NULL;
AudioFormatAtom formatData = {0};
AudioEndianAtom endianData = {0};
AudioTerminatorAtom terminatorData = {0};
formatData.size = EndianU32_NtoB(sizeof(AudioFormatAtom));
formatData.atomType = EndianU32_NtoB(kAudioFormatAtomType);
formatData.format = EndianU32_NtoB('fl32');
err = PtrToHand(&formatData, &extension, sizeof
(AudioFormatAtom));
if (err)
goto bail;
endianData.size = EndianU32_NtoB(sizeof(AudioEndianAtom));
endianData.atomType = EndianU32_NtoB(kAudioEndianAtomType);
endianData.littleEndian = EndianU16_NtoB(1);
err = PtrAndHand(&endianData, extension, sizeof
(AudioEndianAtom));
if (err)
goto bail;
terminatorData.size = EndianU32_NtoB(sizeof
(AudioTerminatorAtom));
terminatorData.atomType = EndianU32_NtoB
(kAudioTerminatorAtomType);
err = PtrAndHand(&terminatorData, extension, sizeof
(AudioTerminatorAtom));
if (err)
goto bail;
SoundConverterSetInfo(soundConverterInstance,
siDecompressionParams, *extension);
DisposeHandle(extension);
In the end this didn't work because SoundConverterSetInfo returned
error -231 (siUnknownInfoType) I was testing on DV audio
so I did the following: because the decompressed samples are being
send to coreAudio for output.
typedef UInt32 My_Float32;
My_Float32 * aDataPtr_left = NULL;
My_Float32 * aDataPtr_right = NULL;
My_Float32 * aReadPointer;
for (i=0;i<aFloatCount;i++) {
*aDataPtr_left++ = CFSwapInt32BigToHost(aReadPointer[0]); //
*aDataPtr_right++ = CFSwapInt32BigToHost(aReadPointer[1]);
aReadPointer += 2;
}
The one caveat in all this is that SoundManager is deprecated and
you should move over to CoreAudio asap.
I know I know:-) just need to find 2-3 weeks of time etc...because
need to support DV etc... will do it soon promised:-)
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden