Re: Virtual audio device glitches
Re: Virtual audio device glitches
- Subject: Re: Virtual audio device glitches
- From: Robert Bielik <email@hidden>
- Date: Thu, 14 Oct 2010 07:53:32 +0200
Jeff Moore skrev 2010-10-13 20:53:
My first suspicion is that this is about the erase head running too fast. A quick and dirty way to check for this would be to turn the erase head off using IOAudioEngine::setRunEraseHead() in your driver.
If this turns out to be the case, you'll want to take a look at how you have implemented IOAudioEngine::getCurrentSampleFrame() as this method controls. This is the method that controls the erase head's concept of time. You might want to take a look at the AudioReflectorDriver sample for an example of a driver implementing IOAudioEngine::getCurrentSampleFrame() to keep the erase head out of the way of things.
Thnx Jeff, I tried it out, but no change.. still there are pops/clicks every second. Problem is that since my approach is two tiered and my application resets the driver when I start the streaming, I don't know if its a problem in the driver, or in my streaming application :(
Speaking of AudioReflectorDriver (which is what I've based my implementation on), the getCurrentSampleFrame method seems to
have a bug:
UInt32 AREngine::getCurrentSampleFrame()
{
// this keeps the the erase head one full block behind
UInt32 theAnswer = mCurrentBlock * mBlockSize;
if (mCurrentBlock != 0)
{
theAnswer -= 1; <-- Will only keep erase head 1 frame behind, should be: theAnswer -= mBlockSize; (?)
}
return theAnswer;
}
Regards
/Rob
_______________________________________________
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