[Shtoom] new microphone code works
Zooko O'Whielacronx
zooko at zooko.com
Mon Feb 28 19:41:21 CET 2005
The last big patch is named "rewrite of the microphone -> encoder ->
RTPstream channel":
https://24.222.185.250:19144/cgi-bin/darcs.cgi/sh/?c=patches
If you click on its name on that page, you'll see this verbose log
entry:
* Microphone samples are asynchronously pushed up by the lower layers
rather than being polled by the upper layers. On Mac, the
high-precision realtime thread is used to push microphone samples.
This fixes a bug with short reads and a bug with inaccurate polling.
On ALSA, there is a LoopingCall in the ALSA driver that polls at an
appropriate interval.
* The encoder base class has a buffer to store up the appropriate
bytes of microphone data to make up a media frame. This buffer gets
flushed when the audio device closes or reopens.
* The audio device gets closed and reopened during important state
transitions, namely call start and call end. This fixes the "That
jerk!" bug, in which you could say "I have to call that jerk!"
immediately before a call connected and then the jerk in question would
hear you say it when he answered.
* Remove some extremely detailed diags that measured the number of
packets sent per second and the number of packets received per second.
Those diags have served well and are now retired.
* The Mac audio loopback test is rewritten, and a bug involving
closing the loopback test versus closing a phone call is fixed.
* The discovery/selection of the appropriate audio device is done
before the construction of the Phone object. This makes the other
platforms' initialization process parallel to the Mac initialization
process, and also I prefer this approach. (The other approach is that
you construct the Phone object and then it discovers/selects the audio
device itself.)
With this patch, Shtoom passes all unit tests, and the audio it sends
from a Mac sounds much better. Also, as described in the verbose log
entry, this patch fixes a bug in which buffered audio got sent at the
wrong time...
Unfortunately, this patch breaks all audio devices that aren't the Mac
audio device or the ALSA audio device.
I will willingly help convert other audio device objects to this new
scheme.
Regards,
Zooko
More information about the Shtoom
mailing list