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]