First public source-code release.
GSM uses 160 sample (20ms) frames. Previous versions of vat used 180 sample (22.5ms) frames but with this version we have switched to 20ms. This change doesn't affect interoperation (e.g., old vat's can talk to this one & this one can talk to them) but may require that you update a patch made to your kernel (see below). This change helps more than GSM: Since the only way to generate a 22.5ms "clock" for packet output was to use the audio input, a vat doing "mixing" had to have the audio assigned to it. This meant the mixing host couldn't run multiple vats or forward multiple conferences. Since the system can easily supply a 20ms "clock", we can now code things so a "mixing" vat can run off of either the audio or the system scheduling clock. (We haven't made this change yet but plan to in the next version.)
NOTE: This change means that you might have to change your kernel. If you are using Sun's hopeless audio driver, you already had to change the audio buffer size in your kernel from 1024 to 180 bytes to run vat. You now have to change it from 180 to 160 bytes. To do this, do the following as root:
If you do not make this change, the audio you send to other sites will sound very strange (their audio will sound fine to you). Note that if you are running the BSD audio driver (which, in spite of its name, can be used as the audio driver for SunOS 4.x) you don't need to change anything. [The BSD audio driver is available on ftp.ee.lbl.gov as file bsd_audio.tar.Z if you want to play with it.]
A "push to talk" button has been added: If the X resource
vat.PushToTalk is set to true (it defaults to false) the right
mouse button will toggle the mute state of the mike if pushed
or released in a white part of the site box. (It should work
anywhere in the vat window but InterViews 2.6 makes that hard
to do). Also, if the vat window where you push the right button
doesn't currently have the audio, it will grab the audio.
[Adding a push-to-talk was first suggested by Dave Bachmann,
Vat can now completely give up the audio (as opposed to passing it
to another vat): Just click on the title bar until it turns white.
If audio data arrives from the network, vat will automatically
try to grab the audio back. (You can prevent this automatic
grabbing by muting the speaker in this vat window.) If you set
the X resource IdleDropTime to some number, vat will automatically
drop the audio if there has been no in or out net activity for
that many seconds. (You can prevent this automatic dropping by
clicking on the title bar until it turns black -- this `pins'
the audio to a particular vat window.)
Giving up the audio on inactivity & grabbing it back on activity
is half of the additions we've made to support semi-automatic
passing of audio between multiple vat windows. The other half
is intended to control which window gets the audio when multiple
windows request it: Windows have a priority (typically set by the
X resource vat.DefaultPriority [defaults to 100] but this can be
overridden by a `-P pri' flag). If a window requests the audio
(because new network data arrived or the mike has been unmuted)
and the window currently holding the audio is either lower priority
or hasn't used audio for IdleHoldTime seconds, the audio holder
immediately gives it up. Otherwise the new window's request is
ignored. (IdleHoldTime provides hysteresis to prevent `thrashing'
when two conferences go active at about the same time; the priority
provides a way to distiguish `background' windows, say a radio
station broadcast or a `directory' window of people reachable via
vat, from `foreground' activity like a particular audio conference
so vat can make better decisions on what should get the audio.)
If all of the above sounds complicated, ignore it & don't worry.
Just start up as many vat windows in different conferences as
you want. If there's activity in some conference, it will grab
the audio and you'll hear what's being said. If you want to
talk in some conference, just unmute the mike in that window and
start talking. If vat makes the wrong decision about the audio
(e.g., there are two conferences active and it flips between them)
click on the title bar of the one you want.
[The changes to support passing & releasing the audio derived
from a series of suggestions & a very interesting conversation
between Jon Crowcroft, Ian Wakeman & Mark Handley of University
College, London.]
Note that the title bar now indicates the audio state of a window:
White No audio
Gray Unpinned audio
Black Pinned audio
And that there are five new X resoures associated with this stuff:
vat.PushToTalk: false ! if true, right mouse button does
! mike unmute/mute.
vat.AutoRaise: true ! raise window when audio is acquired
vat.IdleDropTime: 0 ! seconds we have to be idle before we'll
! release the audio (0 => never).
vat.IdleHoldTime: 10 ! seconds we have to be idle before we'll
! honor a request to give up audio.
vat.DefaultPriority: 100 ! default priority if no -P flag
Also note that INPCB.patch has been updated -- we'd made another change
to in_pcb.c that my last diff didn't pick up.
Many, many errors showed up in 1.34 when other sites tried to
run it. Some were just stupid coding on my part but several
have to do with differences between the network code we run
and the stuff that Sun ships. 1.37 tries to deal with the
differences by not letting you do things that won't work
under stock SunOS+Deering IP multicast. In particular, only
one `side conversation' window per conference can be open
at a time. Any attempt to open others will result in a
"bind: Address already in use" error & no new vat window
will be created. (You can still have multiple vat windows,
but each one has to have a unique local address and port
which is where the above restriction comes from.)
If you have source for the kernel network code (including
the multicast mods) you can apply the patch file INPCB.patch
to /sys/netinet/in_pcb.c. This will allow you to open as
many side conversation windows as you want and will make multiple
active conferences to different multicast addresses work *much*
better (the patch is upwards compatible with the earlier system,
it just removes some stupidity that prevents using the entire
address to identify a 'connection'). When Steve Deering gets
back from vacation, I'll talk to him about folding this change
into the multicast distribution on Gregorio so it will be
available to sites without source.
Vat now supports multiple vat windows, each participating in a
different conference. You control which vat window gets access to the
audio hardware (speaker & mike) by clicking on the title bar. (The
other windows will continue to highlight sites to show that data is
arriving, they just won't be able to make any noise.)
There is some support for dynamically establishing `side
conversations' with other participants in a conference: If you middle
click on some participant's name in the site box, you'll get a new vat
window that unicasts to only that participant. If they do the same on
your site name, you can have a private conversation in the new
windows.
To help sort out the multiple windows, there's now a -C flag that sets
the 'conference name' (the name displayed in the window title bar).
If you don't specify -C, the destination address and port is used.
The way you specify the destination for -m (address/port/format/ttl)
can also be used for the main conference destination. E.g.,
"vat foo/3456" rather than "vat -p 3456 foo". The -p, -f and -t
flags still work if you want to use the old form.
A major bug in `mixing' (the -m flag) was fixed: A site mixing for
some other wasn't able to hear the audio generated by that site
(anyone else could -- only the site doing the mixing was excluded).
A mixing site can now hear and talk to every one, including the site
it's mixing for.
In the rush to get a version of vat that could display more site names
for IETF, we broke the auxillary controls window. Many people have
noted that it wouldn't appear unless you resized the vat window.
We've fixed that. The fix required making the aux controls window a
completely separate window, rather than having it part of the main vat
window. This is good & bad: The vat window no longer changes size
when you open or close the aux controls but you now have to move &
iconify the two windows separately if the aux controls window is open.
Unfortuanately, the current scheme seems to be the best we can do with
the 2.6 version of InterViews we're using.
The mike and speaker AGC both seem to be working fairly well now.
They both still default to "off" since we'd like to get a bit more
experience with using them in large conferences but they will probably
default to "on" in the next version of vat. We encourage you to turn
them on and let us know if there are any problems.
You can now type 'p' in the vat window to get the current mike and
speaker gain settings printed to standard out. They are printed in a
form suitable for inclusion in your .Xdefaults file. I.e., once you
get the speaker & mike set to your taste, just type "p" and paste the
result into .Xdefaults so you won't have to ever set them again.
Henning Schulzrinne has been testing a new version of Nevot that
turned out to be a vat killer: Six different people reported vat core
dumps yesterday, all due to a bug triggered by Nevot continuously
sending a site id message immediately followed by a site done message.
This bug has been fixed.
v1.37beta Thu Jul 23 23:35:56 PDT 1992
v1.32beta Thu Jul 23 10:45:58 PDT 1992