The system proposed is composed of two major subsystems: tracking and transmission. The goal is to use standard IP networking allowing for the system to be easily portable to a variety of computer architectures and operating systems, and over any of the many networks which can transport IP data. While the prototype system will be developed on a Windows platform, it should be easily ported to the Macintosh, or to a variety of Unix systems. In this effort, a minimal amount of low-level driver code will be in C or C++, while the majority of the code will be written in Java. Writing in Java allows the development team to take advantage of Java's cross-platform nature, built-in graphical tools and the independence gained by allowing control via standard Java-capable web browsers versus having to design and implement a complete application with a static set of features.
The basis for the project is a gray-scale QuickCam by Connectix Corp. The Windows version uses a standard 25-pin parallel port and a pass-through connector on the keyboard port of computers running Windows 3.x or 95. Windows NT is scheduled for support in the near future, and OS/2 in Windows compatibility mode already functions. This same camera also works with the variety of Unix operating systems available for the Intel platform. A serial port version is available for the Macintosh, and can be used with other computers which do not use a parallel port. The QuickCam is a digital image capture system, and as such does not need an additional video-capture card. The gray-scale QuickCam comes from the factory with a fixed focus lens set for 18 inches to infinity; however, it is possible to adjust this beyond factory specifications. The camera also supports images of up to 320x240 pixels. A color version is also available, and should be easy to integrate into the Video-conferencing system if the end user chooses--that product has a manual focus lens for 1 inch to infinity and maximum resolution of 640x480. In either case, the frame rate depends on the resolution in use, speed of host computer and other similar factors.
While the QuickCam is an important part of the video-conferencing system, the system proposed is to be marketed as an add-on for those already owning a QuickCam. In addition to the acoustical tracking system and motorized camera mount, the proposed system involves software written in Java. Due to the security features of the Java language, it is necessary to manually install the software on the host computer prior to using it, though it is possible to obtain the software online. Java does not allow software on a remote computer to access local resources such as disk drives, input/output ports, etc. in order to minimize the risk of "Trojan horse" type attacks. The Java system will implement all the user controls for the system, including options for manual control of camera movement, changes in resolution and frames per second and audio controls. The Java applets would be accessed via a standard Web browser, such as Netscape Navigator or Microsoft Internet Explorer, allowing the overall user interface to match and keep pace with the user's preferred Web environment.
While the Java environment is preferred for its built-in tools and cross platform availability, it is not quite as fast as C or C++; this becomes very important for the time critical applications of interfacing with the audio and video sub-systems and sending/receiving data over the network. Therefore, these components will be written in C or C++ and interface with the Java code via hooks built into the Java language. As a result of this design decision, these components will need localization when the system is ported to other platforms. However, that process should be kept to minimum by use standardized library calls and allowing the Java language to be used whenever possible.
An overview of the system can be represented by the block diagram shown on the following page. The user would interact with a web browser, which would present not only the video images but also the controls for operating the system. Both would be in the form of Java applets within the web browser window. These applets would then interface with the three subsystems via C or C++ code. The video subsystem would allow communication to and from the QuickCam, the audio subsystem would integrate with the microphone and speaker, and the network subsystem would handle the transmission and reception of data from the network.
While portions of this project have been done by others, our searches have yet to find any implementation of our project as a whole. The QuickCam is heavily supported, and in some respects is the standard video capture device, for the CU-SeeMe program. CU-SeeMe, developed at Cornell University, is a point-to-point video-conferencing system that operates under the Macintosh and, to a lesser extent, Windows operating systems. It is a stand-alone application for video-conferencing, but does not support the image following capabilities of the proposed system. Pseudo-multicast use of CU-SeeMe is possible by pointing an individual client to a "Reflector" which retransmits the data to each of its clients--the "Reflector" is an additional software component and runs only on a variety of Unix platforms. Information on CU-SeeMe in general can be found at <URL:http://cu-seeme.cornell.edu/>, and information on the commercial version can be found at <URL:http://www.cu-seeme.com/>.
Another project of interest is "A QuickCam Inside a Java Applet" by Ralf Ackermann. While the system is no longer available for public use, the information on the project is still online. This implementation uses a QuickCam connected to a computer running Linux (a freely distributable and fully functional Unix operating system). Users from a limited set of systems can use any web browser that supports Java to pan and tilt the camera. Their commands are received by the server and translated where a C program interfaces with a set of stepper motors to move the camera. In this implementation, Java is used only for the controls by the remote user and a combination of custom C code and a modified web server are used on the host machine. The system does not implement audio nor does it automatically follow a given subject--movement of the camera is the responsibility of the viewer. More information on this implementation can be found at <URL:http://alwin.informatik.tuchemnitz.de/~java/ROBOT_CAMERA/example1.html>.
The third major implementation that is providing background information for this project is "QuickCam for Linux" or "Qcam Multimedia" by Scott Laird and Jerry Kalkhof. This is a series of projects which are being built up to become a platform independent video-conferencing system. The implementation began with a simple video only service in C/C++, grew into one with audio and video services and is now under development as a Java-based system for use with Netscape Navigator. Among the ideas proposed by Laird and Kalkhof is a packet format allowing for a good synchronization between the audio and video. More information is available from <URL:http://www.cs.odu.edu/~kalkhof/quickcam/qcam-0.3/>.