/**************************************************************************\
*          Copyright (c) 1995 INRIA Sophia Antipolis, FRANCE.              *
*                                                                          *
* Permission to use, copy, modify, and distribute this material for any    *
* purpose and without fee is hereby granted, provided that the above       *
* copyright notice and this permission notice appear in all copies.        *
* WE MAKE NO REPRESENTATIONS ABOUT THE ACCURACY OR SUITABILITY OF THIS     *
* MATERIAL FOR ANY PURPOSE.  IT IS PROVIDED "AS IS", WITHOUT ANY EXPRESS   *
* OR IMPLIED WARRANTIES.                                                   *
\**************************************************************************/

I. INTRODUCTION

The INRIA VIDEOCONFERENCING SYSTEM (IVS) includes audio and video software 
codecs and runs in a "standard" environment, under UNIX, X-WINDOWS and the 
Athena toolkit. An update description of ivs is available on the following
Web page at URL: <http://www.inria.fr/rodeo/ivs.html>.
See also the manual pages included in the ivs package.

If you ftp & use this package, you can send your comments to me. If you want
to be informed on new releases of ivs, you may want to be added to the
ivs-users mailing list. In this case, just send a suscribe message to 
ivs-users-request@sophia.inria.fr. 

Thierry Turletti                            e-mail  : turletti@sophia.inria.fr
Project RODEO                               ivs-site: jerry.inria.fr
INRIA Sophia Antipolis
2004 route des Lucioles, BP 93, 06902 Sophia Antipolis -- FRANCE


II. TESTING IVS

If you want to change default parameters, you can set the XENVIRONMENT 
variable to your ivs.ad file or add these parameters to your .Xdefaults.
Check also if your DISPLAY variable is correctly set.

Then, run ivs with the appropriate parameters. Here are a couple
of examples:

ivs -t 32, with the multicast option and ttl=32

ivs jerry.inria.fr with unicast option.

Run also the ivs daemon ivsd& if you want to accept ivs calls.

III. LIST OF CHANGES

IVS version 3.5 (95/5/19)

* This version is compatible with version 3.4. It still uses the RTPv1
  version and the old version of the ``Packetization of H.261 video
  streams'' draft (Dec. 10th 1993). The new version of IVS under RTPv2 
  which implements the new packetization scheme is a bit delayed (expected
  by end of June).

* Added support for the VigraPix board on SUN platforms. Information on
  this performant and cheap board is available on the following Web page:
  <http://www.vigra.com/vigrapix/>.
  
* Added support for the ScreenMachine II board on Linux platforms. Support
  done by Frank Mueller <nig@nig.rhoen.de>

* Added the -ni <network interface> option to select a specific network
  interface rather than the default interface. (for platforms with several
  network interfaces).

* Fixed several bugs. Main bugs are listed below

  - To limit packet loss at the receiving side, a connect() to the video
    sender has been added. In this way, all packets by video decoder processes
    are useful.

  - On SGI platforms, ivs crashed when there is no board available. Added the
    video input port selection in the Indy platform.

  - On SGI platforms, ivs_replay did not initialize the audio device.

  - The XShm functions were never used.

  - Removed a bug in the quantization function.

  - Sometimes the audio receiver slowed down interactivity of the user
    interface. 

Many thanks to the following people who helped with the release of this
new version:

  Greg Earle <earle@isolar.Tujunga.CA.US> (SUN/NetBSD version)
  Frank Mueller <nig@nig.rhoen.de> (Linux/SM II platform)
  Lei Wang <wang@rus.uni-stuttgart.de> (SGI platform) 
  Andrzej Wozniak <wozniak@inria.fr> (SunOS/Parallax platform)

-----------------------------------------------------------------------------
Version 3.4 (95/2/23)

* This version is compatible with version 3.3. It still uses the RTPv1
  version and the old version of the ``Packetization of H.261 video
  streams'' draft (Dec. 10th   1993). We expect to release a new version 
  of IVS under RTPv2 and with a new packetizations scheme by May 95.

