Vaio Picturebook Motion Eye Camera Driver Readme
------------------------------------------------
	Copyright (C) 2001-2004 Stelian Pop <stelian@popies.net>
	Copyright (C) 2001-2002 Alcôve <www.alcove.com>
	Copyright (C) 2000 Andrew Tridgell <tridge@samba.org>

This driver enable the use of video4linux compatible applications with the
Motion Eye camera. This driver requires the "Sony Laptop Extras" driver (which
can be found in the "Misc devices" section of the kernel configuration utility)
to be compiled and installed (using its "camera=1" parameter).

It can do at maximum 30 fps @ 320x240 or 15 fps @ 640x480.

Grabbing is supported in packed YUV colorspace only.

MJPEG hardware grabbing is supported via a private API (see below).

Hardware supported:
-------------------

This driver supports the 'second' version of the MotionEye camera :)

The first version was connected directly on the video bus of the Neomagic
video card and is unsupported.

The second one, made by Kawasaki Steel is fully supported by this
driver (PCI vendor/device is 0x136b/0xff01)

The third one, present in recent (more or less last year) Picturebooks
(C1M* models), is not supported. The manufacturer has given the specs
to the developers under a NDA (which allows the development of a GPL
driver however), but things are not moving very fast (see
http://r-engine.sourceforge.net/) (PCI vendor/device is 0x10cf/0x2011).

There is a forth model connected on the USB bus in TR1* Vaio laptops.
This camera is not supported at all by the current driver, in fact
little information if any is available for this camera
(USB vendor/device is 0x054c/0x0107).

Driver options:
---------------

Several options can be passed to the meye driver using the standard
module argument syntax (<param>=<value> when passing the option to the
module or meye.<param>=<value> on the kernel boot line when meye is
statically linked into the kernel). Those options are:

	gbuffers:	number of capture buffers, default is 2 (32 max)

	gbufsize:	size of each capture buffer, default is 614400

	video_nr:	video device to register (0 = /dev/video0, etc)

Module use:
-----------

In order to automatically load the meye module on use, you can put those lines
in your /etc/modprobe.d/meye.conf file:

	alias char-major-81 videodev
	alias char-major-81-0 meye
	options meye gbuffers=32

Usage:
------

	xawtv >= 3.49 (<http://bytesex.org/xawtv/>)
		for display and uncompressed video capture:

			xawtv -c /dev/video0 -geometry 640x480
				or
			xawtv -c /dev/video0 -geometry 320x240

	motioneye (<http://popies.net/meye/>)
		for getting ppm or jpg snapshots, mjpeg video

Private API:
------------

	The driver supports frame grabbing with the video4linux API,
	so all video4linux tools (like xawtv) should work with this driver.

	Besides the video4linux interface, the driver has a private interface
	for accessing the Motion Eye extended parameters (camera sharpness,
	agc, video framerate), the shapshot and the MJPEG capture facilities.

	This interface consists of several ioctls (prototypes and structures
	can be found in include/linux/meye.h):

	MEYEIOC_G_PARAMS
	MEYEIOC_S_PARAMS
		Get and set the extended parameters of the motion eye camera.
		The user should always query the current parameters with
		MEYEIOC_G_PARAMS, change what he likes and then issue the
		MEYEIOC_S_PARAMS call (checking for -EINVAL). The extended
		parameters are described by the meye_params structure.


	MEYEIOC_QBUF_CAPT
		Queue a buffer for capture (the buffers must have been
		obtained with a VIDIOCGMBUF call and mmap'ed by the
		application). The argument to MEYEIOC_QBUF_CAPT is the
		buffer number to queue (or -1 to end capture). The first
		call to MEYEIOC_QBUF_CAPT starts the streaming capture.

	MEYEIOC_SYNC
		Takes as an argument the buffer number you want to sync.
		This ioctl blocks until the buffer is filled and ready
		for the application to use. It returns the buffer size.

	MEYEIOC_STILLCAPT
	MEYEIOC_STILLJCAPT
		Takes a snapshot in an uncompressed or compressed jpeg format.
		This ioctl blocks until the snapshot is done and returns (for
		jpeg snapshot) the size of the image. The image data is
		available from the first mmap'ed buffer.

	Look at the 'motioneye' application code for an actual example.

Bugs / Todo:
------------

	- 'motioneye' still uses the meye private v4l1 API extensions.
