v1.54beta, Tue Nov 24 06:20:23 PST 1992

 - Added IconMark X resource & associated support.  If
   "vat.IconMark" is set to some string, if sound arrives
   while the vat window is iconified, the icon name will
   be prefixed with the IconMark string.  This is intended
   to help you find which window is making noise when you
   have several vat windows active but iconified.  (Suggested
   by Robert Elz.)

v1.51/52/53beta, Fri Nov 20 04:45:06 PST 1992

 - put in workaround for 4.1.3 sun audio driver bug

 - fixed (I hope) bug that would occasionally cause core dumps
   when receiving GSM audio (core dumps received from Julian Onions
   and Robert Elz).

 - added buttons to change audio access priority (suggested by
   Robert Elz).

 - fixed bug where vat would try to grab audio device if audio packet
   arrived from a site that had been suppressed (reported by Robert
   Elz).

v1.49/50beta, Wed Nov 18 02:50:55 PST 1992

 - Made session announcement packets have same ttl as audio data packets.

 - Added 'c' ('compact sitebox') command to remove blank & grayed
   out names from the sitebox.

 - Added 'o' ('order') command to sort the sitenames into lexical order.

 - Made window name be same as conference name & added a typein box
   in the aux controls window to change the window name.

 - Fixed a null pointer bug that caused at least one core dump
   (reported by Julian Onions).

 (The 'c' & 'o' options were suggested by many people; most recently
  by Julian Onions.)


v1.47/8beta, Mon Nov 16 03:05:28 PST 1992 (pre-IETF release)

 - changed session ttl to 255 per Steve Deering's request

 - added a vt-style speakerphone mode (mike disabled if audio
   arriving from network) for ietf auditorium use. (Suggested
   by Steve Casner.)

 - fixed the way 'recent activity' markers are updated so X traffic
   wouldn't cause speech breakup with multiple talkers.  (Bug
   found & fix suggested by Steve Casner.)

 - fixed major bug in gsm reception on paths that reorder or
   significantly delay packets.  (Problem pointed out by
   Robert Elz.)

v1.46beta, Mon Nov  2 21:46:48 PST 1992

 - Fixed a stupid bug that could cause multihomed hosts to pick
   the wrong destination address (resulting in one-way communication).

v1.41/2/3/4beta, Sat Sep 19 20:35:04 PDT 1992

 - Added support for GSM coding (13Kb/s European Digital Cellular
   standard) using a very nicely written GSM libary done by Carsten
   Bormann and Jutta Degener of the Communications and Operating
   Systems Research Group (KBS) at the Technische Universitaet Berlin.

   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:
	   adb -k -w /vmunix /dev/mem
	   audio_79C30_bsize/W 0xa0
	   audio_79C30_bsize?W 0xa0
	   ^D
   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.]

 - Added optional DES encryption of audio stream.  To send & receive
   encrypted audio, place the cursor in the type-in box labeled "Key:"
   in the aux controls window and type in a key for the conference.
   (A key is an arbitrary ascii string of up to 127 characters.
   Everyone in the conference must use the same key, of course.)
   A key can also be supplied using the -K flag when you start
   vat (this is not a good idea since it will be visible to anyone
   doing a "w" or "ps").

 - Lowered default mike gain to a value more suitable for a Sun
   microphone (32 instead of 180).

 - Made "session" packets always use a multicast ttl of 127
   (make it slightly harder to eavesdrop).

 - Fixed a bug in the mike AGC (now updates only during speech).

 - Fixed a bug in audio access (IdelDropTime was defaulting to
   10 sec. instead of zero so audio got released unexpectedly).

 - Changed audio access control code to run a host without multicast
   (but, since multiple vats can't communicate, this means you have
   to pass the audio by clicking on the vat title bars.


v1.40beta, Thu Jul 30 19:28:23 PDT 1992

Added indicators to show recent talkers:  The most recent is
indicated by a black square next to the site name.  The next
most recent by a gray square & the third most recent by a smaller
gray square.  (Change suggested by Robert Elz, kre@munnari.oz.au).


v1.39beta, Tue Jul 28 22:00:25 PDT 1992

Fix a stupid coding error introduced in 1.38 that would cause
core dump if packet arrived when we didn't have audio.  Problem
identified thanks to core dump supplied by Jon Crowcroft at UCL.

Paul Traina (pst@cisco.com) pointed out that mixing still didn't
work right:  A mix host running in speakerphone mode couldn't hear
the host it was mixing for unless the mike was muted.  Redid the
mix logic yet again with no corner-cutting this time -- it seems
to work.


v1.38beta, Sat Jul 25 01:39:19 PDT 1992

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,
<dave@citi.umich.edu>.]

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.


v1.37beta, Thu Jul 23 23:35:56 PDT 1992

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.

 - Van


v1.32beta, Thu Jul 23 10:45:58 PDT 1992

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. 