* Bugs fixed: There was a bug in the 3.3v of ivs about the INTRA refreshment 
  rate which was the same whatever network state observed. So, version 3.4 of 
  ivs should be less sensitive to packet loss.

* Access to an ivs session may now be controled by a password introduced
  either by the -K option or the ``key '' input in the ``Control'' popup menu.
  See also ``The use of plain text keys for encryption of multimedia 
  conferences'', draft V1.1, Mark Handley, UCL, London. 

* A version for SUN Solaris with Parallax/SunVideo/VideoPix.

* A version for DEC ALPHA platform without video capture.

* A version compiled on PC/FreeBSD2.0 without video capture.

* A version compiled on PC/Linux1.1.89 without video capture.

* A version compiled on HP with VideoLive board.

* A version compiled on NetBSD/SPARC 1.0 platform.

* IVS now supports SGI machines equipped with IndigoVideo, or Galileo video, 
  or Vino video. 

* Improvements made in the DEC5000/VIDEOTX grabbing procedures.

* Mike ext / Loudspeaker ext selection added to SUN platforms. The audio 
  tuning is now managed by a popupaudio menu.

* New options added:
  -deaf: run ivs without any audio facilities
  -start_deaf: do not get the audio device by default
  -echo_on: disable the automatic muting while speaking
  -K <key>: enter a new key. A null key means no control access.

* The default address group is now 224.2.224.2 which belongs to the 64K block
  of addresses designated by IANA for multimedia conferencing: 
  (224.2.0.0 - 224.2.255.255).

Many thanks to the following people who helped with the release of this
new version:

  Francis Dupont <Francis.Dupont@inria.fr> and Greg Earle 
  <earle@isolar.Tujunga.CA.US> (NetBSD audio version)
  Christian Huitema <huitema@sophia.inria.fr> (security functions) 
  Vesa Ruokonen <Vesa.Ruokonen@lut.fi> (Linux platform)
  Lei Wang <wang@rus.uni-stuttgart.de> (SGI platform) 
  Garrett Wollman <wollman@halloran-eldar.lcs.mit.edu> (FreeBSD platform)
  Andrzej Wozniak <wozniak@inria.fr> (SunOS/Parallax platform)
  Dick Zetterberg <dick@ee.uts.edu.au> (DEC5000/VIDEOTX platform).

-----------------------------------------------------------------------------
Version 3.3 (94/7/8)

**************************************************************************
                                 WARNING 

        THIS VERSION IS NOT COMPATIBLE WITH PREVIOUS IVS VERSIONS
**************************************************************************

* New RTP packet formats according to the new RTP Internet Draft (93/10/20).

* New user interface, I hope more user friendly ...

* Added a scalable control congestion algorithm based on feedback 
  information received from decoders. The implementation is done by Ian 
  Wakeman from UCL. Jon Crowcroft, Jean Bolot and I also contributed to the 
  theory part. Now, using the "Automatic control" option, the output rate is 
  automatically tuned according to the state of the network. 

* X resources parameters added to manage IVS options at the initialization.
  Please see ivs manual. The previous .ivs_default file is now unused.

* Improved the bit error detection in order to correctly resynchronize in
  case of packet lost.

* SunVideo video board is now supported. Atanu Ghosh help me to build this 
  support. I'd also like to thanks Maureen Chew from Sun NC Development Center
  who gives me sources of the new rtvc_display xil example program.

* New options added : (cf. ivs manual)
	-autosend
	-floor1
	-floor2
	-max_fr
	-rate_min
	-rate_max
	-qcif | -cif | -scif
	-pcm | -adpcm | -vadpcm
	-small | -medium | -large
	-log
	-t (or -T for setting ttl value)

* Grey encoding can now be decoded by hardware H.261 codec (by adding a 
  CC component for Cr and Cb blocks in INTRA mode).

* The use of NACK and FIR packets is now automatically set according to
  the number of participants. cf. ivs manual.

* Some encoding parameters such as the maximal number of successive INTER
  encodings or the INTRA refreshment rate are now functions of the feedback
  received from decoders.

* In previous versions, sometimes participants were mixed in the ivs control
  list. This bug should be removed now.

