vic - Video Conferencing Tool

Vic is a video conferencing application developed by the Network Research Group at the Lawrence Berkeley National Laboratory in collaboration with the University of California, Berkeley. Source code and pre-compiled binaries are available via anonymous ftp. Vic-related questions and feedback are welcome and can be sent to the developers via


Other links:


The UCB/LBNL video tool, vic, is a real-time, multimedia application for video conferencing over the Internet. Vic was designed with a flexible and extensible architecture to support heterogeneous environments and configurations. For example, in high bandwidth settings, multi-megabit full-motion JPEG streams can be sourced using hardware assisted compression, while in low bandwidth environments like the Internet, aggressive low bit-rate coding can be carried out in software.

Vic is based on the Draft Internet Standard Real-time Transport Protocol (RTP) developed by the IETF Audio/Video Transport working group. RTP is an application-level protocol implemented entirely within vic -- you need no special system enhancements to run RTP. Although vic can be run point-to-point using standard unicast IP addresses, it is primarily intended as a multiparty conferencing application. To make use of the conferencing capabilities, your system must support IP Multicast, and ideally, your network should be connected to the IP Multicast Backbone (MBone). Vic also runs over RTIP, the experimental real-time networking protocols from U.C. Berkeley's Tenet group and over ATM using Fore's SPANS API.

Vic provides only the video portion of a multimedia conference; audio, whiteboard, and session control tools are implemented as separate applications. Our audio tool is called vat and our whiteboard tool wb. UCL developed the session directory tool sdr. Other related applications include ISI's Multimedia Conference Control, mmcc, the Xerox PARC Network Video tool, nv and the INRIA Video-conferencing System, ivs. Vic is backward compatible with RTPv1 and can interoperate with both nv (v3.3) and ivs (v3.3).


Features unique to vic include:

The Intra-H.261 encoder combines the advantages of nv's block-based conditional replenishment scheme (i.e., robustness to loss) with those of H.261 (i.e., higher compression gain and compatibility with hardware codecs). This is achieved by coding only ``intra-mode'' macroblocks and using macroblock skip codes to replenish only the blocks that change. For a fixed bit rate, the H.261 coder achieves frame rates typically 2-4 times that of the nv coding format.

Vic allows viewing windows to be configured to ``follow the speaker''. Using cues from vat, vic will switch the viewing window to whoever is speaking. More than one window can be configured in this manner, which causes the most recent N speakers to be displayed.

Vic has several dithering algorithms for representing continuous-tone color video streams on color-mapped displays. The user can trade of run-time complexity with quality. An error-diffusion dither gives the highest quality but at the greatest CPU cost, while a direct color quantization results in the lowest CPU load but yields relatively low quality. An ordered dither (derived from nv) gives moderate quality with low complexity.

Vic exports an interface that allows graphics to be easily composited on top of the captured video. Overlays can be downloaded and manipulated across the ``Conference Bus'' allowing a ``production team'' to enhance a broadcast with titles, credits, logos, etc. Since the conference bus can be manipulated using tcl, it's easy to extend existing scripts or create new scripts for on-the-fly title generation. See the ``title-maker'' script in the vic distribution for an example of how to do this.

Video streams can be displayed simulatanously on a workstation display and on an external video output port, provided your hardware supports external output. This allows you to render a single stream to a full-sized NTSC/PAL analog video signal, which when viewed on an external monitor (or video projector) generally provides a more comfortable picture compared to video displayed in a small X window.


The easiest way to install vic is to grab the binary distribution. for your architecture, unpack it, and install the executable and manual entry. You can also build vic from source. Start by unpacking the gzip'd source tar, e.g., by running This will place the contents of the source distribution in ./vic-x.y where ``x.y'' is the current version number. ``cd'' into this directory and do the following:

Supported Systems

sparc SunOS 4.x videopix, vigrapix, parallax
sparc Solaris 2.4 sunvideo, vigrapix, parallax, slv
sparc NetBSD 1.x none
DEC/MIPS Ultrix 4.3 jvideo, Xv (tx/pip)
DEC/AXP OSF/1 v3.x j300, jvideo
SGI IRIX 5.x vl, IndigoVideo, cosmo
i386 BSD/OS none (yet)
i386 FreeBSD Matrox Meteor,video spigot
i386 Linux Connectix QuickCam
i386 Linux IBM PCMCIA Smart Capture Card (SCC)
HP/PA HP-UX 9.x Xv
RS/6000, microchannel
AIX 3/4 Ultimedia Video I/O Adaptor
RS/6000, PCI (40P,43P) AIX 4 Parallax (PCI adaptor)



This work was co-sponsored by the the Lawrence Berkeley Laboratory and the Tenet Group of the University of California Berkeley and of the International Computer Science Institute. Support was provided by


As always, we very much want to hear about bugs and problems. Please don't hesitate to offer suggestions or other feedback. Send all vic related correspondence to (this list includes only the developers and is not distributed beyond our site).

Steven McCanne (
Van Jacobson (