Re: render callback timing
Re: render callback timing
- Subject: Re: render callback timing
- From: Doug Wyatt <email@hidden>
- Date: Fri, 5 Mar 2004 16:10:42 -0800
On Mar 5, 2004, at 15:32, Jeff Moore wrote:
One thing that occurred to me is that AUHAL doesn't directly pass the
HAL's time stamps to it's clients. Instead, it passes time stamps that
have been massaged so that they get zeroed when things are started.
I'm not entirely clear on what AUHAL is doing to the time stamps, so
perhaps Doug could provide a clearer picture of how the time stamps
you see in the render callbacks of AUHAL relates to the time stamps
the HAL passes to AUHAL's IOProc.
In the simplest case, for output, AUHAL just propagates the HAL's
output timestamp (not the input time, not the "now" time).
If there is a sample rate conversion occuring in the output unit, it
manufactures a new sample timestamp based on the client's sample rate.
If a discontinuity in the timestamps coming from the HAL occurs --
which can happen if there's a major engine change or overload -- then
the output unit uses the host times and rate scalar in its most recent
HAL timestamps to interpolate a new sample time.
All of this also applies to AUConverter units.
At one point (10.1 through 10.2 if memory serves) AUHAL was offseting
the HAL's sample timestamps so that they started at 0, but it doesn't
do that any more.
But because of the potential for sample time moving at a completely
different rate in the presence of a rate conversion, and the
possibility of re-interpolation, it wouldn't be wise to assume a
constant relationship between the HAL's sample times and the ones you
see as a client of AUHAL.
Doug
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.