* Visualization of the audio speaker by flashing the corresponding participant.

* Divided the video encoding/decoding functions in several modules 
  (A. Wozniak).

* Speed improvement made in the Parallax version (A. Wozniak).

* Management of the audio driver compatible with VAT. 

* The audio should be more better in this version, a playout algorithm has
been implemented by Hugues Crepin from INRIA.

* Added -autoreply option to ivsd program and a log file to notice all ivs
  calls received.

* Added the ivs_gw program. Please see ivs_gw manual.


-----------------------------------------------------------------------------
Version 3.2 (93/7/1)

**************************************************************************
                                 WARNING 

        THIS VERSION IS NOT COMPATIBLE WITH PREVIOUS IVS VERSIONS
**************************************************************************

* The HELLO packet is removed. Now, a station will send its CDESCRIPTOR
periodically *and* when it receives a CDESCRIPTOR for a new station (If
feedback allowed).

*CSDESC packet is now CDESCRIPTOR. It follows the new RTP format 
(I-D, March 26)

* -r option bug fixed. The active stations remained active even if they stop
their emission..

* The -N option now allows to specify a full name without the @host..
  Note that the SendNACK and SendFIR procedures have been changed. The input
  is now the host_coder's sin_addr and not the host_coder's name.

* options decoder side (clicking on the image) to double or reduce image and
  grey/color display.

* The option -I is removed. You can  now specify the UDP ports used.
  It is useful to differenciate several ivs conferences in the same machine.
  The format: ivs a.b.c.d/video_port  
  The audio_port will be video_port+1 and the control_port will be
  video_port +2.

  UNICAST MODE:  e.g. to jerry.inria.fr:

	--> ivs jerry.inria.fr   or  ivs jerry.inria.fr/2235
        --> ivs 138.96.24.78     or  ivs 138.96.24.78/2235

  MULTICAST MODE: e.g. to 224.8.8.8 group:

	--> ivs 224.8.8.8        or  ivs 224.8.8.8/2232


* ifct/ffct speed improvements

* color grabbing procedures added for VideoPix/NTSC, Parallax VIDEOTX and
  INDIGOVIDEO.

* A receive only mode is added (option -recvonly); In this mode, the ivs
  panel size is reduced .

* When you iconify an image, now the decoding process is interrupted and a
  small 64x64 iconized image is shown.


* Completely new release of grabbing procedures and grabbing window
  management for the PARALLAX XV card. Please see the README.PARALLAX file.

-------------------------------------------------------------------------------
version 3.1: (93/5/4)

This new version should be used at the JENC demo, 10-13 May. 
Decoding hardware H.261 codecs such as Bitfield and GPT codecs is
now possible with ivs. Also, ivs video encoding has been successfully
received on a Bitfield codec.

Main changes are:

* Several bugs in the colormap have been removed. Now ivs is able to
  run on 1, 4, 8 and 16-bits display.

* A Push To Talk button is added to avoid local echo while using
  a speaker (Sparc only).

* When several stations are talking in the same time, now only one
  station is decoded to avoid the previous ugly mixing...


* Several options are added:

     -dp       Disable the Push to talk button.

     -grey     Force grey decoding display.

     -q quantizer
               Force the default quantizer value; useful  when
               sending to Bitfield codec.

     -S Squelch level
               Force the default squelch level (silence detection
               threshold between 0 and 255).


-------------------------------------------------------------------------------
version 3.0: (93/3/26)

**************************************************************************
                                 WARNING 

        THIS VERSION IS NOT COMPATIBLE WITH PREVIOUS IVS VERSIONS
**************************************************************************

* The packets formats have been changed according to the two
  following Internet Drafts:

    - "A Transport Protocol for Real-Time Applications", H. Schulzrinne,
    AVT working group, 12/15/92.

  and

    - "Packetization of H.261 video streams", C. Huitema & T. Turletti,
    AVT working group, 3/8/93.


* For VideoPix only, Square pixels are now correctly processed in
  B&W mode and real CIF (352x288pels) is obtained for both PAL and
  NTSC video streams.

