I am looking at the iPhone aurioTouch example specifically on the following code:
static OSStatus PerformThru(
void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{ aurioTouchAppDelegate *THIS = (aurioTouchAppDelegate *)inRefCon; OSStatus err = AudioUnitRender(THIS->rioUnit, ioActionFlags, inTimeStamp, 1, inNumberFrames, ioData); if (err) { printf("PerformThru: error %d\n", (int)err); return err; }
**// Remove DC component**
for(UInt32 i = 0; i < ioData->mNumberBuffers; ++i)
THIS->dcFilter[i].InplaceFilter((SInt32*)(ioData->mBuffers[i].mData), inNumberFrames, 1);
...
Beginner question: What does the "Remove DC component" do? Any pointer to tutorial article about it is appreciated.
Thanks in advance for your help.