| Alan Cox | ab33d50 | 2006-02-27 00:09:05 -0300 | [diff] [blame] | 1 | $Id: README,v 1.7 2005/08/29 23:39:57 sbertin Exp $ | 
 | 2 |  | 
 | 3 | 1. Introduction | 
 | 4 |  | 
 | 5 | 	This is a driver for STMicroelectronics's CPiA2 (second generation | 
 | 6 | Colour Processor Interface ASIC) based cameras. This camera outputs an MJPEG | 
 | 7 | stream at up to vga size. It implements the Video4Linux interface as much as | 
 | 8 | possible.  Since the V4L interface does not support compressed formats, only | 
 | 9 | an mjpeg enabled application can be used with the camera. We have modified the | 
 | 10 | gqcam application to view this stream. | 
 | 11 |  | 
 | 12 | 	The driver is implemented as two kernel modules. The cpia2 module | 
 | 13 | contains the camera functions and the V4L interface.  The cpia2_usb module | 
 | 14 | contains usb specific functions.  The main reason for this was the size of the | 
| Masanari Iida | 5edfe7d | 2012-04-05 17:02:52 -0700 | [diff] [blame] | 15 | module was getting out of hand, so I separated them.  It is not likely that | 
| Alan Cox | ab33d50 | 2006-02-27 00:09:05 -0300 | [diff] [blame] | 16 | there will be a parallel port version. | 
 | 17 |  | 
 | 18 | FEATURES: | 
 | 19 |    - Supports cameras with the Vision stv6410 (CIF) and stv6500 (VGA) cmos | 
 | 20 |      sensors. I only have the vga sensor, so can't test the other. | 
 | 21 |    - Image formats: VGA, QVGA, CIF, QCIF, and a number of sizes in between. | 
 | 22 |      VGA and QVGA are the native image sizes for the VGA camera. CIF is done | 
 | 23 |      in the coprocessor by scaling QVGA.  All other sizes are done by clipping. | 
 | 24 |    - Palette: YCrCb, compressed with MJPEG. | 
 | 25 |    - Some compression parameters are settable. | 
 | 26 |    - Sensor framerate is adjustable (up to 30 fps CIF, 15 fps VGA). | 
 | 27 |    - Adjust brightness, color, contrast while streaming. | 
 | 28 |    - Flicker control settable for 50 or 60 Hz mains frequency. | 
 | 29 |  | 
 | 30 | 2. Making and installing the stv672 driver modules: | 
 | 31 |  | 
 | 32 | 	Requirements: | 
 | 33 | 	------------- | 
 | 34 | 	This should work with 2.4 (2.4.23 and later) and 2.6 kernels, but has | 
 | 35 | only been tested on 2.6.  Video4Linux must be either compiled into the kernel or | 
 | 36 | available as a module.  Video4Linux2 is automatically detected and made | 
 | 37 | available at compile time. | 
 | 38 |  | 
 | 39 | 	Compiling: | 
 | 40 | 	---------- | 
 | 41 | 	As root, do a make install.  This will compile and install the modules | 
 | 42 | into the media/video directory in the module tree. For 2.4 kernels, use | 
 | 43 | Makefile_2.4 (aka do make -f Makefile_2.4 install). | 
 | 44 |  | 
 | 45 | 	Setup: | 
 | 46 | 	------ | 
 | 47 | 	Use 'modprobe cpia2' to load and 'modprobe -r cpia2' to unload. This | 
 | 48 | may be done automatically by your distribution. | 
 | 49 |  | 
 | 50 | 3. Driver options | 
 | 51 |  | 
 | 52 | 	Option		Description | 
 | 53 | 	------		----------- | 
 | 54 | 	video_nr	video device to register (0=/dev/video0, etc) | 
 | 55 | 			range -1 to 64.  default is -1 (first available) | 
 | 56 | 			If you have more than 1 camera, this MUST be -1. | 
 | 57 | 	buffer_size	Size for each frame buffer in bytes (default 68k) | 
 | 58 | 	num_buffers	Number of frame buffers (1-32, default 3) | 
 | 59 | 	alternate	USB Alternate (2-7, default 7) | 
 | 60 | 	flicker_freq	Frequency for flicker reduction(50 or 60, default 60) | 
 | 61 | 	flicker_mode	0 to disable, or 1 to enable flicker reduction. | 
 | 62 | 			(default 0). This is only effective if the camera | 
 | 63 | 			uses a stv0672 coprocessor. | 
 | 64 |  | 
 | 65 | 	Setting the options: | 
 | 66 | 	-------------------- | 
 | 67 | 	If you are using modules, edit /etc/modules.conf and add an options | 
 | 68 | line like this: | 
 | 69 | 	options cpia2 num_buffers=3 buffer_size=65535 | 
 | 70 |  | 
 | 71 | 	If the driver is compiled into the kernel, at boot time specify them | 
 | 72 | like this: | 
