kernel-fxtec-pro1x/drivers/staging/easycap
Linus Torvalds 76d21c5635 Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
* 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (442 commits)
  [media] videobuf2-dma-contig: make cookie() return a pointer to dma_addr_t
  [media] sh_mobile_ceu_camera: Do not call vb2's mem_ops directly
  [media] V4L: soc-camera: explicitly require V4L2_BUF_TYPE_VIDEO_CAPTURE
  [media] v4l: soc-camera: Store negotiated buffer settings
  [media] rc: interim support for 32-bit NEC-ish scancodes
  [media] mceusb: topseed 0x0011 needs gen3 init for tx to work
  [media] lirc_zilog: error out if buffer read bytes != chunk size
  [media] lirc: silence some compile warnings
  [media] hdpvr: use same polling interval as other OS
  [media] ir-kbd-i2c: pass device code w/key in hauppauge case
  [media] rc/keymaps: Remove the obsolete rc-rc5-tv keymap
  [media] remove the old RC_MAP_HAUPPAUGE_NEW RC map
  [media] rc/keymaps: Rename Hauppauge table as rc-hauppauge
  [media] rc-rc5-hauppauge-new: Fix Hauppauge Grey mapping
  [media] rc-rc5-hauppauge-new: Add support for the old Black RC
  [media] rc-rc5-hauppauge-new: Add the old control to the table
  [media] rc-winfast: Fix the keycode tables
  [media] a800: Fix a few wrong IR key assignments
  [media] opera1: Use multimedia keys instead of an app-specific mapping
  [media] dw2102: Use multimedia keys instead of an app-specific mapping
  ...

Fix up trivial conflicts (remove/modify and some real conflicts) in:
	arch/arm/mach-omap2/devices.c
	drivers/staging/Kconfig
	drivers/staging/Makefile
	drivers/staging/dabusb/dabusb.c
	drivers/staging/dabusb/dabusb.h
	drivers/staging/easycap/easycap_ioctl.c
	drivers/staging/usbvideo/usbvideo.c
	drivers/staging/usbvideo/vicam.c
2011-03-24 09:50:13 -07:00
..
easycap.h staging/easycap: kill EASYCAP_IS_VIDEODEV_CLIENT compilation conditional 2011-03-07 13:52:56 -08:00
easycap_ioctl.c Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 2011-03-24 09:50:13 -07:00
easycap_low.c staging/easycap: reduce code duplication for ssa stk settings 2011-03-07 13:52:55 -08:00
easycap_main.c staging/easycap: kill EASYCAP_IS_VIDEODEV_CLIENT compilation conditional 2011-03-07 13:52:56 -08:00
easycap_settings.c staging/easycap: easycap_settings.c don't copy constant strings twice 2011-03-07 13:52:56 -08:00
easycap_sound.c staging/easycap: reduce code nesting in easycap_sound.c 2011-03-07 13:52:57 -08:00
easycap_sound_oss.c staging/easycap: kill EASYCAP_IS_VIDEODEV_CLIENT compilation conditional 2011-03-07 13:52:56 -08:00
easycap_testcard.c staging/easycap: convert comparison to NULL into boolean 2011-03-07 13:24:04 -08:00
Kconfig staging/easycap: fix build when SND is not enabled 2011-02-09 11:56:21 -08:00
Makefile staging/easycap: kill EASYCAP_IS_VIDEODEV_CLIENT compilation conditional 2011-03-07 13:52:56 -08:00
README staging/easycap: Improve interface to the videodev module 2010-11-09 16:31:16 -08:00

        ***********************************************************
        *   EasyCAP USB 2.0 Video Adapter with Audio, Model DC60  *
        *                            and                          *
        *             EasyCAP002 4-Channel USB 2.0 DVR            *
        ***********************************************************
                     Mike Thomas  <rmthomas@sciolus.org>



SUPPORTED HARDWARE
------------------

This driver is intended for use with hardware having USB ID 05e1:0408.
Two kinds of EasyCAP have this USB ID, namely:

    *  EasyCAP USB 2.0 Video Adapter with Audio, Model DC60,
       having input cables labelled CVBS, S-VIDEO, AUDIO(L), AUDIO(R)

    *  EasyCAP002 4-Channel USB 2.0 DVR, having input cables labelled
       1, 2, 3, 4 and an unlabelled input cable for a microphone.


BUILD OPTIONS AND DEPENDENCIES
------------------------------

Unless EASYCAP_DEBUG is defined during compilation it will not be possible
to select a debug level at the time of module installation.

If the parameter EASYCAP_IS_VIDEODEV_CLIENT is undefined during compilation
the built module is entirely independent of the videodev module, and when
the EasyCAP is physically plugged into a USB port the special files
/dev/easycap0 and /dev/easysnd1 are created as video and sound sources
respectively.

