vat: Change History
v4.0a5 Wed Feb 7 14:39:06 PST 1996
- Incorporated third round of patches from
John Brezak
for Win95/NT port.
v4.0a4 Tue Feb 6 14:41:34 PST 1996
- Incorporated second round of patches from
John Brezak
for Win95/NT port.
v4.0a3 Tue Feb 6 02:48:49 PST 1996
- Integrated John Brezak's
port to Win95/NT! We haven't tested this code so it might
be a few more versions before it stabilizes (or even compiles
out of the box).
- Changed audio-linux.cc to audio-voxware.cc since it's used
on more than just linux systems.
- Changed audio device file names from *_audio.cc to audio-*.cc.
- Ported to SCO Unix, thanks to
Shawn McMurdo.
- Fixed bug in sitebox that was probably trashing random memory.
Fix supplied by
Koji Okamura.
- Fixed bug that caused last_sr field in RTCP sender reports to be
miscomputed. Reported by
Paul Stewart.
-
Added Vat.keepAudio resource so that vat can be configured to grab
and hold the audio on start-up. Change suggested by
Craig Votava.
-
Fixed bug in idleDropTime resource: 0 should mean "don't drop audio"
but was being interpreted as "immediately drop audio".
-
Only update window manager icon name when it changes, not on all
source activity.
-
Added rules to build tk.tcl from the tk library files so *.tcl patches
to the tk distribution would make it into vat.
v4.0a2 Mon Oct 23 21:47:44 PDT 1995
-
The linux stub for sendmsg() in net.cc was broken so linux
vat could receive but not send.
Reported by Craig Metz.
-
Don't compile strtol and strtoul under linux because they
cause the ELF linker to choke.
Reported by Craig Metz.
-
Remove vat.dyn stuff and always link dynamic unless user does
"make STATIC=-static" (or whatever).
Suggested by Craig Metz.
-
Fixed HP compilation problems:
hp_audio was broken (didn't compile) and HPUX requires include of
netdb.h in main.cc.
Reported by Andrew Swan.
-
Fixed bug where /usr/lib/libaudio.a would cause sgi_audio.o to
be used on a Solaris 2.x machine.
Reported by David Meyer.
-
Changed configure to take a -with-gsm=dir flag for locating gsm and
-with-af=dir flag for locating AudioFile. Also changed the default
gsm & AF search to include ".." and to search both with and without
the version number.
Suggested by David Meyer,
Andrew Swan,
and Andrew Cherenson.
- Fixed various portability problems found by SGI CC compiler.
Reported by Andrew Cherenson.
- CryptDull::Decrypt wouldn't work - it wasn't returning decrypted
packet length.
Reported by Andrew Cherenson.
- Fixed bug that cause vat to exit with an error when font
not found. Reported by John Cieply.
- Removed all refs to BLT since it's used by vic but not vat.
- Define Tk_Cursor if tk version < 4.1 in tkStrichart.c so things
will compile with either tk4.0 or 4.1.
- An idle mixer could cause vat to exit with a:
vat: "grayout XXX": can't read "src_name(XXX)":
no such element in array error.
v4.0a1 Sat Oct 14 22:55:37 PDT 1995
First public source-code release.
- Added Vat.recvOnly X resource (or "-R" command switch)
to prevent transmission. When set to true, the mike controls
in the user interface are disabled so the user cannot enable
the mike and transmit audio to the session.
This flag can be used by a session control tool (e.g., sd/sdr),
when a ``recvonly'' attribute is declared in the session advertisement.
- Added Vat.displayMixers so you can control whether or not mixers
that don't advertise their RTP name show up in the user list.
(In vat compat mode, vat-3 mixers will always show up due to bugs
in the old mixer code.)
- Removed support for mixing. This functionality never belonged in vat
and it should be easy to build a GUI-less audio gateway using
the new software architecture.
- [internal] Changed sitebox widget to run updates as idle tasks to
minimize screen flicker.
- Removed heuristics for generated RTP "name" and "email" strings.
Instead, the *rtpName and *rtpEmail X resources are required.
If they aren't present when vat starts, a dialog box will prompt
the user for values and place them in ~/.RTPdefaults (so they need
not be re-entered).
- Removed vt compatibility.
- Added backward compatibility with old vat protocol.
- Got rid of Vat.idleHoldTime since Vat.idleDropTime accomplished more
or less the same thing.
- Added -fsigned-char to cflags for gcc because it doesn't always used
sign extension on char's (e.g., gcc-2.6.2 on SGI). The lpc code
relies on this.
- Major changes to internal architecture based on the improved
tcl/c++ framework from vic.
- Inverted logic on mute buttons and labeled them "talk" and "listen".
- Ported to RTPv2.
- Ported to tk4.0.
- Use GNU autoconf.
v3.5 Thu Oct 5 18:23:16 PDT 1995
- Correct manual entry to replace obsolete 'Vat.speaker' example with
current "Vat.outputPort: Jack".
- 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.
- Bug fixes to make -K flag work (from Bill Fenner).
- 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. Added code to multiply to 2 (clipped) to
approximate what they should have done (clip(L+R)).
- Added Solaris version of Sun DBRI driver that uses linear input/output
rather than mulaw so noise caused by non-linear mulaw quantization doesn't
get amplified by bias shift (suggested by Steve Casner). Unfortunately
this fix doesn't work under SunOS because braindead DBRI driver doesn't
let you set audio blocksize.
- 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
.
- 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
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.
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.