| Adrian Bunk | 8cbe84f | 2006-02-28 04:40:51 -0300 | [diff] [blame] | 73 | 	cpia2.num_buffers=3 cpia2.buffer_size=65535 | 
| Alan Cox | ab33d50 | 2006-02-27 00:09:05 -0300 | [diff] [blame] | 74 |  | 
 | 75 | 	What buffer size should I use? | 
 | 76 | 	------------------------------ | 
 | 77 | 	The maximum image size depends on the alternate you choose, and the | 
 | 78 | frame rate achieved by the camera.  If the compression engine is able to | 
 | 79 | keep up with the frame rate, the maximum image size is given by the table | 
 | 80 | below. | 
 | 81 | 	The compression engine starts out at maximum compression, and will | 
 | 82 | increase image quality until it is close to the size in the table.  As long | 
 | 83 | as the compression engine can keep up with the frame rate, after a short time | 
 | 84 | the images will all be about the size in the table, regardless of resolution. | 
 | 85 | 	At low alternate settings, the compression engine may not be able to | 
 | 86 | compress the image enough and will reduce the frame rate by producing larger | 
 | 87 | images. | 
 | 88 | 	The default of 68k should be good for most users.  This will handle | 
 | 89 | any alternate at frame rates down to 15fps.  For lower frame rates, it may | 
 | 90 | be necessary to increase the buffer size to avoid having frames dropped due | 
 | 91 | to insufficient space. | 
 | 92 |  | 
 | 93 | 			     Image size(bytes) | 
 | 94 | 	Alternate  bytes/ms   15fps    30fps | 
 | 95 | 	    2         128      8533     4267 | 
 | 96 | 	    3         384     25600    12800 | 
 | 97 | 	    4         640     42667    21333 | 
 | 98 | 	    5         768     51200    25600 | 
 | 99 | 	    6         896     59733    29867 | 
 | 100 | 	    7        1023     68200    34100 | 
 | 101 |  | 
 | 102 | 	How many buffers should I use? | 
 | 103 | 	------------------------------ | 
 | 104 | 	For normal streaming, 3 should give the best results.  With only 2, | 
 | 105 | it is possible for the camera to finish sending one image just after a | 
 | 106 | program has started reading the other.  If this happens, the driver must drop | 
 | 107 | a frame.  The exception to this is if you have a heavily loaded machine.  In | 
 | 108 | this case use 2 buffers.  You are probably not reading at the full frame rate. | 
 | 109 | If the camera can send multiple images before a read finishes, it could | 
 | 110 | overwrite the third buffer before the read finishes, leading to a corrupt | 
 | 111 | image.  Single and double buffering have extra checks to avoid overwriting. | 
 | 112 |  | 
 | 113 | 4. Using the camera | 
 | 114 |  | 
 | 115 | 	We are providing a modified gqcam application to view the output. In | 
 | 116 | order to avoid confusion, here it is called mview.  There is also the qx5view | 
 | 117 | program which can also control the lights on the qx5 microscope. MJPEG Tools | 
 | 118 | (http://mjpeg.sourceforge.net) can also be used to record from the camera. | 
 | 119 |  | 
 | 120 | 5. Notes to developers: | 
 | 121 |  | 
 | 122 |    - This is a driver version stripped of the 2.4 back compatibility | 
 | 123 |      and old MJPEG ioctl API. See cpia2.sf.net for 2.4 support. | 
 | 124 |  | 
 | 125 | 6. Thanks: | 
 | 126 |  | 
 | 127 |    - Peter Pregler <Peter_Pregler@email.com>, | 
 | 128 |      Scott J. Bertin <scottbertin@yahoo.com>, and | 
 | 129 |      Jarl Totland <Jarl.Totland@bdc.no> for the original cpia driver, which | 
 | 130 |      this one was modelled from. |