AudioDeviceGetCurrentTime after headphone plug/unplug
AudioDeviceGetCurrentTime after headphone plug/unplug
- Subject: AudioDeviceGetCurrentTime after headphone plug/unplug
- From: Bjorn Roche <email@hidden>
- Date: Wed, 17 Jan 2007 10:47:38 -0500
Hey all,
I'm the CoreAudio maintainer of the PortAudio (www.portaudio.com)
portable audio I/O library. A bug in PortAudio recently came to my
attention: when you plug or unplug headphones during playback, the
timing information gets screwed up. PortAudio retrieves timing
information from CoreAudio in a variety of ways, however, the problem
in question seems to be with AudioDeviceGetCurrentTime.
Since the AudioDeviceGetCurrentTime changes when plugging/unplugging
headphones, I presume that CoreAudio considers plugging/unplugging
the headphones to be a device change, so, presumably I can monitor
for that and update my internal variables as appropriate. Short of
mutexes/spin-locks, though, it would not be possible to guarantee
that both my internal variables and AudioDeviceGetCurrentTime are
always referring to the same thing -- especially from the perspective
of other threads. I'm not sure it's a good idea to use spinlocks or
mutexes in the device-change callback, either, even if contention is
very low. So the question is: how do I provide a continuous and
accurate reflection of the current device's time, even when the
headphones are plugged/unplugged?
Sorry if I haven't explained the question adequately -- it's been a
while since I've looked at this code or even thought about these
issues, so I'm a little rusty.... any thoughts on this would be helpful.
The code in question can be viewed here:
http://www.portaudio.com/trac/browser/portaudio/branches/v19-devel/
src/hostapi/coreaudio/pa_mac_core.c
lines 1419-1458 are most relevant. (as you'll see from my comments, I
was never too sure of this stuff in the first place!)
TIA!
bjorn
-----------------------------
Bjorn Roche
XO Wave
Digital Audio Production and Post-Production Software
http://www.xowave.com
http://blog.bjornroche.com
http://myspace.com/xowave
_______________________________________________
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