How to set Sample Rate Conversion quality
How to set Sample Rate Conversion quality
- Subject: How to set Sample Rate Conversion quality
- From: tahome izwah <email@hidden>
- Date: Mon, 24 May 2010 10:59:40 +0200
Hi all,
I am using ExtAudioFile to read an AIFF file and convert it to the
sample rate of my project. This works great, but the sample rate
conversion quality is really bad. Is there a way to tell the
conversion to use the highest possible SRC quality? If so, how? Via
kExtAudioFileProperty_ConverterConfig perhaps? Is there any sample
code for this?
Thanks!
--th
Btw. This is how I set this up (sampleRate is my project sample rate)
--------------------------------------------------------------------------------------
err = AudioFileOpen(&theRef, fsRdPerm, 0, &mAfid);
if (err) {DEBUGLOG(@"!!! Error in AudioFileOpen, %d", err); return err;}
err = ExtAudioFileWrapAudioFileID(mAfid, false, &extAFRef);
if (err) {DEBUGLOG(@"!!! Error in ExtAudioFileWrapAudioFileID, %d",
err); return err;}
AudioStreamBasicDescription fileFormat;
propSize = sizeof(fileFormat);
memset(&fileFormat, 0, sizeof(AudioStreamBasicDescription));
err = ExtAudioFileGetProperty(extAFRef,
kExtAudioFileProperty_FileDataFormat, &propSize, &fileFormat);
if (err) {DEBUGLOG(@"!!! Error in ExtAudioFileGetProperty, %d",
err); return err;}
extAFRateRatio = sampleRate / fileFormat.mSampleRate;
extAFSampleRate = fileFormat.mSampleRate;
extAFFormatID = fileFormat.mFormatID;
extAFWordlength = fileFormat.mBitsPerChannel;
DEBUGLOG(@"Converting sample rate from %f to %f",
fileFormat.mSampleRate, sampleRate);
AudioStreamBasicDescription clientFormat;
propSize = sizeof(clientFormat);
memset(&clientFormat, 0, sizeof(AudioStreamBasicDescription));
clientFormat.mFormatID = kAudioFormatLinearPCM;
clientFormat.mSampleRate = sampleRate;
clientFormat.mFormatFlags = kAudioFormatFlagIsFloat |
kAudioFormatFlagIsPacked | kAudioFormatFlagsNativeEndian;
clientFormat.mChannelsPerFrame = numChannels;
clientFormat.mBitsPerChannel = sizeof(float) * 8;
clientFormat.mFramesPerPacket = 1;
clientFormat.mBytesPerFrame = clientFormat.mBitsPerChannel *
clientFormat.mChannelsPerFrame / 8;
clientFormat.mBytesPerPacket = clientFormat.mFramesPerPacket *
clientFormat.mBytesPerFrame;
clientFormat.mReserved = 0;
err = ExtAudioFileSetProperty(extAFRef,
kExtAudioFileProperty_ClientDataFormat, propSize, &clientFormat);
if (err) {DEBUGLOG(@"!!! Error in ExtAudioFileSetProperty, %d",
err); return err;}
--------------------------------------------------------------------------------------
_______________________________________________
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