If the parameter EASYCAP_IS_VIDEODEV_CLIENT is defined during compilation
the built easycap module is configured to register with the videodev module,
in which case the special files created when the EasyCAP is plugged in are
/dev/video0 and /dev/easysnd0.

During in-tree builds the following should should be defined whenever the
parameter EASYCAP_IS_VIDEODEV_CLIENT is defined:

EASYCAP_NEEDS_V4L2_DEVICE_H
EASYCAP_NEEDS_V4L2_FOPS
EASYCAP_NEEDS_UNLOCKED_IOCTL

If the build is performed out-of-tree against older kernels the parameters
to be defined depend on the kernel version in a way which will not be
discussed here.


KNOWN RUNTIME ISSUES
--------------------

(1) Intentionally, this driver will not stream material which is unambiguously
identified by the hardware as copy-protected.  Normal video output will be
present for about a minute but will then freeze when this situation arises.

(2) The controls for luminance, contrast, saturation, hue and volume may not
always work properly.

(3) Reduced-resolution S-Video seems to suffer from moire artefacts.


INPUT NUMBERING
---------------

For the EasyCAP with S-VIDEO input cable the driver regards a request for
inputs numbered 0 or 1 as referring to CVBS and a request for input
numbered 5 as referring to S-VIDEO.

For the EasyCAP with four CVBS inputs the driver expects to be asked for
any one of inputs numbered 1,2,3,4.  If input 0 is asked for, it is
interpreted as input 1.


MODULE PARAMETERS
-----------------

Three module parameters are defined:

debug      the easycap module is configured at diagnostic level n (0 to 9)
gain       audio gain level n (0 to 31, default is 16)
bars       0 =>  testcard bars when incoming video signal is lost
           1 =>  testcard bars when incoming video signal is lost (default)


SUPPORTED TV STANDARDS AND RESOLUTIONS
--------------------------------------

The following TV standards are natively supported by the hardware and are
usable as (for example) the "norm=" parameter in the mplayer command:

    PAL_BGHIN,    NTSC_N_443,
    PAL_Nc,       NTSC_N,
    SECAM,        NTSC_M,        NTSC_M_JP,
    PAL_60,       NTSC_443,
    PAL_M.

In addition, the driver offers "custom" pseudo-standards with a framerate
which is 20% of the usual framerate.  These pseudo-standards are named:

    PAL_BGHIN_SLOW,    NTSC_N_443_SLOW,
    PAL_Nc_SLOW,       NTSC_N_SLOW,
    SECAM_SLOW,        NTSC_M_SLOW,        NTSC_M_JP_SLOW,
    PAL_60_SLOW,       NTSC_443_SLOW,
    PAL_M_SLOW.


The available picture sizes are:

     at 25 frames per second:   720x576, 704x576, 640x480, 360x288, 320x240;
     at 30 frames per second:   720x480, 640x480, 360x240, 320x240.


WHAT'S TESTED AND WHAT'S NOT
----------------------------

This driver is known to work with mplayer, mencoder, tvtime, zoneminder,
xawtv, gstreamer and sufficiently recent versions of vlc.  An interface
to ffmpeg is implemented, but serious audio-video synchronization problems
remain.

The driver is designed to support all the TV standards accepted by the
hardware, but as yet it has actually been tested on only a few of these.

I have been unable to test and calibrate the S-video input myself because I
do not possess any equipment with S-video output.

This driver does not understand the V4L1 IOCTL commands.


UDEV RULES
----------

In order that the special files /dev/easycap0 and /dev/easysnd1 are created
with conveniently relaxed permissions when the EasyCAP is plugged in, a file
is preferably to be provided in directory /etc/udev/rules.d with content:

ACTION!="add|change", GOTO="easycap_rules_end"
ATTRS{idVendor}=="05e1", ATTRS{idProduct}=="0408", \
	MODE="0666", OWNER="root", GROUP="root"
LABEL="easycap_rules_end"


MODPROBE CONFIGURATION
----------------------

The easycap module is in competition with the module snd-usb-audio for the
EasyCAP's audio channel, and its installation can be aided by providing a
file in directory /etc/modprobe.d with content:

options easycap  gain=16 bars=1
install easycap /sbin/rmmod snd-usb-audio; /sbin/modprobe --ignore-install easycap


ACKNOWLEGEMENTS AND REFERENCES
------------------------------
This driver makes use of information contained in the Syntek Semicon DC-1125
Driver, presently maintained at http://sourceforge.net/projects/syntekdriver/
by Nicolas Vivien.  Particularly useful has been a patch to the latter driver
provided by Ivor Hewitt in January 2009.  The NTSC implementation is taken
from the work of Ben Trask.