v3.5 Wed May 24 08:23:17 PDT 1995

- Include hp audio fix from Terje Vernly (terje.vernly@usit.uio.no)
  to work around HPUX kernel bug where sample rate isn't set to
  8KHz on open but is instead left at whatever last app. used.

- Fixed long standing bug that would cause coredumps on Alphas:
  we were using a u_int in an address calc where we should have
  been using an int -- lack of sign extension only showed up on
  a 64 bit machine.  Thanks to Dan Mosedale (mosedale@genome.Stanford.EDU)
  for much help in tracking this down.

- Change convention on port names so that 'p' command now works
  (bug reported by Bill Fenner).  Names now always in lower case
  & routine that uses them responsible for changing case if
  necessary.  Also added "audio input|output gain" function so
  "psetup" command could be coded in tcl rather then C.

- Many changes to support linux (most having to due with halfduplex
  audio support & a few because of gratuitous changes in things
  like 'getopt()'.

- Add code to AF input routine to estimate DC bias & remove it
  from mike signal (there seemed to be a large DC offset on
  an Alpha).

- Finally fix bug that made switching audio between vats very difficult
  if the one you were switching from had active audio.  Made audio access
  code not request for 'MinRequestTime' ticks after release otherwise
  get scheduler race where active guy does release than immediate
  request & never drops audio.

- Found that if you request mono input, SGI does (L+R)/2 on mike
  input signal.  Since SGI ships a mono mike (i.e., one channel
  is grounded & has no signal), this cuts the mike input gain
  by a factor of two.  

- Changed Sun DBRI driver to use linear input/output rather than
  mulaw so noise caused by non-linear mulaw quantization would be
  amplified by bias shift.  (suggested by Steve Casner)

- Fixed ancient bug in all the audio drivers that subtracted
  DC bias (SGI, Sun, HP) where clipping wasn't being done on
  signal after bias removal.

- Fix minor bug where external-echo-cancellor mode might not default
  correctly on jack or line-out ports.

- Make silencethresh, echothresh and echodelay tcl accessible.
  Set echothresh and echodelay more appropriately for a typical
  office.

- Added Vat.sortSites & Vat.compactSites resources.  Setting these
  to true (the default) will keep sitebox sorted and compacted,
  respectively.  Setting them "false" will prevent the auto-sort
  and/or auto-compact.

- Make check for Sun vs. BSD audio driver on sparcs more robust:
  We were saying it was Sun driver if audio open failed but that
  might happen because some other vat had audio.  Now say it's
  Sun if can open /dev/audioctl.

- got rid of mouse click handling built into sitebox & added tcl
  commands so that previous behavior could be duplicated via normal
  tk 'bind' machinery.  all sitebox commands now documented in
  comments in vat.tcl.  (changes suggested by John Wroclawski.)

- Kluge around yet more Solaris braindamage (is "Solaris braindamage"
  redundent?): "connect" on a udp socket isn't implemented in any
  useful way so "getsockname" on always returns "0" for the local
  address on a connected socket.  This could cause problems on a
  multi-homed host since we would then try to bind to the "default"
  local ip address which is usually the wrong one.

- Added yet more hacks so the name "idvi" would work for dvi2 audio
  format.

v3.4 Tue Jun 21 23:45:37 PDT 1994

- Fixed initial value of idleDropTime so that vat will drop the
  audio device when it's not using it. (Value was 0, changed to
  20 seconds - I thought I'd made this change in v3.3 but
  apparently botched it.)

- Fixed longstanding bug that caused core dumps under Solaris-2
  if you don't define Vat.sessionName and your shell doesn't
  set the USER environment variable (e.g., Solaris /bin/sh
  and /bin/ksh).  Bug report and diagnosis from Atanu Ghosh
  <A.Ghosh@cs.ucl.ac.uk>.

