$Id: README,v 1.7 2005/08/29 23:39:57 sbertin Exp $

1. Introduction

	This is a driver for STMicroelectronics's CPiA2 (second generation
Colour Processor Interface ASIC) based cameras. This camera outputs an MJPEG
stream at up to vga size. It implements the Video4Linux interface as much as
possible.  Since the V4L interface does not support compressed formats, only
an mjpeg enabled application can be used with the camera. We have modified the
gqcam application to view this stream.

	The driver is implemented as two kernel modules. The cpia2 module
contains the camera functions and the V4L interface.  The cpia2_usb module
contains usb specific functions.  The main reason for this was the size of the
module was getting out of hand, so I separted them.  It is not likely that
there will be a parallel port version.

FEATURES:
   - Supports cameras with the Vision stv6410 (CIF) and stv6500 (VGA) cmos
     sensors. I only have the vga sensor, so can't test the other.
   - Image formats: VGA, QVGA, CIF, QCIF, and a number of sizes in between.
     VGA and QVGA are the native image sizes for the VGA camera. CIF is done
     in the coprocessor by scaling QVGA.  All other sizes are done by clipping.
   - Palette: YCrCb, compressed with MJPEG.
   - Some compression parameters are settable.
   - Sensor framerate is adjustable (up to 30 fps CIF, 15 fps VGA).
   - Adjust brightness, color, contrast while streaming.
   - Flicker control settable for 50 or 60 Hz mains frequency.

2. Making and installing the stv672 driver modules:

	Requirements:
	-------------
	This should work with 2.4 (2.4.23 and later) and 2.6 kernels, but has
only been tested on 2.6.  Video4Linux must be either compiled into the kernel or
available as a module.  Video4Linux2 is automatically detected and made
available at compile time.

	Compiling:
	----------
	As root, do a make install.  This will compile and install the modules
into the media/video directory in the module tree. For 2.4 kernels, use
Makefile_2.4 (aka do make -f Makefile_2.4 install).

	Setup:
	------
	Use 'modprobe cpia2' to load and 'modprobe -r cpia2' to unload. This
may be done automatically by your distribution.

3. Driver options

	Option		Description
	------		-----------
	video_nr	video device to register (0=/dev/video0, etc)
			range -1 to 64.  default is -1 (first available)
			If you have more than 1 camera, this MUST be -1.
	buffer_size	Size for each frame buffer in bytes (default 68k)
	num_buffers	Number of frame buffers (1-32, default 3)
	alternate	USB Alternate (2-7, default 7)
	flicker_freq	Frequency for flicker reduction(50 or 60, default 60)
	flicker_mode	0 to disable, or 1 to enable flicker reduction.
			(default 0). This is only effective if the camera
			uses a stv0672 coprocessor.

	Setting the options:
	--------------------
	If you are using modules, edit /etc/modules.conf and add an options
line like this:
	options cpia2 num_buffers=3 buffer_size=65535

	If the driver is compiled into the kernel, at boot time specify them
like this:
	cpia2.num_buffers=3 cpia2.buffer_size=65535

	What buffer size should I use?
	------------------------------
	The maximum image size depends on the alternate you choose, and the
frame rate achieved by the camera.  If the compression engine is able to
keep up with the frame rate, the maximum image size is given by the table
below.
	The compression engine starts out at maximum compression, and will
increase image quality until it is close to the size in the table.  As long
as the compression engine can keep up with the frame rate, after a short time
the images will all be about the size in the table, regardless of resolution.
	At low alternate settings, the compression engine may not be able to
compress the image enough and will reduce the frame rate by producing larger
images.
	The default of 68k should be good for most users.  This will handle
any alternate at frame rates down to 15fps.  For lower frame rates, it may
be necessary to increase the buffer size to avoid having frames dropped due
to insufficient space.

			     Image size(bytes)
	Alternate  bytes/ms   15fps    30fps
	    2         128      8533     4267
	    3         384     25600    12800
	    4         640     42667    21333
	    5         768     51200    25600
	    6         896     59733    29867
	    7        1023     68200    34100

	How many buffers should I use?
	------------------------------
	For normal streaming, 3 should give the best results.  With only 2,
it is possible for the camera to finish sending one image just after a
program has started reading the other.  If this happens, the driver must drop
a frame.  The exception to this is if you have a heavily loaded machine.  In
this case use 2 buffers.  You are probably not reading at the full frame rate.
If the camera can send multiple images before a read finishes, it could
overwrite the third buffer before the read finishes, leading to a corrupt
image.  Single and double buffering have extra checks to avoid overwriting.

4. Using the camera

	We are providing a modified gqcam application to view the output. In
order to avoid confusion, here it is called mview.  There is also the qx5view
program which can also control the lights on the qx5 microscope. MJPEG Tools
(http://mjpeg.sourceforge.net) can also be used to record from the camera.

5. Notes to developers:

   - This is a driver version stripped of the 2.4 back compatibility
     and old MJPEG ioctl API. See cpia2.sf.net for 2.4 support.

6. Thanks:

   - Peter Pregler <Peter_Pregler@email.com>,
     Scott J. Bertin <scottbertin@yahoo.com>, and
     Jarl Totland <Jarl.Totland@bdc.no> for the original cpia driver, which
     this one was modelled from.
