System Startup:

A user selects which player is going to be used for the system.

For the camera driver to work, and thereby the whole system working, you need to be root for the system to be in local or server mode. Client mode does not use the camera and can run by any user.

When the player is started it checks the command line arguments to see which mode it will be in. The following modes are available: local, client, or server mode.

The modes are indicated by these command line arguments:

-s for server mode.
-c for client mode.
Local mode requires no option.

There are also provisions to capture record the events of the system.
-l will record events only. -L will record both the events and the images from the camera.. -lpath or -Lpath will setup the log file under the path given. The path is the location to store the log files. You must end the path with a '/', or the location will not be correct.

Also, there is a flipper file that stores the locations of the flippers. To use a flipper file the command line argument is -Ffilename, where filename is the name of the flipper locations file. If the file is found, the system reads the locations. If the file does not exist, the flipper locations are found and are stored to that file.

After the player's mode is selected, the player starts JavaQcam.


JavaQcam initializes the remainder of the system.

  1. JavaQcam initializes the Camera.
  2. Sets the command line arguments in the GameOptions.
  3. JavaQcam checks the command line arguments.
  4. Options menu is displayed.
  5. Saves the options file.
  6. Opens the flippers file and sends it to the GameOptions.
  7. Makes the log file if needed.
  8. Sets the Camera into it's operation mode. The mode depends on the log file's status.
  9. Makes the MainMenu.
  10. Starts the MainMenu.


The MainMenu has the DrawingCanvas that displays the image from the camera (if displaying images is selected), a Textfield for statistics information, and Buttons to control the system.

  1. When initialized, it gets the size of the frame from the camera, to adjust the size of the window and canvas.
  2. Asks the player to create the Buffers for the system.
  3. Creates the threads, by asking the player for each of the threads in the system. The player returns an instance of the request thread.
  4. Sets up the buttons and their events.
  5. The threads in the system wait idle until the Start button is pressed.