* For VideoPix only, brightness and contrast tuning is added
  at the coder side. The last IETF retransmission showed that such
  a tuning is useful when the scene to display is dark.


* A new optional mode, "Avoid Feedback" is added. This mode must
  be chosen when there are a lot of decoding stations (more than
  10). Video decoders won't send to the video coder Negative
  Acknowledges neither Full Intra Requests. This option limits the
  number of successives INTER encodings blocks and forces the INTRA
  encoding mode more frequently. Selection is done in the "Rate
  Control" menu, video coder side.


* Brightness and Contrast tuning are now managed by the video
  decoders processes. A tuning popup appears when you click on a
  decoding window.


* Packets length is now limited to 1000 bytes. If a GOB is larger
  than this limit, it will be sent in several packets. If a part
  of the GOB is lost, the video decoder process can resynchronize
  itself with the next GOB received. Resynchronization facility
  has been added to the video decoder.

* A decode_h261 program is added to decode an H.261 encoded file. It allows
  to run the h261_decode routine without the session manager. It should be
  useful while testing the interoperability between ivs and Hardware H.261 
  codecs. The H.261 encoded sequence "Miss America" is included in the 
  examples directory.

* For VideoPix, with cameras only, a color encoding/decoding mode is now
  available thanks to a collaboration with Pierre Delamotte from
  INRIA Rocquencourt, (delamot@wagner.inria.fr). The grabbing
  procedures for others plateforms are not available yet.


* IVS is now supporting the VIDEOTX framegrabber for DecStations,
  thanks to Jian Zhang from CSIRO/Joint Research Centre in
  Information Technology Flinders University of South Australia,
  (jian@jrc.flinders.edu.au).

-------------------------------------------------------------------------------
version 2.1: 


* Rate control menu added: Three choices are available, first one
 is selected by default.

 1/ Without rate control: This is the default mode, without any
                          rate control.
 
 2/ Privilege quality: In this mode, you can select a maximum rate.
                     The frame rate is reduced in order not to
		     overrun the maximum rate but quality of each
		     image is the same.
 
 3/ Privilege frame rate: In this mode, you can choose an output
                     rate. No delay is introduced. The control
		     rate is done using the quantizer and the
		     movement detection's threshold. These
		     parameters are dynamically chosen to fit in
		     the bandwidth selected.


* NEW LOOK, removing all Motif calls and using the Athena toolkit. A
 scrollbar is now used to display the list of participants. (The
 previous display was not very fast...) This list of participants
 begins first with your local station, the active stations and then,
 the passive stations.

* A new button allows to freeze the image.

* Now, local display selection, audio encoding mode and VideoPix port input may
 be changed during encoding.

* The audio driver is automatically closed when there is no audio
data encoding/decoding.

* The video bandwidth and the frame rate are now displayed at the
encoder side.

* Speed improvements

* ivsd added. It is an ivs daemon. Running it in background allows
 you to be called by anyone on the Internet. A small icon will
 appear and a message will pop up when an ivs talk is requested. If
 you click on the "Accept" option, an ivs command will be run
 automatically towards your party. For example, if you want to call
 asterix@obelix.fr, just run ivs obelix.fr
 Then, if you click on the "Call up" button, the ivs request is
 sent to the obelix.fr host.

* Port numbers are now differents in unicast mode. In this way an
 unicast call may be done during a multicast conference.

* Video and audio decoding options are now implicit except for
 your local station. To disable this mode, use the -a|-v options
 (see manual).

* IVS is now supporting :

 # SPARCSTATIONS (audio + video)
   --> VideoPix framegrabber
   --> Parallax framegrabber [Thanks to Edgar Ostrowski and Frank Ruge]

 # SGI (audio + video) [Thanks to Guido van Rossum]
    
 # HP (audio + video)
   --> Raster Rops framegrabber [Thanks to Edgar Ostrowski, Frank
                                 Ruge and Markus Rebensburg]

 # DECSTATIONS (only video decoding ...) 

-------------------------------------------------------------------------------
version 2.0:
**************************************************************************
                                 WARNING 

        THIS VERSION IS NOT COMPATIBLE WITH PREVIOUS IVS VERSIONS