- Fixed (I hope) problem where hp vat would occasionally lock up.
  My guess is that scheduling delays occasionally cause us to
  get behind & the kernel audio input buffer overflows so the
  driver goes into 'pause' (a really stupid design decision
  on hp's part) and we have to manually unpause it or we get
  continuous EIO errors.

- Implement MBone ttl/bandwidth guidelines in vat encoding
  choices:  If ttl>160, pcm format is not allowed.  If ttl>192,
  pcm2 & pcm4 format not allowed.  If ttl>200, only gsm & lpc
  allowed.  (We're getting really tired of people running
  80Kb/s pcm at ttl 255.)

- Save & restore monitor gain & record/play balance setting in
  sun audio driver so that these values are local to a vat session.

- Added tcl [net localaddr] & [net localport] tcl commands to get
  local ip address & port.

- Added Vat.afSoftOuputGain and Vat.afSoftInputGain resources which
  control the software gain settings (in dB) for AudioFile when using
  hardware gain control.  (Vat queries the server to see if it can
  support hardware gain control.  If so, the mike slider controls the
  hardware gain factor and the above attributes control an additional
  software gain factor, both of which are done inside the AudioFile server.
  If the server does not support hardware gain, then the above resources
  are ignored and the slider controls the software gain level directly.)

  These resources were added because the default behavior of the
  Aj300 server results in mike levels that are too low even with
  the hardware gain maxed out.  We've found that afSoftInputGain
  set to 10 (dB) provides a good level (with our mikes).

  There seems to be a bug in the Aj300 server which causes substantial
  distortion when afSoftOuputGain is set to anything other than 0
  (the default).  At least afSoftInputGain works.

- Change tk color allocation code so that any request for a gray
  gets mapped into the closest one of the 32 grays that nv/ivs/vic
  use so that vat won't take up any extra cells in the colormap
  (colormap problems noted & alternate fix suggested by Mark Handley
  at UCL).

- Removed hack that worked around 'sticky' socket error indication
  in OSF/1.3 since OSF/2.0 seems to have fixed the kernel.

v3.3 Wed Jun  1 13:46:55 PDT 1994

- Another cut at release/hold button.  Removed the "Release" button
  since idleHoldTime is now non-zero by default so that de-selecting
  the Keep button is the same as clicking the Release button.

- Fixed LPC decoding on an SGI.

- Added support for AudioFile on SparcStations and Indigos.
  Set Vat.useAF if you want to use AudioFile instead of the
  bare audio device.  Vat.afDevice controls the AudioFile
  device number.  -U allows you to specify AudioFile from the
  command line.  If you give a number instead of a pathname,
  AudioFile is used with the device numer indicated.
  (The man page explains what -U with a pathname does.)

- Added checks for 4.4BSD multicast IP options encodings.  If the
  standard setsockopt's don't work, try the BSD numbers.  This means
  that the i386 binary should work both on systems with the standard
  encodings as well as BSD/386 v1.1 and 4.4BSD.  CSRG and BSDI changed
  the encodings to be keep binary compatibility with the IP options
  that were added in Net 2 (IP_HDRINCL, IP_TOS etc.).

- DEC Alpha and DEC mips versions now linked against Release 3 AudioFile
  server.  Vat will no longer work with the Release 2 server.

- Fixed bug that allowed only one stat window per mixer, even when there
  were multiple sources behind the mixer (bug reported by David Comay).

- Added backward compatibility for "idvi" format string, which is equivalent
  to "dvi".

- Added button to enable/disable encryption, as opposed to typeing in
  an empty key to disable it.

- Change default ttl from 127 to 16 so people who start vat manually
  don't pollute the world with their audio tests.

- Tried to make audio access stuff (keep/release/etc.) work more
  reliably but was largely stymied by tk's totally broken event
  handling.

- Keep track of incoming packet lengths so encoding doesn't
  flicker between pcm/pcm2/pcm4 when there's significant packet
  loss.  (problem first reported by Mark Handley).

v3.2 Sun Jan 16 23:18:49 PST 1994

- Removed maximum size limitation on vat window (suggested by
  Denton Gentry).

- Added time-of-day of last activity to stat window.  Update session
  name and audio format in stat window when it changes.

- Tuned sitebox drawing code so exposure events don't cause
  entire window to flicker (problem reported by Ron Frederick).

- Added a workaround for wrapping XIDs (reported by Anders Klemets).

- Documented `-u' command switch which allows you to override vat's
  built-in tcl program with your own script.  We're releasing
  the source code to vat's tcl script so you experiment with the
  user interface (i.e., fix our bugs) and use it as a reference
  when our documentation is lacking.  The preferred way to make
  customizations to the script is to override tcl procedures
  and variables with customized tcl code in $HOME/.vat.tcl.

- Append uid to audio lock file name so that different users won't
  collide with eachother.  The presumption is only one user at
  a time will try to use the audio hardware and since the lock
  files are never deleted, we make them unique.
  (suggestion from Tomi Leppikangas)

- Added `-g' command option to specify window geometry.  Replaces
  `-geometry' flag from vat-2 (which had been parsed by InterViews).
  (thanks to Atanu Ghosh)

- Changed the user interface to the audio device aquisition.  The ``Keep''
  button prevents other vats from taking the audio, and the ``Release''
  button explicitly releases the device.  The title string is shown in
  an oblique font when the audio is not held.  (These changes inspired
  by discussions with George Michaelson, Ron Frederick, and Steve Casner.)

- Fix "entry" bindings so that C-d deletes selection if it exists
  (thanks to Mark Prior).  Fix C-k to delete from cursor to end.
  Fix other miscellaneous entry problems (reported by Bill Fenner).

- Lots of good fixes suggested by Steve Casner: made stat window reliefs
  raised instead of sunken; animate mute, menu, and help buttons;
  removed "help" title from help window since it's redundant with
  the window manager's title (the vat developer's don't use window
  manager title bars and we've repeatedly made the mistake of adding
  them to the application.); shutdown gracefully when window is
  destroyed by external agent; make peak indicator in VU meter change
  color above *VatVU.hotLevel percent of full scale.  default is 90%.
  *VatVU.hot sets the color, which defaults to firebrick1;
  fixed lots of window title bugs.

- Make sure windows are mapped entirely within the screen (suggestion
  by many).

- Disable input/output port buttons when not selectable (suggestion
  from George Michaelson).

- Replace "Okay" button labels with "Dismiss" (suggestion from Piete Brooks).

- Recode sitebox drawing algorithm to work around bug in broken Parallax
  X servers that caused names to be imaged into the root window (reported
  by Steve Casner and Bill Fenner).

- Fixed bug that caused occasional core dumps when bringing up stat window
  (thanks to Piete Brooks).

- Fixed bug that caused bogus placement of popup windows with virtual
  desktops (thanks to Bruce Mah).

v3.0-3.1, Tue Jan 11 16:02:50 PST 1994

- New look to user interface; ported to tcl/tk.  The painful side effect
  is that the vat X resource names have all changed.  Tk requires them
  to have the form Vat.resource, i.e., vat must be capitalized and
  the attribute name must start with a lower case letter.  We changed
  all the old resource names from the form vat*FooBar to Vat.fooBar.
 
- Made push-to-talk mode built-in.

- Changed invocation of auxiliary control panel from clicking on bottom
  title bar, to clicking on a button labeled ``Menu''.  Added an
  ``Okay'' button to the control panel to make it go away.

- Added a help window.

- Removed the "mute both" button since it's rarely used.

- Added per-site statistics windows.  Use left-mouse button on site
  name to get popup window with packet stats.  Use shift-left-mouse
  to get permanent window with stats & stripchart.

- Added Vat.iconPrefix resource.  This string is prepended to the
  conference name and the result used as vat's icon name.  For example,
  you might set Vat.iconPrefix to ``vat:''.

- Give better error message when a multicast destination is used on
  a non-multicast capable system.

- Added a type-in box for audio device priority.

- Added AGC sliders to auxiliary controls window.

- Added a quit button.

- Make muteNewSites X resource match name in cbox (changed
  from "supressNewSites").

- Changed "-f idvi" option "-f dvi" to match name in cbox.

- Remove support for Vat.Speaker resource (per warning in v2.17beta
  change log).

- Anti-social practice of using pure whitespace for session name
  is no longer permitted.

- Removed conference title bar.  Moved audio access functionality
  to title bar at bottom of window.

v2.18-20beta, Thu Dec  9 18:45:17 PST 1993

- add support for both kinds of audio hardware on HP snakes (710's
  PSB2160 in addition to 715/735's CS4215).

- based on input from Steve Casner, tried to make Sparcstation-10
  audio a bit better:  Estimate & remove DC bias from input signals
  and reduce gain of mike signal slightly in hope that people will
  be able to run without turning on mike agc.

- "full duplex" mode got broken in last release.  It works again.
  (problem reported by Toerless Eckert)

- add support for external echo cancellers (-E flag & ExternalEchoCancel
  resource (suggestion from Steve Casner).

- add control of echo suppress deadtime (EchoSuppressTime X resource).
  changed way speakerphone modes do mute to use explicit deadtime
  rather than decay of mike's echo return signal.  (motivated by
  auditorium echo problems in "net mutes mike" mode reported by
  Ron Frederick and Mitch Collingsworth)

- fix way gains are initialized so we set gain on right port (now
  done in abox rather than in main). (problem reported by Steve
  Casner)

- fix bug in 'p' printout (printing input port names rather than
  output port names in output gain resource).  (problem reported
  by Steve Casner)

- make SuppressNewSites X resource match name in cbox (changed
  from "SuppressAll").  Make SuppressNew variable match name in cbox.
  (problem reported by George Michaelson)

- Change the way the 'inactive' timeout is computed so sites running
  a compression much lower than the conference's (e.g., lpc4 in a
  pcm conference) don't flicker between gray and black.

- Lots of changes to support hpux & hp's audio model.

- add support for audio input via Unix domain socket rather than
  /dev/audio ("-U sockname" flag).

- ignore ENOPROTOOPT errors on network sends (bug reported by
  Carl Malamud).


v2.17beta, Tue Oct 19 16:10:32 PDT 1993

 - Added support for more inputs & outputs on machines that support
   them.  On a Sparcstation-10 or SGI Indigo, clicking on the mike
   icon will toggle between mike in & line in.  On a Sparcstation-10,
   clicking on the speaker icon will toggle between speaker, headphone
   jack and line outputs.  The default input and output ports are
   set by the X resources:

       vat.InputPort:  Mike	(can be "Mike" or "Line")
       vat.OutputPort: Speaker	(can be "Speaker", "Phones" or "Line")

   (The 'OutputPort' resource supercedes the "vat.Speaker: true/false"
   resource that use to select between the speaker and headphone jack.
   For backwards compatibility, this release will still interpret
   a vat.Speaker resource and **it overrides any vat.OutputPort
   selection.**  If you have trouble setting the output port, look
   for a vat.Speaker resource in your Xdefaults & remove it.  The
   next vat release will probably remove support for vat.Speaker.)

   There are now 5 resources that set default gains for each port:

	vat.MikeGain, vat.LineinGain,
	vat.SpeakerGain, vat.JackGain, vat.LineoutGain

   For output ports there are now three resources that set the
   default `mode' (speakerphone, full duplex, etc.) when that
   port is in use:

	vat.SpeakerMode, vat.JackMode, vat.LineoutMode

   (These resources can have the values "MikeMutesNet",
   "NetMutesMike" or "FullDuplex").

 - Made the default audio format pcm2 instead of pcm to cut down on
   the average packet rate.


v2.1[56]beta, Tue Jul 27 19:32:25 PDT 1993

 - Changed default of PushToTalk from "false" to "true" since that's
   a 'safer' choice for novice users.

 - Changed right button semantics so that 'down' always means 'unmute'
   and 'up' always means 'mute' rather than up/down toggling
   current state.  Toggling isn't particularly intuitive & is
   easy to get mute in wrong state.

 - Changed names of `speakerphone' modes to match labels
   in control box.  "SpeakerPhone" is now "MikeMutesNet" and
   "VTSpeakerPhone" is now "NetMutesMike".  (problem reported
   by Greg Ryan (gregr@barossa.cs.su.oz.au)).

 - Fixed bugs in setting audio format (-f on command line): Was
   sending specified format but selection in control box was
   wrong, e.g., "pcm" when "pcm4" was selected.  (bug reported
   by Eve Schooler)

 - SGI's IRIX 5.x seems to have broken the audio access socket
   when running multiple vats.  Changed setup to set SO_REUSEPORT
   (which is hack to get around problems introduced by not having
   the real in_pcb.c fix).  (problem report by Jim Martin; fix
   suggested by Andrew Cherenson)

 - Added checkbox controls for 'Keep All Sites' (-k) option and
   'Mute New Sites' (-S) option.  Fixed 'keep sites' logic so
   control would work with clobbering SiteDropTime setting.

 - added -M (make mike start unmuted), -J (make speaker start muted)
   and "-F audiodev" (use 'audiodev' as audio device rather than
   /dev/audio).  (suggested by Ron Frederick)

 - fixed bug where site that re-used the empty slot of a site that
   had been muted came up muted.  (analyzed by Matt Crawford.)

 - fixed bug where new site inherited 'rank' of last user of empty
   slot so dislay could end up with multiple 'last speaker' marks
   only one of which was real.  (bug reported by Jim Martin & Steve
   Casner.)

 - Made bsd_audio work right for 2nd & later active vats (since
   2nd & later think they're running with sun-audio).

 - Fixed lots of bugs in sun_audio processing when multiple vat
   windows active (was I asleep when I coded this?)

 - sites were vanishing after SiteDropTime minutes even if -k (keep
   sites) specified.  Now make -k set SiteDropTime to 0 so inactive
   sites are really kept.  (problem reported by Steve Casner.)

 - Change audio device model to support totally braindead, half-duplex
   PC audio cards (like SoundBlaster).

 - Fixed bug in Interviews that was sending a truncated WM_SIZE_HINTS
   struct to X server (this may have been cause of huge windows under
   DEC window manager).  (problem reported by George Michaelson and
   Simon Coppins)

 - Added "vat.AF.blocks" resource (which defaults to 2) to try to get
   AudioFile cpu hogging down to reasonable levels.  This resource
   multiplies the vat 20ms blocksize & is the unit that AF I/O is
   done in (e.g., 2 means 40ms blocks to/from AF, 3 means 60ms blocks,
   etc.).

 - Tried to get around bugs in Ultrix scheduler that seemed to be
   triggered by 20ms timeouts when vat released audio (a vat without
   audio should have been taking ~0% of cpu & was taking ~90%).
   Changed timeout to 200ms & cpu util went to 0 as expected.

 - Gave controls window same title as main window but with a
   preceeding "@".  Made controls window pop up first time over
   vat window but, if you move it, it now stays where you put it.
   (suggested by Jim Martin & Daniel Karrenberg).

 - Made yet another try at making 'speakerphone' labels comprehensible.
   "Speakerphone (mike pri)" is now called "Mike mutes net",
   "Speakerphone (net pri)" is now called "Net mutes mike" and
   "Headphone" is now called "Full duplex".  (too many people to list
   complained about old labels)

 - Fixed interviews to color field editor typein box gray, not pink.
   (color problem reported by Ken Hayes & Ron Frederick).

 - Fixed core dump that resulted when site vanished then re-appeared
   within two audio frame times (bug found by Steve Casner).


v2.14beta, Wed Jun 30 18:48:50 PDT 1993

[First vat v2 public release (v2 based on Interviews 3.x rather than 2.6 --
 seems to fix lots of X performance problems)].

 - added PCM2, DVI2, PCM4 & DVI4 audio formats (40 & 80ms frames)
   to test whether dropping packet rate helps the IETF distribution
   more than the increased error susceptibility hurts.
   (test suggested by Paul Milazzo at BBN.)

 - Sense of 'no silence suppression' button was backwards
   (diagnosed by Jim Martin at Rutgers).

 - re-did audio class to handle problems with Sun streams audio
   driver not giving us the amount of data we requested on reads.
   (SunOS problems diagnosed by Ron Frederick at PARC)

 - Fix problem where vat 'locks up' after running continuously
   for a couple of days.  Problem was file position index on
   audio fd incrementing through sign bit which causes system
   to abort future reads & writes with EINVAL error.  Now we
   lseek to 0 on EINVAL from audio read since it probably means
   we wrapped through the sign bit in the file position.

 - Put echo-cancel button back (currently only works on DEC with Lofi
   running Steve McCanne's DSP kernel).

 - Add rover to Network::SendIDList() so all sites eventually get
   sent even if they don't all fit in one packet.

 - Added -S (suppress all new sites) flag and SuppressAll X resource.

 - Added SiteDropTime X resource that sets number of minutes until
   an inactive (grayed out) site is deleted from sitebox.  Default
   is 30 minutes.  If SiteDropTime drop time is zero, sites will
   only be deleted when a `c' command is given.

 - Made `c' command delete sites that have never sent session
   messages (ones that appear as IP numbers in the sitebox).

 - Require that both addresses be specified if mixing (-m) -- too
   many people were using -m without understanding it & cross-
   connecting some random conference with Mbone Audio.

 - Fixed bug where vat would core dump if session packet arrived
   while vat window was being mapped.  ('canvas' pointer in sitebox
   was initialized to zero.)

 - On SGIs, made volume & speaker sliders use same scaling as sliders
   on SGI's Audio Control panel.  (scaling supplied by Andrew
   Cherenson.)

 - On SGIs added high-pass filter (first order Bessel filter with ~15Hz
   passband) in audio read routine to get rid of DC bias introduced by
   mike 'phantom power' signal.  (This was screwing up vat's power
   calculations & breaking the speakerphone modes & vu meters.)
   I have some trouble understanding why SGI didn't invest the
   dime it would cost to capacitively couple the mike or put the 4
   instructions into the Indigo's DSP that it would take remove this
   DC bias.  Clearly audio is far, far down on SGI's priority list.

--------------------------------

v1.56beta, Thu Dec 17 13:48:17 PST 1992
 
 - Incorporated v1.1 idvi fixes from Jack Jansen (Jack.Jansen@cwi.nl).

 - (Hopefully) fixed bug in sitebox activity indicator that was
   causing vat to occasionally blow off with a BadGC X error.

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. 
