Remote Camera Control Client ============================ This client can be used in conjunction with the devserv program to control pan/tilt cameras and a video switcher. The client has been built in java 1.1 so you will need a java virtual machine to run it. The client communicates with the device server (devserv) using ASCII text messages. The messaging format is available from our WWW site at http://www-itg.lbl.gov/mbone/devserv/. The client sends its messages to the server using UDP messages and the server sends all return communication using multicast messages. Currently the devserv program can control the Canon VC-C3 and the Sony EVI-D30 cameras and the Panasonic WJ-MX50 video switcher. We will be adding additional cameras and video switchers for the next release. Compiling and Running --------------------- We have packaged and archived the camera client to make it easier to run. We have included some files in the distribution package to help with compiling and running the camera client. If you want to run the camera client from a shell script 1. edit the camclnt file to contain the correct paths for java and CamClnt. 2. run camclnt <# of cameras> To compile a new version of the remote camera client a Makefile is provided. To compile the client use the target camclnt make camclnt Before compiling you might want to first use make clean The camera client default values for # of cameras and for remote server (where devserv is running) can be changed by editting the file CamClnt/camInterface.java. The only values that you should need to change are near the top of the file and are the following. // THE FOLLOWING VARIABLES PROVIDE DEFAULT VALUES FOR SOME THINGS // THAT YOU MIGHT WANT TO CUSTOMIZE TO YOUR SITE String curaddr = "localhost"; // default address for devserv private static final int defaultnumcams = 3; //the number of cameras to assume // END SITE CUSTOMIZATION SECTION The Interface ------------- The client interface can be broken into different areas by function so I will describe each one individually. At the top of the interface is a menu bar. Selecting "File" will allow you to "Quit" the camera client. Selecting "Help" gives you two options "About" and "Info" which both give you helpful information about running the camclnt program. If you specify that there is more than one camera when you start up camclnt then a section directly below the menu bar will be displayed to allow you to select the camera to view, to move and to show in the picture-in-picture. The next section provides the means of requesting camera moves and of requesting a picture-in-picture. The white rectangle to the right represents the camera's entire pan-and-tilt range. Selecting with the left mouse button in this rectangle causes a message to be sent to devserv requesting that the camera move to the absolute position requested. The square on the right is a representation of the image that you see in the camera. As of this release we have not yet implemented the interface to the actual camera image so you have to imagine that the camera image is shown in this square. Selecting with the left mouse button in the square will cause the camera to center the location picked. If instead the user holds down the left mouse button while drawing out a square the camera will zoom in on the area drawn out. The right mouse button in this square allows the user to request picture-in-picture. If the user holds down the right mouse button while drawing out a square on the image then the picture-in-picture will be shown in the square drawn out. To turn off picture-in-picture simply press the right mouse button in the square and release without moving the mouse. To translate the picture-in-picture (while you are displaying the picture-in-picture) hold down the right mouse button on the image and move the mouse the direction and distance you would like the picture translated. Directly below this area is the zoom control. The slider in the center can be used to request absolute zoom positions and the buttons to either side are for requesting incremental 1x zoom changes. The field at the bottom of the interface is for specifying which machine is running the devserv. All remote camera control requests will be sent to the IP address of the machine specified in this field. Communication ------------- Each remote camera movement request sent from the client is sent as a UDP message to the server. This means that some requests may be lost before they reach the server so the user may need to re-request the movement. The server sends back status messages using IP Multicast but currently the client ignores these messages.