vic: Change History
v2.8  Mon Jul 22 13:13:10 PDT 1996
- Fixed long standing bug where vic generated non-conformant
RTP/H.261 headers (the MBA and GOB fields were swapped).
We maintained this bug in v2.7 to avoid incompatibility
with v2.6, but added code
to handle either case.
- Added John Brezak's
patch for a hookable TkPlatformInit to overcome the fact that
under Windows you cannot override internal DLL calls.
- Ifdef out XSync calls under WIN32.
v2.7  Mon Jul 22 11:47:48 PDT 1996
- Fixed several bugs in the MME grabber: (1) bandwidth limits were
ignored by the grabber, (2) mapping of JPEG Quality slider to internal
quality setting was wrong, and (3) the YUV grabber was grabbing frames
that were 1/4 (1/2 in each direction) the requested size.
Fixes from Tom Morris.
- Fixed bug with calculation of extended highest sequence number
in reception reports.  Reported by
Bill Fenner.
v2.7b4  Wed Jun 26 17:59:49 PDT 1996
- Fixed control menu so that user cannot select a compression format
if there are no available devices.  Otherwise, a tcl error results.
Bug reported by David Rush.
- Removed load_stat class and hooks since we want to re-architect
this.  We plan to put more general hooks into vic-3.0.
- Added support for the SCC "Smart Capture Card", a PCMCIA video capture card
sold by Japan IBM.  Contributed by
Koji OKAMURA.
Koji maintains an 
SCC Driver for Linux and 
Linux vic binary w/ SCC support.
- Brought the DEC MME grabber up to date.
Tom Morris contributed
the (substantial) changes and bug fixes.
- Modified 
Connectix
QuickCam
grabber for more generic driver versus library detection by
John Bashinski.
This version works with QuickCam driver on Solaris 2.x.
Also added QuickCam GUI controls, and removed old auto-contrast system.
- Fixed bug that caused core dump for unknown visuals
Reported by Craig Votava.
- Added grabber module for PCMCIA IBM Smart Capture Card.
Works under both Linux and FreeBSD.  Contributed by
Koji OKAMURA.
- Added ability to specify default video port on a per-device
basis.  For example, you can set the Vic.defaultPort(vino)
X resource to Analog-Video-Input to cause vic to default to the
analog composite input with SGI's vino device.
- Fixed bug in session max bandwidth computation.  The heuristic
that differentiated between audio and video needed to check V(app)
rather than the sessioType resource.
Originally reported by 
Anders Klements.
- Fixed bug computing DLSR field of RTCP receiver reports.
Reported by 
Anders Klements.
- Re-named methods that were named sendmsg since some
systems re-define this identifier.
- Added hook to meteor grabber to set frame rate
so we only transfer what we need, thanks to
Jim Lowe.
- Brought up to date with IRIX-6.2, thanks to
Andrew Cherenson.
- Ported to final release versions of tcl7.5/tk4.1.  You
now need these versions or later to build.
- Fixed compilations problems under AIX, reported by
Srinivasan Seshan .
- Added Hi-Color (16-bit) renderer.
- Lots of changes for Win95 with tcl7.5/tk4.1.
v2.7b3  May 16 07:07 PDT 1996
Windows binary release.
v2.7b2  Sun Apr 21 09:58:36 PDT 1996
- Bring ultrix port up to date.
- Removed VIC.SD.TCL from distribution since sdr has obsoleted sd.
v2.7b1  Tue Apr  9 23:11:48 PDT 1996
- Added a manual page for h261_play.
- Ported to tcl7.5b3 and tk4.1b3.  You need this version or later
to build.  tcl7.5a* and tk4.1a* will not work.
- Replaced blt_table with new Tk grid geometry manager.
This eliminates all dependence on blt.
- Fixed bug that caused abort whenever a window was dismissed
that held a stream that was different from the original stream
upon creation.
Reported by Steve Casner
- Fixed uninitialized-variable bug in session.cc.
Thanks to Fred Templin.
- Catch error when trying to mtrace a source when mtrace binary
is not present.  This bug reported by many.
- Added better logic to Meteor grabber for deciding when to
use even-only field capture mode.  Patch from
Jim Lowe.
- Timestamps in rtcp messages were still wrong: the media ts
of the last packet sent was simply combined with the current ntp time
rather than being corrected for the difference between the last
send and the current time.  Fixed.
Reported by Steve Casner
- Weren't following the guidelines on sdes content of rtcp
msgs:  Are supposed to put in cname plus one other piece of
info.  Instead, were sending all info in every msg.  Changed
to follow guidelines and sequence through the available info,
one item per msg.
Reported by Steve Casner
- Removed tk.tcl from list of source files since it should
always be built from local tk library (otherwise you can end
up with a version mismatch between -ltk and the support files
built into vat/vic.
Reported by Hans Mayer
v2.7a38  Thu Mar 21 03:52:22 PST 1996
- Fixed problems in VideoPix grabber when grabbing CIF format
(h.261) from a PAL camera.  Result would be garbage and would
also trash random memory.  Problem reported by
Jan-Peter Richter
- Fixed problem in Parallax grabber where tk update call could
cause re-entrance to grabber.  Change update to "update idletasks".
Fix from Tie Liao.
- Removed old, obsolete key bindings that caused tcl background errors
when certain keys were typed into a video display window.  Bug
reported by David Hoffman.
- Fixed some problems with the Matrox Meteor grabber; in particular,
svideo input and secam format.  Also added support for the RGB
version of the Meteor.
Contributed by Jim Lowe.
- Fixed small bug in RTCP code where random offset was added
in twice (once in media_ts method and once by external
code).
Reported by Bob Olson.
- Added support for 
Connectix
QuickCam
video capture device for PC's.
Contributed by Koji OKAMURA.
Known to work with the 
linux qcam driver
and Paul Traina's driver under 
FreeBSD (which is
in FreeBSD-2.2 or later).
The configure script will compile the QuickCam
driver if /usr/local/lib/libqcam.a exists.
- Fixed bug in SLIC grabber that prevented grabber panel from
being instantiated.  Thanks to
Toerless Eckert.
- Full-size h.261 grabbing was broken if using NTSC camera with
vigrapix board.  Problem was that Phillips scalar chip can't scale
up so we'd have to grab a full frame & deinterlace to go from 240
line high NTSC to 288 line high CIF.  Since this would double amount
of I/O, instead we do same as other NTSC CIF grabbers & embed NTSC sized
image on gray CIF sized background.
Problem reported by Joe Pallas.
- cpmsg was causing a call to realloc on every packet rather
than only when the work buffer needed to be expanded.
Reported by Bob Olson.
- VIC.SD.TCL was missing from the binary distributions.
Reported by David Comay.
- Much hacking on configure scripts to deal with tk4.1/tk4.0
file name changes, need for dynamic loader with tcl7.5, blt-1.9
release, etc.
- Got ok from Sun to add grabber-rtvc.cc to source distribution.
v2.7a37  Wed Feb 15 14:39:06 PST 1996
- Incorporated fourth round of patches from 
John Brezak
for Win95/NT port.  Added README.WIN32 file containing
brief description and tcl/tk patches from John.
v2.7a36  Wed Feb  7 14:39:06 PST 1996
- Changed to use new mode in meteor driver (METEOR_GEO_YUV_422) and
allow even only fields to be captured under certain conditions.
Added FRAME_CNTS debugging option. 
Thanks to Jim Lowe.
- Incorporated third round of patches from 
John Brezak
for Win95/NT port.
v2.7a35  Wed Feb  7 02:45:10 PST 1996
- Add missing file (load_stat.h) to distribution.
v2.7a34  Tue Feb  6 14:41:34 PST 1996
- Incorporated second round of patches from 
John Brezak
for Win95/NT port.
v2.7a33  Tue Feb  6 02:59:53 PST 1996
v2.7a32  Mon Dec 11 21:40:08 PST 1995
- CIF grabber for VigraPix board was broken - it would grab
two fields instead of one which resulted in a bizarre image.
Reported by Hans Mayer.
- Allow user to set initial window geometry with a Vic.geometry
X resource.
v2.7a31  Mon Dec 4 11:35:29 PST 1995
- Fixed bug that caused exit on unknown font.
Reported by Xander Jansen.
- Fixed typo in encoder-h261.cc that prevented compilation on
32-bit little-endians.  Reported by
Jim Lowe.
v2.7a30  Sun Dec 3 22:43:14 PST 1995
- Removed a bunch of unused variables thanks to
Andrew Cherenson.
(We need to start using gcc -Wall again...)
- Added misordered packet stat (that was present in vat-3).  Change
suggested by Lee Elson.
- Patched memory leak in grabber-plx.cc thanks to
Bob Olson.
- Fixed bug where adaptive quantizer would sometimes get set to zero at
high qualities (Q less than 5).  Problem reported by
Lucia Gradinariu.
- H.261 decoder was discarding high bit of quantizer in fragmented
packets.  This would produce awful quality & horrible artifacts at Q
greater than 10.
v2.7a29  Mon Nov 13 21:50:51 PST 1995
- Fixed tcl run-time errors introduced by "still" capture device.
Reported by
David Meyer
and
Alden Jackson.
- Fixed bugs in halftoner for mono displays.  Changes from
Elan Amir.
- Fixed bug in JPEG decoder that caused core dump thanks
to Elan Amir.
- More fixes from Andrew Cherenson
for compiling with SGI's C++ compiler.  Also fixed bug that
caused tcl run-time error when trying to "optimize colormap"
when grayscale rendering active.
v2.7a28  Sun Nov 12 00:50:15 PST 1995
- Fixed bug that prevented H.261 format button from being enabled
under XIL capture.  Problem reported by 
David Meyer.
- Added support transmitting a static JPEG image from a file.
Contributed by Bob Olson.
You need to set Vic.stillGrabber to true in order
to get a still device in the Device menu-button.
When you select this device, a panel will be inserted in
the control menu to let you specify the file anme for
an RTP/JPEG type-0 frame.  This crude interface is
currently just for testing.
- Fixed compilation problems with SGI's C++ compiler.
Reported by Andrew Cherenson.
- Kevin Fall added support for ``fast Intra-H.261'' encoding using
JPEG hardware.  The idea is to use a JPEG board as a DCT engine
by Huffman decoding each JPEG MCU.  We then carry out conditional
replenishment in the DCT domain and hand the frame buffer of
DCTs to a modified H.261 encoder.  The trick is to convert 4:2:2
color decimated JPEG into 4:1:1.  This technology is described
in our 
ACM Multimedia paper.
(By default, this is currently disabled.  Enable it by setting
Vic.useJPEGforH261 to true.)
- Fixed problem with object compatibility between distributed version
of grabber-rtvc.o and newer versions of gcc.  Workaround suggested
by 
Toerless Eckert.
- Fixed bug with PAL/CIF input, reported by several testers.
16 pixels on either side of the image was incorrectly cropped.
- Added support for the Matrox Meteor Video adaptor, a PCI-based capture
board, thanks to Jim Lowe.
A driver is available (in source form) for FreeBSD.
See 
ftp://ftp.cs.uwm.edu/pub/FreeBSD/meteor*.
- Fixed bogus error message when specifying "-n atm" with a vic binary
that doesn't have compiled-in ATM support.  Bug reported by
Markus Backstrom.
- Fixed bug that caused last_sr field in RTCP sender reports to be
miscomputed.  Reported by 
Paul Stewart.
- Fixed bug where SDES "note" attribute was not displayed
next to thumbnail as intended.  Reported by 
Craig Votava.
- Fixed rate control stats (again) in transmission panel, which were
being updated incorrectly.
v2.7a27  Tue Oct 17 02:49:29 PDT 1995
- Forgot to re-configure solaris source directory, so the 
a26 solaris binary was bogus.  Re-released a26 as a27 for solaris.
(There is no change in the any source code between a26 and a27,
and thus no reason to update any of the other binaries.)
v2.7a26  Mon Oct 16 23:23:09 PDT 1995
- Fixed bug that caused bogus srcid generation on alpha (DEC's atoi
saturates it's result to 0x7fffffff so we use strtoul instead).
- Tried to make setting of q factor in cosmo grabber more robust.
- Fixed bug in external device menu button.  Instead of building selection
list when window is created, build it when menu-button is invoked so
user gets an up to date list.
- Fixed bug in jpeg decoder that caused core dumps when changing
the quality parameter.
- Added more validity checks to conference bus messages.
- Fixed bugs in compositor (which the title maker uses) introduced
by changes to CR scheme.
- Fixed rate control stats in transmission panel, which weren't
being updated.
- Added missing files to source distribution.
- Fixed bug that caused core dump in nv-compat mode.
- [internal]Factored out media-specific code from session.cc.  Ivs,
nv, and vat session handlers are all in separate modules now.  Created
separate video and audio session sub-classes since audio/video RTP
payload types are not disjoint.
- Changed multicast address of Conference Buses.  This avoids compatibility
problems with the old binary protocol, but has the disadvantage that
voice-switched windows need vat-4.0 or later.
v2.7a25  Sat Oct 14 03:38:11 PDT 1995
- Change algorithm that transforms a text string into an encryption
key.  We now use an md5 hash and the algorithm/key syntax suggested
by Mark Handley.
For example, DES1/secret-key implies the standard DES algorithm
with cipher-block chaining with key "secret-key" while
DES3/secret-key implies triple DES.  Added "DULL" encryption module
for test purposes and as an example for integrating modules.
- Fixed md5 header file (global.h) to set 32-bit typedef
appropriately for alpha; otherwise, it doesn't work correctly
(and encryption keys are synthesized incorrectly).
- [internal] Merged the Transmitter and SessionManager objects since
packet transmission depends on the session type.
- Fixed bug where parallax capture window was iconified while the grabber
was still able to send a frame.  Reported by
Joe Pallas.
- Merged patches from John Brezak
to compile again under HPUX.
- Added 
Ron Frederick's DCT extension to the nv format, which gives
improved compression at higher run-time cost.  According to Ron,
this extension will be in the forthcoming RTPv2 version of nv.
- Added check for *rtpName and *rtpEmail resources at start-up.
If they don't exist, a dialog box queries the user and stores
the new values in ~/.RTPdefaults.  This seems like a more robust
(albeit annoying) approach compared to the heuristics of used
to find a fully qualified domain name.
- Changed thumbnail to relief to ridge and highlight border when mouse
enters window to indicate that a button-click will do something.
Suggested by Elan Amir.
- Made many minor changes in order to share code between vic
and vat-4.
- Added a frame grabber for the SlicVideo SBus adaptor.
Contributed by
Toerless Eckert.
- Added a new mechanism to present grabber specific controls in
the main menu.  If a grabber wants such controls, the corresponding
tcl procedure build.grabberName should exist (and build the UI).
grabberName is the device "nickname", e.g., build.slicvideo exists
to build the SlicVideo controls.  When the user switches devices,
the corresponding control panel is automatically removed and inserted
by tcl support code.  This extension suggested by
Toerless Eckert, Joe Pallas,
and others.
- [internal] Changed SessionManager::chkdup() to match sources who never
sent data so that sites that exit abnormally don't build up source table.
- Fixed some bugs in the conditional replenishment algorithm and changed
implementation to make it more intuitive.  Encoders no longer alter the
contents of the cr vector.  Also, extended the old model from two types
of blocks to three (motion, aged, and background), with three levels
of quality.
- Enhanced H.261 encoder to do adaptive quantization.  High motion areas
are sent at low-quality (for higher update rate), ``aged'' blocks are
sent at medium-quality, and background blocks are sent slowly at
very high quality.
v2.7a24  Wed Oct  4 22:07:42 PDT 1995
- Changed behavior of user interface when RTP message attribute
is present.  Instead of highlighting info button, replace the second
line of the thumbnail description with the message.  Revert
to CNAME info when message text goes away.
Suggested by Craig Votava.
-  Fixed cosmo grabber to search through hardware inventory list
and disable selector when no device is found.  Otherwise, CL calls
caused problems.  Reported by
Craig Votava
and Hoofar Razavi.
Hoofar suggested the fix (which was to use SGI's getinvent() system call
and explicitly look for a cosmo board).
- Changed -lXext to appear before -lXvid on the link line because
parallax client library defines an XShmPutImage that doens't seem to work.
- [internal] Fixed CaptureWindow class to work in the absence of
  shared memory support.  Changed sense of xshm switch from NOSHM
  to USE_SHM because double negative was confusing.
- More fixes to configure search for X support thanks to
  Joe Pallas (Pallas@Apple.COM).
- Fixed race in window resize code.  Reported by Bob Olson (olson@mcs.anl.gov).
- Use Network::reset() hack under AIX.
v2.7a23  Tue Oct  3 02:29:36 PDT 1995
- Fixed bug that caused first value of a plotted statistic to be way too
  large so that the autoscaling left all the other data unreadable.
- [internal] Don't include osfcn.h anywhere.
- Added PAL selectors to window size menu.  Suggested by
  Toerless Eckert (Toerless.Eckert@Informatik.Uni-Erlangen.de).
- [internal] Factored out code shared among grabbers for capturing input
  video to an onscreen window.  In the new model, tcl creates the capture
  window and installs it in the grabber.  Revamped parallax and xv grabbers
  to use this approach.  Added supported to xv grabber for CIF and 411
  capture.
- Improved configure search scheme for locating X libraries and includes.
  Thanks to input from Toerless Eckert
	(Toerless.Eckert@Informatik.Uni-Erlangen.de).
- [internal] Added RGB_Converter class to be shared among grabbers that
  capture from the frame buffer in RGB format and convert to YUV.
- [internal] Removed grabber-tx.cc from distribution since it's been
  superseded by grabber-xv.cc.
- Finished implementing rtvc grabber support for listing multiple
  sunvideo devices in the device list as RTVC-0, RTVC-1, etc.
- Merged Bob Olson's patches for shared memory support under AIX.
  Fix additional problems with compilation under AIX 4.1.3 (as opposed
  to AIX 3).  Tweaked the xv grabber for AIX 4.1.3 and to compile
  without shared memory.
v2.7a22 Sat Sep 30 12:16:21 PDT 1995
- Fixed bug where failure to connect to jvdriver on decode-side resulted
  in a core dump.
- Added Vic.sdesList so you can specify which RTP SDES items you want
  to see in the info window.  Default is "cname tool email mesg".
  Also, display srcid in the info window.
- [internal] Added tcl hook so that decoder can assert that stream parameters
  have changed in a way that might affect the rendering modules.  For example,
  the RTP/JPEG type might change causing the output format to change from
  YUV-422 to YUV-411.  In this case, we might have disable hardware decoding
  (because the hardware doesn't support 411) or reallocate the software
  renderers because they depend on the decimation factor.
- [internal] Changed interface between vic and jpeg/h.261 decoders with
  respect to bookkeeping blocks that changed.  Now pass in a table
  that is filled in by the decoder, instead of using "render" call backs.
- Fixed bugs with -A.  "-A rtp" didn't work; added back "-A vic" for
  backward compatibility.  Reported by Toerless Eckert
  (Toerless.Eckert@Informatik.Uni-Erlangen).
- Added Use-Hardware button (in display panel) to control whether we
  use hardware decoding when possible.  Created Vic.useHardwareDecode
  resource to set initial disposition of Use-Hardware button.
- Removed Vic.sunvideoDevice X resource and instead look for all available
  devices at startup so they are selectable from user-interface.  (Default
  can be selected with Vic.defaultDevice, e.g., by setting it to RTVC-1.)
- Renamed "Decoder" panel "Display" and improved layout.
v2.7a21  Thu Sep 28 00:28:53 PDT 1995
- Added support for IBM's Ultimedia Video I/O Adaptor under AIX, thanks to
  Bob Olson (olson@mcs.anl.gov).
- [internal] Fixed adios() so vic gracefully exists when interrupted.
- Better handling of -with-* args to configure and a few
  more fixes for AIX from Bob Olson (olson@mcs.anl.gov).
- Fixed bugs introduced by last round of bug fixes to encryption
  key manipulations.  Reported by Craig Votava (Craig.M.Votava@att.com).
- [internal] Changed grabber/encoder API so that we can insert arbitrary
  processing modules between the capture device and the encoder.  We now
  pass around frames as typed objects to the consume() method of generic
  Module class.  Frames are self-describing so we no longer need the
  control API (e.g., setparams() and size()) between the grabber and
  encoder.  This architecture arose from discussions with Kevin Fall
  (kfall@ee.lbl.gov).
- [internal] Changed decoder/renderer API as above.
v2.7a20  Tue Sep 26 22:44:09 PDT 1995
- Fixed bugs with -K and -t (for ttl > 16) reported by Craig Votava
  (Craig.M.Votava@att.com).
- Changes to configure.  Can now specify paths to tcl,tk,blt source
  trees using -with-tcl=pathname etc.  Always use -g with gcc.
- Ported to AIX.  Patches contributed by Bob Olson (olson@mcs.anl.gov).
  Bob also supplied patches to bring linux support back in line.
- Fixed bug in net-ip.cc.  IPNetwork::open() was returning garbage.
  Fix from Bob Olson (olson@mcs.anl.gov).
v2.7a19  Tue Sep 26 14:44:19 PDT 1995
- Fixed bug that caused core dump in send_report() when device released.
- Fixed bug in parallax grabber introduced with changes from v2.7a14
  to v2.7a17.  Thanks to Jason Lee (Jason_Lee@lbl.gov).
- Added nv's halftoner to support monochrome displays.  Elan Amir
  (elan@cs.berkeley.edu) ported the nv code to vic.
- Clarified warning message printed when *rtpEmail resource not defined.
- Disabled bvc button until we get the bvc codec in better shape.
-  Changed cosmo and IndigoVideo grabbers to probe the device at 
  startup and disable their selector in the user-interface if
  not available.  Bug fix from Hoofar Razavi (hoofar@sgi.com).
- Fixed bug with switching capture devices when a device was already
  opened.  Fix from Bob Olson (olson@mcs.anl.gov).
v2.7a17 Sep 25 09:39 PST 1995
- Added support for the Parallax jpeg adaptor (both JPEG and
  standard capture are supported).  Contributed independently
  by Joe Pallas (Pallas@Apple.COM) and Sai Rathnam (rathnam@cse.ogi.edu).
- Added a "Message" form to the control window so that user's can leave
  a descriptive message on the state of the transmission (for example,
  "out of office" or "meeting resumes at 2pm").  When the message is
  present in a stream, the corresponding "info" button is highlighted,
  which invokes the info window containing the text.  (These messages
  use RTPv2 TXT SDES items.)
- Added Vic.sunvideoDevice X resource to indicate an alternative device
  to use.  Set it to a small integer n to tell vic to use device
  /dev/rtvc{n} and /dev/rtvcctl{n}.  This change suggested by Hanan Herzog.
- Added support for sending decoded video to an external (analog) output
  port under SGI VL (for example, SGI's galileo board has a composite
  output jack).
- Changed the default format to H.261.
- Added encryption hooks.  You need to obtain a DES library elsewhere
  in order to build a vic with encryption support.
- Improved statistics displays with a legend and the ability to plot
  (via a stripchart) multiple statistics simulataneously.  A stripchart
  is created in a separate window by clicking on the name of the
  desired statistic.  Added an "info" window without the clutter of
  all the stats.
- Added a "Decoder panel" to the control menu with several controls for
  manipulating vic's decode-side functionality.  You can now interactively
  select the dithering algorithm on an 8-bit display to dynamically change
  the number of colors used by vic.  For example, if you want to run a
  color-intensive application but leave vic up, you can select the "Gray"
  dithering option, run your application and when done, revert vic back to
  color dithering.  You can also adjust the gamma factor.  If you set
  the gamma factor to 1.0 and select and "ordered dither", vic will use
  the standard 5x5x5 color cube.  Since other applications use this same
  cube (e.g., wb, gs, and nv), you are less likely to run out of colors
  because of colormap conflicts.  These controls are disabled when your
  running on an 24-bit or mono display.
  With these changes, you no longer specify the dithering algorithm
  using Vic.colorModel.  Instead, you specify a visual with Vic.visual
  (i.e., truecolor, pseudocolor, etc) or with -V or -Xvisual (e.g.,
  -Xvisual=truecolor).  For 8-bit pseudcolor visuals, the default
  dithering algorithm is specified with Vic.dither (or -c, or -Xdither),
  but can be overridden in the user-interface (as explained above).
  The visual cannot be changed after startup.
- Added a "Save-CPU" toggle-button under the viewing-window "Modes" pulldown
  menu, which reduces the update rate of the window.  This allows you to
  open a local looped back window for monitoring the outbound transmission
  without incurring the cost of rendering every frame in real-time.
- Changed "for" statement conventions to adhere to the proposed ANSI
  standard change which re-defines the lexical scope semantics of the
  initializer statement as described in 
	http://www.cygnus.com/~mrs/wp-draft/stmt.html#stmt.for
  In order to be compatible with both the old and new semantics, we have
  changed all instances of
	for (int i = ... ) ...
	use(i);
  to
	int i;
	for (i = ... ) ...
	use(i);
- Ported to tk-4.0.  You'll need BLT-1.8 to build vic from source.
  An unofficial BLT-1.8 is available from http://www.cs.uoregon.edu/jhobbs/.
- Merged changes from Michael Speer (speer@eng.sun.com) to compile
  with Sun's C++ compiler.
- Deleted -r option (for RTIP) and added more generic -n option to
  specify the communications protocol underneath RTP.  "ip" (for IP
  or IP Multicast), "rtip" (for Tenet RTIP), and "atm" (for the Fore
  SPANS ATM API) are supported.
- Added Vic.defaultDevice X resource to specify initial selection
  of device when multiple devices are present.
- [internal] Migrated voice-activated switcher code from C++ to tcl.
- Added code to randomize the RTP initial sequence number and media
  timestamps to foil plaintext attacks in case encryption is used
  (as specified in the RTP spec).  Choose a heuristic random seed
  using an MD5 hash as suggested in the spec.
- Eliminated support of unidirectional RTIP connections
  (i.e., connections are now always esatblished in both directions).
- Changed VL module to query available devices and list each
  device separately in the control panel.  Also, added code to
  query the available input ports and dynamically configure the
  port menu accordingly.
- Changed RTP presentation timestamps to the 90Khz format agreed upon
  at the July 1995 Stockholm IETF.
- [internal] Fixed bug where a garbage video stream (e.g., from an
  encryped session) could cause rendering code to fault.  Problem
  is that rendering code assumes (possibly scaled) output image
  width is an integral multiple of four (which is true for the
  range of supported scales and the geometries of standard video
  streams).  Since this is a pathological condition, the fix is
  to simply disable rendering of such streams thereby avoiding
  the software fault.  In theory, non-standard video sources
  (like X screen captures) could fall into this category and
  hence appear as a "gray window".  This problem reported by
  Ian Wakeman (I.Wakeman@cs.ucl.ac.uk).
- Added support for point-to-point ATM transport via Fore's API,
  thanks to Anastasio Andrea Scalisi (scalisi@mailer.cefriel.it).
  In the process of integrating this code, reworked network object
  support so that new network abstractions can be more easily added.
  Added -n flag to specify network type.  For example, "-n ip",
  "-n atm", and "-n rtip" are currently supported (ip is the default).
- Added hack to be able to utilize two DEC JPEG boards simultaneously.
  The environment variable JVIN_PORT specifies the jvdriver port number
  to connect to for the capture board.  The decode side uses the
  default port.  This change contributed by Lance Berc (berc@pa.dec.com).
- Deal gracefully with shared memory allocation failures.  Added code
  to print out an error message and revert to non-shared buffers.
- Fixed bug in voice-switched windows where a speaker without a video
  stream would cause the window to be switched to the first thumbnail.
- Added validity check for new packet stream.  Only accept a new
  source when we've seen two in-sequence packets; suggested by
  Ian Wakeman (I.Wakeman@cs.ucl.ac.uk).  This check prevents vic
  from allocating an unbounded number of demultiplexing data structures
  when confronted by a stream of garbage (e.g., such garbage results
  when listening to an encrypted session without the key).
- Changed reception reports loss semantics to conform to 3/21/95
  RTP draft (draft-ietf-avt-rtp-07.txt) (in particular, the
  extended highest seqno received field, the loss fraction, and
  the cumulative loss fields of the reception report were updated).
- Added check for duplicate packets in common receive path so that
  they are now reported in the stats window for all compression formats.
- Added support for SGI Cosmo JPEG board.  Because this board was designed
  for non-linear video editing, it has large latencies that preclude
  good interactive operation.
- [internal] Moved code to allocate framer buffers etc., which is shared
  among all the grabber subclasses, into the grabber base class.
  Changed the way grabbers specify their attributes; they simply
  return a nested tcl list.  Reorganized all tcl-style objects
  (i.e., widgets that implement tcl commands) so that they derive from
  a shared TclObject base class.  Support hardware assisted decoding
  via new Assistor class (instead of having separate Decoder objects).
  Assistors are analogous to Renderers; the latter support software decoding.
  Revert to model where there is only one Decoder object per incoming stream.  
- [internal] Reworked the way encoders and grabbers are allocated
  to make it easier to add support for the encode-side of a new format.
  Suggested by Joe Pallas (Pallas@Apple.COM)
- Fixed bug that caused crash using DEC j300 hardware JPEG decoder.
  Problem was that default Vic.jvColors was not defined.
  Reported by Stefan Savage (savage@cs.washington.edu).
- Changed video capture modules to embed NTSC sized images into CIF sized
  frames with a gray border instead of using ugly scaling.  PAL is still
  handled the same way (i.e., 16 pixels from each line are discarded).
- Changed default position on frame rate slider from two to eight.
- Added support for native size 4:1:1 YUV grabbers
  (i.e., not just CIF dimensions).
- Added support for the VigraPix frame grabber.  Thanks to
  Steve Haehnichen (steve@vigra.com) and Vigra for the
  donation of a board.
- [internal] Changed CR to operate on 16x16 instead of 8x8 blocks.
- Changed perceptually weighted H.261 quantization.  Previous scheme
  that folded the weighting in with the DCT quantization was deficient
  because in addition to increasing the dead zone, it threw away
  bits unecessarily (and the loss of these bits was not captured
  by the h.261 entropy coder).  Instead, we now increase the dead
  zone using perceptual weighting after we do quantization.
- Fixed bug in conditional replenishment algorithm.  CR decision was
  based solely on the first 8 pixels of every block, so motion of
  small items (like pointers) left artifacts behind.  Fix was to
  advanced CR scanline pointer (as intended in the algorithm).
- Updated H.261 framing to conform to July 1995 Internet Draft "RTP payload
  format for H.261 video streams" (draft-ietf-avt-h261-01.txt).  Maintained
  backward compatibility with ivs encoder by using the RTP version number
  to imply the old encapsulation format.  Once ivs switches to RTPv2,
  we can abandon the GOB reassembly code.
- Patched memory leak in nv encoder.  Thanks to Bernd Lamparter
  (lampart@ICSI.Berkeley.EDU) and Wieland Holfelder (whd@ICSI.Berkeley.EDU).
- Fixed bug where checkXshm was not detaching the test shared-segment
  in the X server.  The X server could see two XShmAttach's with
  the same shmid (one readonly the other read/write), and the prior
  one becomes invalid.  Bug fix from Srinivasan Seshan (ss@cs.berkeley.edu).
- Added check for session packets arriving on data port.  This should
  eliminate the gray windows with fmt-0x1 and fmt-0x0 as the media type.
- Fixed bug where source sequence number was reset to 0 when changing
  the compression format.  This would cause receivers to reset their
  packet counts, which in turn, caused inconsistent reception reports.
  Problem reported by Paul Stewart (stewart@hibp6.ecse.rpi.edu).
- Shared memory with the X server now works under BSD/OS 2.0.
  Unfortunately, the BSD/OS 2.0 X server is not compiled with the
  XShm extension.  You might ask Srinivasan Seshan (ss@cs.berkeley.edu)
  for a pre-compiled XFree86 server, if you don't feel like building one
  from scratch.
- Fixed session message timestamps to conform to NTP epoch instead of
  unix 1970 epoch.  Bug reported by Bernd Deffner (deffner@fokus.gmd.de).
- [internal] Fixed bug where rtpv2 source tcl-methods were derived from
  the RTP SSRC.  This caused numerous problems when sources would come
  and go (or when SSRC's collided, which is relatively common with the
  heuristic to generate them in rtpv1 compat mode).
- Changed semantics of -u.  File argument to -u is sourced after the
  built-in tcl script.  Previously, -u completely overrided built-in
  script.
- Added code to source $HOME/.vic.tcl if it exists.  This file is sourced
  after the built-in tcl script, but before the file argument to -i.
  Suggestion from Bill Fenner (fenner@parc.xerox.com).
- [internal] adaptive load rendering
- Fixed several bugs in RTCP packets.
- [internal] Made it easier to add new decoders.  A new format can be
  supported without having to change any existing code.  Design change
  suggested by Joe Pallas (Pallas@Apple.COM).
- [internal] Established convention that all YUV image buffers are contiguous
  so that chroma offsets can be computed where needed (and only a single
  pointer need be maintained).
- [internal] Reimplemented switcher architecture in tcl and created
  generic Conference Bus object.
- Changed semantics of -u option so that file argument is sourced in
  addition to (rather than in place of) the built in tcl code.
- Incorporated Garrett Wollman's (wollman@lcs.mit.edu) patches for FreeBSD.
- Fixed some problems with the VL grabber.  Added PAL CIF support
  and code to choose from set of allowable frame rates (frame rate
  problem reported by many - thanks).  Deleted vlSelectEvents call.
  Fixes from Andrew Cherenson (arc@sgi.com).
- Converted configuration scheme to use GNU autoconf.  If you encounter
  problems running ./configure, please see if you can fix things by
  modifying configure.in and running autoconf
	  (avaialable in ftp://prep.ai.mit.edu/pub/gnu/autoconf*).
  Then, send us your fixes so vic's configure script will work out of
  the box for you in the future.
- Changed binding on pull-down menu buttons so that you can click on
  button a second time to make the menu go away.  This change suggested
  by Pat Parseghian (pep@research.att.com).
- Fixed xil grabber to conform to Solaris-2.4 API.  Problem
  reported by David Meyer (meyer@network-services.uoregon.edu)
  and Michael Mealling (Michael.Mealling@oit.gatech.edu).
- Changed Vic.defaultRate to Vic.framerate to make less ambiguous,
  and fixed explanation in man page, which was bogus.  Reported
  by Pat Parseghian (pep@research.att.com).
- Fixed bug with default format (it was never used).  Reported by
  Pat Parseghian (pep@research.att.com).
- Fixed bug where color button would get out of sync with actual color
  disposition when changing encoding formats.  Reported by Pat Parseghian
  (pep@research.att.com).
- Bring IndigoVideo module up to date.  Changes from Andrew Cherenson
  (arc@sgi.com).
- Ported to Linux, thanks to patches from Vesa Ruokonen
  (Vesa.Ruokonen@lut.fi).
v2.6beta Mon Dec  5 00:26:42 PST 1994
- Changed VIC.SD.TCL script to use ivs (instead of vic in ivs compat mode)
  by default, since ivs' rate control scheme depends on feedback reports
  that vic does not generate.
- Made H.261 decoder more robust to packet loss and reordering.
  Problem reported by terje.vernly@usit.uio.no.
 
- Upgrade release status from ALPHA to BETA.
- Incorporated John Brezak's (brezak@apollo.hp.com) changes to
  support generic Xvideo devices.  He says:
 
	- 	You need a fixed libXv.a (get the source from ftp.x.org and
	 	apply patch in grabber-xv.cc)
	
- 	Haven't implemented cif_grabber(). Maybe next week.
	
-  	There are 2 config options - XV_PSEUDO8 and XV_USES_XSHM .
		XV_PSEUDO8 is for allowing an 8bit visual to be used to
		upply a capture window for a 24bit image. HP does this.
		XV_USES_XSHM is for an Xv extension that can use the SHM
		versions of image operations. Parallax currently doesn't
		support this on HP.
 
 
- Incorporated Greg Earle's (earle@isolar.Tujunga.CA.US) and
  Paul Kranenburg's (pk@cs.few.eur.nl) (independent) patches
  for NetBSD/sparc.  
- Fixed bug that caused core dump when deleting local thumbnail.
  Report by George Michaelson (G.Michaelson@cc.uq.oz.au).
- Fixed "can't unset name_line" bug.  Reported by
  Steve Casner (casner@isi.edu) and others.
- Fixed bug that caused video capture to hang when switching input
  ports with SunVideo.  Reported by speer@eng.sun.com (Michael Speer).
- Fixed VIC.SD.TCL to generated -I options correctly for voice-switched
  operation.  Bug report and fix from a61@nikhef.nl (Herman van Dompseler).
- Arranged for viewing windows to be remapped without user placement
  at the same location and size when dismissed (suggestion from
  George Michaelson).
- Fix bug that unecessarily caused decoder data structures to be
  created and destroyed when initializing a new stream (fix from
  Bernd Lamparter (lampart@ICSI.Berkeley.EDU)).
- Fix bug that caused error message when invoking release button
  at wrong time.  Reported by a61@nikhef.nl (Herman van Dompseler).
- Fix bug that caused error message when invoking lock button
  at wrong time.  Reported by Dan Molinelli (moline@gumby.sp.TRW.COM)
  and several others.
v2.5alpha Wed Nov 30 01:41:55 PST 1994
- sd.tcl script was wrong - vj used a "switch" construct in a "case"
  command which doesn't work.  also forgot to say "global vic" before
  using $vic.
- wasn't supplying correct timestamp in session messages in nv compat
  mode so nv-3.3 would occasionally 'lock up' ignoring either session
  or data packets.  (bug reported by George Michaelson)
- made first cut at support for 32-bit visuals (e.g., parallax card).
  (problem reported by Steve Casner)
- fix long-standing bug in h261 decoding: were not swapping front & back
  buffers if only leftmost mba of gob was rendered.  (problem reported
  by Graeme Wood)
- was never using shared memory to talk to x server because of stupid
  initialization error.  (bug & fix suggested by Greg Earle)
- don't drop core in strlen() if we're given a video format we don't
  know about.
v2.4alpha (no v2.3) Tue Nov 29 04:53:15 PST 1994
(First public release)
- Added -P command line argument to force use of private colormap.
- Added the -X command line argument.  "-X resource=value" will override an
  arbitrary vic resource on the command-line.  Removed -e and -p options.
- [internal] Reworked packet demultiplexing code so that it is independent
  of vic, eventually allowing it to be shared by other applications (i.e.,
  vat, wb, etc).  The motivation is to share as much code as possible
  with vb.
- Fixed usage message.
- Added support for -o, which dumps locally sourced video to an RTP
  clip file.
- Added Vic.filterGain resource for controlling time constant on
  bit-rate, frame-rate, and loss estimators.  Default is 0.25.
- Changed menu popup to have generic layout indepedent of capture device.
  Portions of the interface are enabled or disabled by querying the device
  to see what features are supported.
- Fixed H.261 encoder to do GOB-oriented rather than frame-oriented
  fragmentation.
- [internal] Added traffic smoothing so packets are evenly spaced
  across a frame time.  This adds latency but is necessary given
  the current constraints of Internet routers.
- [internal] Do second cut on rtp/jpeg reassembly code.  This version
  does a reasonable job with misordered packets etc.
- [internal] Reorganized grabber/encoder architecture so that conditional
  replenishment algorithm is carried out by the grabber.  This saves bus
  bandwidth because blocks that are to be suppressed need not be copied
  from the grabber specific format to the format expected by vic.  If the
  capture device uses programmed I/O, there is little advantage but no
  disadvantage.  You might think this would complicate the grabbers, but
  most of the work is carried out by a generic macro.
- [internal] Converted bstrings routines to posix equivalents.
- Changed the polarity of -H, which nows means use hardware decoding
  if available.  The default is not to use hardware assist (see the
  man page for an explanation).
- Added support for error-diffusion dithering, thanks to Elan Amir.
  Error diffusion dithering is now the default rendering technique
  on 8-bit color displays.  You can revert to the ordered dithering
  technique (similar to that used in nv) by specifiying the "od"
  color model with the Vic.colorModel resource or the -c command option.
  Error-diffusion runs somewhat slower than the ordered-dither but the
  quality is higher.
  Also added support for computing statistically optimized colormaps using
  Heckbert's median cut algorithm.  You can invoke the colormap optimization
  from the "Colors" panel in the control menu.  This causes vic to compute
  a color histogram across all unmuted video streams.  The histogram is then
  passed to a separate program (vic_colord) to carry out the median cut.
  We fork off a separate process because the computation is CPU intensive
  and will block the user-interface if not run as a separate thread.
- Changed 24-bit display code to use full 24-bit precision instead
  of a 16-bit lookup table (thanks to Van Jacobson).
- [internal] Reworked the way windows are sync'd to the frame buffer.
- Use private colormap when default colormap is too full.
- Compile with gcc-2.6.0 under DEC OSF.  DEC's C++ compiler is no
  longer supported.
- [internal] Changed ppmtolut and color-lut.cc to use convention that
  grays are explicit in the stored color map.
- Added support for simple INTRA-only H.261 encoding.
- [internal] Major changes to DCT code and software decoders for
  substantial speedups.  Employ Arai, Agui, and Nakajmia's 8pt 1D DCT,
  from Fig. 4-8 Pennebaker & Mitchell (i.e., the pink JPEG book).
  By computing scaled DCTs on each of the column and row passes
  and folding the descaling step with quantization step, only five
  multiplies per 8-pt DCT are required, resulting in a 90-multiply
  8x8 DCT.  Thanks to Martin Vetterli for explaining how to do this.
- Fixed bug that caused core dump if there is no USER enviroment variable
  defined (and  Vic.sessionName is not defined).  Some shells don't define
  USER (i.e., ksh under solaris).
- [internal] Reworked speedups in software jpeg decoder.  Instead of
  caching mappings between huffman strings and decoded blocks (which
  required an infeasibly huge hash table for good quality video), we
  reduce load by skipping over any block that is sufficiently similar
  to the same block that's currently displayed.  The similarity
  comparison can be carried out cheaply in the quantized, DCT domain.
- Change thumbnail frame rate to report decoding frame rate when
  not disabled and receiving frame rate when disabled.  The decoding
  rate can be lower than the receiving rate if the local cpu can't
  keep up with the source, or if there are no active windows (besides
  the thumbnail) which means we don't have to decode every frame.
- Modified thumbnail/info window so that sites are always sorted
  in lexicographic order (by rtp NAME attribute).
- Modified thumbnail/info window to tile according to the number of
  columns specified in the "Tile..." pulldown in the Menu window.  
  The default value is 1, and can be overridden with the the Vic.tile
  resource.  You can also type a number into the thumbnail window
  as a shortcut.
- If 75dpi fonts aren't available, change all fonts to wildcard the
  pitch.
- Sourcing video from clip files is no longer supported.  This functionality
  is now provided by rtp_play.
- Added source rate statistics to transmission panel in menu window.
  This way you can monitor how fast you're sending even if the loopback
  decoding can't keep up.
- Added Vic.defaultFormat resource to set the default video transmission
  format.  If not specified the default is determined by your capture
  hardware (for example, jpeg is default if you have jpeg hardware ).
- Ported to Solaris 2.3.  Added XIL support for raw capture and JPEG, H.261
  and CellB hardware capture (the sunvideo card currently doesn't implement
  H.261).
- [internal] Generalized jpeg decoder to deal with arbitrary decoder
  parameters (and subclass special cases to optimize).  In particular,
  we can now deal with 4:1:1 jpeg, which the SunVideo produces.
- Add code to distinguish between j300 and jvideo and for the latter
  to disable non-JPEG formats and 1:1 decimation.
- Added code to receive path to always deal with RTP version 1 packets
  properly.
- [internal] Created SoftwareDecoder, PlaneDecoder, and SoftwareRenderer
  sub-classes so that a bunch of common code could be shared among the
  decoders.
- [internal] Broke out block suppression code into separate sub-class
  so it can be shared among the nv, nvm, and cellb encoders.
- Small change to architecture to cope with dynamic geometry and video
  format changes.
- Ported to DEC OSF/1 v2.0.
- Added CellB support (based on the code in nv and the RTP/CellB
  Internet Draft).  Sped up the encoder by a factor of two by
  using straight-line code instead of conditionals in the Y/Y VQ
  computation.  Changed the U/V VQ to use straight subsampling
  instead of LPF/subsampling since the chroma planes usually have
  little high frequency energy (and visual comparisons show
  negligible gain).  Sped up decoder by replacing conditionals
  with straight-line code.  But the biggest improvement was to run
  the conditional replenishment algorithm in the pixel domain instead
  of the cell domain.  There is little hope of doing good temporal
  compression on quantized values, because the quantization noise
  is approximately a random process with variance proportional to
  the quantizer step size, and this additive noise will completely
  defeat the conditional replenishment algorithm.  Running the
  differencing in the pixel domain will give much more effective
  temporal compression, which reduces network bandwidth and saves
  CPU cycles.
- Fixed bug that caused nv & ivs senders to never be deleted from
  the main window.
- Changed model so that video capture device is opened first time
  transmission is invoked, as opposed to at start-up.  Still need
  to implement device sharing as vat does with non-shareable audio
  hardware.
- Fragment JPEG streams instead of letting IP do the fragmentation.
  RTP/JPEG protocol still in limbo.
- Changed semantics for clicking on thumbnail.  If the site is already
  being displayed (in locked mode), the corresponding window is deleted.
  Otherwise, it is created as before.  This gives toggle-like behavior
  as in nv.
- Always use vanilla rtp headers instead of vic-specific packet format.
- Improvements to ordered dithering code.  Incorporated Ron Frederick's
  model from nv v3.3alpha, i.e., to fold the dither matrix into the
  color-to-pixel lookup table.  Van sped up this code by incorporating
  his hacks from the 24-bit color code.
- Improvements to user interface.  Looks more like vat now.
- Added -c to specify the color rendition technique.
  
- Added support for 24 bit displays (thanks to Van Jacobson).
- Added support for pip/tx grabber on decstations.
- [internal] Reworked grabber/encoder architecture.  Added Device class.
  Arranged for most action to be initiated via tcl "device" command.
- [internal] Reworked jv grabber so that SharedVideoImage class allocates
  the shared memory.  This means won't match the mme grabber model 
  (i.e., the mme server will do the memory allocation), but that's
  okay since the right way to handle this is derive an MmeVideoImage
  from a SharedVideoImage.
- [internal] Changed all tcl grabber hooks to use the "grabber" command.
  Subclasses can catch invocations via the virtual method
  Grabber::command(argc, argv).
  
- Changed -f to -u to be compatible with vat (since vat already used
  -f for audio format).  Changed previous -u flag to -U.  Changed
  "-e encoding" to "-f format" to be consistent with vat.
v2.2alpha Tue Nov 23 15:20:59 PST 1993
- Added support for decoding H.261 video.  (The encoder isn't implemented yet.)
- Added the -A flag.  '-A nv' for nv compatibiliry; '-A ivs' for ivs 
  compatilibility.  Took away '-n'.
- Fixed bug introduced in 2.1a that caused core dump on window resize.
v2.1alpha Tue Nov 9 14:52:59 PST 1993
- Fixed bug that caused sparc-10 core dumps during xunet conference.
- Default JPEG decoder to color output instead of gray scale.
- Allow control window to be vertically resized.
- Fixed conference title bug.  Default addr/port version wasn't displayed.
- Fixed bug that caused 12 bytes of garbage at front of nv packets.
- Fixes to compile with gcc under DEC/OSF.
- Update to tcl7.1/tk3.4.
- First cut at man page; needs much more work.
- Eliminate chud at bottom of J-Video windows that are 232 pixels
  high instead of 240.
v2.0alpha Tue Oct 19 17:48:26 PDT 1993
- Initial alpha binary release to xunet sites.
[Return to main vic page]