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, .] 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.