**************************************************************************

Main changes are :

* A larger format Super CIF (704*576pels) is added. A Super CIF image is 
transmitted using 4 standards CIF images. It is very convenient to display
images such as slides.

* More information is now included in a MB. When a packet is lost, all those
MBs which were lost are now encoded in INTRA mode in the next image.
In previous version, the entire packet (and hence possibly many GOBs) would
have been encoded.

* The 1GOB<->1packet , 1image<->1packet option have been removed. Now GOBs are
encoded in different packets except if their size is lower than 500 bytes.

* A "Local display" option has been added. It allows to display locally
the image grabbed at the output of VideoPix. It is useful either to tune the 
camera or in unicast mode to see what is sent to your correspondent.

* In NTSC format, the image is now automatically reduced to the correct size. 
I have to thank Tom Sandoski who helped me debug the NTSC grabbing code.

* Speed improvements: for example, the QCIF display can now go up to 6 images/s
when movement is minimal.

* The -o option has disappeared. To double the size of a QCIF, you have now
to use the -double option.

* Two new options

  -r: In this mode, only the active stations are saved in the local table.
      Then the full list error is unlikely to show up anymore.
  -a: Avoid the automatic audio decoding. So, the audio device is open only 
      when you explicitly select an audio decoding.

-------------------------------------------------------------------------------
version 1.13:

Sometimes, in previous versions, the video decoder exited for no
apparent reason. This bug is fixed in the 1.13 version. (The
chosen quantizer wasn't large enough to encode DCT
coefficient...). In this version the "One GOB <-> One packet"
option is selected by default.

-------------------------------------------------------------------------------
version 1.12:

In 1.12 version, the ivs_record tool supports unicast station
recording. Others improvements have been made by Guido.van.Rossum@cwi.nl.

videosgi.c:
    - change code to use released libsvideo API:
       -- svGetCaptureData always sets the ptr argument.
       -- odd field comes first so swap buf_even/odd.
    - get 8-bit B&W data directly by disabling color and dither modes.
    - normalize video data to range expected by H.261 spec.

-------------------------------------------------------------------------------
Version 1.10:

Main changes of 1.10 version are :

 - support for SGI Indigo stations (added by <Guido.van.Rossum@cwi.nl>)

 - improvements mainly in VideoPix grabbing procedures and video_coder.c
   (made by <wkd@uhunix.uhcc.Hawaii.Edu>)

 - ability to display video on 4-bit depth screen.

 - ability to record and replay video and audio clips. This is done with
the programs *ivs_record* and *ivs_replay*. ivs_record records audio/video
clips in a file (the same file is used for both audio and video). These clips 
can be sent via e-mail using MIME extensions. To do this, append the following
in your mailcap file :  "application/x-ivs; ivs_replay -o %s"

-------------------------------------------------------------------------------
Version 1.9:

In 1.9 version, a Headphone/Speaker button has been added to the panel, 
modification made by Ian Daniel <Daniel@europarc.xerox.com>.

On the other hand, when gethostbyaddr() failed, now the Internet address style
138.23.45.56 takes the place of the hostname.

-------------------------------------------------------------------------------
Version 1.8:

With 1.8 version, Only the first image, images whith a lot of movement (change
of scene) and refreshment images are encoded in INTRA mode. Hence, I removed 
the "illegal" CBN.

Otherwise, INTER mode is used. Results are rather good, encoding/decoding is
faster and compression is #3-4 times important. Anyway, if packets are lost,
decoding processes inform the encoder, and only the GOB lost are forced in
INTRA mode.

-------------------------------------------------------------------------------
Previous versions...

In 1.0 to 1.7 versions, all the blocks were encoded in INTRA mode thereby
limiting the effect of packet loss. A coded block pattern (CBN) was added in 
each macroblock (MB) so as not to necessarily encode all the blocks in a MB. 
This was not foreseen in the H.261 recommendation.

I added a little program "rate" to appreciate the output rate. Runs it on
another machine supporting IP multicast. Type "rate" and instantaneous rate is
displayed. Type ^C to know the mean rate.



