README file Cornell Video "CU-SeeMe0.60" 2-2-94. ReadMe Author: Richard Cogger A Macintosh videoconferencing program, CU-SeeMe, is available free from Cornell University under copyright of Cornell and its collaborators. CU-SeeMe version 0.60, with an improved user interface, provides a one-to-one connection, or by use of a reflector, a one-to-many, a several-to-several, or a several-to-many conference depending on user needs and hardware capabilities. It displays 4-bit grayscale video windows at 160x120 pixels or at double that diameter, and does not (yet) include audio. So far as we know, CU-SeeMe was the first and may still be the only software available for the Macintosh which supports real-time multi-party videoconferencing on the Internet. CU-SeeMe is intended to provide useful conferencing at minimal cost. Receiving requires only a Mac with a screen capable of displaying 16 grays and a connection to the Internet. Sending requires the same plus a camera and either an AV-Mac or a SuperMac VideoSpigot board plus Quicktime and SpigotVDIG extensions added to the system folder. At this time CU-SeeMe runs only on the Macintosh using an IP network connection. A PC version is under development and expected in early 1994. With CU-SeeMe each participant can decide to be a sender, a receiver, or both. WARNING: Although being improved with each version, CU-SeeMe is not mature production software--USE AT YOUR OWN RISK. And also, PLEASE TREAT THE INTERNET KINDLY--keep b/w limits set down under 100kbps, or less if you share limited bandwidth with others. Many, many folks connected to the Internet can use CU-SeeMe with default settings and cause no problem to anyone else; but unfortunately, not everyone. If you don't know whether using CU-SeeMe will mess up the network for someone else, CHECK IT OUT first, please. CU-SeeMe was initially written for the Macintosh by Tim Dorcey with design assistance and sponsorship by Richard Cogger of the Advanced Technology group in the Network Resources division of Cornell University's Information Technology department (CIT). Important early contributions came from: Cornell University Medical Colleges (CUMC), Scott Brim, and John Lynn. Since Oct. 1, 1993, the CU-SeeMe Project receives funding from the National Science Foundation. A very significant collaborative effort at Cornell University Medical Colleges (CUMC) is contributing substantial expertise and code. Development contributers to CU-SeeMe0.60: Cornell: Richard Cogger (Project Director/PI), Tim Dorcey, Scott Brim (Co-PI), John Lynn, Larry Chace; CUMC: Steven Erde, Aaron Freimark, Aaron Giles. This material is partially based on work sponsored by the National Science Foundation under Cooperative Agreement No. NCR-9318337. The Government has certain rights in this material. Any opinions, findings, and conclusions or recommendations expressed in this publication are those of the author and do not necessarily reflect the views of the National Science Foundation. Another document, CU-SeeMe Project: Plans, Goals, Rationale will also be available (soon) on our ftp server for those interested beyond how to get the program and use it. Also note the cu-seeme-l maillist discussed further along. Please send comments, suggestions and bug reports to r.cogger@cornell.edu. You can be a great help in making CU-SeeMe a good, stable application. Be Seeing You, -Dick Cogger *****The Fine Print************************************* Copyright 1993, 1994, Cornell University Cornell hereby grants permission to use, copy, modify, and distribute the CU-SeeMe version 0.60 program for any purpose and without fee, provided that these copyright and permission notices appear on all copies and supporting documentation, the name of Cornell not be used in advertising or publicity pertaining to distribution of the program without specific prior permission, notice be given in supporting documentation that copying and distribution is by permission of Cornell. CORNELL MAKES NO REPRESENTATIONS OR WARRANTEES, EXPRESS OR IMPLIED. By way of example, but not limitation, CORNELL MAKES NO REPRESENTATIONS OR WARRANTEES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THIS SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS, OR OTHER RIGHTS. Cornell shall not be held liable for any liability with respect to any claim by the user or any other party arising from use of the program. *****What do you need to use CU-SeeMe?****************** Specifications to RECEIVE video: - Macintosh platform with a 68020 processor or higher - System 7 or higher operating system (it "may" run on system 6.0.7 and above) - Ability to display 16-level-grayscale (e.g. any color Mac) - an IP network connection - MacTCP - CU-SeeMe0.60 file (file size is approximately 110K) Specifications to SEND video: - The specifications to receive video mentioned above - Video Spigot hardware (street price approx. $380.) and vdig or an AV-Mac (vdig built into system) - camera with NTSC 1vpp output (like a camcorder) and RCA cable. - Quicktime installed (requires approximately 2mg memory) - SpigotVDIG Quicktime component (driver) if you use the Spigot (On disk approx. 300kb.) *****To obtain CU-SeeMe********************************* Use ftp (File Transfer Protocol) to: Server: gated.cornell.edu UserID: anonymous Password: directory: /pub/video Download the latest README file, if there is one later than the date at the top of this file you are reading. Then get the application and other files you need. More detailed instructions for doing ftp downloads are further along in this README. All of the software you need is available on the server except for the Mac operating system and Quicktime. MacTCP is available on the server, but notice please: MacTCP is COMMERCIAL SOFTWARE. A special license from Apple allows Cornell to distribute MacTCP with our software. If you get it from our server, along with CU-SeeMe, you DO NOT have the right to use it for any other purpose; you must obtain that right separately. (To purchase MacTCP for use with other applications contact Apple catalog sales 1-800-795-1000 and ask for the "TCP/IP Connection" product. TCP/IP Connection is $59 for a single user and $128 for a 20-user site license.) Use MacTCP version 1.1.1 with System 7.1. Regarding the vdig (driver) for the SuperMac VideoSpigot: There are two spigot vdigs on the server. If you have Quicktime 1.5 or 1.0 the one called SpigotVDIG is the best. The other one on the server should only be used if all else fails. Caution: If you have Quicktime 1.5, you are supposed to need the spigot vdig called VDIG 1.5b18. ***But we have found that Mac's freeze when you move the mouse after starting to send video with the 1.5b18 version.*** SuperMac tells us recently that 1.5b18 seems to work with Quicktime 1.6.1 but you may need to boot with monitors set to millions of colors and then change to what you want. We continue to find 1.0 best. However note that some Macs sometimes wind up showing only "snow" in the local video window (and transmitting it). If that happens, you must POWER OFF and start up to get the Spigot to reset; just Restart will not do it. ****Where to get a camera******************************* A small monochrome CCD camera, suitable for CU-SeeMe is available from: Howard & Associates 545 Calle San Pablo Phone 805-383-7444 Camarillo, CA 93012-8550 FAX 383-7442 AOL: HOWENT for about $200 for a kit with transformer, cable, and stand (about $300 for color). The price varies from time to time depending on the dollar/Yen situation, and you'll have to buy 2 or more to get the best price. Tell them you're going to use CU-SeeMe on the Internet and you'll get a discount to that amount. They can fax you complete specs and the latest price list. - The part number/name is: NCK-9102 TeleCamera (monochrome) (for the kit: H4000) - 1/3" B/W FT CCD Pixels 400H x 504V (Effective 378H x 486v) - Video Out 1.0vpp 75ohm (Negative) RCA connector - Electronic Auto Iris (Magnification 260) - Resolution: Horiz Lines >230 picture center, >200 edge - S/N >40db - Min Illumination: 8 lux or less - Focal length 6.1 mm, Focal Distance 600mm - Power 12VDC 130mA - Dimensions 43 x 67 x 120 mm -Part number for color: NCK9127C (The kit is H4500) Developer Comments: Subjectively, it seems to give a picture somewhat less crisp than a typical camcorder, but perfectly useable. At 28-30 inches, it seems to frame about the right size for my taste. The color model (9127C) provides better balance of tones even in b&w, but a little less light sensitivity. (There is a less expensive, lower rez color model, the 9103C, but it seems quite soft.) Note that with earlier versions of CU-SeeMe, the lower sensitivity was a problem, but with 0.60, the brightness and contrast controls in the software allow you to compensate. The color model is probably a better bet and maybe worth the extra cost. ******************************************************** HOW TO OPERATE CU-SeeMe 1. Be sure the screen is switched to a resolution that includes 16 grays (with the Monitors control panel). Settings that will work are: 16 grays, 256 grays, 256 colors, thousands of colors, millions of colors. (Note that with the previous version 0.42, only 16 grays worked well.) 2. Launch CU-SeeMe 0.60. If it's the first time, a "Preferences" dialog box will appear. Type in your name (to appear on the window where your video is displayed, both locally and remotely). Check other preferences. These settings are stored in a document in your Preferences Folder (in the System Folder). Subsequently, you may access these settings with the Preferences... item on the Edit menu. 3. When the program appears: (a) If you see a video window on the top left of the screen, the program believes you have a VideoSpigot installed with the Quicktime extension and the SpigotVDIG component--or that you have an AV-Mac. (b) If you see yourself in the video window, you have a camera plugged in and operating. You will see *WAITING* below your local window. (c) If you see no video window but get only a menu-bar, you are in receive-only mode as the program does not believe you have a VideoSpigot with vdig or an AV-Mac 4. By default, a button bar (new in CU-SeeMe0.60) appears below each video window and a rates bar below the button bar shows statistics on framerate and bandwidth used. You can turn off the rates bar with a button in the button bar. You can get rid of all button bars with a checkbox in the Preferences... dialog. 5. If you have a send-equipped Mac running the program, waiting for a request to send, the bar under the local window will show *WAITING* until someone connects to you or you connect to someone. The framerate indicator shows the speed of framegrabbing, which depends on the resolution you choose and the cpu power available, and possibly on the screendepth set with the Monitors control panel. It will be highest on a fast machine, running in the foreground, capturing the small size ("Standard" resolution) with the screen set to 16 grays. If you choose to mirror the image, have part of it off the screen or covered by another window, the rate will be slower. With buttons in the local window button bar, you can mirror the image (makes it easier to position), "pause" sending, or bring up sets of controls to adjust transmission, compression, or brightness and contrast. 6. To connect, for a two-party conference, choose Connect from the Connection menu. Type in an IP address (dot notation, no DNS, sorry) of a Spigot-equipped Mac running CU-SeeMe 0.60 or 0.42 (Earlier versions are NOT compatible). For a multiparty conference, enter the IP address of a reflector. (See "How to Test CU-SeeMe following this section.) If all is well, and no one else is already connected to the Mac you designated, it will start sending an image to you. If you are calling a reflector, you may be the only one connected, in which case you will see no windows until someone else connects. If the reflector does not respond immediately, the rates bar will show *CONNECTING*. If there is no answer, you'll get a "no response" message. 7. As an alternative to repeatedly typing in IP addresses, you may use Edit Nicknames from the Edit menu to set up Nicknames for IP addresses. Then use Connect To > from the Connection menu to make connections. 8. When someone requests a connection (or you open a connection) and you start sending--you will also see, in addition to framerate, an indication of bandwidth in Kbits/sec. On the right end of the bar under the local window is shown a "cap" which limits bandwidth used for sending and hence framerate, depending on amount of motion. The cap can be adjusted by a control in the Transmission panel (use the rightmost button in the button bar and choose Transmission from the popup menu.) If the other end of a connection reports packet loss, the program assumes network congestion and automatically lowers the cap. It will be adjusted back up toward the preset value if loss reports stop. 9. New with CU-SeeMe0.60, is the ability to start and stop sending or receiving on the fly, without disconnecting and reconnecting. You may wish to "drop in" on a conference in receive-only mode, to see who's there, and then start sending when you see you would not be over-burdening the conference. Also new is the "pause" button-- it's use will stop the capturing of new frames, effectively freezing the video. Video will continue to be sent on the aging timer at a very low rate. Use of the pause feature is preferable to leaving an active camera on an empty room. If you want a message to be displayed, type it before pausing. 10. The Participants menu (also new in 0.60) gives the means for opening particpant windows if they have been closed. It shows names of conference participants and their status. The local window is listed first, followed by conference senders, followed by receive-only participants("lurkers"). Presently, you can have up to 7 remote windows plus the local window for a total of 8. The limit of 7 also applies to entries for remote participants in the Paticipants menu, but future versions will be able to show all participants. When a participant disconnects from a conference, the rates bar will show *DISCONNECTED* or, if no packets are received for a while, it will show *TIMED OUT*. If it shows no motion and very low framerate and bandwidth, it has probably been "paused." 11. Each time a remote video window opens or is resized (or you connect to "self" for testing) , a middle-gray field appears followed by an impromptu demo of the frame differencing and aging algorithms. The main compression in CU-SeeMe is achieved by comparing successive captured video frames and sending only the parts that change. Only changed 8x8 pixel squares are sent, except that if a square remains unchanged for a number of frames, it is sent anyway to heal image artifacts resulting from lost packets. Initially, the "age" of each square within the Refresh Interval is set to a random number, so the window will fill in gradually or as the subject moves. You can adjust the Refresh Interval in the Transmission panel. 12. CU-SeeMe windows presently come in two sizes; 160x120 and 320x240. By default, the smaller size frames are grabbed and displayed. You can choose the larger window size in the Compression panel. (Caution: frame grabbers are generally much faster at producing the smaller windows.) Whichever size you transmit, you can display at either size. You can also display remote windows at either size. If you are getting the small size and displaying the large, three quarters of the pixels are generated by simple linear interpolation. (It's amazing it works as well as it does.) Using the zoom box (upper right in title bar) on the window will allow you to toggle quickly between large and small window sizes. 13. The VDIG for the Spigot board maintains a fifo (first in first out) of frames, several frames deep, so each frame grabbed is three or four frames old. Each time the program grabs a frame, the VDIG gets another one and puts it at the far end of the fifo cue. When running at 30 fps, a 3-frame delay is not a big problem, but at 10 or fewer fps, the delay becomes significant in terms of lip-sync with telephone audio. We are now working with SuperMac to avoid this problem. Look for improvements in a future release. 14. The Message Crawl feature allows banner messages to appear and scroll on the screen. Simply type (with CU-SeeMe in the foreground), and the characters you type will be displayed at the bottom of your local video window and transmitted with your video. (Note that if you mirror your local image, you will have to read backwards as you type! But remote viewers will see it correctly.) This admittedly "cute" feature is actually useful for brief messages like "Call me. 515-222-3333." If you type the up-arrow, you can move the line to the top of the screen; down-arrow puts it back at the bottom. Left-arrow will animate the text, starting it scrolling to the left. A second left-arrow will speed it up. Right-arrow reverses the effect (slows or stops the crawl). Please remember that a scrolling message creates more movement eating up bandwidth. BE KIND TO THE INTERNET and other CU-SeeMe senders and receivers. Use scrolling sparingly; e.g., don't go away and leave a picture up with a message scrolling. 15. Buttons on the button bar on remote windows will bring up a stats panel or an info panel. The Stats panel shows amount of data sent and received and loss rates, both as measured locally for data received and what the other end is reporting. Info currently shows just the IP address, stay tuned. ******************************************************** How To Test CU-SeeMe To connect for a CU-SeeMe video conference, you must have the IP address of another CU-SeeMe user or the address of a CU-SeeMe reflector. If calling another user, the user must have CU-SeeMe running in *WAITING* status on their desktop. Use Connect or Connect to > in the Connections menu. We suggest that you begin by using two Macs, one connecting to the other, for a first test of CU-SeeMe. You will need to use a reflector to have a multiparty conference on the Internet. The CU-SeeMe reflector program is a Unix program which we have tested so far only on Sun Sparc workstations. If you are not familiar with IP networks, reflectors and/or your particular network set-up, ask your system administrator for help in operating a CU-SeeMe reflector. Instructions on how to operate a reflector follow. ******************************************************** CU-SeeMe Maillist For anyone interested in following developments in CU-SeeMe or its use, or in contacting other CU-SeeMe users, an automated maillist has been established. The list is provided for unrestricted discussion of the CU-SeeMe packet video software. Developers and project management all read the list. To date there has been little traffic, but we expect more as new versions are released over the next few months. We, and other users, would also like to hear about and discuss innovative uses of CU-SeeMe. Please write and tell us your story. To join the list, send a message with the following line as the entire message body to listserv@cornell.edu: subscribe cu-seeme-l (Substitute your actual name, please; it's amazing how many don't.) You should receive a confirming message with extensive instructions on use of the list. You can send mail to be distributed to the list to: cu-seeme-l@cornell.edu. Please be sure to send to this address ONLY when you want your message redistributed. ******************************************************** How to FTP CU-SeeMe Materials To obtain CU-SeeMe, use ftp (file transfer protocol) from gated.cornell.edu in the directory /pub/video. The software (CU-SeeMe, vdig, etc.) are stored in MacBinary II format which will automatically be unpacked by Fetch. Documentation files have README and version numbers of corresponding software in their names and are simple text. Using Fetch to ftp: Fetch software may be used to ftp CU-SeeMe software The Host is gated.cornell.edu, the User ID is "anonymous" and the directory is /pub/video. Be sure to select the 0.60 version of CU-SeeMe. Select "Automatic" for file type and use "get file" to transfer the software to your desktop. The CU-SeeMe ReadMe is this file, so you need to download it only if the date is later than the date on this file. Using Mosaic to ftp: NCSA's Mosaic software can be used to ftp your CU-SeeMe software via gopher. Select "Open URL" from the file menu. Type gopher://gated.cornell.edu/ in the URL window. Select the directory /pub/video. Be sure to select the 0.60 version of CU-SeeMe. The CU-SeeMe ReadMe is this file, so you need to download it only if the date is later than the date on this file. ******************************************************** HOW TO OPERATE A CU-SeeMe REFLECTOR: 1. Obtain software -- a tar file may be obtained via anonymous ftp from gated.cornell.edu in directory /pub/video as reflect.v9.tar. Untar and install in the usual way on a Sun Sparc with a good Internet connection. 2. Issue the unix command: "reflect" and then open connections to the Sun from Mac's running CU-SeeMe0.42 or CU-SeeMe0.60. 3. On the version 9 reflector, if you issure "reflect -s" each Mac will receive a copy of its own video stream as well as any other streams. 4. The tar file for v9 includes the sources for the reflector so folks can try porting to other platforms. Anything with Berkeley networking should be OK, but we did find an incompatibility with the sockets implementation in AIX for the RS-6000. 5. We have carried up to 6 participants on a reflector. But give some thought to how reflectors are linked together and how many streams are flowing on which paths. Currently, CU-SeeMe limits open windows to 8, but trying to have 8 folks each send one stream and receive 7 thru the same reflector, assuming it has just one ethernet interface, would mean 8 streams in and 56 out. If each tries to get 100Kbps through at some point in time, you would be trying to get 6.4 Mbit/sec thru the ethernet. That would probablybe deep into the collision realm. With the -g and -r parameters, you can set up a reflector net which could give a fairly large conference; PLEASE PAY ATTENTION TO THE LOAD YOU PUT ON THE INTERNET. The reflector (version .09) accepts the following parameters: -s self-reflect mode -d debug mode -t tracefile specifiy the name of a tracefile -c ipaddress normal client -r ipaddress "respond" as a server to a BCC client -g ipaddress "go get" video from specified BCC server -m ttl ipaddress multicast to ipaddress with TTL set to ttl -s is debugging option that sends the clients video stream back to himself -d prints out debugging and packet trace information -t traces "events" to the specified log file. Right now the reflector always logs "events" to a log file, if the file name is not specified the file reflect.log is used -c is used to construct an admit list for the reflector. If you want to restrict access to the reflector, use a series of -c options. Only those users with the listed IP addresses will be permitted to use the reflector. If no -c options are specified, the reflector will accept any and all clients. -r tells the reflector to "respond" to a second reflector, at the specified IP address, providing a "blind carbon copy" of all video streams coming to this reflector. Note that nothing is accepted from this second reflector, it is a one way pipe, intended to impact the conference minimally. -g tells the reflector to "go get" video from the primary reflector at the specified IP address, thus providing a watch only service for Mac clients who connect to this reflector to observe the conference on the primary reflector. Ordinarily, such clients should open connections unchoosing the "I will send" option, to conserve bandwidth. Alternatively, a reflector could use this option with the -m option to function as a relay to the mbone. Caution: you might think that setting up complementary -g -r pairs on two reflectors would give you a general inter-reflector link, allowing you to distribute reflector load. In fact it will produce a loop and a lot of collisions. -m multicast all video streams to the specified IP multicast group address (it *must* be a multicast group address) with the specified TTL. This option is currently only useful in conjunction with nv 3.1 used to receive the video streams. If compiling the sources, use -DMULTI to enable this option. To use -m, you must run the reflector on a unix system with multicast kernal.