[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