~vcs-imports/shtoom/main

« back to all changes in this revision

Viewing changes to shtoom/nat.py

  • Committer: anthony
  • Date: 2005-03-31 14:37:57 UTC
  • Revision ID: Arch-1:shtoom@bazaar.ubuntu.com%shtoom--trunk--0--patch-981
* ALSA handles stereo-only devices now
* 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.)
* Plays ringing sounds for inbound and outbound ringing sounds
* New audio_device option for selecting a different ALSA or OSS device
* New playout algorithm

Show diffs side-by-side

added added

removed removed

Lines of Context:
66
66
    _cacheresult(None)
67
67
 
68
68
def _getLocalIPAddress():
69
 
    # So much pain. Don't even bother with 
 
69
    # So much pain. Don't even bother with
70
70
    # socket.gethostbyname(socket.gethostname()) - the number of ways this
71
71
    # is broken is beyond belief.
72
72
    from twisted.internet import reactor
116
116
 
117
117
 
118
118
def _getLocalIPAddressViaMulticast():
119
 
    # We listen on a new multicast address (using UPnP group, and 
120
 
    # a random port) and send out a packet to that address - we get 
121
 
    # our own packet back and get the address from it. 
 
119
    # We listen on a new multicast address (using UPnP group, and
 
120
    # a random port) and send out a packet to that address - we get
 
121
    # our own packet back and get the address from it.
122
122
    from twisted.internet import reactor
123
123
    from twisted.internet.interfaces import IReactorMulticast
124
124
    try:
250
250
        cd = self._mapped[port]
251
251
        self._mapped[port] = (locIP, port.getHost().port)
252
252
        cd.callback(self._mapped[port])
253
 
        
 
253
 
254
254
    def info(self, port):
255
255
        "See shtoom.interfaces.NATMapper.info"
256
256
        if port in self._mapped:
272
272
    if _cached_nullmapper is None:
273
273
        _cached_nullmapper = NullMapper()
274
274
    return _cached_nullmapper
275
 
        
 
275
 
276
276
 
277
277
 
278
278
if __name__ == "__main__":