1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447
|
<!-- @(#) $Header: /cs/research/mice/starship/src/local/CVS_repository/vic/html/vic.html,v 1.1.1.1 1998/02/18 18:03:55 ucacsva Exp $ (LBNL)-->
<html>
<head><title>UCB/LBNL Video Conferencing Tool (vic)</title></head>
<body>
<h1>
vic - <u>Vi</u>deo <u>C</u>onferencing Tool<br>
</h1>
Vic is a video conferencing application developed by the
<a href="http://www-nrg.ee.lbl.gov/">Network Research Group</a>
at the
<a href="http://www.lbl.gov/LBL.html">Lawrence Berkeley National Laboratory</a>
in collaboration with the
<a href=http://www.berkeley.edu/>University of California, Berkeley</a>.
Source code and pre-compiled binaries are available via
<a href=ftp://ftp.ee.lbl.gov/conferencing/vic/>anonymous ftp</a>.
Vic-related questions and feedback are welcome and can be sent
to the developers via <a href=mailto:vic@ee.lbl.gov>vic@ee.lbl.gov</a>.
<hr>
<h2>Contents</h2>
<ul>
<li><a href=#overview>Overview</a>
<li><a href=#features>Features</a>
<li><a href=#installation>Installation</a>
<li><a href=#config>Supported Systems</a>
<li><a href=#notes>Notes</a>
<li><a href=#ack>Acknowledgments</a>
<li><a href=#feedback>Feedback to authors</a>
</ul>
Other links:
<ul>
<li><a href="whats-new.html">What's new?</a>
<li><a href=ftp://ftp.ee.lbl.gov/conferencing/vic/>The FTP archive</a>
<li><a href="CHANGES.html">Browse the change history</a>
<li><a href="research.html">Research Projects</a>
<li><a href="screen-dump.html">Screen dump of user-interface</a>
<li>McCanne, S., and Jacobson, V.,
<strong> <a href="ftp://ftp.ee.lbl.gov/papers/vic-mm95.ps.Z">
vic: A Flexible Framework Framework for Packet Video,</a></strong>
ACM Multimedia '95.
<li><a href=http://rah.star-gate.com/~hasty/mbone.html>
FreeBSD MBone Tools</a>
<li><a href=ftp://hal.smh.stcloud.msus.edu/pub/>Linux MBone tools</a>
</ul>
<a name=overview>
<hr>
<h3>Overview</h3>
</a>
<p>
The UCB/LBNL video tool, <i>vic</i>, 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.
<p>
Vic is based on the Draft Internet Standard
<a href=ftp://ftp.isi.edu/internet-drafts/draft-ietf-avt-rtp-07.ps>
Real-time Transport Protocol (RTP)</a> developed by the IETF
<a href="http://www.ietf.cnri.reston.va.us/html.charters/avt-charter.html">
Audio/Video Transport</a> 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
<a href="http://www.best.com/~prince/techinfo/mbone.html">
IP Multicast Backbone (MBone)</a>.
Vic also runs over
<a href=ftp://tenet.berkeley.edu/pub/tenet/Papers/BaFeMaMoVeZh94.ps>
RTIP</a>, the experimental real-time networking protocols
from U.C. Berkeley's <a href="http://tenet.berkeley.edu/">Tenet group</a>
and over ATM using
<a href=http://www.fore.com/>Fore's</a> SPANS API.
<p>
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
<a href="ftp://ftp.ee.lbl.gov/conferencing/vat/">vat</a> and
our whiteboard tool
<a href="ftp://ftp.ee.lbl.gov/conferencing/wb/">wb</a>.
UCL developed the session directory tool
<a href="ftp://cs.ucl.ac.uk/mice/sdr/">sdr</a>.
Other related applications include ISI's Multimedia Conference Control,
<a href="ftp://ftp.isi.edu/confctrl/mmcc/">mmcc</a>,
the Xerox PARC Network Video tool,
<a href="ftp://ftp.parc.xerox.com/pub/net-research/">nv</a>
and the INRIA Video-conferencing System,
<a href="http://www.inria.fr/rodeo/ivs.html">ivs</a>.
Vic is backward compatible with RTPv1 and can interoperate with both
nv (v3.3) and ivs (v3.3).
<a name=features><hr></a>
<h3>Features</h3>
<p>
Features unique to vic include:
<ul>
<li> an ``Intra-H.261'' video encoder,
<li> voice switched viewing windows,
<li> multiple dithering algorithms,
<li> interactive ``title generation'', and
<li> routing of decoded video to external video ports.
</ul>
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
<a href=rd.html>typically 2-4 times</a> that of the nv coding format.
<p>
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.
<p>
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.
<p>
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.
<p>
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.
<a name=installation><hr></a>
<h3>Installation</h3>
The easiest way to install vic is to grab the
<a href=ftp://ftp.ee.lbl.gov/conferencing/vic/>
binary distribution</a>.
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
<a href="ftp://ftp.ee.lbl.gov/conferencing/vic/alpha-test/">
source tar</a>, e.g., by running
<ul>
<li> <a href=ftp://prep.ai.mit.edu/pub/gnu/>gzip</a>
-d -c vicsrc-tar.gz | tar xfv -
</ul>
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:
<ul>
<li> Make sure <a href=http://www.sunlabs.com/research/tcl/>
tcl/tk</a> (v7.5/4.1) is installed or built in the directory
above the vic tree.
<li> Run the ./configure script.
You may specify the following arguments to configure:
<center><table border cellspacing=1>
<br>
<tr>
<td>-x-includes=<i>path</i></td>
<td>specify a pathname for the X include tree</td>
</tr><tr>
<td>-x-libraries=<i>path</i></td>
<td>specify a pathname for the X libraries</td>
</tr><tr>
<td>-with-tcl=<i>path</i></td>
<td>specify a pathname for tcl</td>
</tr><tr>
<td>-with-tk=<i>path</i></td>
<td>specify a pathname for tk</td>
</tr><tr>
<td>-with-aix-shm=<i>path</i></td>
<td>specify a pathname for the AIX shm extension library</td>
</tr>
</table></center>
<br>
If you run into problems with configure, you should edit <i>configure.in</i>
instead of <i>configure</i> and use
<a href=ftp://prep.ai.mit.edu/pub/gnu/>GNU autoconf</a>
to generate a new configure from configure.in. If you need to make
such changes, please send them to us so future versions of vic
will configure out of the box.
<li> Run make.
<li> If make completes successfully, run ``make install'' as root
to install the binary and man page.
</ul>
<a name=config><hr></a>
<h3>Supported Systems</h3>
<center><table border cellspacing=1>
<tr>
<td>sparc</td>
<td>SunOS 4.x</td>
<td>videopix,
<a href="http://www.vigra.com/products/vigrapix.announce.html">
vigrapix</a>,
<a href=http://www.parallax.com/>parallax</a></td>
</tr><tr>
<td>sparc</td>
<td>Solaris 2.4</td>
<td>sunvideo,
<a href="http://www.vigra.com/products/vigrapix.announce.html">
vigrapix</a>,
<a href=http://www.parallax.com/>parallax</a>,
slv</td>
</tr><tr>
<td>sparc</td>
<td>NetBSD 1.x</td>
<td>none</td>
</tr><tr>
<td>DEC/MIPS</td>
<td>Ultrix 4.3</td>
<td>jvideo, Xv (tx/pip)</td>
</tr><tr>
<td>DEC/AXP</td>
<td>OSF/1 v3.x</td>
<td>j300, jvideo</td>
</tr><tr>
<td>SGI</td>
<td>IRIX 5.x</td>
<td>vl, IndigoVideo, cosmo</td>
</tr><tr>
<td>i386</td>
<td>BSD/OS</td>
<td>none (yet)</td>
</tr><tr>
<td>i386</td>
<td>FreeBSD</td>
<td><a href=http://www.matrox.com/imgweb/meteor.htm>
Matrox Meteor</a>,video spigot</td>
</tr><tr>
<td>i386</td>
<td>Linux</td>
<td><a href=http://www.connectix.com/>Connectix</a>
<a href=http://www.connectix.com/connectix/qcchoice.html>QuickCam</a>
</td>
</tr><tr>
<td>i386</td>
<td>Linux</td>
<td>IBM PCMCIA Smart Capture Card (SCC)</td>
</tr><tr>
<td>HP/PA</td>
<td>HP-UX 9.x</td>
<td>Xv</td>
</tr><tr>
<td>RS/6000, microchannel <br>(3xx,4xx,9xx,41W/T,42W/T)</td>
<td>AIX 3/4</td>
<td><a
href="http://www.austin.ibm.com/hardware/Adapters/ultimedia.html#topic7">
Ultimedia Video I/O Adaptor</a></td>
</tr><tr>
<td>RS/6000, PCI (40P,43P)</td>
<td>AIX 4</td>
<td>Parallax (PCI adaptor)</td>
</tr>
</table></center>
<br>
<a name=notes><hr></a>
<h3>Notes</h3>
<ul>
<li> For the DEC/j300, you will need
<a href="http://www.research.digital.com/SRC/staff/berc/bio.html">
Lance Berc's </a> video server called
<a href="http://chocolate.pa.dec.com/mbone/">jvdriver</a>.
vic does not work with DEC's MME server.
<li> Remember to run jv2driver with the right command-line options
if your using the svideo connector (-sin) or PAL video (-pal).
<li> Solaris-2 has small limits on shared memory segments. If you
want to display full sized 24-bit video windows and more than
one or two, add these lines to /etc/system and reboot:
<ul>
<li> set shmsys:shminfo_shmmax=2097152
<li> set shmsys:shminfo_shmseg=24
</ul>
If you have a cg14 frame buffer (the built-in frame buffer
on sparc-20), it's a good idea to run
<ul>
<li> /usr/kvm/cg14config -g 2.2
</ul>
from your X startup script. The default display gamma
is not appropriate for video (even though the man page
says the default is 2.2).
<li> If you're running SunOS, the shared memory limit is also low,
but not as bad as Solaris. You can change it by adding an
"options SHMSIZE=2048"
to the system config file or adb'ing the kernel & changing the first
word of shminfo to 2097152.
<li> <a href="http://www.bsdi.com/info/">BSD/OS 2.0</a>
now includes a library to support the svr4 shared
memory API via
<a href="http://www.bsdi.com/bsdi-man/bsdi-man?proto=1.0&apropos=0§ion=ALL&query=mmap">mmap</a>.
Unfortunately, their X server is not
shipped with the X Shared memory extension compiled in.
To get reasonable display performance with vic, you'll need
to recompile the X server with this extension.
<li> To use shared memory under AIX, you need to compile one of the
sample extensions provided with AIX and start the X server with
that extension loaded. When building vic from source, you need
to specify --with-aix-shm=libpath to set the pathname of the
extension library (that also needs to be compiled from the exmaple
codes). If --with-aix-shm isn't provided, vic will be built
without shared memory support (and hence pay a big performance
hit when rendering video to X windows). (Thanks to
<a href=mailto:olson@mcs.anl.gov>Bob Olson</a>
for bringing up vic is this environment.)
Bob reports that with the shared memory support in place,
a 1T (PowerPC 601 box) can decode 320x240 JPEG at 30fps in
software (with q up to about 70).
<a href=mailto:andy@virginia.edu>Andrew Booker</a> and
<a href=mailto:kira@virginia.edu>Kira Attwood</a> have made
AIX binaries
<a href=ftp://raven.dorm.virginia.edu/pub/mbone/>
publicly available</a>
<li> The default BSD/OS make doesn't like vic's Makefile.
Just use gmake (which is probably installed).
<li> There are two versions of vic for Solaris: vic and vic.xil.
The vic.xil binary uses Sun's XIL library for video capture,
while vic.rtvc bypasses the library and manipulates the device
directly. The rtvc version is faster, but because it doesn't
use the standard API, it might not work in future Solaris or
XIL releases. The vic.xil binary is built with only xil
support, while the vic binary supports all available capture devices.
<li> <a href=mailto:hasty@star-gate.com>Amancio Hasty</a>
has put together a
<a href=http://rah.star-gate.com/~hasty/mbone.html>web page</a>
for the MBone tools under <a href=http://www.freebsd.org/>FreeBSD</a>.
Check it out. Thanks to
<a href=mailto:james@allmalt.cs.uwm.edu>Jim Lowe</a>,
vic supports both the Matrix Meteor board and the video spigot
under FreeBSD.
See <a href=ftp://ftp.cs.uwm.edu/pub/FreeBSD/>
ftp://ftp.cs.uwm.edu/pub/FreeBSD/meteor*</a> for the Matrox
and <a href=ftp://ftp.cs.uwm.edu/pub/FreeBSD/spigot/>
href=ftp://ftp.cs.uwm.edu/pub/FreeBSD/spigot/</a>
for the video spigot.
<li> <a href=mailto:brezak@apollo.hp.com>John Brezak</a> has ported
vic to Windows 95/NT (January 31, 1996). He says:
<ul>
<li> Run "nmake -f vic.mak" to compile.
<li> Known problems and limitations:
<ul>
<li> Untested on mono displays
<li> Need to handle case where IP_MULTICAST_LOOP cannot
be turned off. The default Win95 TCP/IP stack has
this limitation.
<li> There are some colormap problems in pseudo color/8.
This appears to be a Tk problem.
<li> Changing color mapping methods can cause an exit on PseudoColor/8
displays.
<li> No grabber support.
<li> Should use VideoX interface for higher performance.
</ul>
</ul>
<li><a href=mailto:oka@kobe-u.ac.jp>Koji OKAMURA</a>
maintains an <a href=ftp://ftp.kobe-u.ac.jp/pub/mc/scc/>
SCC Driver for Linux</a> and Linux
<a href=ftp://ftp.kobe-u.ac.jp/pub/mc/apps/vic/>
vic binaries</a> w/ SCC support.
</ul>
<a name=ack><hr></a>
<h3>Acknowledgments</h3>
<p>
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
<ul>
<li> an AT&T Graduate Fellowship;
<li> for the Lawrence Berkeley National Laboratory:
<ul>
<li> <a href=http://www.er.doe.gov/production/octr/mics/index.html>
Office of Energy Research, Mathematical, Information,
and Computational Sciences Division, of the U.S. Department
of Energy</a> under Contract No. DE-AC03-76SF00098,
<li> Sun Microsystems,
<li> Digital Equipment Corporation, and
<li> Silicon Graphics Inc.
</ul>
<li> for the Tenet Research Group:
<ul>
<li> the National Science Foundation and the Advanced
Research Projects Agency (ARPA) under Cooperative
Agreement NCR-8919038 with the Corporation for
National Research Initiatives, and
<li> Digital Equipment Corporation.
</ul>
</ul>
<a name=feedback><hr></a>
<h3>Feedback</h3>
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 <a href="mailto:vic@ee.lbl.gov">vic@ee.lbl.gov</a>
(this list includes only the developers and is not distributed beyond
our site).
<p><a href="http://www-nrg.ee.lbl.gov/mccanne/">
Steven McCanne</a> <i>(mccanne@ee.lbl.gov)</i><br>
Van Jacobson <i>(van@ee.lbl.gov)</i>
</body>
</html>
|