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:

	o You need a fixed libXv.a (get the source from ftp.x.org and
	  apply patch in grabber-xv.cc)

	o Haven't implemented cif_grabber(). Maybe next week.

	o There are 2 config options - XV_PSEUDO8 and XV_USES_XSHM .
	  XV_PSEUDO8 is for allowing an 8bit visual to be used to
	  supply 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 hand 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 that 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.


First public release:
v2.4alpha (no v2.3) Tue Nov 29 04:53:15 PST 1994

- 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.  XXX

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

