diff options
Diffstat (limited to 'Documentation/DocBook/v4l')
148 files changed, 0 insertions, 35072 deletions
diff --git a/Documentation/DocBook/v4l/.gitignore b/Documentation/DocBook/v4l/.gitignore deleted file mode 100644 index d7ec32eafac9..000000000000 --- a/Documentation/DocBook/v4l/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!*.xml diff --git a/Documentation/DocBook/v4l/bayer.pdf b/Documentation/DocBook/v4l/bayer.pdf Binary files differdeleted file mode 100644 index 905e60e6cd42..000000000000 --- a/Documentation/DocBook/v4l/bayer.pdf +++ /dev/null diff --git a/Documentation/DocBook/v4l/bayer.png b/Documentation/DocBook/v4l/bayer.png Binary files differdeleted file mode 100644 index 9b15fb22e817..000000000000 --- a/Documentation/DocBook/v4l/bayer.png +++ /dev/null diff --git a/Documentation/DocBook/v4l/biblio.xml b/Documentation/DocBook/v4l/biblio.xml deleted file mode 100644 index afc8a0dd2601..000000000000 --- a/Documentation/DocBook/v4l/biblio.xml +++ /dev/null @@ -1,188 +0,0 @@ - <bibliography> - <title>References</title> - - <biblioentry id="eia608"> - <abbrev>EIA 608-B</abbrev> - <authorgroup> - <corpauthor>Electronic Industries Alliance (<ulink -url="http://www.eia.org">http://www.eia.org</ulink>)</corpauthor> - </authorgroup> - <title>EIA 608-B "Recommended Practice for Line 21 Data -Service"</title> - </biblioentry> - - <biblioentry id="en300294"> - <abbrev>EN 300 294</abbrev> - <authorgroup> - <corpauthor>European Telecommunication Standards Institute -(<ulink url="http://www.etsi.org">http://www.etsi.org</ulink>)</corpauthor> - </authorgroup> - <title>EN 300 294 "625-line television Wide Screen Signalling -(WSS)"</title> - </biblioentry> - - <biblioentry id="ets300231"> - <abbrev>ETS 300 231</abbrev> - <authorgroup> - <corpauthor>European Telecommunication Standards Institute -(<ulink -url="http://www.etsi.org">http://www.etsi.org</ulink>)</corpauthor> - </authorgroup> - <title>ETS 300 231 "Specification of the domestic video -Programme Delivery Control system (PDC)"</title> - </biblioentry> - - <biblioentry id="ets300706"> - <abbrev>ETS 300 706</abbrev> - <authorgroup> - <corpauthor>European Telecommunication Standards Institute -(<ulink url="http://www.etsi.org">http://www.etsi.org</ulink>)</corpauthor> - </authorgroup> - <title>ETS 300 706 "Enhanced Teletext specification"</title> - </biblioentry> - - <biblioentry id="mpeg2part1"> - <abbrev>ISO 13818-1</abbrev> - <authorgroup> - <corpauthor>International Telecommunication Union (<ulink -url="http://www.itu.ch">http://www.itu.ch</ulink>), International -Organisation for Standardisation (<ulink -url="http://www.iso.ch">http://www.iso.ch</ulink>)</corpauthor> - </authorgroup> - <title>ITU-T Rec. H.222.0 | ISO/IEC 13818-1 "Information -technology — Generic coding of moving pictures and associated -audio information: Systems"</title> - </biblioentry> - - <biblioentry id="mpeg2part2"> - <abbrev>ISO 13818-2</abbrev> - <authorgroup> - <corpauthor>International Telecommunication Union (<ulink -url="http://www.itu.ch">http://www.itu.ch</ulink>), International -Organisation for Standardisation (<ulink -url="http://www.iso.ch">http://www.iso.ch</ulink>)</corpauthor> - </authorgroup> - <title>ITU-T Rec. H.262 | ISO/IEC 13818-2 "Information -technology — Generic coding of moving pictures and associated -audio information: Video"</title> - </biblioentry> - - <biblioentry id="itu470"> - <abbrev>ITU BT.470</abbrev> - <authorgroup> - <corpauthor>International Telecommunication Union (<ulink -url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor> - </authorgroup> - <title>ITU-R Recommendation BT.470-6 "Conventional Television -Systems"</title> - </biblioentry> - - <biblioentry id="itu601"> - <abbrev>ITU BT.601</abbrev> - <authorgroup> - <corpauthor>International Telecommunication Union (<ulink -url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor> - </authorgroup> - <title>ITU-R Recommendation BT.601-5 "Studio Encoding Parameters -of Digital Television for Standard 4:3 and Wide-Screen 16:9 Aspect -Ratios"</title> - </biblioentry> - - <biblioentry id="itu653"> - <abbrev>ITU BT.653</abbrev> - <authorgroup> - <corpauthor>International Telecommunication Union (<ulink -url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor> - </authorgroup> - <title>ITU-R Recommendation BT.653-3 "Teletext systems"</title> - </biblioentry> - - <biblioentry id="itu709"> - <abbrev>ITU BT.709</abbrev> - <authorgroup> - <corpauthor>International Telecommunication Union (<ulink -url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor> - </authorgroup> - <title>ITU-R Recommendation BT.709-5 "Parameter values for the -HDTV standards for production and international programme -exchange"</title> - </biblioentry> - - <biblioentry id="itu1119"> - <abbrev>ITU BT.1119</abbrev> - <authorgroup> - <corpauthor>International Telecommunication Union (<ulink -url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor> - </authorgroup> - <title>ITU-R Recommendation BT.1119 "625-line -television Wide Screen Signalling (WSS)"</title> - </biblioentry> - - <biblioentry id="jfif"> - <abbrev>JFIF</abbrev> - <authorgroup> - <corpauthor>Independent JPEG Group (<ulink -url="http://www.ijg.org">http://www.ijg.org</ulink>)</corpauthor> - </authorgroup> - <title>JPEG File Interchange Format</title> - <subtitle>Version 1.02</subtitle> - </biblioentry> - - <biblioentry id="smpte12m"> - <abbrev>SMPTE 12M</abbrev> - <authorgroup> - <corpauthor>Society of Motion Picture and Television Engineers -(<ulink url="http://www.smpte.org">http://www.smpte.org</ulink>)</corpauthor> - </authorgroup> - <title>SMPTE 12M-1999 "Television, Audio and Film - Time and -Control Code"</title> - </biblioentry> - - <biblioentry id="smpte170m"> - <abbrev>SMPTE 170M</abbrev> - <authorgroup> - <corpauthor>Society of Motion Picture and Television Engineers -(<ulink url="http://www.smpte.org">http://www.smpte.org</ulink>)</corpauthor> - </authorgroup> - <title>SMPTE 170M-1999 "Television - Composite Analog Video -Signal - NTSC for Studio Applications"</title> - </biblioentry> - - <biblioentry id="smpte240m"> - <abbrev>SMPTE 240M</abbrev> - <authorgroup> - <corpauthor>Society of Motion Picture and Television Engineers -(<ulink url="http://www.smpte.org">http://www.smpte.org</ulink>)</corpauthor> - </authorgroup> - <title>SMPTE 240M-1999 "Television - Signal Parameters - -1125-Line High-Definition Production"</title> - </biblioentry> - - <biblioentry id="en50067"> - <abbrev>EN 50067</abbrev> - <authorgroup> - <corpauthor>European Committee for Electrotechnical Standardization -(<ulink url="http://www.cenelec.eu">http://www.cenelec.eu</ulink>)</corpauthor> - </authorgroup> - <title>Specification of the radio data system (RDS) for VHF/FM sound broadcasting -in the frequency range from 87,5 to 108,0 MHz</title> - </biblioentry> - - <biblioentry id="nrsc4"> - <abbrev>NRSC-4</abbrev> - <authorgroup> - <corpauthor>National Radio Systems Committee -(<ulink url="http://www.nrscstandards.org">http://www.nrscstandards.org</ulink>)</corpauthor> - </authorgroup> - <title>NTSC-4: United States RBDS Standard</title> - </biblioentry> - - </bibliography> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/capture.c.xml b/Documentation/DocBook/v4l/capture.c.xml deleted file mode 100644 index 1c5c49a2de59..000000000000 --- a/Documentation/DocBook/v4l/capture.c.xml +++ /dev/null @@ -1,659 +0,0 @@ -<programlisting> -/* - * V4L2 video capture example - * - * This program can be used and distributed without restrictions. - * - * This program is provided with the V4L2 API - * see http://linuxtv.org/docs.php for more information - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> - -#include <getopt.h> /* getopt_long() */ - -#include <fcntl.h> /* low-level i/o */ -#include <unistd.h> -#include <errno.h> -#include <sys/stat.h> -#include <sys/types.h> -#include <sys/time.h> -#include <sys/mman.h> -#include <sys/ioctl.h> - -#include <linux/videodev2.h> - -#define CLEAR(x) memset(&(x), 0, sizeof(x)) - -enum io_method { - IO_METHOD_READ, - IO_METHOD_MMAP, - IO_METHOD_USERPTR, -}; - -struct buffer { - void *start; - size_t length; -}; - -static char *dev_name; -static enum io_method io = IO_METHOD_MMAP; -static int fd = -1; -struct buffer *buffers; -static unsigned int n_buffers; -static int out_buf; -static int force_format; -static int frame_count = 70; - -static void errno_exit(const char *s) -{ - fprintf(stderr, "%s error %d, %s\n", s, errno, strerror(errno)); - exit(EXIT_FAILURE); -} - -static int xioctl(int fh, int request, void *arg) -{ - int r; - - do { - r = ioctl(fh, request, arg); - } while (-1 == r && EINTR == errno); - - return r; -} - -static void process_image(const void *p, int size) -{ - if (out_buf) - fwrite(p, size, 1, stdout); - - fflush(stderr); - fprintf(stderr, "."); - fflush(stdout); -} - -static int read_frame(void) -{ - struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf; - unsigned int i; - - switch (io) { - case IO_METHOD_READ: - if (-1 == read(fd, buffers[0].start, buffers[0].length)) { - switch (errno) { - case EAGAIN: - return 0; - - case EIO: - /* Could ignore EIO, see spec. */ - - /* fall through */ - - default: - errno_exit("read"); - } - } - - process_image(buffers[0].start, buffers[0].length); - break; - - case IO_METHOD_MMAP: - CLEAR(buf); - - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - - if (-1 == xioctl(fd, VIDIOC_DQBUF, &buf)) { - switch (errno) { - case EAGAIN: - return 0; - - case EIO: - /* Could ignore EIO, see spec. */ - - /* fall through */ - - default: - errno_exit("VIDIOC_DQBUF"); - } - } - - assert(buf.index < n_buffers); - - process_image(buffers[buf.index].start, buf.bytesused); - - if (-1 == xioctl(fd, VIDIOC_QBUF, &buf)) - errno_exit("VIDIOC_QBUF"); - break; - - case IO_METHOD_USERPTR: - CLEAR(buf); - - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_USERPTR; - - if (-1 == xioctl(fd, VIDIOC_DQBUF, &buf)) { - switch (errno) { - case EAGAIN: - return 0; - - case EIO: - /* Could ignore EIO, see spec. */ - - /* fall through */ - - default: - errno_exit("VIDIOC_DQBUF"); - } - } - - for (i = 0; i < n_buffers; ++i) - if (buf.m.userptr == (unsigned long)buffers[i].start - && buf.length == buffers[i].length) - break; - - assert(i < n_buffers); - - process_image((void *)buf.m.userptr, buf.bytesused); - - if (-1 == xioctl(fd, VIDIOC_QBUF, &buf)) - errno_exit("VIDIOC_QBUF"); - break; - } - - return 1; -} - -static void mainloop(void) -{ - unsigned int count; - - count = frame_count; - - while (count-- > 0) { - for (;;) { - fd_set fds; - struct timeval tv; - int r; - - FD_ZERO(&fds); - FD_SET(fd, &fds); - - /* Timeout. */ - tv.tv_sec = 2; - tv.tv_usec = 0; - - r = select(fd + 1, &fds, NULL, NULL, &tv); - - if (-1 == r) { - if (EINTR == errno) - continue; - errno_exit("select"); - } - - if (0 == r) { - fprintf(stderr, "select timeout\n"); - exit(EXIT_FAILURE); - } - - if (read_frame()) - break; - /* EAGAIN - continue select loop. */ - } - } -} - -static void stop_capturing(void) -{ - enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; - - switch (io) { - case IO_METHOD_READ: - /* Nothing to do. */ - break; - - case IO_METHOD_MMAP: - case IO_METHOD_USERPTR: - type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - if (-1 == xioctl(fd, VIDIOC_STREAMOFF, &type)) - errno_exit("VIDIOC_STREAMOFF"); - break; - } -} - -static void start_capturing(void) -{ - unsigned int i; - enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; - - switch (io) { - case IO_METHOD_READ: - /* Nothing to do. */ - break; - - case IO_METHOD_MMAP: - for (i = 0; i < n_buffers; ++i) { - struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf; - - CLEAR(buf); - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - buf.index = i; - - if (-1 == xioctl(fd, VIDIOC_QBUF, &buf)) - errno_exit("VIDIOC_QBUF"); - } - type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - if (-1 == xioctl(fd, VIDIOC_STREAMON, &type)) - errno_exit("VIDIOC_STREAMON"); - break; - - case IO_METHOD_USERPTR: - for (i = 0; i < n_buffers; ++i) { - struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf; - - CLEAR(buf); - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_USERPTR; - buf.index = i; - buf.m.userptr = (unsigned long)buffers[i].start; - buf.length = buffers[i].length; - - if (-1 == xioctl(fd, VIDIOC_QBUF, &buf)) - errno_exit("VIDIOC_QBUF"); - } - type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - if (-1 == xioctl(fd, VIDIOC_STREAMON, &type)) - errno_exit("VIDIOC_STREAMON"); - break; - } -} - -static void uninit_device(void) -{ - unsigned int i; - - switch (io) { - case IO_METHOD_READ: - free(buffers[0].start); - break; - - case IO_METHOD_MMAP: - for (i = 0; i < n_buffers; ++i) - if (-1 == munmap(buffers[i].start, buffers[i].length)) - errno_exit("munmap"); - break; - - case IO_METHOD_USERPTR: - for (i = 0; i < n_buffers; ++i) - free(buffers[i].start); - break; - } - - free(buffers); -} - -static void init_read(unsigned int buffer_size) -{ - buffers = calloc(1, sizeof(*buffers)); - - if (!buffers) { - fprintf(stderr, "Out of memory\n"); - exit(EXIT_FAILURE); - } - - buffers[0].length = buffer_size; - buffers[0].start = malloc(buffer_size); - - if (!buffers[0].start) { - fprintf(stderr, "Out of memory\n"); - exit(EXIT_FAILURE); - } -} - -static void init_mmap(void) -{ - struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link> req; - - CLEAR(req); - - req.count = 4; - req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - req.memory = V4L2_MEMORY_MMAP; - - if (-1 == xioctl(fd, VIDIOC_REQBUFS, &req)) { - if (EINVAL == errno) { - fprintf(stderr, "%s does not support " - "memory mapping\n", dev_name); - exit(EXIT_FAILURE); - } else { - errno_exit("VIDIOC_REQBUFS"); - } - } - - if (req.count < 2) { - fprintf(stderr, "Insufficient buffer memory on %s\n", - dev_name); - exit(EXIT_FAILURE); - } - - buffers = calloc(req.count, sizeof(*buffers)); - - if (!buffers) { - fprintf(stderr, "Out of memory\n"); - exit(EXIT_FAILURE); - } - - for (n_buffers = 0; n_buffers < req.count; ++n_buffers) { - struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf; - - CLEAR(buf); - - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - buf.index = n_buffers; - - if (-1 == xioctl(fd, VIDIOC_QUERYBUF, &buf)) - errno_exit("VIDIOC_QUERYBUF"); - - buffers[n_buffers].length = buf.length; - buffers[n_buffers].start = - mmap(NULL /* start anywhere */, - buf.length, - PROT_READ | PROT_WRITE /* required */, - MAP_SHARED /* recommended */, - fd, buf.m.offset); - - if (MAP_FAILED == buffers[n_buffers].start) - errno_exit("mmap"); - } -} - -static void init_userp(unsigned int buffer_size) -{ - struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link> req; - - CLEAR(req); - - req.count = 4; - req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - req.memory = V4L2_MEMORY_USERPTR; - - if (-1 == xioctl(fd, VIDIOC_REQBUFS, &req)) { - if (EINVAL == errno) { - fprintf(stderr, "%s does not support " - "user pointer i/o\n", dev_name); - exit(EXIT_FAILURE); - } else { - errno_exit("VIDIOC_REQBUFS"); - } - } - - buffers = calloc(4, sizeof(*buffers)); - - if (!buffers) { - fprintf(stderr, "Out of memory\n"); - exit(EXIT_FAILURE); - } - - for (n_buffers = 0; n_buffers < 4; ++n_buffers) { - buffers[n_buffers].length = buffer_size; - buffers[n_buffers].start = malloc(buffer_size); - - if (!buffers[n_buffers].start) { - fprintf(stderr, "Out of memory\n"); - exit(EXIT_FAILURE); - } - } -} - -static void init_device(void) -{ - struct <link linkend="v4l2-capability">v4l2_capability</link> cap; - struct <link linkend="v4l2-cropcap">v4l2_cropcap</link> cropcap; - struct <link linkend="v4l2-crop">v4l2_crop</link> crop; - struct <link linkend="v4l2-format">v4l2_format</link> fmt; - unsigned int min; - - if (-1 == xioctl(fd, VIDIOC_QUERYCAP, &cap)) { - if (EINVAL == errno) { - fprintf(stderr, "%s is no V4L2 device\n", - dev_name); - exit(EXIT_FAILURE); - } else { - errno_exit("VIDIOC_QUERYCAP"); - } - } - - if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) { - fprintf(stderr, "%s is no video capture device\n", - dev_name); - exit(EXIT_FAILURE); - } - - switch (io) { - case IO_METHOD_READ: - if (!(cap.capabilities & V4L2_CAP_READWRITE)) { - fprintf(stderr, "%s does not support read i/o\n", - dev_name); - exit(EXIT_FAILURE); - } - break; - - case IO_METHOD_MMAP: - case IO_METHOD_USERPTR: - if (!(cap.capabilities & V4L2_CAP_STREAMING)) { - fprintf(stderr, "%s does not support streaming i/o\n", - dev_name); - exit(EXIT_FAILURE); - } - break; - } - - - /* Select video input, video standard and tune here. */ - - - CLEAR(cropcap); - - cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - - if (0 == xioctl(fd, VIDIOC_CROPCAP, &cropcap)) { - crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - crop.c = cropcap.defrect; /* reset to default */ - - if (-1 == xioctl(fd, VIDIOC_S_CROP, &crop)) { - switch (errno) { - case EINVAL: - /* Cropping not supported. */ - break; - default: - /* Errors ignored. */ - break; - } - } - } else { - /* Errors ignored. */ - } - - - CLEAR(fmt); - - fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - if (force_format) { - fmt.fmt.pix.width = 640; - fmt.fmt.pix.height = 480; - fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV; - fmt.fmt.pix.field = V4L2_FIELD_INTERLACED; - - if (-1 == xioctl(fd, VIDIOC_S_FMT, &fmt)) - errno_exit("VIDIOC_S_FMT"); - - /* Note VIDIOC_S_FMT may change width and height. */ - } else { - /* Preserve original settings as set by v4l2-ctl for example */ - if (-1 == xioctl(fd, VIDIOC_G_FMT, &fmt)) - errno_exit("VIDIOC_G_FMT"); - } - - /* Buggy driver paranoia. */ - min = fmt.fmt.pix.width * 2; - if (fmt.fmt.pix.bytesperline < min) - fmt.fmt.pix.bytesperline = min; - min = fmt.fmt.pix.bytesperline * fmt.fmt.pix.height; - if (fmt.fmt.pix.sizeimage < min) - fmt.fmt.pix.sizeimage = min; - - switch (io) { - case IO_METHOD_READ: - init_read(fmt.fmt.pix.sizeimage); - break; - - case IO_METHOD_MMAP: - init_mmap(); - break; - - case IO_METHOD_USERPTR: - init_userp(fmt.fmt.pix.sizeimage); - break; - } -} - -static void close_device(void) -{ - if (-1 == close(fd)) - errno_exit("close"); - - fd = -1; -} - -static void open_device(void) -{ - struct stat st; - - if (-1 == stat(dev_name, &st)) { - fprintf(stderr, "Cannot identify '%s': %d, %s\n", - dev_name, errno, strerror(errno)); - exit(EXIT_FAILURE); - } - - if (!S_ISCHR(st.st_mode)) { - fprintf(stderr, "%s is no device\n", dev_name); - exit(EXIT_FAILURE); - } - - fd = open(dev_name, O_RDWR /* required */ | O_NONBLOCK, 0); - - if (-1 == fd) { - fprintf(stderr, "Cannot open '%s': %d, %s\n", - dev_name, errno, strerror(errno)); - exit(EXIT_FAILURE); - } -} - -static void usage(FILE *fp, int argc, char **argv) -{ - fprintf(fp, - "Usage: %s [options]\n\n" - "Version 1.3\n" - "Options:\n" - "-d | --device name Video device name [%s]\n" - "-h | --help Print this message\n" - "-m | --mmap Use memory mapped buffers [default]\n" - "-r | --read Use read() calls\n" - "-u | --userp Use application allocated buffers\n" - "-o | --output Outputs stream to stdout\n" - "-f | --format Force format to 640x480 YUYV\n" - "-c | --count Number of frames to grab [%i]\n" - "", - argv[0], dev_name, frame_count); -} - -static const char short_options[] = "d:hmruofc:"; - -static const struct option -long_options[] = { - { "device", required_argument, NULL, 'd' }, - { "help", no_argument, NULL, 'h' }, - { "mmap", no_argument, NULL, 'm' }, - { "read", no_argument, NULL, 'r' }, - { "userp", no_argument, NULL, 'u' }, - { "output", no_argument, NULL, 'o' }, - { "format", no_argument, NULL, 'f' }, - { "count", required_argument, NULL, 'c' }, - { 0, 0, 0, 0 } -}; - -int main(int argc, char **argv) -{ - dev_name = "/dev/video0"; - - for (;;) { - int idx; - int c; - - c = getopt_long(argc, argv, - short_options, long_options, &idx); - - if (-1 == c) - break; - - switch (c) { - case 0: /* getopt_long() flag */ - break; - - case 'd': - dev_name = optarg; - break; - - case 'h': - usage(stdout, argc, argv); - exit(EXIT_SUCCESS); - - case 'm': - io = IO_METHOD_MMAP; - break; - - case 'r': - io = IO_METHOD_READ; - break; - - case 'u': - io = IO_METHOD_USERPTR; - break; - - case 'o': - out_buf++; - break; - - case 'f': - force_format++; - break; - - case 'c': - errno = 0; - frame_count = strtol(optarg, NULL, 0); - if (errno) - errno_exit(optarg); - break; - - default: - usage(stderr, argc, argv); - exit(EXIT_FAILURE); - } - } - - open_device(); - init_device(); - start_capturing(); - mainloop(); - stop_capturing(); - uninit_device(); - close_device(); - fprintf(stderr, "\n"); - return 0; -} -</programlisting> diff --git a/Documentation/DocBook/v4l/common.xml b/Documentation/DocBook/v4l/common.xml deleted file mode 100644 index 9028721438dc..000000000000 --- a/Documentation/DocBook/v4l/common.xml +++ /dev/null @@ -1,1197 +0,0 @@ - <title>Common API Elements</title> - - <para>Programming a V4L2 device consists of these -steps:</para> - - <itemizedlist> - <listitem> - <para>Opening the device</para> - </listitem> - <listitem> - <para>Changing device properties, selecting a video and audio -input, video standard, picture brightness a. o.</para> - </listitem> - <listitem> - <para>Negotiating a data format</para> - </listitem> - <listitem> - <para>Negotiating an input/output method</para> - </listitem> - <listitem> - <para>The actual input/output loop</para> - </listitem> - <listitem> - <para>Closing the device</para> - </listitem> - </itemizedlist> - - <para>In practice most steps are optional and can be executed out of -order. It depends on the V4L2 device type, you can read about the -details in <xref linkend="devices" />. In this chapter we will discuss -the basic concepts applicable to all devices.</para> - - <section id="open"> - <title>Opening and Closing Devices</title> - - <section> - <title>Device Naming</title> - - <para>V4L2 drivers are implemented as kernel modules, loaded -manually by the system administrator or automatically when a device is -first opened. The driver modules plug into the "videodev" kernel -module. It provides helper functions and a common application -interface specified in this document.</para> - - <para>Each driver thus loaded registers one or more device nodes -with major number 81 and a minor number between 0 and 255. Assigning -minor numbers to V4L2 devices is entirely up to the system administrator, -this is primarily intended to solve conflicts between devices.<footnote> - <para>Access permissions are associated with character -device special files, hence we must ensure device numbers cannot -change with the module load order. To this end minor numbers are no -longer automatically assigned by the "videodev" module as in V4L but -requested by the driver. The defaults will suffice for most people -unless two drivers compete for the same minor numbers.</para> - </footnote> The module options to select minor numbers are named -after the device special file with a "_nr" suffix. For example "video_nr" -for <filename>/dev/video</filename> video capture devices. The number is -an offset to the base minor number associated with the device type. -<footnote> - <para>In earlier versions of the V4L2 API the module options -where named after the device special file with a "unit_" prefix, expressing -the minor number itself, not an offset. Rationale for this change is unknown. -Lastly the naming and semantics are just a convention among driver writers, -the point to note is that minor numbers are not supposed to be hardcoded -into drivers.</para> - </footnote> When the driver supports multiple devices of the same -type more than one minor number can be assigned, separated by commas: -<informalexample> - <screen> -> insmod mydriver.o video_nr=0,1 radio_nr=0,1</screen> - </informalexample></para> - - <para>In <filename>/etc/modules.conf</filename> this may be -written as: <informalexample> - <screen> -alias char-major-81-0 mydriver -alias char-major-81-1 mydriver -alias char-major-81-64 mydriver <co id="alias" /> -options mydriver video_nr=0,1 radio_nr=0,1 <co id="options" /> - </screen> - <calloutlist> - <callout arearefs="alias"> - <para>When an application attempts to open a device -special file with major number 81 and minor number 0, 1, or 64, load -"mydriver" (and the "videodev" module it depends upon).</para> - </callout> - <callout arearefs="options"> - <para>Register the first two video capture devices with -minor number 0 and 1 (base number is 0), the first two radio device -with minor number 64 and 65 (base 64).</para> - </callout> - </calloutlist> - </informalexample> When no minor number is given as module -option the driver supplies a default. <xref linkend="devices" /> -recommends the base minor numbers to be used for the various device -types. Obviously minor numbers must be unique. When the number is -already in use the <emphasis>offending device</emphasis> will not be -registered. <!-- Blessed by Linus Torvalds on -linux-kernel@vger.kernel.org, 2002-11-20. --></para> - - <para>By convention system administrators create various -character device special files with these major and minor numbers in -the <filename>/dev</filename> directory. The names recommended for the -different V4L2 device types are listed in <xref linkend="devices" />. -</para> - - <para>The creation of character special files (with -<application>mknod</application>) is a privileged operation and -devices cannot be opened by major and minor number. That means -applications cannot <emphasis>reliable</emphasis> scan for loaded or -installed drivers. The user must enter a device name, or the -application can try the conventional device names.</para> - - <para>Under the device filesystem (devfs) the minor number -options are ignored. V4L2 drivers (or by proxy the "videodev" module) -automatically create the required device files in the -<filename>/dev/v4l</filename> directory using the conventional device -names above.</para> - </section> - - <section id="related"> - <title>Related Devices</title> - - <para>Devices can support several related functions. For example -video capturing, video overlay and VBI capturing are related because -these functions share, amongst other, the same video input and tuner -frequency. V4L and earlier versions of V4L2 used the same device name -and minor number for video capturing and overlay, but different ones -for VBI. Experience showed this approach has several problems<footnote> - <para>Given a device file name one cannot reliable find -related devices. For once names are arbitrary and in a system with -multiple devices, where only some support VBI capturing, a -<filename>/dev/video2</filename> is not necessarily related to -<filename>/dev/vbi2</filename>. The V4L -<constant>VIDIOCGUNIT</constant> ioctl would require a search for a -device file with a particular major and minor number.</para> - </footnote>, and to make things worse the V4L videodev module -used to prohibit multiple opens of a device.</para> - - <para>As a remedy the present version of the V4L2 API relaxed the -concept of device types with specific names and minor numbers. For -compatibility with old applications drivers must still register different -minor numbers to assign a default function to the device. But if related -functions are supported by the driver they must be available under all -registered minor numbers. The desired function can be selected after -opening the device as described in <xref linkend="devices" />.</para> - - <para>Imagine a driver supporting video capturing, video -overlay, raw VBI capturing, and FM radio reception. It registers three -devices with minor number 0, 64 and 224 (this numbering scheme is -inherited from the V4L API). Regardless if -<filename>/dev/video</filename> (81, 0) or -<filename>/dev/vbi</filename> (81, 224) is opened the application can -select any one of the video capturing, overlay or VBI capturing -functions. Without programming (e. g. reading from the device -with <application>dd</application> or <application>cat</application>) -<filename>/dev/video</filename> captures video images, while -<filename>/dev/vbi</filename> captures raw VBI data. -<filename>/dev/radio</filename> (81, 64) is invariable a radio device, -unrelated to the video functions. Being unrelated does not imply the -devices can be used at the same time, however. The &func-open; -function may very well return an &EBUSY;.</para> - - <para>Besides video input or output the hardware may also -support audio sampling or playback. If so, these functions are -implemented as OSS or ALSA PCM devices and eventually OSS or ALSA -audio mixer. The V4L2 API makes no provisions yet to find these -related devices. If you have an idea please write to the linux-media -mailing list: &v4l-ml;.</para> - </section> - - <section> - <title>Multiple Opens</title> - - <para>In general, V4L2 devices can be opened more than once. -When this is supported by the driver, users can for example start a -"panel" application to change controls like brightness or audio -volume, while another application captures video and audio. In other words, panel -applications are comparable to an OSS or ALSA audio mixer application. -When a device supports multiple functions like capturing and overlay -<emphasis>simultaneously</emphasis>, multiple opens allow concurrent -use of the device by forked processes or specialized applications.</para> - - <para>Multiple opens are optional, although drivers should -permit at least concurrent accesses without data exchange, &ie; panel -applications. This implies &func-open; can return an &EBUSY; when the -device is already in use, as well as &func-ioctl; functions initiating -data exchange (namely the &VIDIOC-S-FMT; ioctl), and the &func-read; -and &func-write; functions.</para> - - <para>Mere opening a V4L2 device does not grant exclusive -access.<footnote> - <para>Drivers could recognize the -<constant>O_EXCL</constant> open flag. Presently this is not required, -so applications cannot know if it really works.</para> - </footnote> Initiating data exchange however assigns the right -to read or write the requested type of data, and to change related -properties, to this file descriptor. Applications can request -additional access privileges using the priority mechanism described in -<xref linkend="app-pri" />.</para> - </section> - - <section> - <title>Shared Data Streams</title> - - <para>V4L2 drivers should not support multiple applications -reading or writing the same data stream on a device by copying -buffers, time multiplexing or similar means. This is better handled by -a proxy application in user space. When the driver supports stream -sharing anyway it must be implemented transparently. The V4L2 API does -not specify how conflicts are solved. <!-- For example O_EXCL when the -application does not want to be preempted, PROT_READ mmapped buffers -which can be mapped twice, what happens when image formats do not -match etc.--></para> - </section> - - <section> - <title>Functions</title> - - <para>To open and close V4L2 devices applications use the -&func-open; and &func-close; function, respectively. Devices are -programmed using the &func-ioctl; function as explained in the -following sections.</para> - </section> - </section> - - <section id="querycap"> - <title>Querying Capabilities</title> - - <para>Because V4L2 covers a wide variety of devices not all -aspects of the API are equally applicable to all types of devices. -Furthermore devices of the same type have different capabilities and -this specification permits the omission of a few complicated and less -important parts of the API.</para> - - <para>The &VIDIOC-QUERYCAP; ioctl is available to check if the kernel -device is compatible with this specification, and to query the <link -linkend="devices">functions</link> and <link linkend="io">I/O -methods</link> supported by the device. Other features can be queried -by calling the respective ioctl, for example &VIDIOC-ENUMINPUT; -to learn about the number, types and names of video connectors on the -device. Although abstraction is a major objective of this API, the -ioctl also allows driver specific applications to reliable identify -the driver.</para> - - <para>All V4L2 drivers must support -<constant>VIDIOC_QUERYCAP</constant>. Applications should always call -this ioctl after opening the device.</para> - </section> - - <section id="app-pri"> - <title>Application Priority</title> - - <para>When multiple applications share a device it may be -desirable to assign them different priorities. Contrary to the -traditional "rm -rf /" school of thought a video recording application -could for example block other applications from changing video -controls or switching the current TV channel. Another objective is to -permit low priority applications working in background, which can be -preempted by user controlled applications and automatically regain -control of the device at a later time.</para> - - <para>Since these features cannot be implemented entirely in user -space V4L2 defines the &VIDIOC-G-PRIORITY; and &VIDIOC-S-PRIORITY; -ioctls to request and query the access priority associate with a file -descriptor. Opening a device assigns a medium priority, compatible -with earlier versions of V4L2 and drivers not supporting these ioctls. -Applications requiring a different priority will usually call -<constant>VIDIOC_S_PRIORITY</constant> after verifying the device with -the &VIDIOC-QUERYCAP; ioctl.</para> - - <para>Ioctls changing driver properties, such as &VIDIOC-S-INPUT;, -return an &EBUSY; after another application obtained higher priority. -An event mechanism to notify applications about asynchronous property -changes has been proposed but not added yet.</para> - </section> - - <section id="video"> - <title>Video Inputs and Outputs</title> - - <para>Video inputs and outputs are physical connectors of a -device. These can be for example RF connectors (antenna/cable), CVBS -a.k.a. Composite Video, S-Video or RGB connectors. Only video and VBI -capture devices have inputs, output devices have outputs, at least one -each. Radio devices have no video inputs or outputs.</para> - - <para>To learn about the number and attributes of the -available inputs and outputs applications can enumerate them with the -&VIDIOC-ENUMINPUT; and &VIDIOC-ENUMOUTPUT; ioctl, respectively. The -&v4l2-input; returned by the <constant>VIDIOC_ENUMINPUT</constant> -ioctl also contains signal status information applicable when the -current video input is queried.</para> - - <para>The &VIDIOC-G-INPUT; and &VIDIOC-G-OUTPUT; ioctl return the -index of the current video input or output. To select a different -input or output applications call the &VIDIOC-S-INPUT; and -&VIDIOC-S-OUTPUT; ioctl. Drivers must implement all the input ioctls -when the device has one or more inputs, all the output ioctls when the -device has one or more outputs.</para> - - <!-- - <figure id=io-tree> - <title>Input and output enumeration is the root of most device properties.</title> - <mediaobject> - <imageobject> - <imagedata fileref="links.pdf" format="ps" /> - </imageobject> - <imageobject> - <imagedata fileref="links.gif" format="gif" /> - </imageobject> - <textobject> - <phrase>Links between various device property structures.</phrase> - </textobject> - </mediaobject> - </figure> - --> - - <example> - <title>Information about the current video input</title> - - <programlisting> -&v4l2-input; input; -int index; - -if (-1 == ioctl (fd, &VIDIOC-G-INPUT;, &index)) { - perror ("VIDIOC_G_INPUT"); - exit (EXIT_FAILURE); -} - -memset (&input, 0, sizeof (input)); -input.index = index; - -if (-1 == ioctl (fd, &VIDIOC-ENUMINPUT;, &input)) { - perror ("VIDIOC_ENUMINPUT"); - exit (EXIT_FAILURE); -} - -printf ("Current input: %s\n", input.name); - </programlisting> - </example> - - <example> - <title>Switching to the first video input</title> - - <programlisting> -int index; - -index = 0; - -if (-1 == ioctl (fd, &VIDIOC-S-INPUT;, &index)) { - perror ("VIDIOC_S_INPUT"); - exit (EXIT_FAILURE); -} - </programlisting> - </example> - </section> - - <section id="audio"> - <title>Audio Inputs and Outputs</title> - - <para>Audio inputs and outputs are physical connectors of a -device. Video capture devices have inputs, output devices have -outputs, zero or more each. Radio devices have no audio inputs or -outputs. They have exactly one tuner which in fact -<emphasis>is</emphasis> an audio source, but this API associates -tuners with video inputs or outputs only, and radio devices have -none of these.<footnote> - <para>Actually &v4l2-audio; ought to have a -<structfield>tuner</structfield> field like &v4l2-input;, not only -making the API more consistent but also permitting radio devices with -multiple tuners.</para> - </footnote> A connector on a TV card to loop back the received -audio signal to a sound card is not considered an audio output.</para> - - <para>Audio and video inputs and outputs are associated. Selecting -a video source also selects an audio source. This is most evident when -the video and audio source is a tuner. Further audio connectors can -combine with more than one video input or output. Assumed two -composite video inputs and two audio inputs exist, there may be up to -four valid combinations. The relation of video and audio connectors -is defined in the <structfield>audioset</structfield> field of the -respective &v4l2-input; or &v4l2-output;, where each bit represents -the index number, starting at zero, of one audio input or output.</para> - - <para>To learn about the number and attributes of the -available inputs and outputs applications can enumerate them with the -&VIDIOC-ENUMAUDIO; and &VIDIOC-ENUMAUDOUT; ioctl, respectively. The -&v4l2-audio; returned by the <constant>VIDIOC_ENUMAUDIO</constant> ioctl -also contains signal status information applicable when the current -audio input is queried.</para> - - <para>The &VIDIOC-G-AUDIO; and &VIDIOC-G-AUDOUT; ioctl report -the current audio input and output, respectively. Note that, unlike -&VIDIOC-G-INPUT; and &VIDIOC-G-OUTPUT; these ioctls return a structure -as <constant>VIDIOC_ENUMAUDIO</constant> and -<constant>VIDIOC_ENUMAUDOUT</constant> do, not just an index.</para> - - <para>To select an audio input and change its properties -applications call the &VIDIOC-S-AUDIO; ioctl. To select an audio -output (which presently has no changeable properties) applications -call the &VIDIOC-S-AUDOUT; ioctl.</para> - - <para>Drivers must implement all input ioctls when the device -has one or more inputs, all output ioctls when the device has one -or more outputs. When the device has any audio inputs or outputs the -driver must set the <constant>V4L2_CAP_AUDIO</constant> flag in the -&v4l2-capability; returned by the &VIDIOC-QUERYCAP; ioctl.</para> - - <example> - <title>Information about the current audio input</title> - - <programlisting> -&v4l2-audio; audio; - -memset (&audio, 0, sizeof (audio)); - -if (-1 == ioctl (fd, &VIDIOC-G-AUDIO;, &audio)) { - perror ("VIDIOC_G_AUDIO"); - exit (EXIT_FAILURE); -} - -printf ("Current input: %s\n", audio.name); - </programlisting> - </example> - - <example> - <title>Switching to the first audio input</title> - - <programlisting> -&v4l2-audio; audio; - -memset (&audio, 0, sizeof (audio)); /* clear audio.mode, audio.reserved */ - -audio.index = 0; - -if (-1 == ioctl (fd, &VIDIOC-S-AUDIO;, &audio)) { - perror ("VIDIOC_S_AUDIO"); - exit (EXIT_FAILURE); -} - </programlisting> - </example> - </section> - - <section id="tuner"> - <title>Tuners and Modulators</title> - - <section> - <title>Tuners</title> - - <para>Video input devices can have one or more tuners -demodulating a RF signal. Each tuner is associated with one or more -video inputs, depending on the number of RF connectors on the tuner. -The <structfield>type</structfield> field of the respective -&v4l2-input; returned by the &VIDIOC-ENUMINPUT; ioctl is set to -<constant>V4L2_INPUT_TYPE_TUNER</constant> and its -<structfield>tuner</structfield> field contains the index number of -the tuner.</para> - - <para>Radio devices have exactly one tuner with index zero, no -video inputs.</para> - - <para>To query and change tuner properties applications use the -&VIDIOC-G-TUNER; and &VIDIOC-S-TUNER; ioctl, respectively. The -&v4l2-tuner; returned by <constant>VIDIOC_G_TUNER</constant> also -contains signal status information applicable when the tuner of the -current video input, or a radio tuner is queried. Note that -<constant>VIDIOC_S_TUNER</constant> does not switch the current tuner, -when there is more than one at all. The tuner is solely determined by -the current video input. Drivers must support both ioctls and set the -<constant>V4L2_CAP_TUNER</constant> flag in the &v4l2-capability; -returned by the &VIDIOC-QUERYCAP; ioctl when the device has one or -more tuners.</para> - </section> - - <section> - <title>Modulators</title> - - <para>Video output devices can have one or more modulators, uh, -modulating a video signal for radiation or connection to the antenna -input of a TV set or video recorder. Each modulator is associated with -one or more video outputs, depending on the number of RF connectors on -the modulator. The <structfield>type</structfield> field of the -respective &v4l2-output; returned by the &VIDIOC-ENUMOUTPUT; ioctl is -set to <constant>V4L2_OUTPUT_TYPE_MODULATOR</constant> and its -<structfield>modulator</structfield> field contains the index number -of the modulator. This specification does not define radio output -devices.</para> - - <para>To query and change modulator properties applications use -the &VIDIOC-G-MODULATOR; and &VIDIOC-S-MODULATOR; ioctl. Note that -<constant>VIDIOC_S_MODULATOR</constant> does not switch the current -modulator, when there is more than one at all. The modulator is solely -determined by the current video output. Drivers must support both -ioctls and set the <constant>V4L2_CAP_MODULATOR</constant> flag in -the &v4l2-capability; returned by the &VIDIOC-QUERYCAP; ioctl when the -device has one or more modulators.</para> - </section> - - <section> - <title>Radio Frequency</title> - - <para>To get and set the tuner or modulator radio frequency -applications use the &VIDIOC-G-FREQUENCY; and &VIDIOC-S-FREQUENCY; -ioctl which both take a pointer to a &v4l2-frequency;. These ioctls -are used for TV and radio devices alike. Drivers must support both -ioctls when the tuner or modulator ioctls are supported, or -when the device is a radio device.</para> - </section> - </section> - - <section id="standard"> - <title>Video Standards</title> - - <para>Video devices typically support one or more different video -standards or variations of standards. Each video input and output may -support another set of standards. This set is reported by the -<structfield>std</structfield> field of &v4l2-input; and -&v4l2-output; returned by the &VIDIOC-ENUMINPUT; and -&VIDIOC-ENUMOUTPUT; ioctl, respectively.</para> - - <para>V4L2 defines one bit for each analog video standard -currently in use worldwide, and sets aside bits for driver defined -standards, ⪚ hybrid standards to watch NTSC video tapes on PAL TVs -and vice versa. Applications can use the predefined bits to select a -particular standard, although presenting the user a menu of supported -standards is preferred. To enumerate and query the attributes of the -supported standards applications use the &VIDIOC-ENUMSTD; ioctl.</para> - - <para>Many of the defined standards are actually just variations -of a few major standards. The hardware may in fact not distinguish -between them, or do so internal and switch automatically. Therefore -enumerated standards also contain sets of one or more standard -bits.</para> - - <para>Assume a hypothetic tuner capable of demodulating B/PAL, -G/PAL and I/PAL signals. The first enumerated standard is a set of B -and G/PAL, switched automatically depending on the selected radio -frequency in UHF or VHF band. Enumeration gives a "PAL-B/G" or "PAL-I" -choice. Similar a Composite input may collapse standards, enumerating -"PAL-B/G/H/I", "NTSC-M" and "SECAM-D/K".<footnote> - <para>Some users are already confused by technical terms PAL, -NTSC and SECAM. There is no point asking them to distinguish between -B, G, D, or K when the software or hardware can do that -automatically.</para> - </footnote></para> - - <para>To query and select the standard used by the current video -input or output applications call the &VIDIOC-G-STD; and -&VIDIOC-S-STD; ioctl, respectively. The <emphasis>received</emphasis> -standard can be sensed with the &VIDIOC-QUERYSTD; ioctl. Note parameter of all these ioctls is a pointer to a &v4l2-std-id; type (a standard set), <emphasis>not</emphasis> an index into the standard enumeration.<footnote> - <para>An alternative to the current scheme is to use pointers -to indices as arguments of <constant>VIDIOC_G_STD</constant> and -<constant>VIDIOC_S_STD</constant>, the &v4l2-input; and -&v4l2-output; <structfield>std</structfield> field would be a set of -indices like <structfield>audioset</structfield>.</para> - <para>Indices are consistent with the rest of the API -and identify the standard unambiguously. In the present scheme of -things an enumerated standard is looked up by &v4l2-std-id;. Now the -standards supported by the inputs of a device can overlap. Just -assume the tuner and composite input in the example above both -exist on a device. An enumeration of "PAL-B/G", "PAL-H/I" suggests -a choice which does not exist. We cannot merge or omit sets, because -applications would be unable to find the standards reported by -<constant>VIDIOC_G_STD</constant>. That leaves separate enumerations -for each input. Also selecting a standard by &v4l2-std-id; can be -ambiguous. Advantage of this method is that applications need not -identify the standard indirectly, after enumerating.</para><para>So in -summary, the lookup itself is unavoidable. The difference is only -whether the lookup is necessary to find an enumerated standard or to -switch to a standard by &v4l2-std-id;.</para> - </footnote> Drivers must implement all video standard ioctls -when the device has one or more video inputs or outputs.</para> - - <para>Special rules apply to USB cameras where the notion of video -standards makes little sense. More generally any capture device, -output devices accordingly, which is <itemizedlist> - <listitem> - <para>incapable of capturing fields or frames at the nominal -rate of the video standard, or</para> - </listitem> - <listitem> - <para>where <link linkend="buffer">timestamps</link> refer -to the instant the field or frame was received by the driver, not the -capture time, or</para> - </listitem> - <listitem> - <para>where <link linkend="buffer">sequence numbers</link> -refer to the frames received by the driver, not the captured -frames.</para> - </listitem> - </itemizedlist> Here the driver shall set the -<structfield>std</structfield> field of &v4l2-input; and &v4l2-output; -to zero, the <constant>VIDIOC_G_STD</constant>, -<constant>VIDIOC_S_STD</constant>, -<constant>VIDIOC_QUERYSTD</constant> and -<constant>VIDIOC_ENUMSTD</constant> ioctls shall return the -&EINVAL;.<footnote> - <para>See <xref linkend="buffer" /> for a rationale. Probably -even USB cameras follow some well known video standard. It might have -been better to explicitly indicate elsewhere if a device cannot live -up to normal expectations, instead of this exception.</para> - </footnote></para> - - <example> - <title>Information about the current video standard</title> - - <programlisting> -&v4l2-std-id; std_id; -&v4l2-standard; standard; - -if (-1 == ioctl (fd, &VIDIOC-G-STD;, &std_id)) { - /* Note when VIDIOC_ENUMSTD always returns EINVAL this - is no video device or it falls under the USB exception, - and VIDIOC_G_STD returning EINVAL is no error. */ - - perror ("VIDIOC_G_STD"); - exit (EXIT_FAILURE); -} - -memset (&standard, 0, sizeof (standard)); -standard.index = 0; - -while (0 == ioctl (fd, &VIDIOC-ENUMSTD;, &standard)) { - if (standard.id & std_id) { - printf ("Current video standard: %s\n", standard.name); - exit (EXIT_SUCCESS); - } - - standard.index++; -} - -/* EINVAL indicates the end of the enumeration, which cannot be - empty unless this device falls under the USB exception. */ - -if (errno == EINVAL || standard.index == 0) { - perror ("VIDIOC_ENUMSTD"); - exit (EXIT_FAILURE); -} - </programlisting> - </example> - - <example> - <title>Listing the video standards supported by the current -input</title> - - <programlisting> -&v4l2-input; input; -&v4l2-standard; standard; - -memset (&input, 0, sizeof (input)); - -if (-1 == ioctl (fd, &VIDIOC-G-INPUT;, &input.index)) { - perror ("VIDIOC_G_INPUT"); - exit (EXIT_FAILURE); -} - -if (-1 == ioctl (fd, &VIDIOC-ENUMINPUT;, &input)) { - perror ("VIDIOC_ENUM_INPUT"); - exit (EXIT_FAILURE); -} - -printf ("Current input %s supports:\n", input.name); - -memset (&standard, 0, sizeof (standard)); -standard.index = 0; - -while (0 == ioctl (fd, &VIDIOC-ENUMSTD;, &standard)) { - if (standard.id & input.std) - printf ("%s\n", standard.name); - - standard.index++; -} - -/* EINVAL indicates the end of the enumeration, which cannot be - empty unless this device falls under the USB exception. */ - -if (errno != EINVAL || standard.index == 0) { - perror ("VIDIOC_ENUMSTD"); - exit (EXIT_FAILURE); -} - </programlisting> - </example> - - <example> - <title>Selecting a new video standard</title> - - <programlisting> -&v4l2-input; input; -&v4l2-std-id; std_id; - -memset (&input, 0, sizeof (input)); - -if (-1 == ioctl (fd, &VIDIOC-G-INPUT;, &input.index)) { - perror ("VIDIOC_G_INPUT"); - exit (EXIT_FAILURE); -} - -if (-1 == ioctl (fd, &VIDIOC-ENUMINPUT;, &input)) { - perror ("VIDIOC_ENUM_INPUT"); - exit (EXIT_FAILURE); -} - -if (0 == (input.std & V4L2_STD_PAL_BG)) { - fprintf (stderr, "Oops. B/G PAL is not supported.\n"); - exit (EXIT_FAILURE); -} - -/* Note this is also supposed to work when only B - <emphasis>or</emphasis> G/PAL is supported. */ - -std_id = V4L2_STD_PAL_BG; - -if (-1 == ioctl (fd, &VIDIOC-S-STD;, &std_id)) { - perror ("VIDIOC_S_STD"); - exit (EXIT_FAILURE); -} - </programlisting> - </example> - <section id="dv-timings"> - <title>Digital Video (DV) Timings</title> - <para> - The video standards discussed so far has been dealing with Analog TV and the -corresponding video timings. Today there are many more different hardware interfaces -such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry -video signals and there is a need to extend the API to select the video timings -for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to -the limited bits available, a new set of IOCTLs is added to set/get video timings at -the input and output: </para><itemizedlist> - <listitem> - <para>DV Presets: Digital Video (DV) presets. These are IDs representing a -video timing at the input/output. Presets are pre-defined timings implemented -by the hardware according to video standards. A __u32 data type is used to represent -a preset unlike the bit mask that is used in &v4l2-std-id; allowing future extensions -to support as many different presets as needed.</para> - </listitem> - <listitem> - <para>Custom DV Timings: This will allow applications to define more detailed -custom video timings for the interface. This includes parameters such as width, height, -polarities, frontporch, backporch etc. - </para> - </listitem> - </itemizedlist> - <para>To enumerate and query the attributes of DV presets supported by a device, -applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current DV preset, -applications use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset they use the -&VIDIOC-S-DV-PRESET; ioctl.</para> - <para>To set custom DV timings for the device, applications use the -&VIDIOC-S-DV-TIMINGS; ioctl and to get current custom DV timings they use the -&VIDIOC-G-DV-TIMINGS; ioctl.</para> - <para>Applications can make use of the <xref linkend="input-capabilities" /> and -<xref linkend="output-capabilities"/> flags to decide what ioctls are available to set the -video timings for the device.</para> - </section> - </section> - - &sub-controls; - - <section id="format"> - <title>Data Formats</title> - - <section> - <title>Data Format Negotiation</title> - - <para>Different devices exchange different kinds of data with -applications, for example video images, raw or sliced VBI data, RDS -datagrams. Even within one kind many different formats are possible, -in particular an abundance of image formats. Although drivers must -provide a default and the selection persists across closing and -reopening a device, applications should always negotiate a data format -before engaging in data exchange. Negotiation means the application -asks for a particular format and the driver selects and reports the -best the hardware can do to satisfy the request. Of course -applications can also just query the current selection.</para> - - <para>A single mechanism exists to negotiate all data formats -using the aggregate &v4l2-format; and the &VIDIOC-G-FMT; and -&VIDIOC-S-FMT; ioctls. Additionally the &VIDIOC-TRY-FMT; ioctl can be -used to examine what the hardware <emphasis>could</emphasis> do, -without actually selecting a new data format. The data formats -supported by the V4L2 API are covered in the respective device section -in <xref linkend="devices" />. For a closer look at image formats see -<xref linkend="pixfmt" />.</para> - - <para>The <constant>VIDIOC_S_FMT</constant> ioctl is a major -turning-point in the initialization sequence. Prior to this point -multiple panel applications can access the same device concurrently to -select the current input, change controls or modify other properties. -The first <constant>VIDIOC_S_FMT</constant> assigns a logical stream -(video data, VBI data etc.) exclusively to one file descriptor.</para> - - <para>Exclusive means no other application, more precisely no -other file descriptor, can grab this stream or change device -properties inconsistent with the negotiated parameters. A video -standard change for example, when the new standard uses a different -number of scan lines, can invalidate the selected image format. -Therefore only the file descriptor owning the stream can make -invalidating changes. Accordingly multiple file descriptors which -grabbed different logical streams prevent each other from interfering -with their settings. When for example video overlay is about to start -or already in progress, simultaneous video capturing may be restricted -to the same cropping and image size.</para> - - <para>When applications omit the -<constant>VIDIOC_S_FMT</constant> ioctl its locking side effects are -implied by the next step, the selection of an I/O method with the -&VIDIOC-REQBUFS; ioctl or implicit with the first &func-read; or -&func-write; call.</para> - - <para>Generally only one logical stream can be assigned to a -file descriptor, the exception being drivers permitting simultaneous -video capturing and overlay using the same file descriptor for -compatibility with V4L and earlier versions of V4L2. Switching the -logical stream or returning into "panel mode" is possible by closing -and reopening the device. Drivers <emphasis>may</emphasis> support a -switch using <constant>VIDIOC_S_FMT</constant>.</para> - - <para>All drivers exchanging data with -applications must support the <constant>VIDIOC_G_FMT</constant> and -<constant>VIDIOC_S_FMT</constant> ioctl. Implementation of the -<constant>VIDIOC_TRY_FMT</constant> is highly recommended but -optional.</para> - </section> - - <section> - <title>Image Format Enumeration</title> - - <para>Apart of the generic format negotiation functions -a special ioctl to enumerate all image formats supported by video -capture, overlay or output devices is available.<footnote> - <para>Enumerating formats an application has no a-priori -knowledge of (otherwise it could explicitly ask for them and need not -enumerate) seems useless, but there are applications serving as proxy -between drivers and the actual video applications for which this is -useful.</para> - </footnote></para> - - <para>The &VIDIOC-ENUM-FMT; ioctl must be supported -by all drivers exchanging image data with applications.</para> - - <important> - <para>Drivers are not supposed to convert image formats in -kernel space. They must enumerate only formats directly supported by -the hardware. If necessary driver writers should publish an example -conversion routine or library for integration into applications.</para> - </important> - </section> - </section> - - &sub-planar-apis; - - <section id="crop"> - <title>Image Cropping, Insertion and Scaling</title> - - <para>Some video capture devices can sample a subsection of the -picture and shrink or enlarge it to an image of arbitrary size. We -call these abilities cropping and scaling. Some video output devices -can scale an image up or down and insert it at an arbitrary scan line -and horizontal offset into a video signal.</para> - - <para>Applications can use the following API to select an area in -the video signal, query the default area and the hardware limits. -<emphasis>Despite their name, the &VIDIOC-CROPCAP;, &VIDIOC-G-CROP; -and &VIDIOC-S-CROP; ioctls apply to input as well as output -devices.</emphasis></para> - - <para>Scaling requires a source and a target. On a video capture -or overlay device the source is the video signal, and the cropping -ioctls determine the area actually sampled. The target are images -read by the application or overlaid onto the graphics screen. Their -size (and position for an overlay) is negotiated with the -&VIDIOC-G-FMT; and &VIDIOC-S-FMT; ioctls.</para> - - <para>On a video output device the source are the images passed in -by the application, and their size is again negotiated with the -<constant>VIDIOC_G/S_FMT</constant> ioctls, or may be encoded in a -compressed video stream. The target is the video signal, and the -cropping ioctls determine the area where the images are -inserted.</para> - - <para>Source and target rectangles are defined even if the device -does not support scaling or the <constant>VIDIOC_G/S_CROP</constant> -ioctls. Their size (and position where applicable) will be fixed in -this case. <emphasis>All capture and output device must support the -<constant>VIDIOC_CROPCAP</constant> ioctl such that applications can -determine if scaling takes place.</emphasis></para> - - <section> - <title>Cropping Structures</title> - - <figure id="crop-scale"> - <title>Image Cropping, Insertion and Scaling</title> - <mediaobject> - <imageobject> - <imagedata fileref="crop.pdf" format="PS" /> - </imageobject> - <imageobject> - <imagedata fileref="crop.gif" format="GIF" /> - </imageobject> - <textobject> - <phrase>The cropping, insertion and scaling process</phrase> - </textobject> - </mediaobject> - </figure> - - <para>For capture devices the coordinates of the top left -corner, width and height of the area which can be sampled is given by -the <structfield>bounds</structfield> substructure of the -&v4l2-cropcap; returned by the <constant>VIDIOC_CROPCAP</constant> -ioctl. To support a wide range of hardware this specification does not -define an origin or units. However by convention drivers should -horizontally count unscaled samples relative to 0H (the leading edge -of the horizontal sync pulse, see <xref linkend="vbi-hsync" />). -Vertically ITU-R line -numbers of the first field (<xref linkend="vbi-525" />, <xref -linkend="vbi-625" />), multiplied by two if the driver can capture both -fields.</para> - - <para>The top left corner, width and height of the source -rectangle, that is the area actually sampled, is given by &v4l2-crop; -using the same coordinate system as &v4l2-cropcap;. Applications can -use the <constant>VIDIOC_G_CROP</constant> and -<constant>VIDIOC_S_CROP</constant> ioctls to get and set this -rectangle. It must lie completely within the capture boundaries and -the driver may further adjust the requested size and/or position -according to hardware limitations.</para> - - <para>Each capture device has a default source rectangle, given -by the <structfield>defrect</structfield> substructure of -&v4l2-cropcap;. The center of this rectangle shall align with the -center of the active picture area of the video signal, and cover what -the driver writer considers the complete picture. Drivers shall reset -the source rectangle to the default when the driver is first loaded, -but not later.</para> - - <para>For output devices these structures and ioctls are used -accordingly, defining the <emphasis>target</emphasis> rectangle where -the images will be inserted into the video signal.</para> - - </section> - - <section> - <title>Scaling Adjustments</title> - - <para>Video hardware can have various cropping, insertion and -scaling limitations. It may only scale up or down, support only -discrete scaling factors, or have different scaling abilities in -horizontal and vertical direction. Also it may not support scaling at -all. At the same time the &v4l2-crop; rectangle may have to be -aligned, and both the source and target rectangles may have arbitrary -upper and lower size limits. In particular the maximum -<structfield>width</structfield> and <structfield>height</structfield> -in &v4l2-crop; may be smaller than the -&v4l2-cropcap;.<structfield>bounds</structfield> area. Therefore, as -usual, drivers are expected to adjust the requested parameters and -return the actual values selected.</para> - - <para>Applications can change the source or the target rectangle -first, as they may prefer a particular image size or a certain area in -the video signal. If the driver has to adjust both to satisfy hardware -limitations, the last requested rectangle shall take priority, and the -driver should preferably adjust the opposite one. The &VIDIOC-TRY-FMT; -ioctl however shall not change the driver state and therefore only -adjust the requested rectangle.</para> - - <para>Suppose scaling on a video capture device is restricted to -a factor 1:1 or 2:1 in either direction and the target image size must -be a multiple of 16 × 16 pixels. The source cropping -rectangle is set to defaults, which are also the upper limit in this -example, of 640 × 400 pixels at offset 0, 0. An -application requests an image size of 300 × 225 -pixels, assuming video will be scaled down from the "full picture" -accordingly. The driver sets the image size to the closest possible -values 304 × 224, then chooses the cropping rectangle -closest to the requested size, that is 608 × 224 -(224 × 2:1 would exceed the limit 400). The offset -0, 0 is still valid, thus unmodified. Given the default cropping -rectangle reported by <constant>VIDIOC_CROPCAP</constant> the -application can easily propose another offset to center the cropping -rectangle.</para> - - <para>Now the application may insist on covering an area using a -picture aspect ratio closer to the original request, so it asks for a -cropping rectangle of 608 × 456 pixels. The present -scaling factors limit cropping to 640 × 384, so the -driver returns the cropping size 608 × 384 and adjusts -the image size to closest possible 304 × 192.</para> - - </section> - - <section> - <title>Examples</title> - - <para>Source and target rectangles shall remain unchanged across -closing and reopening a device, such that piping data into or out of a -device will work without special preparations. More advanced -applications should ensure the parameters are suitable before starting -I/O.</para> - - <example> - <title>Resetting the cropping parameters</title> - - <para>(A video capture device is assumed; change -<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> for other -devices.)</para> - - <programlisting> -&v4l2-cropcap; cropcap; -&v4l2-crop; crop; - -memset (&cropcap, 0, sizeof (cropcap)); -cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - -if (-1 == ioctl (fd, &VIDIOC-CROPCAP;, &cropcap)) { - perror ("VIDIOC_CROPCAP"); - exit (EXIT_FAILURE); -} - -memset (&crop, 0, sizeof (crop)); -crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -crop.c = cropcap.defrect; - -/* Ignore if cropping is not supported (EINVAL). */ - -if (-1 == ioctl (fd, &VIDIOC-S-CROP;, &crop) - && errno != EINVAL) { - perror ("VIDIOC_S_CROP"); - exit (EXIT_FAILURE); -} - </programlisting> - </example> - - <example> - <title>Simple downscaling</title> - - <para>(A video capture device is assumed.)</para> - - <programlisting> -&v4l2-cropcap; cropcap; -&v4l2-format; format; - -reset_cropping_parameters (); - -/* Scale down to 1/4 size of full picture. */ - -memset (&format, 0, sizeof (format)); /* defaults */ - -format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - -format.fmt.pix.width = cropcap.defrect.width >> 1; -format.fmt.pix.height = cropcap.defrect.height >> 1; -format.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV; - -if (-1 == ioctl (fd, &VIDIOC-S-FMT;, &format)) { - perror ("VIDIOC_S_FORMAT"); - exit (EXIT_FAILURE); -} - -/* We could check the actual image size now, the actual scaling factor - or if the driver can scale at all. */ - </programlisting> - </example> - - <example> - <title>Selecting an output area</title> - - <programlisting> -&v4l2-cropcap; cropcap; -&v4l2-crop; crop; - -memset (&cropcap, 0, sizeof (cropcap)); -cropcap.type = V4L2_BUF_TYPE_VIDEO_OUTPUT; - -if (-1 == ioctl (fd, VIDIOC_CROPCAP;, &cropcap)) { - perror ("VIDIOC_CROPCAP"); - exit (EXIT_FAILURE); -} - -memset (&crop, 0, sizeof (crop)); - -crop.type = V4L2_BUF_TYPE_VIDEO_OUTPUT; -crop.c = cropcap.defrect; - -/* Scale the width and height to 50 % of their original size - and center the output. */ - -crop.c.width /= 2; -crop.c.height /= 2; -crop.c.left += crop.c.width / 2; -crop.c.top += crop.c.height / 2; - -/* Ignore if cropping is not supported (EINVAL). */ - -if (-1 == ioctl (fd, VIDIOC_S_CROP, &crop) - && errno != EINVAL) { - perror ("VIDIOC_S_CROP"); - exit (EXIT_FAILURE); -} -</programlisting> - </example> - - <example> - <title>Current scaling factor and pixel aspect</title> - - <para>(A video capture device is assumed.)</para> - - <programlisting> -&v4l2-cropcap; cropcap; -&v4l2-crop; crop; -&v4l2-format; format; -double hscale, vscale; -double aspect; -int dwidth, dheight; - -memset (&cropcap, 0, sizeof (cropcap)); -cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - -if (-1 == ioctl (fd, &VIDIOC-CROPCAP;, &cropcap)) { - perror ("VIDIOC_CROPCAP"); - exit (EXIT_FAILURE); -} - -memset (&crop, 0, sizeof (crop)); -crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - -if (-1 == ioctl (fd, &VIDIOC-G-CROP;, &crop)) { - if (errno != EINVAL) { - perror ("VIDIOC_G_CROP"); - exit (EXIT_FAILURE); - } - - /* Cropping not supported. */ - crop.c = cropcap.defrect; -} - -memset (&format, 0, sizeof (format)); -format.fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - -if (-1 == ioctl (fd, &VIDIOC-G-FMT;, &format)) { - perror ("VIDIOC_G_FMT"); - exit (EXIT_FAILURE); -} - -/* The scaling applied by the driver. */ - -hscale = format.fmt.pix.width / (double) crop.c.width; -vscale = format.fmt.pix.height / (double) crop.c.height; - -aspect = cropcap.pixelaspect.numerator / - (double) cropcap.pixelaspect.denominator; -aspect = aspect * hscale / vscale; - -/* Devices following ITU-R BT.601 do not capture - square pixels. For playback on a computer monitor - we should scale the images to this size. */ - -dwidth = format.fmt.pix.width / aspect; -dheight = format.fmt.pix.height; - </programlisting> - </example> - </section> - </section> - - <section id="streaming-par"> - <title>Streaming Parameters</title> - - <para>Streaming parameters are intended to optimize the video -capture process as well as I/O. Presently applications can request a -high quality capture mode with the &VIDIOC-S-PARM; ioctl.</para> - - <para>The current video standard determines a nominal number of -frames per second. If less than this number of frames is to be -captured or output, applications can request frame skipping or -duplicating on the driver side. This is especially useful when using -the &func-read; or &func-write;, which are not augmented by timestamps -or sequence counters, and to avoid unnecessary data copying.</para> - - <para>Finally these ioctls can be used to determine the number of -buffers used internally by a driver in read/write mode. For -implications see the section discussing the &func-read; -function.</para> - - <para>To get and set the streaming parameters applications call -the &VIDIOC-G-PARM; and &VIDIOC-S-PARM; ioctl, respectively. They take -a pointer to a &v4l2-streamparm;, which contains a union holding -separate parameters for input and output devices.</para> - - <para>These ioctls are optional, drivers need not implement -them. If so, they return the &EINVAL;.</para> - </section> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/compat.xml b/Documentation/DocBook/v4l/compat.xml deleted file mode 100644 index 9f7cd4f25792..000000000000 --- a/Documentation/DocBook/v4l/compat.xml +++ /dev/null @@ -1,2500 +0,0 @@ - <title>Changes</title> - - <para>The following chapters document the evolution of the V4L2 API, -errata or extensions. They are also intended to help application and -driver writers to port or update their code.</para> - - <section id="diff-v4l"> - <title>Differences between V4L and V4L2</title> - - <para>The Video For Linux API was first introduced in Linux 2.1 to -unify and replace various TV and radio device related interfaces, -developed independently by driver writers in prior years. Starting -with Linux 2.5 the much improved V4L2 API replaces the V4L API, -although existing drivers will continue to support V4L applications in -the future, either directly or through the V4L2 compatibility layer in -the <filename>videodev</filename> kernel module translating ioctls on -the fly. For a transition period not all drivers will support the V4L2 -API.</para> - - <section> - <title>Opening and Closing Devices</title> - - <para>For compatibility reasons the character device file names -recommended for V4L2 video capture, overlay, radio and raw -vbi capture devices did not change from those used by V4L. They are -listed in <xref linkend="devices" /> and below in <xref - linkend="v4l-dev" />.</para> - - <para>The teletext devices (minor range 192-223) have been removed in -V4L2 and no longer exist. There is no hardware available anymore for handling -pure teletext. Instead raw or sliced VBI is used.</para> - - <para>The V4L <filename>videodev</filename> module automatically -assigns minor numbers to drivers in load order, depending on the -registered device type. We recommend that V4L2 drivers by default -register devices with the same numbers, but the system administrator -can assign arbitrary minor numbers using driver module options. The -major device number remains 81.</para> - - <table id="v4l-dev"> - <title>V4L Device Types, Names and Numbers</title> - <tgroup cols="3"> - <thead> - <row> - <entry>Device Type</entry> - <entry>File Name</entry> - <entry>Minor Numbers</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry>Video capture and overlay</entry> - <entry><para><filename>/dev/video</filename> and -<filename>/dev/bttv0</filename><footnote> <para>According to -Documentation/devices.txt these should be symbolic links to -<filename>/dev/video0</filename>. Note the original bttv interface is -not compatible with V4L or V4L2.</para> </footnote>, -<filename>/dev/video0</filename> to -<filename>/dev/video63</filename></para></entry> - <entry>0-63</entry> - </row> - <row> - <entry>Radio receiver</entry> - <entry><para><filename>/dev/radio</filename><footnote> - <para>According to -<filename>Documentation/devices.txt</filename> a symbolic link to -<filename>/dev/radio0</filename>.</para> - </footnote>, <filename>/dev/radio0</filename> to -<filename>/dev/radio63</filename></para></entry> - <entry>64-127</entry> - </row> - <row> - <entry>Raw VBI capture</entry> - <entry><para><filename>/dev/vbi</filename>, -<filename>/dev/vbi0</filename> to -<filename>/dev/vbi31</filename></para></entry> - <entry>224-255</entry> - </row> - </tbody> - </tgroup> - </table> - - <para>V4L prohibits (or used to prohibit) multiple opens of a -device file. V4L2 drivers <emphasis>may</emphasis> support multiple -opens, see <xref linkend="open" /> for details and consequences.</para> - - <para>V4L drivers respond to V4L2 ioctls with an &EINVAL;. The -compatibility layer in the V4L2 <filename>videodev</filename> module -can translate V4L ioctl requests to their V4L2 counterpart, however a -V4L2 driver usually needs more preparation to become fully V4L -compatible. This is covered in more detail in <xref - linkend="driver" />.</para> - </section> - - <section> - <title>Querying Capabilities</title> - - <para>The V4L <constant>VIDIOCGCAP</constant> ioctl is -equivalent to V4L2's &VIDIOC-QUERYCAP;.</para> - - <para>The <structfield>name</structfield> field in struct -<structname>video_capability</structname> became -<structfield>card</structfield> in &v4l2-capability;, -<structfield>type</structfield> was replaced by -<structfield>capabilities</structfield>. Note V4L2 does not -distinguish between device types like this, better think of basic -video input, video output and radio devices supporting a set of -related functions like video capturing, video overlay and VBI -capturing. See <xref linkend="open" /> for an -introduction.<informaltable> - <tgroup cols="3"> - <thead> - <row> - <entry>struct -<structname>video_capability</structname> -<structfield>type</structfield></entry> - <entry>&v4l2-capability; -<structfield>capabilities</structfield> flags</entry> - <entry>Purpose</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>VID_TYPE_CAPTURE</constant></entry> - <entry><constant>V4L2_CAP_VIDEO_CAPTURE</constant></entry> - <entry>The <link linkend="capture">video -capture</link> interface is supported.</entry> - </row> - <row> - <entry><constant>VID_TYPE_TUNER</constant></entry> - <entry><constant>V4L2_CAP_TUNER</constant></entry> - <entry>The device has a <link linkend="tuner">tuner or -modulator</link>.</entry> - </row> - <row> - <entry><constant>VID_TYPE_TELETEXT</constant></entry> - <entry><constant>V4L2_CAP_VBI_CAPTURE</constant></entry> - <entry>The <link linkend="raw-vbi">raw VBI -capture</link> interface is supported.</entry> - </row> - <row> - <entry><constant>VID_TYPE_OVERLAY</constant></entry> - <entry><constant>V4L2_CAP_VIDEO_OVERLAY</constant></entry> - <entry>The <link linkend="overlay">video -overlay</link> interface is supported.</entry> - </row> - <row> - <entry><constant>VID_TYPE_CHROMAKEY</constant></entry> - <entry><constant>V4L2_FBUF_CAP_CHROMAKEY</constant> in -field <structfield>capability</structfield> of -&v4l2-framebuffer;</entry> - <entry>Whether chromakey overlay is supported. For -more information on overlay see -<xref linkend="overlay" />.</entry> - </row> - <row> - <entry><constant>VID_TYPE_CLIPPING</constant></entry> - <entry><constant>V4L2_FBUF_CAP_LIST_CLIPPING</constant> -and <constant>V4L2_FBUF_CAP_BITMAP_CLIPPING</constant> in field -<structfield>capability</structfield> of &v4l2-framebuffer;</entry> - <entry>Whether clipping the overlaid image is -supported, see <xref linkend="overlay" />.</entry> - </row> - <row> - <entry><constant>VID_TYPE_FRAMERAM</constant></entry> - <entry><constant>V4L2_FBUF_CAP_EXTERNOVERLAY</constant> -<emphasis>not set</emphasis> in field -<structfield>capability</structfield> of &v4l2-framebuffer;</entry> - <entry>Whether overlay overwrites frame buffer memory, -see <xref linkend="overlay" />.</entry> - </row> - <row> - <entry><constant>VID_TYPE_SCALES</constant></entry> - <entry><constant>-</constant></entry> - <entry>This flag indicates if the hardware can scale -images. The V4L2 API implies the scale factor by setting the cropping -dimensions and image size with the &VIDIOC-S-CROP; and &VIDIOC-S-FMT; -ioctl, respectively. The driver returns the closest sizes possible. -For more information on cropping and scaling see <xref - linkend="crop" />.</entry> - </row> - <row> - <entry><constant>VID_TYPE_MONOCHROME</constant></entry> - <entry><constant>-</constant></entry> - <entry>Applications can enumerate the supported image -formats with the &VIDIOC-ENUM-FMT; ioctl to determine if the device -supports grey scale capturing only. For more information on image -formats see <xref linkend="pixfmt" />.</entry> - </row> - <row> - <entry><constant>VID_TYPE_SUBCAPTURE</constant></entry> - <entry><constant>-</constant></entry> - <entry>Applications can call the &VIDIOC-G-CROP; ioctl -to determine if the device supports capturing a subsection of the full -picture ("cropping" in V4L2). If not, the ioctl returns the &EINVAL;. -For more information on cropping and scaling see <xref - linkend="crop" />.</entry> - </row> - <row> - <entry><constant>VID_TYPE_MPEG_DECODER</constant></entry> - <entry><constant>-</constant></entry> - <entry>Applications can enumerate the supported image -formats with the &VIDIOC-ENUM-FMT; ioctl to determine if the device -supports MPEG streams.</entry> - </row> - <row> - <entry><constant>VID_TYPE_MPEG_ENCODER</constant></entry> - <entry><constant>-</constant></entry> - <entry>See above.</entry> - </row> - <row> - <entry><constant>VID_TYPE_MJPEG_DECODER</constant></entry> - <entry><constant>-</constant></entry> - <entry>See above.</entry> - </row> - <row> - <entry><constant>VID_TYPE_MJPEG_ENCODER</constant></entry> - <entry><constant>-</constant></entry> - <entry>See above.</entry> - </row> - </tbody> - </tgroup> - </informaltable></para> - - <para>The <structfield>audios</structfield> field was replaced -by <structfield>capabilities</structfield> flag -<constant>V4L2_CAP_AUDIO</constant>, indicating -<emphasis>if</emphasis> the device has any audio inputs or outputs. To -determine their number applications can enumerate audio inputs with -the &VIDIOC-G-AUDIO; ioctl. The audio ioctls are described in <xref - linkend="audio" />.</para> - - <para>The <structfield>maxwidth</structfield>, -<structfield>maxheight</structfield>, -<structfield>minwidth</structfield> and -<structfield>minheight</structfield> fields were removed. Calling the -&VIDIOC-S-FMT; or &VIDIOC-TRY-FMT; ioctl with the desired dimensions -returns the closest size possible, taking into account the current -video standard, cropping and scaling limitations.</para> - </section> - - <section> - <title>Video Sources</title> - - <para>V4L provides the <constant>VIDIOCGCHAN</constant> and -<constant>VIDIOCSCHAN</constant> ioctl using struct -<structname>video_channel</structname> to enumerate -the video inputs of a V4L device. The equivalent V4L2 ioctls -are &VIDIOC-ENUMINPUT;, &VIDIOC-G-INPUT; and &VIDIOC-S-INPUT; -using &v4l2-input; as discussed in <xref linkend="video" />.</para> - - <para>The <structfield>channel</structfield> field counting -inputs was renamed to <structfield>index</structfield>, the video -input types were renamed as follows: <informaltable> - <tgroup cols="2"> - <thead> - <row> - <entry>struct <structname>video_channel</structname> -<structfield>type</structfield></entry> - <entry>&v4l2-input; -<structfield>type</structfield></entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>VIDEO_TYPE_TV</constant></entry> - <entry><constant>V4L2_INPUT_TYPE_TUNER</constant></entry> - </row> - <row> - <entry><constant>VIDEO_TYPE_CAMERA</constant></entry> - <entry><constant>V4L2_INPUT_TYPE_CAMERA</constant></entry> - </row> - </tbody> - </tgroup> - </informaltable></para> - - <para>Unlike the <structfield>tuners</structfield> field -expressing the number of tuners of this input, V4L2 assumes each video -input is connected to at most one tuner. However a tuner can have more -than one input, &ie; RF connectors, and a device can have multiple -tuners. The index number of the tuner associated with the input, if -any, is stored in field <structfield>tuner</structfield> of -&v4l2-input;. Enumeration of tuners is discussed in <xref - linkend="tuner" />.</para> - - <para>The redundant <constant>VIDEO_VC_TUNER</constant> flag was -dropped. Video inputs associated with a tuner are of type -<constant>V4L2_INPUT_TYPE_TUNER</constant>. The -<constant>VIDEO_VC_AUDIO</constant> flag was replaced by the -<structfield>audioset</structfield> field. V4L2 considers devices with -up to 32 audio inputs. Each set bit in the -<structfield>audioset</structfield> field represents one audio input -this video input combines with. For information about audio inputs and -how to switch between them see <xref linkend="audio" />.</para> - - <para>The <structfield>norm</structfield> field describing the -supported video standards was replaced by -<structfield>std</structfield>. The V4L specification mentions a flag -<constant>VIDEO_VC_NORM</constant> indicating whether the standard can -be changed. This flag was a later addition together with the -<structfield>norm</structfield> field and has been removed in the -meantime. V4L2 has a similar, albeit more comprehensive approach -to video standards, see <xref linkend="standard" /> for more -information.</para> - </section> - - <section> - <title>Tuning</title> - - <para>The V4L <constant>VIDIOCGTUNER</constant> and -<constant>VIDIOCSTUNER</constant> ioctl and struct -<structname>video_tuner</structname> can be used to enumerate the -tuners of a V4L TV or radio device. The equivalent V4L2 ioctls are -&VIDIOC-G-TUNER; and &VIDIOC-S-TUNER; using &v4l2-tuner;. Tuners are -covered in <xref linkend="tuner" />.</para> - - <para>The <structfield>tuner</structfield> field counting tuners -was renamed to <structfield>index</structfield>. The fields -<structfield>name</structfield>, <structfield>rangelow</structfield> -and <structfield>rangehigh</structfield> remained unchanged.</para> - - <para>The <constant>VIDEO_TUNER_PAL</constant>, -<constant>VIDEO_TUNER_NTSC</constant> and -<constant>VIDEO_TUNER_SECAM</constant> flags indicating the supported -video standards were dropped. This information is now contained in the -associated &v4l2-input;. No replacement exists for the -<constant>VIDEO_TUNER_NORM</constant> flag indicating whether the -video standard can be switched. The <structfield>mode</structfield> -field to select a different video standard was replaced by a whole new -set of ioctls and structures described in <xref linkend="standard" />. -Due to its ubiquity it should be mentioned the BTTV driver supports -several standards in addition to the regular -<constant>VIDEO_MODE_PAL</constant> (0), -<constant>VIDEO_MODE_NTSC</constant>, -<constant>VIDEO_MODE_SECAM</constant> and -<constant>VIDEO_MODE_AUTO</constant> (3). Namely N/PAL Argentina, -M/PAL, N/PAL, and NTSC Japan with numbers 3-6 (sic).</para> - - <para>The <constant>VIDEO_TUNER_STEREO_ON</constant> flag -indicating stereo reception became -<constant>V4L2_TUNER_SUB_STEREO</constant> in field -<structfield>rxsubchans</structfield>. This field also permits the -detection of monaural and bilingual audio, see the definition of -&v4l2-tuner; for details. Presently no replacement exists for the -<constant>VIDEO_TUNER_RDS_ON</constant> and -<constant>VIDEO_TUNER_MBS_ON</constant> flags.</para> - - <para> The <constant>VIDEO_TUNER_LOW</constant> flag was renamed -to <constant>V4L2_TUNER_CAP_LOW</constant> in the &v4l2-tuner; -<structfield>capability</structfield> field.</para> - - <para>The <constant>VIDIOCGFREQ</constant> and -<constant>VIDIOCSFREQ</constant> ioctl to change the tuner frequency -where renamed to &VIDIOC-G-FREQUENCY; and &VIDIOC-S-FREQUENCY;. They -take a pointer to a &v4l2-frequency; instead of an unsigned long -integer.</para> - </section> - - <section id="v4l-image-properties"> - <title>Image Properties</title> - - <para>V4L2 has no equivalent of the -<constant>VIDIOCGPICT</constant> and <constant>VIDIOCSPICT</constant> -ioctl and struct <structname>video_picture</structname>. The following -fields where replaced by V4L2 controls accessible with the -&VIDIOC-QUERYCTRL;, &VIDIOC-G-CTRL; and &VIDIOC-S-CTRL; ioctls:<informaltable> - <tgroup cols="2"> - <thead> - <row> - <entry>struct <structname>video_picture</structname></entry> - <entry>V4L2 Control ID</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><structfield>brightness</structfield></entry> - <entry><constant>V4L2_CID_BRIGHTNESS</constant></entry> - </row> - <row> - <entry><structfield>hue</structfield></entry> - <entry><constant>V4L2_CID_HUE</constant></entry> - </row> - <row> - <entry><structfield>colour</structfield></entry> - <entry><constant>V4L2_CID_SATURATION</constant></entry> - </row> - <row> - <entry><structfield>contrast</structfield></entry> - <entry><constant>V4L2_CID_CONTRAST</constant></entry> - </row> - <row> - <entry><structfield>whiteness</structfield></entry> - <entry><constant>V4L2_CID_WHITENESS</constant></entry> - </row> - </tbody> - </tgroup> - </informaltable></para> - - <para>The V4L picture controls are assumed to range from 0 to -65535 with no particular reset value. The V4L2 API permits arbitrary -limits and defaults which can be queried with the &VIDIOC-QUERYCTRL; -ioctl. For general information about controls see <xref -linkend="control" />.</para> - - <para>The <structfield>depth</structfield> (average number of -bits per pixel) of a video image is implied by the selected image -format. V4L2 does not explicitely provide such information assuming -applications recognizing the format are aware of the image depth and -others need not know. The <structfield>palette</structfield> field -moved into the &v4l2-pix-format;:<informaltable> - <tgroup cols="2"> - <thead> - <row> - <entry>struct <structname>video_picture</structname> -<structfield>palette</structfield></entry> - <entry>&v4l2-pix-format; -<structfield>pixfmt</structfield></entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>VIDEO_PALETTE_GREY</constant></entry> - <entry><para><link -linkend="V4L2-PIX-FMT-GREY"><constant>V4L2_PIX_FMT_GREY</constant></link></para></entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_HI240</constant></entry> - <entry><para><link -linkend="pixfmt-reserved"><constant>V4L2_PIX_FMT_HI240</constant></link><footnote> - <para>This is a custom format used by the BTTV -driver, not one of the V4L2 standard formats.</para> - </footnote></para></entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_RGB565</constant></entry> - <entry><para><link -linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_RGB565</constant></link></para></entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_RGB555</constant></entry> - <entry><para><link -linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_RGB555</constant></link></para></entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_RGB24</constant></entry> - <entry><para><link -linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_BGR24</constant></link></para></entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_RGB32</constant></entry> - <entry><para><link -linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_BGR32</constant></link><footnote> - <para>Presumably all V4L RGB formats are -little-endian, although some drivers might interpret them according to machine endianess. V4L2 defines little-endian, big-endian and red/blue -swapped variants. For details see <xref linkend="pixfmt-rgb" />.</para> - </footnote></para></entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_YUV422</constant></entry> - <entry><para><link -linkend="V4L2-PIX-FMT-YUYV"><constant>V4L2_PIX_FMT_YUYV</constant></link></para></entry> - </row> - <row> - <entry><para><constant>VIDEO_PALETTE_YUYV</constant><footnote> - <para><constant>VIDEO_PALETTE_YUV422</constant> -and <constant>VIDEO_PALETTE_YUYV</constant> are the same formats. Some -V4L drivers respond to one, some to the other.</para> - </footnote></para></entry> - <entry><para><link -linkend="V4L2-PIX-FMT-YUYV"><constant>V4L2_PIX_FMT_YUYV</constant></link></para></entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_UYVY</constant></entry> - <entry><para><link -linkend="V4L2-PIX-FMT-UYVY"><constant>V4L2_PIX_FMT_UYVY</constant></link></para></entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_YUV420</constant></entry> - <entry>None</entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_YUV411</constant></entry> - <entry><para><link -linkend="V4L2-PIX-FMT-Y41P"><constant>V4L2_PIX_FMT_Y41P</constant></link><footnote> - <para>Not to be confused with -<constant>V4L2_PIX_FMT_YUV411P</constant>, which is a planar -format.</para> </footnote></para></entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_RAW</constant></entry> - <entry><para>None<footnote> <para>V4L explains this -as: "RAW capture (BT848)"</para> </footnote></para></entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_YUV422P</constant></entry> - <entry><para><link -linkend="V4L2-PIX-FMT-YUV422P"><constant>V4L2_PIX_FMT_YUV422P</constant></link></para></entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_YUV411P</constant></entry> - <entry><para><link -linkend="V4L2-PIX-FMT-YUV411P"><constant>V4L2_PIX_FMT_YUV411P</constant></link><footnote> - <para>Not to be confused with -<constant>V4L2_PIX_FMT_Y41P</constant>, which is a packed -format.</para> </footnote></para></entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_YUV420P</constant></entry> - <entry><para><link -linkend="V4L2-PIX-FMT-YVU420"><constant>V4L2_PIX_FMT_YVU420</constant></link></para></entry> - </row> - <row> - <entry><constant>VIDEO_PALETTE_YUV410P</constant></entry> - <entry><para><link -linkend="V4L2-PIX-FMT-YVU410"><constant>V4L2_PIX_FMT_YVU410</constant></link></para></entry> - </row> - </tbody> - </tgroup> - </informaltable></para> - - <para>V4L2 image formats are defined in <xref -linkend="pixfmt" />. The image format can be selected with the -&VIDIOC-S-FMT; ioctl.</para> - </section> - - <section> - <title>Audio</title> - - <para>The <constant>VIDIOCGAUDIO</constant> and -<constant>VIDIOCSAUDIO</constant> ioctl and struct -<structname>video_audio</structname> are used to enumerate the -audio inputs of a V4L device. The equivalent V4L2 ioctls are -&VIDIOC-G-AUDIO; and &VIDIOC-S-AUDIO; using &v4l2-audio; as -discussed in <xref linkend="audio" />.</para> - - <para>The <structfield>audio</structfield> "channel number" -field counting audio inputs was renamed to -<structfield>index</structfield>.</para> - - <para>On <constant>VIDIOCSAUDIO</constant> the -<structfield>mode</structfield> field selects <emphasis>one</emphasis> -of the <constant>VIDEO_SOUND_MONO</constant>, -<constant>VIDEO_SOUND_STEREO</constant>, -<constant>VIDEO_SOUND_LANG1</constant> or -<constant>VIDEO_SOUND_LANG2</constant> audio demodulation modes. When -the current audio standard is BTSC -<constant>VIDEO_SOUND_LANG2</constant> refers to SAP and -<constant>VIDEO_SOUND_LANG1</constant> is meaningless. Also -undocumented in the V4L specification, there is no way to query the -selected mode. On <constant>VIDIOCGAUDIO</constant> the driver returns -the <emphasis>actually received</emphasis> audio programmes in this -field. In the V4L2 API this information is stored in the &v4l2-tuner; -<structfield>rxsubchans</structfield> and -<structfield>audmode</structfield> fields, respectively. See <xref -linkend="tuner" /> for more information on tuners. Related to audio -modes &v4l2-audio; also reports if this is a mono or stereo -input, regardless if the source is a tuner.</para> - - <para>The following fields where replaced by V4L2 controls -accessible with the &VIDIOC-QUERYCTRL;, &VIDIOC-G-CTRL; and -&VIDIOC-S-CTRL; ioctls:<informaltable> - <tgroup cols="2"> - <thead> - <row> - <entry>struct -<structname>video_audio</structname></entry> - <entry>V4L2 Control ID</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><structfield>volume</structfield></entry> - <entry><constant>V4L2_CID_AUDIO_VOLUME</constant></entry> - </row> - <row> - <entry><structfield>bass</structfield></entry> - <entry><constant>V4L2_CID_AUDIO_BASS</constant></entry> - </row> - <row> - <entry><structfield>treble</structfield></entry> - <entry><constant>V4L2_CID_AUDIO_TREBLE</constant></entry> - </row> - <row> - <entry><structfield>balance</structfield></entry> - <entry><constant>V4L2_CID_AUDIO_BALANCE</constant></entry> - </row> - </tbody> - </tgroup> - </informaltable></para> - - <para>To determine which of these controls are supported by a -driver V4L provides the <structfield>flags</structfield> -<constant>VIDEO_AUDIO_VOLUME</constant>, -<constant>VIDEO_AUDIO_BASS</constant>, -<constant>VIDEO_AUDIO_TREBLE</constant> and -<constant>VIDEO_AUDIO_BALANCE</constant>. In the V4L2 API the -&VIDIOC-QUERYCTRL; ioctl reports if the respective control is -supported. Accordingly the <constant>VIDEO_AUDIO_MUTABLE</constant> -and <constant>VIDEO_AUDIO_MUTE</constant> flags where replaced by the -boolean <constant>V4L2_CID_AUDIO_MUTE</constant> control.</para> - - <para>All V4L2 controls have a <structfield>step</structfield> -attribute replacing the struct <structname>video_audio</structname> -<structfield>step</structfield> field. The V4L audio controls are -assumed to range from 0 to 65535 with no particular reset value. The -V4L2 API permits arbitrary limits and defaults which can be queried -with the &VIDIOC-QUERYCTRL; ioctl. For general information about -controls see <xref linkend="control" />.</para> - </section> - - <section> - <title>Frame Buffer Overlay</title> - - <para>The V4L2 ioctls equivalent to -<constant>VIDIOCGFBUF</constant> and <constant>VIDIOCSFBUF</constant> -are &VIDIOC-G-FBUF; and &VIDIOC-S-FBUF;. The -<structfield>base</structfield> field of struct -<structname>video_buffer</structname> remained unchanged, except V4L2 -defines a flag to indicate non-destructive overlays instead of a -<constant>NULL</constant> pointer. All other fields moved into the -&v4l2-pix-format; <structfield>fmt</structfield> substructure of -&v4l2-framebuffer;. The <structfield>depth</structfield> field was -replaced by <structfield>pixelformat</structfield>. See <xref - linkend="pixfmt-rgb" /> for a list of RGB formats and their -respective color depths.</para> - - <para>Instead of the special ioctls -<constant>VIDIOCGWIN</constant> and <constant>VIDIOCSWIN</constant> -V4L2 uses the general-purpose data format negotiation ioctls -&VIDIOC-G-FMT; and &VIDIOC-S-FMT;. They take a pointer to a -&v4l2-format; as argument. Here the <structfield>win</structfield> -member of the <structfield>fmt</structfield> union is used, a -&v4l2-window;.</para> - - <para>The <structfield>x</structfield>, -<structfield>y</structfield>, <structfield>width</structfield> and -<structfield>height</structfield> fields of struct -<structname>video_window</structname> moved into &v4l2-rect; -substructure <structfield>w</structfield> of struct -<structname>v4l2_window</structname>. The -<structfield>chromakey</structfield>, -<structfield>clips</structfield>, and -<structfield>clipcount</structfield> fields remained unchanged. Struct -<structname>video_clip</structname> was renamed to &v4l2-clip;, also -containing a struct <structname>v4l2_rect</structname>, but the -semantics are still the same.</para> - - <para>The <constant>VIDEO_WINDOW_INTERLACE</constant> flag was -dropped. Instead applications must set the -<structfield>field</structfield> field to -<constant>V4L2_FIELD_ANY</constant> or -<constant>V4L2_FIELD_INTERLACED</constant>. The -<constant>VIDEO_WINDOW_CHROMAKEY</constant> flag moved into -&v4l2-framebuffer;, under the new name -<constant>V4L2_FBUF_FLAG_CHROMAKEY</constant>.</para> - - <para>In V4L, storing a bitmap pointer in -<structfield>clips</structfield> and setting -<structfield>clipcount</structfield> to -<constant>VIDEO_CLIP_BITMAP</constant> (-1) requests bitmap -clipping, using a fixed size bitmap of 1024 × 625 bits. Struct -<structname>v4l2_window</structname> has a separate -<structfield>bitmap</structfield> pointer field for this purpose and -the bitmap size is determined by <structfield>w.width</structfield> and -<structfield>w.height</structfield>.</para> - - <para>The <constant>VIDIOCCAPTURE</constant> ioctl to enable or -disable overlay was renamed to &VIDIOC-OVERLAY;.</para> - </section> - - <section> - <title>Cropping</title> - - <para>To capture only a subsection of the full picture V4L -defines the <constant>VIDIOCGCAPTURE</constant> and -<constant>VIDIOCSCAPTURE</constant> ioctls using struct -<structname>video_capture</structname>. The equivalent V4L2 ioctls are -&VIDIOC-G-CROP; and &VIDIOC-S-CROP; using &v4l2-crop;, and the related -&VIDIOC-CROPCAP; ioctl. This is a rather complex matter, see -<xref linkend="crop" /> for details.</para> - - <para>The <structfield>x</structfield>, -<structfield>y</structfield>, <structfield>width</structfield> and -<structfield>height</structfield> fields moved into &v4l2-rect; -substructure <structfield>c</structfield> of struct -<structname>v4l2_crop</structname>. The -<structfield>decimation</structfield> field was dropped. In the V4L2 -API the scaling factor is implied by the size of the cropping -rectangle and the size of the captured or overlaid image.</para> - - <para>The <constant>VIDEO_CAPTURE_ODD</constant> -and <constant>VIDEO_CAPTURE_EVEN</constant> flags to capture only the -odd or even field, respectively, were replaced by -<constant>V4L2_FIELD_TOP</constant> and -<constant>V4L2_FIELD_BOTTOM</constant> in the field named -<structfield>field</structfield> of &v4l2-pix-format; and -&v4l2-window;. These structures are used to select a capture or -overlay format with the &VIDIOC-S-FMT; ioctl.</para> - </section> - - <section> - <title>Reading Images, Memory Mapping</title> - - <section> - <title>Capturing using the read method</title> - - <para>There is no essential difference between reading images -from a V4L or V4L2 device using the &func-read; function, however V4L2 -drivers are not required to support this I/O method. Applications can -determine if the function is available with the &VIDIOC-QUERYCAP; -ioctl. All V4L2 devices exchanging data with applications must support -the &func-select; and &func-poll; functions.</para> - - <para>To select an image format and size, V4L provides the -<constant>VIDIOCSPICT</constant> and <constant>VIDIOCSWIN</constant> -ioctls. V4L2 uses the general-purpose data format negotiation ioctls -&VIDIOC-G-FMT; and &VIDIOC-S-FMT;. They take a pointer to a -&v4l2-format; as argument, here the &v4l2-pix-format; named -<structfield>pix</structfield> of its <structfield>fmt</structfield> -union is used.</para> - - <para>For more information about the V4L2 read interface see -<xref linkend="rw" />.</para> - </section> - <section> - <title>Capturing using memory mapping</title> - - <para>Applications can read from V4L devices by mapping -buffers in device memory, or more often just buffers allocated in -DMA-able system memory, into their address space. This avoids the data -copying overhead of the read method. V4L2 supports memory mapping as -well, with a few differences.</para> - - <informaltable> - <tgroup cols="2"> - <thead> - <row> - <entry>V4L</entry> - <entry>V4L2</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry></entry> - <entry>The image format must be selected before -buffers are allocated, with the &VIDIOC-S-FMT; ioctl. When no format -is selected the driver may use the last, possibly by another -application requested format.</entry> - </row> - <row> - <entry><para>Applications cannot change the number of -buffers. The it is built into the driver, unless it has a module -option to change the number when the driver module is -loaded.</para></entry> - <entry><para>The &VIDIOC-REQBUFS; ioctl allocates the -desired number of buffers, this is a required step in the initialization -sequence.</para></entry> - </row> - <row> - <entry><para>Drivers map all buffers as one contiguous -range of memory. The <constant>VIDIOCGMBUF</constant> ioctl is -available to query the number of buffers, the offset of each buffer -from the start of the virtual file, and the overall amount of memory -used, which can be used as arguments for the &func-mmap; -function.</para></entry> - <entry><para>Buffers are individually mapped. The -offset and size of each buffer can be determined with the -&VIDIOC-QUERYBUF; ioctl.</para></entry> - </row> - <row> - <entry><para>The <constant>VIDIOCMCAPTURE</constant> -ioctl prepares a buffer for capturing. It also determines the image -format for this buffer. The ioctl returns immediately, eventually with -an &EAGAIN; if no video signal had been detected. When the driver -supports more than one buffer applications can call the ioctl multiple -times and thus have multiple outstanding capture -requests.</para><para>The <constant>VIDIOCSYNC</constant> ioctl -suspends execution until a particular buffer has been -filled.</para></entry> - <entry><para>Drivers maintain an incoming and outgoing -queue. &VIDIOC-QBUF; enqueues any empty buffer into the incoming -queue. Filled buffers are dequeued from the outgoing queue with the -&VIDIOC-DQBUF; ioctl. To wait until filled buffers become available this -function, &func-select; or &func-poll; can be used. The -&VIDIOC-STREAMON; ioctl must be called once after enqueuing one or -more buffers to start capturing. Its counterpart -&VIDIOC-STREAMOFF; stops capturing and dequeues all buffers from both -queues. Applications can query the signal status, if known, with the -&VIDIOC-ENUMINPUT; ioctl.</para></entry> - </row> - </tbody> - </tgroup> - </informaltable> - - <para>For a more in-depth discussion of memory mapping and -examples, see <xref linkend="mmap" />.</para> - </section> - </section> - - <section> - <title>Reading Raw VBI Data</title> - - <para>Originally the V4L API did not specify a raw VBI capture -interface, only the device file <filename>/dev/vbi</filename> was -reserved for this purpose. The only driver supporting this interface -was the BTTV driver, de-facto defining the V4L VBI interface. Reading -from the device yields a raw VBI image with the following -parameters:<informaltable> - <tgroup cols="2"> - <thead> - <row> - <entry>&v4l2-vbi-format;</entry> - <entry>V4L, BTTV driver</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry>sampling_rate</entry> - <entry>28636363 Hz NTSC (or any other 525-line -standard); 35468950 Hz PAL and SECAM (625-line standards)</entry> - </row> - <row> - <entry>offset</entry> - <entry>?</entry> - </row> - <row> - <entry>samples_per_line</entry> - <entry>2048</entry> - </row> - <row> - <entry>sample_format</entry> - <entry>V4L2_PIX_FMT_GREY. The last four bytes (a -machine endianess integer) contain a frame counter.</entry> - </row> - <row> - <entry>start[]</entry> - <entry>10, 273 NTSC; 22, 335 PAL and SECAM</entry> - </row> - <row> - <entry>count[]</entry> - <entry><para>16, 16<footnote><para>Old driver -versions used different values, eventually the custom -<constant>BTTV_VBISIZE</constant> ioctl was added to query the -correct values.</para></footnote></para></entry> - </row> - <row> - <entry>flags</entry> - <entry>0</entry> - </row> - </tbody> - </tgroup> - </informaltable></para> - - <para>Undocumented in the V4L specification, in Linux 2.3 the -<constant>VIDIOCGVBIFMT</constant> and -<constant>VIDIOCSVBIFMT</constant> ioctls using struct -<structname>vbi_format</structname> were added to determine the VBI -image parameters. These ioctls are only partially compatible with the -V4L2 VBI interface specified in <xref linkend="raw-vbi" />.</para> - - <para>An <structfield>offset</structfield> field does not -exist, <structfield>sample_format</structfield> is supposed to be -<constant>VIDEO_PALETTE_RAW</constant>, equivalent to -<constant>V4L2_PIX_FMT_GREY</constant>. The remaining fields are -probably equivalent to &v4l2-vbi-format;.</para> - - <para>Apparently only the Zoran (ZR 36120) driver implements -these ioctls. The semantics differ from those specified for V4L2 in two -ways. The parameters are reset on &func-open; and -<constant>VIDIOCSVBIFMT</constant> always returns an &EINVAL; if the -parameters are invalid.</para> - </section> - - <section> - <title>Miscellaneous</title> - - <para>V4L2 has no equivalent of the -<constant>VIDIOCGUNIT</constant> ioctl. Applications can find the VBI -device associated with a video capture device (or vice versa) by -reopening the device and requesting VBI data. For details see -<xref linkend="open" />.</para> - - <para>No replacement exists for <constant>VIDIOCKEY</constant>, -and the V4L functions for microcode programming. A new interface for -MPEG compression and playback devices is documented in <xref - linkend="extended-controls" />.</para> - </section> - - </section> - - <section id="hist-v4l2"> - <title>Changes of the V4L2 API</title> - - <para>Soon after the V4L API was added to the kernel it was -criticised as too inflexible. In August 1998 Bill Dirks proposed a -number of improvements and began to work on documentation, example -drivers and applications. With the help of other volunteers this -eventually became the V4L2 API, not just an extension but a -replacement for the V4L API. However it took another four years and -two stable kernel releases until the new API was finally accepted for -inclusion into the kernel in its present form.</para> - - <section> - <title>Early Versions</title> - <para>1998-08-20: First version.</para> - - <para>1998-08-27: The &func-select; function was introduced.</para> - - <para>1998-09-10: New video standard interface.</para> - - <para>1998-09-18: The <constant>VIDIOC_NONCAP</constant> ioctl -was replaced by the otherwise meaningless <constant>O_TRUNC</constant> -&func-open; flag, and the aliases <constant>O_NONCAP</constant> and -<constant>O_NOIO</constant> were defined. Applications can set this -flag if they intend to access controls only, as opposed to capture -applications which need exclusive access. The -<constant>VIDEO_STD_XXX</constant> identifiers are now ordinals -instead of flags, and the <function>video_std_construct()</function> -helper function takes id and transmission arguments.</para> - - <para>1998-09-28: Revamped video standard. Made video controls -individually enumerable.</para> - - <para>1998-10-02: The <structfield>id</structfield> field was -removed from struct <structname>video_standard</structname> and the -color subcarrier fields were renamed. The &VIDIOC-QUERYSTD; ioctl was -renamed to &VIDIOC-ENUMSTD;, &VIDIOC-G-INPUT; to &VIDIOC-ENUMINPUT;. A -first draft of the Codec API was released.</para> - - <para>1998-11-08: Many minor changes. Most symbols have been -renamed. Some material changes to &v4l2-capability;.</para> - - <para>1998-11-12: The read/write directon of some ioctls was misdefined.</para> - - <para>1998-11-14: <constant>V4L2_PIX_FMT_RGB24</constant> -changed to <constant>V4L2_PIX_FMT_BGR24</constant>, and -<constant>V4L2_PIX_FMT_RGB32</constant> changed to -<constant>V4L2_PIX_FMT_BGR32</constant>. Audio controls are now -accessible with the &VIDIOC-G-CTRL; and &VIDIOC-S-CTRL; ioctls under -names starting with <constant>V4L2_CID_AUDIO</constant>. The -<constant>V4L2_MAJOR</constant> define was removed from -<filename>videodev.h</filename> since it was only used once in the -<filename>videodev</filename> kernel module. The -<constant>YUV422</constant> and <constant>YUV411</constant> planar -image formats were added.</para> - - <para>1998-11-28: A few ioctl symbols changed. Interfaces for codecs and -video output devices were added.</para> - - <para>1999-01-14: A raw VBI capture interface was added.</para> - - <para>1999-01-19: The <constant>VIDIOC_NEXTBUF</constant> ioctl - was removed.</para> - </section> - - <section> - <title>V4L2 Version 0.16 1999-01-31</title> - <para>1999-01-27: There is now one QBUF ioctl, VIDIOC_QWBUF and VIDIOC_QRBUF -are gone. VIDIOC_QBUF takes a v4l2_buffer as a parameter. Added -digital zoom (cropping) controls.</para> - </section> - - <!-- Where's 0.17? mhs couldn't find that videodev.h, perhaps Bill - forgot to bump the version number or never released it. --> - - <section> - <title>V4L2 Version 0.18 1999-03-16</title> - <para>Added a v4l to V4L2 ioctl compatibility layer to -videodev.c. Driver writers, this changes how you implement your ioctl -handler. See the Driver Writer's Guide. Added some more control id -codes.</para> - </section> - - <section> - <title>V4L2 Version 0.19 1999-06-05</title> - <para>1999-03-18: Fill in the category and catname fields of -v4l2_queryctrl objects before passing them to the driver. Required a -minor change to the VIDIOC_QUERYCTRL handlers in the sample -drivers.</para> - <para>1999-03-31: Better compatibility for v4l memory capture -ioctls. Requires changes to drivers to fully support new compatibility -features, see Driver Writer's Guide and v4l2cap.c. Added new control -IDs: V4L2_CID_HFLIP, _VFLIP. Changed V4L2_PIX_FMT_YUV422P to _YUV422P, -and _YUV411P to _YUV411P.</para> - <para>1999-04-04: Added a few more control IDs.</para> - <para>1999-04-07: Added the button control type.</para> - <para>1999-05-02: Fixed a typo in videodev.h, and added the -V4L2_CTRL_FLAG_GRAYED (later V4L2_CTRL_FLAG_GRABBED) flag.</para> - <para>1999-05-20: Definition of VIDIOC_G_CTRL was wrong causing -a malfunction of this ioctl.</para> - <para>1999-06-05: Changed the value of -V4L2_CID_WHITENESS.</para> - </section> - - <section> - <title>V4L2 Version 0.20 (1999-09-10)</title> - - <para>Version 0.20 introduced a number of changes which were -<emphasis>not backward compatible</emphasis> with 0.19 and earlier -versions. Purpose of these changes was to simplify the API, while -making it more extensible and following common Linux driver API -conventions.</para> - - <orderedlist> - <listitem> - <para>Some typos in <constant>V4L2_FMT_FLAG</constant> -symbols were fixed. &v4l2-clip; was changed for compatibility with -v4l. (1999-08-30)</para> - </listitem> - - <listitem> - <para><constant>V4L2_TUNER_SUB_LANG1</constant> was added. -(1999-09-05)</para> - </listitem> - - <listitem> - <para>All ioctl() commands that used an integer argument now -take a pointer to an integer. Where it makes sense, ioctls will return -the actual new value in the integer pointed to by the argument, a -common convention in the V4L2 API. The affected ioctls are: -VIDIOC_PREVIEW, VIDIOC_STREAMON, VIDIOC_STREAMOFF, VIDIOC_S_FREQ, -VIDIOC_S_INPUT, VIDIOC_S_OUTPUT, VIDIOC_S_EFFECT. For example -<programlisting> -err = ioctl (fd, VIDIOC_XXX, V4L2_XXX); -</programlisting> becomes <programlisting> -int a = V4L2_XXX; err = ioctl(fd, VIDIOC_XXX, &a); -</programlisting> - </para> - </listitem> - - <listitem> - <para>All the different get- and set-format commands were -swept into one &VIDIOC-G-FMT; and &VIDIOC-S-FMT; ioctl taking a union -and a type field selecting the union member as parameter. Purpose is to -simplify the API by eliminating several ioctls and to allow new and -driver private data streams without adding new ioctls.</para> - - <para>This change obsoletes the following ioctls: -<constant>VIDIOC_S_INFMT</constant>, -<constant>VIDIOC_G_INFMT</constant>, -<constant>VIDIOC_S_OUTFMT</constant>, -<constant>VIDIOC_G_OUTFMT</constant>, -<constant>VIDIOC_S_VBIFMT</constant> and -<constant>VIDIOC_G_VBIFMT</constant>. The image format structure -<structname>v4l2_format</structname> was renamed to &v4l2-pix-format;, -while &v4l2-format; is now the envelopping structure for all format -negotiations.</para> - </listitem> - - <listitem> - <para>Similar to the changes above, the -<constant>VIDIOC_G_PARM</constant> and -<constant>VIDIOC_S_PARM</constant> ioctls were merged with -<constant>VIDIOC_G_OUTPARM</constant> and -<constant>VIDIOC_S_OUTPARM</constant>. A -<structfield>type</structfield> field in the new &v4l2-streamparm; -selects the respective union member.</para> - - <para>This change obsoletes the -<constant>VIDIOC_G_OUTPARM</constant> and -<constant>VIDIOC_S_OUTPARM</constant> ioctls.</para> - </listitem> - - <listitem> - <para>Control enumeration was simplified, and two new -control flags were introduced and one dropped. The -<structfield>catname</structfield> field was replaced by a -<structfield>group</structfield> field.</para> - - <para>Drivers can now flag unsupported and temporarily -unavailable controls with <constant>V4L2_CTRL_FLAG_DISABLED</constant> -and <constant>V4L2_CTRL_FLAG_GRABBED</constant> respectively. The -<structfield>group</structfield> name indicates a possibly narrower -classification than the <structfield>category</structfield>. In other -words, there may be multiple groups within a category. Controls within -a group would typically be drawn within a group box. Controls in -different categories might have a greater separation, or may even -appear in separate windows.</para> - </listitem> - - <listitem> - <para>The &v4l2-buffer; <structfield>timestamp</structfield> -was changed to a 64 bit integer, containing the sampling or output -time of the frame in nanoseconds. Additionally timestamps will be in -absolute system time, not starting from zero at the beginning of a -stream. The data type name for timestamps is stamp_t, defined as a -signed 64-bit integer. Output devices should not send a buffer out -until the time in the timestamp field has arrived. I would like to -follow SGI's lead, and adopt a multimedia timestamping system like -their UST (Unadjusted System Time). See -http://web.archive.org/web/*/http://reality.sgi.com -/cpirazzi_engr/lg/time/intro.html. -UST uses timestamps that are 64-bit signed integers -(not struct timeval's) and given in nanosecond units. The UST clock -starts at zero when the system is booted and runs continuously and -uniformly. It takes a little over 292 years for UST to overflow. There -is no way to set the UST clock. The regular Linux time-of-day clock -can be changed periodically, which would cause errors if it were being -used for timestamping a multimedia stream. A real UST style clock will -require some support in the kernel that is not there yet. But in -anticipation, I will change the timestamp field to a 64-bit integer, -and I will change the v4l2_masterclock_gettime() function (used only -by drivers) to return a 64-bit integer.</para> - </listitem> - - <listitem> - <para>A <structfield>sequence</structfield> field was added -to &v4l2-buffer;. The <structfield>sequence</structfield> field counts -captured frames, it is ignored by output devices. When a capture -driver drops a frame, the sequence number of that frame is -skipped.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 Version 0.20 incremental changes</title> - <!-- Version number didn't change anymore, reason unknown. --> - - <para>1999-12-23: In &v4l2-vbi-format; the -<structfield>reserved1</structfield> field became -<structfield>offset</structfield>. Previously drivers were required to -clear the <structfield>reserved1</structfield> field.</para> - - <para>2000-01-13: The - <constant>V4L2_FMT_FLAG_NOT_INTERLACED</constant> flag was added.</para> - - <para>2000-07-31: The <filename>linux/poll.h</filename> header -is now included by <filename>videodev.h</filename> for compatibility -with the original <filename>videodev.h</filename> file.</para> - - <para>2000-11-20: <constant>V4L2_TYPE_VBI_OUTPUT</constant> and -<constant>V4L2_PIX_FMT_Y41P</constant> were added.</para> - - <para>2000-11-25: <constant>V4L2_TYPE_VBI_INPUT</constant> was -added.</para> - - <para>2000-12-04: A couple typos in symbol names were fixed.</para> - - <para>2001-01-18: To avoid namespace conflicts the -<constant>fourcc</constant> macro defined in the -<filename>videodev.h</filename> header file was renamed to -<constant>v4l2_fourcc</constant>.</para> - - <para>2001-01-25: A possible driver-level compatibility problem -between the <filename>videodev.h</filename> file in Linux 2.4.0 and -the <filename>videodev.h</filename> file included in the -<filename>videodevX</filename> patch was fixed. Users of an earlier -version of <filename>videodevX</filename> on Linux 2.4.0 should -recompile their V4L and V4L2 drivers.</para> - - <para>2001-01-26: A possible kernel-level incompatibility -between the <filename>videodev.h</filename> file in the -<filename>videodevX</filename> patch and the -<filename>videodev.h</filename> file in Linux 2.2.x with devfs patches -applied was fixed.</para> - - <para>2001-03-02: Certain V4L ioctls which pass data in both -direction although they are defined with read-only parameter, did not -work correctly through the backward compatibility layer. -[Solution?]</para> - - <para>2001-04-13: Big endian 16-bit RGB formats were added.</para> - - <para>2001-09-17: New YUV formats and the &VIDIOC-G-FREQUENCY; and -&VIDIOC-S-FREQUENCY; ioctls were added. (The old -<constant>VIDIOC_G_FREQ</constant> and -<constant>VIDIOC_S_FREQ</constant> ioctls did not take multiple tuners -into account.)</para> - - <para>2000-09-18: <constant>V4L2_BUF_TYPE_VBI</constant> was -added. This may <emphasis>break compatibility</emphasis> as the -&VIDIOC-G-FMT; and &VIDIOC-S-FMT; ioctls may fail now if the struct -<structname>v4l2_fmt</structname> <structfield>type</structfield> -field does not contain <constant>V4L2_BUF_TYPE_VBI</constant>. In the -documentation of the &v4l2-vbi-format; -<structfield>offset</structfield> field the ambiguous phrase "rising -edge" was changed to "leading edge".</para> - </section> - - <section> - <title>V4L2 Version 0.20 2000-11-23</title> - - <para>A number of changes were made to the raw VBI -interface.</para> - - <orderedlist> - <listitem> - <para>Figures clarifying the line numbering scheme were -added to the V4L2 API specification. The -<structfield>start</structfield>[0] and -<structfield>start</structfield>[1] fields no longer count line -numbers beginning at zero. Rationale: a) The previous definition was -unclear. b) The <structfield>start</structfield>[] values are ordinal -numbers. c) There is no point in inventing a new line numbering -scheme. We now use line number as defined by ITU-R, period. -Compatibility: Add one to the start values. Applications depending on -the previous semantics may not function correctly.</para> - </listitem> - - <listitem> - <para>The restriction "count[0] > 0 and count[1] > 0" -has been relaxed to "(count[0] + count[1]) > 0". Rationale: -Drivers may allocate resources at scan line granularity and some data -services are transmitted only on the first field. The comment that -both <structfield>count</structfield> values will usually be equal is -misleading and pointless and has been removed. This change -<emphasis>breaks compatibility</emphasis> with earlier versions: -Drivers may return EINVAL, applications may not function -correctly.</para> - </listitem> - - <listitem> - <para>Drivers are again permitted to return negative -(unknown) start values as proposed earlier. Why this feature was -dropped is unclear. This change may <emphasis>break -compatibility</emphasis> with applications depending on the start -values being positive. The use of <constant>EBUSY</constant> and -<constant>EINVAL</constant> error codes with the &VIDIOC-S-FMT; ioctl -was clarified. The &EBUSY; was finally documented, and the -<structfield>reserved2</structfield> field which was previously -mentioned only in the <filename>videodev.h</filename> header -file.</para> - </listitem> - - <listitem> - <para>New buffer types -<constant>V4L2_TYPE_VBI_INPUT</constant> and -<constant>V4L2_TYPE_VBI_OUTPUT</constant> were added. The former is an -alias for the old <constant>V4L2_TYPE_VBI</constant>, the latter was -missing in the <filename>videodev.h</filename> file.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 Version 0.20 2002-07-25</title> - <para>Added sliced VBI interface proposal.</para> - </section> - - <section> - <title>V4L2 in Linux 2.5.46, 2002-10</title> - - <para>Around October-November 2002, prior to an announced -feature freeze of Linux 2.5, the API was revised, drawing from -experience with V4L2 0.20. This unnamed version was finally merged -into Linux 2.5.46.</para> - - <orderedlist> - <listitem> - <para>As specified in <xref linkend="related" />, drivers -must make related device functions available under all minor device -numbers.</para> - </listitem> - - <listitem> - <para>The &func-open; function requires access mode -<constant>O_RDWR</constant> regardless of the device type. All V4L2 -drivers exchanging data with applications must support the -<constant>O_NONBLOCK</constant> flag. The <constant>O_NOIO</constant> -flag, a V4L2 symbol which aliased the meaningless -<constant>O_TRUNC</constant> to indicate accesses without data -exchange (panel applications) was dropped. Drivers must stay in "panel -mode" until the application attempts to initiate a data exchange, see -<xref linkend="open" />.</para> - </listitem> - - <listitem> - <para>The &v4l2-capability; changed dramatically. Note that -also the size of the structure changed, which is encoded in the ioctl -request code, thus older V4L2 devices will respond with an &EINVAL; to -the new &VIDIOC-QUERYCAP; ioctl.</para> - - <para>There are new fields to identify the driver, a new RDS -device function <constant>V4L2_CAP_RDS_CAPTURE</constant>, the -<constant>V4L2_CAP_AUDIO</constant> flag indicates if the device has -any audio connectors, another I/O capability -<constant>V4L2_CAP_ASYNCIO</constant> can be flagged. In response to -these changes the <structfield>type</structfield> field became a bit -set and was merged into the <structfield>flags</structfield> field. -<constant>V4L2_FLAG_TUNER</constant> was renamed to -<constant>V4L2_CAP_TUNER</constant>, -<constant>V4L2_CAP_VIDEO_OVERLAY</constant> replaced -<constant>V4L2_FLAG_PREVIEW</constant> and -<constant>V4L2_CAP_VBI_CAPTURE</constant> and -<constant>V4L2_CAP_VBI_OUTPUT</constant> replaced -<constant>V4L2_FLAG_DATA_SERVICE</constant>. -<constant>V4L2_FLAG_READ</constant> and -<constant>V4L2_FLAG_WRITE</constant> were merged into -<constant>V4L2_CAP_READWRITE</constant>.</para> - - <para>The redundant fields -<structfield>inputs</structfield>, <structfield>outputs</structfield> -and <structfield>audios</structfield> were removed. These properties -can be determined as described in <xref linkend="video" /> and <xref -linkend="audio" />.</para> - - <para>The somewhat volatile and therefore barely useful -fields <structfield>maxwidth</structfield>, -<structfield>maxheight</structfield>, -<structfield>minwidth</structfield>, -<structfield>minheight</structfield>, -<structfield>maxframerate</structfield> were removed. This information -is available as described in <xref linkend="format" /> and -<xref linkend="standard" />.</para> - - <para><constant>V4L2_FLAG_SELECT</constant> was removed. We -believe the select() function is important enough to require support -of it in all V4L2 drivers exchanging data with applications. The -redundant <constant>V4L2_FLAG_MONOCHROME</constant> flag was removed, -this information is available as described in <xref - linkend="format" />.</para> - </listitem> - - <listitem> - <para>In &v4l2-input; the -<structfield>assoc_audio</structfield> field and the -<structfield>capability</structfield> field and its only flag -<constant>V4L2_INPUT_CAP_AUDIO</constant> was replaced by the new -<structfield>audioset</structfield> field. Instead of linking one -video input to one audio input this field reports all audio inputs -this video input combines with.</para> - - <para>New fields are <structfield>tuner</structfield> -(reversing the former link from tuners to video inputs), -<structfield>std</structfield> and -<structfield>status</structfield>.</para> - - <para>Accordingly &v4l2-output; lost its -<structfield>capability</structfield> and -<structfield>assoc_audio</structfield> fields. -<structfield>audioset</structfield>, -<structfield>modulator</structfield> and -<structfield>std</structfield> where added instead.</para> - </listitem> - - <listitem> - <para>The &v4l2-audio; field -<structfield>audio</structfield> was renamed to -<structfield>index</structfield>, for consistency with other -structures. A new capability flag -<constant>V4L2_AUDCAP_STEREO</constant> was added to indicated if the -audio input in question supports stereo sound. -<constant>V4L2_AUDCAP_EFFECTS</constant> and the corresponding -<constant>V4L2_AUDMODE</constant> flags where removed. This can be -easily implemented using controls. (However the same applies to AVL -which is still there.)</para> - - <para>Again for consistency the &v4l2-audioout; field -<structfield>audio</structfield> was renamed to -<structfield>index</structfield>.</para> - </listitem> - - <listitem> - <para>The &v4l2-tuner; -<structfield>input</structfield> field was replaced by an -<structfield>index</structfield> field, permitting devices with -multiple tuners. The link between video inputs and tuners is now -reversed, inputs point to their tuner. The -<structfield>std</structfield> substructure became a -simple set (more about this below) and moved into &v4l2-input;. A -<structfield>type</structfield> field was added.</para> - - <para>Accordingly in &v4l2-modulator; the -<structfield>output</structfield> was replaced by an -<structfield>index</structfield> field.</para> - - <para>In &v4l2-frequency; the -<structfield>port</structfield> field was replaced by a -<structfield>tuner</structfield> field containing the respective tuner -or modulator index number. A tuner <structfield>type</structfield> -field was added and the <structfield>reserved</structfield> field -became larger for future extensions (satellite tuners in -particular).</para> - </listitem> - - <listitem> - <para>The idea of completely transparent video standards was -dropped. Experience showed that applications must be able to work with -video standards beyond presenting the user a menu. Instead of -enumerating supported standards with an ioctl applications can now -refer to standards by &v4l2-std-id; and symbols defined in the -<filename>videodev2.h</filename> header file. For details see <xref - linkend="standard" />. The &VIDIOC-G-STD; and -&VIDIOC-S-STD; now take a pointer to this type as argument. -&VIDIOC-QUERYSTD; was added to autodetect the received standard, if -the hardware has this capability. In &v4l2-standard; an -<structfield>index</structfield> field was added for &VIDIOC-ENUMSTD;. -A &v4l2-std-id; field named <structfield>id</structfield> was added as -machine readable identifier, also replacing the -<structfield>transmission</structfield> field. The misleading -<structfield>framerate</structfield> field was renamed -to <structfield>frameperiod</structfield>. The now obsolete -<structfield>colorstandard</structfield> information, originally -needed to distguish between variations of standards, were -removed.</para> - - <para>Struct <structname>v4l2_enumstd</structname> ceased to -be. &VIDIOC-ENUMSTD; now takes a pointer to a &v4l2-standard; -directly. The information which standards are supported by a -particular video input or output moved into &v4l2-input; and -&v4l2-output; fields named <structfield>std</structfield>, -respectively.</para> - </listitem> - - <listitem> - <para>The &v4l2-queryctrl; fields -<structfield>category</structfield> and -<structfield>group</structfield> did not catch on and/or were not -implemented as expected and therefore removed.</para> - </listitem> - - <listitem> - <para>The &VIDIOC-TRY-FMT; ioctl was added to negotiate data -formats as with &VIDIOC-S-FMT;, but without the overhead of -programming the hardware and regardless of I/O in progress.</para> - - <para>In &v4l2-format; the <structfield>fmt</structfield> -union was extended to contain &v4l2-window;. All image format -negotiations are now possible with <constant>VIDIOC_G_FMT</constant>, -<constant>VIDIOC_S_FMT</constant> and -<constant>VIDIOC_TRY_FMT</constant>; ioctl. The -<constant>VIDIOC_G_WIN</constant> and -<constant>VIDIOC_S_WIN</constant> ioctls to prepare for a video -overlay were removed. The <structfield>type</structfield> field -changed to type &v4l2-buf-type; and the buffer type names changed as -follows.<informaltable> - <tgroup cols="2"> - <thead> - <row> - <entry>Old defines</entry> - <entry>&v4l2-buf-type;</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>V4L2_BUF_TYPE_CAPTURE</constant></entry> - <entry><constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant></entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_CODECIN</constant></entry> - <entry>Omitted for now</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_CODECOUT</constant></entry> - <entry>Omitted for now</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_EFFECTSIN</constant></entry> - <entry>Omitted for now</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_EFFECTSIN2</constant></entry> - <entry>Omitted for now</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_EFFECTSOUT</constant></entry> - <entry>Omitted for now</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_VIDEOOUT</constant></entry> - <entry><constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant></entry> - </row> - <row> - <entry><constant>-</constant></entry> - <entry><constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant></entry> - </row> - <row> - <entry><constant>-</constant></entry> - <entry><constant>V4L2_BUF_TYPE_VBI_CAPTURE</constant></entry> - </row> - <row> - <entry><constant>-</constant></entry> - <entry><constant>V4L2_BUF_TYPE_VBI_OUTPUT</constant></entry> - </row> - <row> - <entry><constant>-</constant></entry> - <entry><constant>V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</constant></entry> - </row> - <row> - <entry><constant>-</constant></entry> - <entry><constant>V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</constant></entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_PRIVATE_BASE</constant></entry> - <entry><constant>V4L2_BUF_TYPE_PRIVATE</constant></entry> - </row> - </tbody> - </tgroup> - </informaltable></para> - </listitem> - - <listitem> - <para>In &v4l2-fmtdesc; a &v4l2-buf-type; field named -<structfield>type</structfield> was added as in &v4l2-format;. The -<constant>VIDIOC_ENUM_FBUFFMT</constant> ioctl is no longer needed and -was removed. These calls can be replaced by &VIDIOC-ENUM-FMT; with -type <constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>.</para> - </listitem> - - <listitem> - <para>In &v4l2-pix-format; the -<structfield>depth</structfield> field was removed, assuming -applications which recognize the format by its four-character-code -already know the color depth, and others do not care about it. The -same rationale lead to the removal of the -<constant>V4L2_FMT_FLAG_COMPRESSED</constant> flag. The -<constant>V4L2_FMT_FLAG_SWCONVECOMPRESSED</constant> flag was removed -because drivers are not supposed to convert images in kernel space. A -user library of conversion functions should be provided instead. The -<constant>V4L2_FMT_FLAG_BYTESPERLINE</constant> flag was redundant. -Applications can set the <structfield>bytesperline</structfield> field -to zero to get a reasonable default. Since the remaining flags were -replaced as well, the <structfield>flags</structfield> field itself -was removed.</para> - <para>The interlace flags were replaced by a &v4l2-field; -value in a newly added <structfield>field</structfield> -field.<informaltable> - <tgroup cols="2"> - <thead> - <row> - <entry>Old flag</entry> - <entry>&v4l2-field;</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>V4L2_FMT_FLAG_NOT_INTERLACED</constant></entry> - <entry>?</entry> - </row> - <row> - <entry><constant>V4L2_FMT_FLAG_INTERLACED</constant> -= <constant>V4L2_FMT_FLAG_COMBINED</constant></entry> - <entry><constant>V4L2_FIELD_INTERLACED</constant></entry> - </row> - <row> - <entry><constant>V4L2_FMT_FLAG_TOPFIELD</constant> -= <constant>V4L2_FMT_FLAG_ODDFIELD</constant></entry> - <entry><constant>V4L2_FIELD_TOP</constant></entry> - </row> - <row> - <entry><constant>V4L2_FMT_FLAG_BOTFIELD</constant> -= <constant>V4L2_FMT_FLAG_EVENFIELD</constant></entry> - <entry><constant>V4L2_FIELD_BOTTOM</constant></entry> - </row> - <row> - <entry><constant>-</constant></entry> - <entry><constant>V4L2_FIELD_SEQ_TB</constant></entry> - </row> - <row> - <entry><constant>-</constant></entry> - <entry><constant>V4L2_FIELD_SEQ_BT</constant></entry> - </row> - <row> - <entry><constant>-</constant></entry> - <entry><constant>V4L2_FIELD_ALTERNATE</constant></entry> - </row> - </tbody> - </tgroup> - </informaltable></para> - - <para>The color space flags were replaced by a -&v4l2-colorspace; value in a newly added -<structfield>colorspace</structfield> field, where one of -<constant>V4L2_COLORSPACE_SMPTE170M</constant>, -<constant>V4L2_COLORSPACE_BT878</constant>, -<constant>V4L2_COLORSPACE_470_SYSTEM_M</constant> or -<constant>V4L2_COLORSPACE_470_SYSTEM_BG</constant> replaces -<constant>V4L2_FMT_CS_601YUV</constant>.</para> - </listitem> - - <listitem> - <para>In &v4l2-requestbuffers; the -<structfield>type</structfield> field was properly defined as -&v4l2-buf-type;. Buffer types changed as mentioned above. A new -<structfield>memory</structfield> field of type &v4l2-memory; was -added to distinguish between I/O methods using buffers allocated -by the driver or the application. See <xref linkend="io" /> for -details.</para> - </listitem> - - <listitem> - <para>In &v4l2-buffer; the <structfield>type</structfield> -field was properly defined as &v4l2-buf-type;. Buffer types changed as -mentioned above. A <structfield>field</structfield> field of type -&v4l2-field; was added to indicate if a buffer contains a top or -bottom field. The old field flags were removed. Since no unadjusted -system time clock was added to the kernel as planned, the -<structfield>timestamp</structfield> field changed back from type -stamp_t, an unsigned 64 bit integer expressing the sample time in -nanoseconds, to struct <structname>timeval</structname>. With the -addition of a second memory mapping method the -<structfield>offset</structfield> field moved into union -<structfield>m</structfield>, and a new -<structfield>memory</structfield> field of type &v4l2-memory; was -added to distinguish between I/O methods. See <xref linkend="io" /> -for details.</para> - - <para>The <constant>V4L2_BUF_REQ_CONTIG</constant> -flag was used by the V4L compatibility layer, after changes to this -code it was no longer needed. The -<constant>V4L2_BUF_ATTR_DEVICEMEM</constant> flag would indicate if -the buffer was indeed allocated in device memory rather than DMA-able -system memory. It was barely useful and so was removed.</para> - </listitem> - - <listitem> - <para>In &v4l2-framebuffer; the -<structfield>base[3]</structfield> array anticipating double- and -triple-buffering in off-screen video memory, however without defining -a synchronization mechanism, was replaced by a single pointer. The -<constant>V4L2_FBUF_CAP_SCALEUP</constant> and -<constant>V4L2_FBUF_CAP_SCALEDOWN</constant> flags were removed. -Applications can determine this capability more accurately using the -new cropping and scaling interface. The -<constant>V4L2_FBUF_CAP_CLIPPING</constant> flag was replaced by -<constant>V4L2_FBUF_CAP_LIST_CLIPPING</constant> and -<constant>V4L2_FBUF_CAP_BITMAP_CLIPPING</constant>.</para> - </listitem> - - <listitem> - <para>In &v4l2-clip; the <structfield>x</structfield>, -<structfield>y</structfield>, <structfield>width</structfield> and -<structfield>height</structfield> field moved into a -<structfield>c</structfield> substructure of type &v4l2-rect;. The -<structfield>x</structfield> and <structfield>y</structfield> fields -were renamed to <structfield>left</structfield> and -<structfield>top</structfield>, &ie; offsets to a context dependent -origin.</para> - </listitem> - - <listitem> - <para>In &v4l2-window; the <structfield>x</structfield>, -<structfield>y</structfield>, <structfield>width</structfield> and -<structfield>height</structfield> field moved into a -<structfield>w</structfield> substructure as above. A -<structfield>field</structfield> field of type %v4l2-field; was added -to distinguish between field and frame (interlaced) overlay.</para> - </listitem> - - <listitem> - <para>The digital zoom interface, including struct -<structname>v4l2_zoomcap</structname>, struct -<structname>v4l2_zoom</structname>, -<constant>V4L2_ZOOM_NONCAP</constant> and -<constant>V4L2_ZOOM_WHILESTREAMING</constant> was replaced by a new -cropping and scaling interface. The previously unused struct -<structname>v4l2_cropcap</structname> and -<structname>v4l2_crop</structname> where redefined for this purpose. -See <xref linkend="crop" /> for details.</para> - </listitem> - - <listitem> - <para>In &v4l2-vbi-format; the -<structfield>SAMPLE_FORMAT</structfield> field now contains a -four-character-code as used to identify video image formats and -<constant>V4L2_PIX_FMT_GREY</constant> replaces the -<constant>V4L2_VBI_SF_UBYTE</constant> define. The -<structfield>reserved</structfield> field was extended.</para> - </listitem> - - <listitem> - <para>In &v4l2-captureparm; the type of the -<structfield>timeperframe</structfield> field changed from unsigned -long to &v4l2-fract;. This allows the accurate expression of multiples -of the NTSC-M frame rate 30000 / 1001. A new field -<structfield>readbuffers</structfield> was added to control the driver -behaviour in read I/O mode.</para> - - <para>Similar changes were made to &v4l2-outputparm;.</para> - </listitem> - - <listitem> - <para>The struct <structname>v4l2_performance</structname> -and <constant>VIDIOC_G_PERF</constant> ioctl were dropped. Except when -using the <link linkend="rw">read/write I/O method</link>, which is -limited anyway, this information is already available to -applications.</para> - </listitem> - - <listitem> - <para>The example transformation from RGB to YCbCr color -space in the old V4L2 documentation was inaccurate, this has been -corrected in <xref linkend="pixfmt" />.<!-- 0.5670G should be -0.587, and 127/112 != 255/224 --></para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 2003-06-19</title> - - <orderedlist> - <listitem> - <para>A new capability flag -<constant>V4L2_CAP_RADIO</constant> was added for radio devices. Prior -to this change radio devices would identify solely by having exactly one -tuner whose type field reads <constant>V4L2_TUNER_RADIO</constant>.</para> - </listitem> - - <listitem> - <para>An optional driver access priority mechanism was -added, see <xref linkend="app-pri" /> for details.</para> - </listitem> - - <listitem> - <para>The audio input and output interface was found to be -incomplete.</para> - <para>Previously the &VIDIOC-G-AUDIO; -ioctl would enumerate the available audio inputs. An ioctl to -determine the current audio input, if more than one combines with the -current video input, did not exist. So -<constant>VIDIOC_G_AUDIO</constant> was renamed to -<constant>VIDIOC_G_AUDIO_OLD</constant>, this ioctl was removed on -Kernel 2.6.39. The &VIDIOC-ENUMAUDIO; ioctl was added to enumerate -audio inputs, while &VIDIOC-G-AUDIO; now reports the current audio -input.</para> - <para>The same changes were made to &VIDIOC-G-AUDOUT; and -&VIDIOC-ENUMAUDOUT;.</para> - <para>Until further the "videodev" module will automatically -translate between the old and new ioctls, but drivers and applications -must be updated to successfully compile again.</para> - </listitem> - - <listitem> - <para>The &VIDIOC-OVERLAY; ioctl was incorrectly defined with -write-read parameter. It was changed to write-only, while the write-read -version was renamed to <constant>VIDIOC_OVERLAY_OLD</constant>. The old -ioctl was removed on Kernel 2.6.39. Until further the "videodev" -kernel module will automatically translate to the new version, so drivers -must be recompiled, but not applications.</para> - </listitem> - - <listitem> - <para><xref linkend="overlay" /> incorrectly stated that -clipping rectangles define regions where the video can be seen. -Correct is that clipping rectangles define regions where -<emphasis>no</emphasis> video shall be displayed and so the graphics -surface can be seen.</para> - </listitem> - - <listitem> - <para>The &VIDIOC-S-PARM; and &VIDIOC-S-CTRL; ioctls were -defined with write-only parameter, inconsistent with other ioctls -modifying their argument. They were changed to write-read, while a -<constant>_OLD</constant> suffix was added to the write-only versions. -The old ioctls were removed on Kernel 2.6.39. Drivers and -applications assuming a constant parameter need an update.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 2003-11-05</title> - <orderedlist> - <listitem> - <para>In <xref linkend="pixfmt-rgb" /> the following pixel -formats were incorrectly transferred from Bill Dirks' V4L2 -specification. Descriptions below refer to bytes in memory, in -ascending address order.<informaltable> - <tgroup cols="3"> - <thead> - <row> - <entry>Symbol</entry> - <entry>In this document prior to revision -0.5</entry> - <entry>Corrected</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>V4L2_PIX_FMT_RGB24</constant></entry> - <entry>B, G, R</entry> - <entry>R, G, B</entry> - </row> - <row> - <entry><constant>V4L2_PIX_FMT_BGR24</constant></entry> - <entry>R, G, B</entry> - <entry>B, G, R</entry> - </row> - <row> - <entry><constant>V4L2_PIX_FMT_RGB32</constant></entry> - <entry>B, G, R, X</entry> - <entry>R, G, B, X</entry> - </row> - <row> - <entry><constant>V4L2_PIX_FMT_BGR32</constant></entry> - <entry>R, G, B, X</entry> - <entry>B, G, R, X</entry> - </row> - </tbody> - </tgroup> - </informaltable> The -<constant>V4L2_PIX_FMT_BGR24</constant> example was always -correct.</para> - <para>In <xref linkend="v4l-image-properties" /> the mapping -of the V4L <constant>VIDEO_PALETTE_RGB24</constant> and -<constant>VIDEO_PALETTE_RGB32</constant> formats to V4L2 pixel formats -was accordingly corrected.</para> - </listitem> - - <listitem> - <para>Unrelated to the fixes above, drivers may still -interpret some V4L2 RGB pixel formats differently. These issues have -yet to be addressed, for details see <xref - linkend="pixfmt-rgb" />.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.6, 2004-05-09</title> - <orderedlist> - <listitem> - <para>The &VIDIOC-CROPCAP; ioctl was incorrectly defined -with read-only parameter. It is now defined as write-read ioctl, while -the read-only version was renamed to -<constant>VIDIOC_CROPCAP_OLD</constant>. The old ioctl was removed -on Kernel 2.6.39.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.8</title> - <orderedlist> - <listitem> - <para>A new field <structfield>input</structfield> (former -<structfield>reserved[0]</structfield>) was added to the &v4l2-buffer; -structure. Purpose of this field is to alternate between video inputs -(⪚ cameras) in step with the video capturing process. This function -must be enabled with the new <constant>V4L2_BUF_FLAG_INPUT</constant> -flag. The <structfield>flags</structfield> field is no longer -read-only.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 spec erratum 2004-08-01</title> - - <orderedlist> - <listitem> - <para>The return value of the -<xref linkend="func-open" /> function was incorrectly documented.</para> - </listitem> - - <listitem> - <para>Audio output ioctls end in -AUDOUT, not -AUDIOOUT.</para> - </listitem> - - <listitem> - <para>In the Current Audio Input example the -<constant>VIDIOC_G_AUDIO</constant> ioctl took the wrong -argument.</para> - </listitem> - - <listitem> - <para>The documentation of the &VIDIOC-QBUF; and -&VIDIOC-DQBUF; ioctls did not mention the &v4l2-buffer; -<structfield>memory</structfield> field. It was also missing from -examples. Also on the <constant>VIDIOC_DQBUF</constant> page the &EIO; -was not documented.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.14</title> - <orderedlist> - <listitem> - <para>A new sliced VBI interface was added. It is documented -in <xref linkend="sliced" /> and replaces the interface first -proposed in V4L2 specification 0.8.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.15</title> - <orderedlist> - <listitem> - <para>The &VIDIOC-LOG-STATUS; ioctl was added.</para> - </listitem> - - <listitem> - <para>New video standards -<constant>V4L2_STD_NTSC_443</constant>, -<constant>V4L2_STD_SECAM_LC</constant>, -<constant>V4L2_STD_SECAM_DK</constant> (a set of SECAM D, K and K1), -and <constant>V4L2_STD_ATSC</constant> (a set of -<constant>V4L2_STD_ATSC_8_VSB</constant> and -<constant>V4L2_STD_ATSC_16_VSB</constant>) were defined. Note the -<constant>V4L2_STD_525_60</constant> set now includes -<constant>V4L2_STD_NTSC_443</constant>. See also <xref - linkend="v4l2-std-id" />.</para> - </listitem> - - <listitem> - <para>The <constant>VIDIOC_G_COMP</constant> and -<constant>VIDIOC_S_COMP</constant> ioctl were renamed to -<constant>VIDIOC_G_MPEGCOMP</constant> and -<constant>VIDIOC_S_MPEGCOMP</constant> respectively. Their argument -was replaced by a struct -<structname>v4l2_mpeg_compression</structname> pointer. (The -<constant>VIDIOC_G_MPEGCOMP</constant> and -<constant>VIDIOC_S_MPEGCOMP</constant> ioctls where removed in Linux -2.6.25.)</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 spec erratum 2005-11-27</title> - <para>The capture example in <xref linkend="capture-example" /> -called the &VIDIOC-S-CROP; ioctl without checking if cropping is -supported. In the video standard selection example in -<xref linkend="standard" /> the &VIDIOC-S-STD; call used the wrong -argument type.</para> - </section> - - <section> - <title>V4L2 spec erratum 2006-01-10</title> - <orderedlist> - <listitem> - <para>The <constant>V4L2_IN_ST_COLOR_KILL</constant> flag in -&v4l2-input; not only indicates if the color killer is enabled, but -also if it is active. (The color killer disables color decoding when -it detects no color in the video signal to improve the image -quality.)</para> - </listitem> - - <listitem> - <para>&VIDIOC-S-PARM; is a write-read ioctl, not write-only as -stated on its reference page. The ioctl changed in 2003 as noted above.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 spec erratum 2006-02-03</title> - <orderedlist> - <listitem> - <para>In &v4l2-captureparm; and &v4l2-outputparm; the -<structfield>timeperframe</structfield> field gives the time in -seconds, not microseconds.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 spec erratum 2006-02-04</title> - <orderedlist> - <listitem> - <para>The <structfield>clips</structfield> field in -&v4l2-window; must point to an array of &v4l2-clip;, not a linked -list, because drivers ignore the struct -<structname>v4l2_clip</structname>.<structfield>next</structfield> -pointer.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.17</title> - <orderedlist> - <listitem> - <para>New video standard macros were added: -<constant>V4L2_STD_NTSC_M_KR</constant> (NTSC M South Korea), and the -sets <constant>V4L2_STD_MN</constant>, -<constant>V4L2_STD_B</constant>, <constant>V4L2_STD_GH</constant> and -<constant>V4L2_STD_DK</constant>. The -<constant>V4L2_STD_NTSC</constant> and -<constant>V4L2_STD_SECAM</constant> sets now include -<constant>V4L2_STD_NTSC_M_KR</constant> and -<constant>V4L2_STD_SECAM_LC</constant> respectively.</para> - </listitem> - - <listitem> - <para>A new <constant>V4L2_TUNER_MODE_LANG1_LANG2</constant> -was defined to record both languages of a bilingual program. The -use of <constant>V4L2_TUNER_MODE_STEREO</constant> for this purpose -is deprecated now. See the &VIDIOC-G-TUNER; section for -details.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 spec erratum 2006-09-23 (Draft 0.15)</title> - <orderedlist> - <listitem> - <para>In various places -<constant>V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</constant> and -<constant>V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</constant> of the sliced VBI -interface were not mentioned along with other buffer types.</para> - </listitem> - - <listitem> - <para>In <xref linkend="vidioc-g-audio" /> it was clarified -that the &v4l2-audio; <structfield>mode</structfield> field is a flags -field.</para> - </listitem> - - <listitem> - <para><xref linkend="vidioc-querycap" /> did not mention the -sliced VBI and radio capability flags.</para> - </listitem> - - <listitem> - <para>In <xref linkend="vidioc-g-frequency" /> it was -clarified that applications must initialize the tuner -<structfield>type</structfield> field of &v4l2-frequency; before -calling &VIDIOC-S-FREQUENCY;.</para> - </listitem> - - <listitem> - <para>The <structfield>reserved</structfield> array -in &v4l2-requestbuffers; has 2 elements, not 32.</para> - </listitem> - - <listitem> - <para>In <xref linkend="output" /> and <xref - linkend="raw-vbi" /> the device file names -<filename>/dev/vout</filename> which never caught on were replaced -by <filename>/dev/video</filename>.</para> - </listitem> - - <listitem> - <para>With Linux 2.6.15 the possible range for VBI device minor -numbers was extended from 224-239 to 224-255. Accordingly device file names -<filename>/dev/vbi0</filename> to <filename>/dev/vbi31</filename> are -possible now.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.18</title> - <orderedlist> - <listitem> - <para>New ioctls &VIDIOC-G-EXT-CTRLS;, &VIDIOC-S-EXT-CTRLS; -and &VIDIOC-TRY-EXT-CTRLS; were added, a flag to skip unsupported -controls with &VIDIOC-QUERYCTRL;, new control types -<constant>V4L2_CTRL_TYPE_INTEGER64</constant> and -<constant>V4L2_CTRL_TYPE_CTRL_CLASS</constant> (<xref - linkend="v4l2-ctrl-type" />), and new control flags -<constant>V4L2_CTRL_FLAG_READ_ONLY</constant>, -<constant>V4L2_CTRL_FLAG_UPDATE</constant>, -<constant>V4L2_CTRL_FLAG_INACTIVE</constant> and -<constant>V4L2_CTRL_FLAG_SLIDER</constant> (<xref - linkend="control-flags" />). See <xref - linkend="extended-controls" /> for details.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.19</title> - <orderedlist> - <listitem> - <para>In &v4l2-sliced-vbi-cap; a buffer type field was added -replacing a reserved field. Note on architectures where the size of -enum types differs from int types the size of the structure changed. -The &VIDIOC-G-SLICED-VBI-CAP; ioctl was redefined from being read-only -to write-read. Applications must initialize the type field and clear -the reserved fields now. These changes may <emphasis>break the -compatibility</emphasis> with older drivers and applications.</para> - </listitem> - - <listitem> - <para>The ioctls &VIDIOC-ENUM-FRAMESIZES; and -&VIDIOC-ENUM-FRAMEINTERVALS; were added.</para> - </listitem> - - <listitem> - <para>A new pixel format <constant>V4L2_PIX_FMT_RGB444</constant> (<xref -linkend="rgb-formats" />) was added.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 spec erratum 2006-10-12 (Draft 0.17)</title> - <orderedlist> - <listitem> - <para><constant>V4L2_PIX_FMT_HM12</constant> (<xref -linkend="reserved-formats" />) is a YUV 4:2:0, not 4:2:2 format.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.21</title> - <orderedlist> - <listitem> - <para>The <filename>videodev2.h</filename> header file is -now dual licensed under GNU General Public License version two or -later, and under a 3-clause BSD-style license.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.22</title> - <orderedlist> - <listitem> - <para>Two new field orders - <constant>V4L2_FIELD_INTERLACED_TB</constant> and - <constant>V4L2_FIELD_INTERLACED_BT</constant> were - added. See <xref linkend="v4l2-field" /> for details.</para> - </listitem> - - <listitem> - <para>Three new clipping/blending methods with a global or -straight or inverted local alpha value were added to the video overlay -interface. See the description of the &VIDIOC-G-FBUF; and -&VIDIOC-S-FBUF; ioctls for details.</para> - <para>A new <structfield>global_alpha</structfield> field -was added to <link -linkend="v4l2-window"><structname>v4l2_window</structname></link>, -extending the structure. This may <emphasis>break -compatibility</emphasis> with applications using a struct -<structname>v4l2_window</structname> directly. However the <link -linkend="vidioc-g-fmt">VIDIOC_G/S/TRY_FMT</link> ioctls, which take a -pointer to a <link linkend="v4l2-format">v4l2_format</link> parent -structure with padding bytes at the end, are not affected.</para> - </listitem> - - <listitem> - <para>The format of the <structfield>chromakey</structfield> -field in &v4l2-window; changed from "host order RGB32" to a pixel -value in the same format as the framebuffer. This may <emphasis>break -compatibility</emphasis> with existing applications. Drivers -supporting the "host order RGB32" format are not known.</para> - </listitem> - - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.24</title> - <orderedlist> - <listitem> - <para>The pixel formats -<constant>V4L2_PIX_FMT_PAL8</constant>, -<constant>V4L2_PIX_FMT_YUV444</constant>, -<constant>V4L2_PIX_FMT_YUV555</constant>, -<constant>V4L2_PIX_FMT_YUV565</constant> and -<constant>V4L2_PIX_FMT_YUV32</constant> were added.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.25</title> - <orderedlist> - <listitem> - <para>The pixel formats <link linkend="V4L2-PIX-FMT-Y16"> -<constant>V4L2_PIX_FMT_Y16</constant></link> and <link -linkend="V4L2-PIX-FMT-SBGGR16"> -<constant>V4L2_PIX_FMT_SBGGR16</constant></link> were added.</para> - </listitem> - <listitem> - <para>New <link linkend="control">controls</link> -<constant>V4L2_CID_POWER_LINE_FREQUENCY</constant>, -<constant>V4L2_CID_HUE_AUTO</constant>, -<constant>V4L2_CID_WHITE_BALANCE_TEMPERATURE</constant>, -<constant>V4L2_CID_SHARPNESS</constant> and -<constant>V4L2_CID_BACKLIGHT_COMPENSATION</constant> were added. The -controls <constant>V4L2_CID_BLACK_LEVEL</constant>, -<constant>V4L2_CID_WHITENESS</constant>, -<constant>V4L2_CID_HCENTER</constant> and -<constant>V4L2_CID_VCENTER</constant> were deprecated. -</para> - </listitem> - <listitem> - <para>A <link linkend="camera-controls">Camera controls -class</link> was added, with the new controls -<constant>V4L2_CID_EXPOSURE_AUTO</constant>, -<constant>V4L2_CID_EXPOSURE_ABSOLUTE</constant>, -<constant>V4L2_CID_EXPOSURE_AUTO_PRIORITY</constant>, -<constant>V4L2_CID_PAN_RELATIVE</constant>, -<constant>V4L2_CID_TILT_RELATIVE</constant>, -<constant>V4L2_CID_PAN_RESET</constant>, -<constant>V4L2_CID_TILT_RESET</constant>, -<constant>V4L2_CID_PAN_ABSOLUTE</constant>, -<constant>V4L2_CID_TILT_ABSOLUTE</constant>, -<constant>V4L2_CID_FOCUS_ABSOLUTE</constant>, -<constant>V4L2_CID_FOCUS_RELATIVE</constant> and -<constant>V4L2_CID_FOCUS_AUTO</constant>.</para> - </listitem> - <listitem> - <para>The <constant>VIDIOC_G_MPEGCOMP</constant> and -<constant>VIDIOC_S_MPEGCOMP</constant> ioctls, which were superseded -by the <link linkend="extended-controls">extended controls</link> -interface in Linux 2.6.18, where finally removed from the -<filename>videodev2.h</filename> header file.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.26</title> - <orderedlist> - <listitem> - <para>The pixel formats -<constant>V4L2_PIX_FMT_Y16</constant> and -<constant>V4L2_PIX_FMT_SBGGR16</constant> were added.</para> - </listitem> - <listitem> - <para>Added user controls -<constant>V4L2_CID_CHROMA_AGC</constant> and -<constant>V4L2_CID_COLOR_KILLER</constant>.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.27</title> - <orderedlist> - <listitem> - <para>The &VIDIOC-S-HW-FREQ-SEEK; ioctl and the -<constant>V4L2_CAP_HW_FREQ_SEEK</constant> capability were added.</para> - </listitem> - <listitem> - <para>The pixel formats -<constant>V4L2_PIX_FMT_YVYU</constant>, -<constant>V4L2_PIX_FMT_PCA501</constant>, -<constant>V4L2_PIX_FMT_PCA505</constant>, -<constant>V4L2_PIX_FMT_PCA508</constant>, -<constant>V4L2_PIX_FMT_PCA561</constant>, -<constant>V4L2_PIX_FMT_SGBRG8</constant>, -<constant>V4L2_PIX_FMT_PAC207</constant> and -<constant>V4L2_PIX_FMT_PJPG</constant> were added.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.28</title> - <orderedlist> - <listitem> - <para>Added <constant>V4L2_MPEG_AUDIO_ENCODING_AAC</constant> and -<constant>V4L2_MPEG_AUDIO_ENCODING_AC3</constant> MPEG audio encodings.</para> - </listitem> - <listitem> - <para>Added <constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC</constant> MPEG -video encoding.</para> - </listitem> - <listitem> - <para>The pixel formats -<constant>V4L2_PIX_FMT_SGRBG10</constant> and -<constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant> were added.</para> - </listitem> - </orderedlist> - </section> - - <section> - <title>V4L2 in Linux 2.6.29</title> - <orderedlist> - <listitem> - <para>The <constant>VIDIOC_G_CHIP_IDENT</constant> ioctl was renamed -to <constant>VIDIOC_G_CHIP_IDENT_OLD</constant> and &VIDIOC-DBG-G-CHIP-IDENT; -was introduced in its place. The old struct <structname>v4l2_chip_ident</structname> -was renamed to <structname id="v4l2-chip-ident-old">v4l2_chip_ident_old</structname>.</para> - </listitem> - <listitem> - <para>The pixel formats -<constant>V4L2_PIX_FMT_VYUY</constant>, -<constant>V4L2_PIX_FMT_NV16</constant> and -<constant>V4L2_PIX_FMT_NV61</constant> were added.</para> - </listitem> - <listitem> - <para>Added camera controls -<constant>V4L2_CID_ZOOM_ABSOLUTE</constant>, -<constant>V4L2_CID_ZOOM_RELATIVE</constant>, -<constant>V4L2_CID_ZOOM_CONTINUOUS</constant> and -<constant>V4L2_CID_PRIVACY</constant>.</para> - </listitem> - </orderedlist> - </section> - <section> - <title>V4L2 in Linux 2.6.30</title> - <orderedlist> - <listitem> - <para>New control flag <constant>V4L2_CTRL_FLAG_WRITE_ONLY</constant> was added.</para> - </listitem> - <listitem> - <para>New control <constant>V4L2_CID_COLORFX</constant> was added.</para> - </listitem> - </orderedlist> - </section> - <section> - <title>V4L2 in Linux 2.6.32</title> - <orderedlist> - <listitem> - <para>In order to be easier to compare a V4L2 API and a kernel -version, now V4L2 API is numbered using the Linux Kernel version numeration.</para> - </listitem> - <listitem> - <para>Finalized the RDS capture API. See <xref linkend="rds" /> for -more information.</para> - </listitem> - <listitem> - <para>Added new capabilities for modulators and RDS encoders.</para> - </listitem> - <listitem> - <para>Add description for libv4l API.</para> - </listitem> - <listitem> - <para>Added support for string controls via new type <constant>V4L2_CTRL_TYPE_STRING</constant>.</para> - </listitem> - <listitem> - <para>Added <constant>V4L2_CID_BAND_STOP_FILTER</constant> documentation.</para> - </listitem> - <listitem> - <para>Added FM Modulator (FM TX) Extended Control Class: <constant>V4L2_CTRL_CLASS_FM_TX</constant> and their Control IDs.</para> - </listitem> - <listitem> - <para>Added Remote Controller chapter, describing the default Remote Controller mapping for media devices.</para> - </listitem> - </orderedlist> - </section> - <section> - <title>V4L2 in Linux 2.6.33</title> - <orderedlist> - <listitem> - <para>Added support for Digital Video timings in order to support HDTV receivers and transmitters.</para> - </listitem> - </orderedlist> - </section> - <section> - <title>V4L2 in Linux 2.6.34</title> - <orderedlist> - <listitem> - <para>Added -<constant>V4L2_CID_IRIS_ABSOLUTE</constant> and -<constant>V4L2_CID_IRIS_RELATIVE</constant> controls to the - <link linkend="camera-controls">Camera controls class</link>. - </para> - </listitem> - </orderedlist> - </section> - <section> - <title>V4L2 in Linux 2.6.37</title> - <orderedlist> - <listitem> - <para>Remove the vtx (videotext/teletext) API. This API was no longer -used and no hardware exists to verify the API. Nor were any userspace applications found -that used it. It was originally scheduled for removal in 2.6.35. - </para> - </listitem> - </orderedlist> - </section> - <section> - <title>V4L2 in Linux 2.6.39</title> - <orderedlist> - <listitem> - <para>The old VIDIOC_*_OLD symbols and V4L1 support were removed.</para> - </listitem> - <listitem> - <para>Multi-planar API added. Does not affect the compatibility of - current drivers and applications. See - <link linkend="planar-apis">multi-planar API</link> - for details.</para> - </listitem> - </orderedlist> - </section> - - <section id="other"> - <title>Relation of V4L2 to other Linux multimedia APIs</title> - - <section id="xvideo"> - <title>X Video Extension</title> - - <para>The X Video Extension (abbreviated XVideo or just Xv) is -an extension of the X Window system, implemented for example by the -XFree86 project. Its scope is similar to V4L2, an API to video capture -and output devices for X clients. Xv allows applications to display -live video in a window, send window contents to a TV output, and -capture or output still images in XPixmaps<footnote> - <para>This is not implemented in XFree86.</para> - </footnote>. With their implementation XFree86 makes the -extension available across many operating systems and -architectures.</para> - - <para>Because the driver is embedded into the X server Xv has a -number of advantages over the V4L2 <link linkend="overlay">video -overlay interface</link>. The driver can easily determine the overlay -target, &ie; visible graphics memory or off-screen buffers for a -destructive overlay. It can program the RAMDAC for a non-destructive -overlay, scaling or color-keying, or the clipping functions of the -video capture hardware, always in sync with drawing operations or -windows moving or changing their stacking order.</para> - - <para>To combine the advantages of Xv and V4L a special Xv -driver exists in XFree86 and XOrg, just programming any overlay capable -Video4Linux device it finds. To enable it -<filename>/etc/X11/XF86Config</filename> must contain these lines:</para> - <para><screen> -Section "Module" - Load "v4l" -EndSection</screen></para> - - <para>As of XFree86 4.2 this driver still supports only V4L -ioctls, however it should work just fine with all V4L2 devices through -the V4L2 backward-compatibility layer. Since V4L2 permits multiple -opens it is possible (if supported by the V4L2 driver) to capture -video while an X client requested video overlay. Restrictions of -simultaneous capturing and overlay are discussed in <xref - linkend="overlay" /> apply.</para> - - <para>Only marginally related to V4L2, XFree86 extended Xv to -support hardware YUV to RGB conversion and scaling for faster video -playback, and added an interface to MPEG-2 decoding hardware. This API -is useful to display images captured with V4L2 devices.</para> - </section> - - <section> - <title>Digital Video</title> - - <para>V4L2 does not support digital terrestrial, cable or -satellite broadcast. A separate project aiming at digital receivers -exists. You can find its homepage at <ulink -url="http://linuxtv.org">http://linuxtv.org</ulink>. The Linux DVB API -has no connection to the V4L2 API except that drivers for hybrid -hardware may support both.</para> - </section> - - <section> - <title>Audio Interfaces</title> - - <para>[to do - OSS/ALSA]</para> - </section> - </section> - - <section id="experimental"> - <title>Experimental API Elements</title> - - <para>The following V4L2 API elements are currently experimental -and may change in the future.</para> - - <itemizedlist> - <listitem> - <para>Video Output Overlay (OSD) Interface, <xref - linkend="osd" />.</para> - </listitem> - <listitem> - <para><constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY</constant>, - &v4l2-buf-type;, <xref linkend="v4l2-buf-type" />.</para> - </listitem> - <listitem> - <para><constant>V4L2_CAP_VIDEO_OUTPUT_OVERLAY</constant>, -&VIDIOC-QUERYCAP; ioctl, <xref linkend="device-capabilities" />.</para> - </listitem> - <listitem> - <para>&VIDIOC-ENUM-FRAMESIZES; and -&VIDIOC-ENUM-FRAMEINTERVALS; ioctls.</para> - </listitem> - <listitem> - <para>&VIDIOC-G-ENC-INDEX; ioctl.</para> - </listitem> - <listitem> - <para>&VIDIOC-ENCODER-CMD; and &VIDIOC-TRY-ENCODER-CMD; -ioctls.</para> - </listitem> - <listitem> - <para>&VIDIOC-DBG-G-REGISTER; and &VIDIOC-DBG-S-REGISTER; -ioctls.</para> - </listitem> - <listitem> - <para>&VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para> - </listitem> - </itemizedlist> - </section> - - <section id="obsolete"> - <title>Obsolete API Elements</title> - - <para>The following V4L2 API elements were superseded by new -interfaces and should not be implemented in new drivers.</para> - - <itemizedlist> - <listitem> - <para><constant>VIDIOC_G_MPEGCOMP</constant> and -<constant>VIDIOC_S_MPEGCOMP</constant> ioctls. Use Extended Controls, -<xref linkend="extended-controls" />.</para> - </listitem> - </itemizedlist> - </section> - </section> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/controls.xml b/Documentation/DocBook/v4l/controls.xml deleted file mode 100644 index a920ee80f640..000000000000 --- a/Documentation/DocBook/v4l/controls.xml +++ /dev/null @@ -1,2103 +0,0 @@ - <section id="control"> - <title>User Controls</title> - - <para>Devices typically have a number of user-settable controls -such as brightness, saturation and so on, which would be presented to -the user on a graphical user interface. But, different devices -will have different controls available, and furthermore, the range of -possible values, and the default value will vary from device to -device. The control ioctls provide the information and a mechanism to -create a nice user interface for these controls that will work -correctly with any device.</para> - - <para>All controls are accessed using an ID value. V4L2 defines -several IDs for specific purposes. Drivers can also implement their -own custom controls using <constant>V4L2_CID_PRIVATE_BASE</constant> -and higher values. The pre-defined control IDs have the prefix -<constant>V4L2_CID_</constant>, and are listed in <xref -linkend="control-id" />. The ID is used when querying the attributes of -a control, and when getting or setting the current value.</para> - - <para>Generally applications should present controls to the user -without assumptions about their purpose. Each control comes with a -name string the user is supposed to understand. When the purpose is -non-intuitive the driver writer should provide a user manual, a user -interface plug-in or a driver specific panel application. Predefined -IDs were introduced to change a few controls programmatically, for -example to mute a device during a channel switch.</para> - - <para>Drivers may enumerate different controls after switching -the current video input or output, tuner or modulator, or audio input -or output. Different in the sense of other bounds, another default and -current value, step size or other menu items. A control with a certain -<emphasis>custom</emphasis> ID can also change name and -type.<footnote> - <para>It will be more convenient for applications if drivers -make use of the <constant>V4L2_CTRL_FLAG_DISABLED</constant> flag, but -that was never required.</para> - </footnote> Control values are stored globally, they do not -change when switching except to stay within the reported bounds. They -also do not change ⪚ when the device is opened or closed, when the -tuner radio frequency is changed or generally never without -application request. Since V4L2 specifies no event mechanism, panel -applications intended to cooperate with other panel applications (be -they built into a larger application, as a TV viewer) may need to -regularly poll control values to update their user -interface.<footnote> - <para>Applications could call an ioctl to request events. -After another process called &VIDIOC-S-CTRL; or another ioctl changing -shared properties the &func-select; function would indicate -readability until any ioctl (querying the properties) is -called.</para> - </footnote></para> - - <table pgwide="1" frame="none" id="control-id"> - <title>Control IDs</title> - <tgroup cols="3"> - &cs-def; - <thead> - <row> - <entry>ID</entry> - <entry>Type</entry> - <entry>Description</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>V4L2_CID_BASE</constant></entry> - <entry></entry> - <entry>First predefined ID, equal to -<constant>V4L2_CID_BRIGHTNESS</constant>.</entry> - </row> - <row> - <entry><constant>V4L2_CID_USER_BASE</constant></entry> - <entry></entry> - <entry>Synonym of <constant>V4L2_CID_BASE</constant>.</entry> - </row> - <row> - <entry><constant>V4L2_CID_BRIGHTNESS</constant></entry> - <entry>integer</entry> - <entry>Picture brightness, or more precisely, the black -level.</entry> - </row> - <row> - <entry><constant>V4L2_CID_CONTRAST</constant></entry> - <entry>integer</entry> - <entry>Picture contrast or luma gain.</entry> - </row> - <row> - <entry><constant>V4L2_CID_SATURATION</constant></entry> - <entry>integer</entry> - <entry>Picture color saturation or chroma gain.</entry> - </row> - <row> - <entry><constant>V4L2_CID_HUE</constant></entry> - <entry>integer</entry> - <entry>Hue or color balance.</entry> - </row> - <row> - <entry><constant>V4L2_CID_AUDIO_VOLUME</constant></entry> - <entry>integer</entry> - <entry>Overall audio volume. Note some drivers also -provide an OSS or ALSA mixer interface.</entry> - </row> - <row> - <entry><constant>V4L2_CID_AUDIO_BALANCE</constant></entry> - <entry>integer</entry> - <entry>Audio stereo balance. Minimum corresponds to all -the way left, maximum to right.</entry> - </row> - <row> - <entry><constant>V4L2_CID_AUDIO_BASS</constant></entry> - <entry>integer</entry> - <entry>Audio bass adjustment.</entry> - </row> - <row> - <entry><constant>V4L2_CID_AUDIO_TREBLE</constant></entry> - <entry>integer</entry> - <entry>Audio treble adjustment.</entry> - </row> - <row> - <entry><constant>V4L2_CID_AUDIO_MUTE</constant></entry> - <entry>boolean</entry> - <entry>Mute audio, &ie; set the volume to zero, however -without affecting <constant>V4L2_CID_AUDIO_VOLUME</constant>. Like -ALSA drivers, V4L2 drivers must mute at load time to avoid excessive -noise. Actually the entire device should be reset to a low power -consumption state.</entry> - </row> - <row> - <entry><constant>V4L2_CID_AUDIO_LOUDNESS</constant></entry> - <entry>boolean</entry> - <entry>Loudness mode (bass boost).</entry> - </row> - <row> - <entry><constant>V4L2_CID_BLACK_LEVEL</constant></entry> - <entry>integer</entry> - <entry>Another name for brightness (not a synonym of -<constant>V4L2_CID_BRIGHTNESS</constant>). This control is deprecated -and should not be used in new drivers and applications.</entry> - </row> - <row> - <entry><constant>V4L2_CID_AUTO_WHITE_BALANCE</constant></entry> - <entry>boolean</entry> - <entry>Automatic white balance (cameras).</entry> - </row> - <row> - <entry><constant>V4L2_CID_DO_WHITE_BALANCE</constant></entry> - <entry>button</entry> - <entry>This is an action control. When set (the value is -ignored), the device will do a white balance and then hold the current -setting. Contrast this with the boolean -<constant>V4L2_CID_AUTO_WHITE_BALANCE</constant>, which, when -activated, keeps adjusting the white balance.</entry> - </row> - <row> - <entry><constant>V4L2_CID_RED_BALANCE</constant></entry> - <entry>integer</entry> - <entry>Red chroma balance.</entry> - </row> - <row> - <entry><constant>V4L2_CID_BLUE_BALANCE</constant></entry> - <entry>integer</entry> - <entry>Blue chroma balance.</entry> - </row> - <row> - <entry><constant>V4L2_CID_GAMMA</constant></entry> - <entry>integer</entry> - <entry>Gamma adjust.</entry> - </row> - <row> - <entry><constant>V4L2_CID_WHITENESS</constant></entry> - <entry>integer</entry> - <entry>Whiteness for grey-scale devices. This is a synonym -for <constant>V4L2_CID_GAMMA</constant>. This control is deprecated -and should not be used in new drivers and applications.</entry> - </row> - <row> - <entry><constant>V4L2_CID_EXPOSURE</constant></entry> - <entry>integer</entry> - <entry>Exposure (cameras). [Unit?]</entry> - </row> - <row> - <entry><constant>V4L2_CID_AUTOGAIN</constant></entry> - <entry>boolean</entry> - <entry>Automatic gain/exposure control.</entry> - </row> - <row> - <entry><constant>V4L2_CID_GAIN</constant></entry> - <entry>integer</entry> - <entry>Gain control.</entry> - </row> - <row> - <entry><constant>V4L2_CID_HFLIP</constant></entry> - <entry>boolean</entry> - <entry>Mirror the picture horizontally.</entry> - </row> - <row> - <entry><constant>V4L2_CID_VFLIP</constant></entry> - <entry>boolean</entry> - <entry>Mirror the picture vertically.</entry> - </row> - <row> - <entry><constant>V4L2_CID_HCENTER_DEPRECATED</constant> (formerly <constant>V4L2_CID_HCENTER</constant>)</entry> - <entry>integer</entry> - <entry>Horizontal image centering. This control is -deprecated. New drivers and applications should use the <link -linkend="camera-controls">Camera class controls</link> -<constant>V4L2_CID_PAN_ABSOLUTE</constant>, -<constant>V4L2_CID_PAN_RELATIVE</constant> and -<constant>V4L2_CID_PAN_RESET</constant> instead.</entry> - </row> - <row> - <entry><constant>V4L2_CID_VCENTER_DEPRECATED</constant> - (formerly <constant>V4L2_CID_VCENTER</constant>)</entry> - <entry>integer</entry> - <entry>Vertical image centering. Centering is intended to -<emphasis>physically</emphasis> adjust cameras. For image cropping see -<xref linkend="crop" />, for clipping <xref linkend="overlay" />. This -control is deprecated. New drivers and applications should use the -<link linkend="camera-controls">Camera class controls</link> -<constant>V4L2_CID_TILT_ABSOLUTE</constant>, -<constant>V4L2_CID_TILT_RELATIVE</constant> and -<constant>V4L2_CID_TILT_RESET</constant> instead.</entry> - </row> - <row id="v4l2-power-line-frequency"> - <entry><constant>V4L2_CID_POWER_LINE_FREQUENCY</constant></entry> - <entry>enum</entry> - <entry>Enables a power line frequency filter to avoid -flicker. Possible values for <constant>enum v4l2_power_line_frequency</constant> are: -<constant>V4L2_CID_POWER_LINE_FREQUENCY_DISABLED</constant> (0), -<constant>V4L2_CID_POWER_LINE_FREQUENCY_50HZ</constant> (1) and -<constant>V4L2_CID_POWER_LINE_FREQUENCY_60HZ</constant> (2).</entry> - </row> - <row> - <entry><constant>V4L2_CID_HUE_AUTO</constant></entry> - <entry>boolean</entry> - <entry>Enables automatic hue control by the device. The -effect of setting <constant>V4L2_CID_HUE</constant> while automatic -hue control is enabled is undefined, drivers should ignore such -request.</entry> - </row> - <row> - <entry><constant>V4L2_CID_WHITE_BALANCE_TEMPERATURE</constant></entry> - <entry>integer</entry> - <entry>This control specifies the white balance settings -as a color temperature in Kelvin. A driver should have a minimum of -2800 (incandescent) to 6500 (daylight). For more information about -color temperature see <ulink -url="http://en.wikipedia.org/wiki/Color_temperature">Wikipedia</ulink>.</entry> - </row> - <row> - <entry><constant>V4L2_CID_SHARPNESS</constant></entry> - <entry>integer</entry> - <entry>Adjusts the sharpness filters in a camera. The -minimum value disables the filters, higher values give a sharper -picture.</entry> - </row> - <row> - <entry><constant>V4L2_CID_BACKLIGHT_COMPENSATION</constant></entry> - <entry>integer</entry> - <entry>Adjusts the backlight compensation in a camera. The -minimum value disables backlight compensation.</entry> - </row> - <row> - <entry><constant>V4L2_CID_CHROMA_AGC</constant></entry> - <entry>boolean</entry> - <entry>Chroma automatic gain control.</entry> - </row> - <row> - <entry><constant>V4L2_CID_CHROMA_GAIN</constant></entry> - <entry>integer</entry> - <entry>Adjusts the Chroma gain control (for use when chroma AGC - is disabled).</entry> - </row> - <row> - <entry><constant>V4L2_CID_COLOR_KILLER</constant></entry> - <entry>boolean</entry> - <entry>Enable the color killer (&ie; force a black & white image in case of a weak video signal).</entry> - </row> - <row id="v4l2-colorfx"> - <entry><constant>V4L2_CID_COLORFX</constant></entry> - <entry>enum</entry> - <entry>Selects a color effect. Possible values for -<constant>enum v4l2_colorfx</constant> are: -<constant>V4L2_COLORFX_NONE</constant> (0), -<constant>V4L2_COLORFX_BW</constant> (1), -<constant>V4L2_COLORFX_SEPIA</constant> (2), -<constant>V4L2_COLORFX_NEGATIVE</constant> (3), -<constant>V4L2_COLORFX_EMBOSS</constant> (4), -<constant>V4L2_COLORFX_SKETCH</constant> (5), -<constant>V4L2_COLORFX_SKY_BLUE</constant> (6), -<constant>V4L2_COLORFX_GRASS_GREEN</constant> (7), -<constant>V4L2_COLORFX_SKIN_WHITEN</constant> (8) and -<constant>V4L2_COLORFX_VIVID</constant> (9).</entry> - </row> - <row> - <entry><constant>V4L2_CID_ROTATE</constant></entry> - <entry>integer</entry> - <entry>Rotates the image by specified angle. Common angles are 90, - 270 and 180. Rotating the image to 90 and 270 will reverse the height - and width of the display window. It is necessary to set the new height and - width of the picture using the &VIDIOC-S-FMT; ioctl according to - the rotation angle selected.</entry> - </row> - <row> - <entry><constant>V4L2_CID_BG_COLOR</constant></entry> - <entry>integer</entry> - <entry>Sets the background color on the current output device. - Background color needs to be specified in the RGB24 format. The - supplied 32 bit value is interpreted as bits 0-7 Red color information, - bits 8-15 Green color information, bits 16-23 Blue color - information and bits 24-31 must be zero.</entry> - </row> - <row> - <entry><constant>V4L2_CID_ILLUMINATORS_1</constant> - <constant>V4L2_CID_ILLUMINATORS_2</constant></entry> - <entry>boolean</entry> - <entry>Switch on or off the illuminator 1 or 2 of the device - (usually a microscope).</entry> - </row> - <row> - <entry><constant>V4L2_CID_LASTP1</constant></entry> - <entry></entry> - <entry>End of the predefined control IDs (currently -<constant>V4L2_CID_ILLUMINATORS_2</constant> + 1).</entry> - </row> - <row> - <entry><constant>V4L2_CID_PRIVATE_BASE</constant></entry> - <entry></entry> - <entry>ID of the first custom (driver specific) control. -Applications depending on particular custom controls should check the -driver name and version, see <xref linkend="querycap" />.</entry> - </row> - </tbody> - </tgroup> - </table> - - <para>Applications can enumerate the available controls with the -&VIDIOC-QUERYCTRL; and &VIDIOC-QUERYMENU; ioctls, get and set a -control value with the &VIDIOC-G-CTRL; and &VIDIOC-S-CTRL; ioctls. -Drivers must implement <constant>VIDIOC_QUERYCTRL</constant>, -<constant>VIDIOC_G_CTRL</constant> and -<constant>VIDIOC_S_CTRL</constant> when the device has one or more -controls, <constant>VIDIOC_QUERYMENU</constant> when it has one or -more menu type controls.</para> - - <example> - <title>Enumerating all controls</title> - - <programlisting> -&v4l2-queryctrl; queryctrl; -&v4l2-querymenu; querymenu; - -static void -enumerate_menu (void) -{ - printf (" Menu items:\n"); - - memset (&querymenu, 0, sizeof (querymenu)); - querymenu.id = queryctrl.id; - - for (querymenu.index = queryctrl.minimum; - querymenu.index <= queryctrl.maximum; - querymenu.index++) { - if (0 == ioctl (fd, &VIDIOC-QUERYMENU;, &querymenu)) { - printf (" %s\n", querymenu.name); - } - } -} - -memset (&queryctrl, 0, sizeof (queryctrl)); - -for (queryctrl.id = V4L2_CID_BASE; - queryctrl.id < V4L2_CID_LASTP1; - queryctrl.id++) { - if (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &queryctrl)) { - if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) - continue; - - printf ("Control %s\n", queryctrl.name); - - if (queryctrl.type == V4L2_CTRL_TYPE_MENU) - enumerate_menu (); - } else { - if (errno == EINVAL) - continue; - - perror ("VIDIOC_QUERYCTRL"); - exit (EXIT_FAILURE); - } -} - -for (queryctrl.id = V4L2_CID_PRIVATE_BASE;; - queryctrl.id++) { - if (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &queryctrl)) { - if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) - continue; - - printf ("Control %s\n", queryctrl.name); - - if (queryctrl.type == V4L2_CTRL_TYPE_MENU) - enumerate_menu (); - } else { - if (errno == EINVAL) - break; - - perror ("VIDIOC_QUERYCTRL"); - exit (EXIT_FAILURE); - } -} -</programlisting> - </example> - - <example> - <title>Changing controls</title> - - <programlisting> -&v4l2-queryctrl; queryctrl; -&v4l2-control; control; - -memset (&queryctrl, 0, sizeof (queryctrl)); -queryctrl.id = V4L2_CID_BRIGHTNESS; - -if (-1 == ioctl (fd, &VIDIOC-QUERYCTRL;, &queryctrl)) { - if (errno != EINVAL) { - perror ("VIDIOC_QUERYCTRL"); - exit (EXIT_FAILURE); - } else { - printf ("V4L2_CID_BRIGHTNESS is not supported\n"); - } -} else if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) { - printf ("V4L2_CID_BRIGHTNESS is not supported\n"); -} else { - memset (&control, 0, sizeof (control)); - control.id = V4L2_CID_BRIGHTNESS; - control.value = queryctrl.default_value; - - if (-1 == ioctl (fd, &VIDIOC-S-CTRL;, &control)) { - perror ("VIDIOC_S_CTRL"); - exit (EXIT_FAILURE); - } -} - -memset (&control, 0, sizeof (control)); -control.id = V4L2_CID_CONTRAST; - -if (0 == ioctl (fd, &VIDIOC-G-CTRL;, &control)) { - control.value += 1; - - /* The driver may clamp the value or return ERANGE, ignored here */ - - if (-1 == ioctl (fd, &VIDIOC-S-CTRL;, &control) - && errno != ERANGE) { - perror ("VIDIOC_S_CTRL"); - exit (EXIT_FAILURE); - } -/* Ignore if V4L2_CID_CONTRAST is unsupported */ -} else if (errno != EINVAL) { - perror ("VIDIOC_G_CTRL"); - exit (EXIT_FAILURE); -} - -control.id = V4L2_CID_AUDIO_MUTE; -control.value = TRUE; /* silence */ - -/* Errors ignored */ -ioctl (fd, VIDIOC_S_CTRL, &control); -</programlisting> - </example> - </section> - - <section id="extended-controls"> - <title>Extended Controls</title> - - <section> - <title>Introduction</title> - - <para>The control mechanism as originally designed was meant -to be used for user settings (brightness, saturation, etc). However, -it turned out to be a very useful model for implementing more -complicated driver APIs where each driver implements only a subset of -a larger API.</para> - - <para>The MPEG encoding API was the driving force behind -designing and implementing this extended control mechanism: the MPEG -standard is quite large and the currently supported hardware MPEG -encoders each only implement a subset of this standard. Further more, -many parameters relating to how the video is encoded into an MPEG -stream are specific to the MPEG encoding chip since the MPEG standard -only defines the format of the resulting MPEG stream, not how the -video is actually encoded into that format.</para> - - <para>Unfortunately, the original control API lacked some -features needed for these new uses and so it was extended into the -(not terribly originally named) extended control API.</para> - - <para>Even though the MPEG encoding API was the first effort -to use the Extended Control API, nowadays there are also other classes -of Extended Controls, such as Camera Controls and FM Transmitter Controls. -The Extended Controls API as well as all Extended Controls classes are -described in the following text.</para> - </section> - - <section> - <title>The Extended Control API</title> - - <para>Three new ioctls are available: &VIDIOC-G-EXT-CTRLS;, -&VIDIOC-S-EXT-CTRLS; and &VIDIOC-TRY-EXT-CTRLS;. These ioctls act on -arrays of controls (as opposed to the &VIDIOC-G-CTRL; and -&VIDIOC-S-CTRL; ioctls that act on a single control). This is needed -since it is often required to atomically change several controls at -once.</para> - - <para>Each of the new ioctls expects a pointer to a -&v4l2-ext-controls;. This structure contains a pointer to the control -array, a count of the number of controls in that array and a control -class. Control classes are used to group similar controls into a -single class. For example, control class -<constant>V4L2_CTRL_CLASS_USER</constant> contains all user controls -(&ie; all controls that can also be set using the old -<constant>VIDIOC_S_CTRL</constant> ioctl). Control class -<constant>V4L2_CTRL_CLASS_MPEG</constant> contains all controls -relating to MPEG encoding, etc.</para> - - <para>All controls in the control array must belong to the -specified control class. An error is returned if this is not the -case.</para> - - <para>It is also possible to use an empty control array (count -== 0) to check whether the specified control class is -supported.</para> - - <para>The control array is a &v4l2-ext-control; array. The -<structname>v4l2_ext_control</structname> structure is very similar to -&v4l2-control;, except for the fact that it also allows for 64-bit -values and pointers to be passed.</para> - - <para>It is important to realize that due to the flexibility of -controls it is necessary to check whether the control you want to set -actually is supported in the driver and what the valid range of values -is. So use the &VIDIOC-QUERYCTRL; and &VIDIOC-QUERYMENU; ioctls to -check this. Also note that it is possible that some of the menu -indices in a control of type <constant>V4L2_CTRL_TYPE_MENU</constant> -may not be supported (<constant>VIDIOC_QUERYMENU</constant> will -return an error). A good example is the list of supported MPEG audio -bitrates. Some drivers only support one or two bitrates, others -support a wider range.</para> - </section> - - <section> - <title>Enumerating Extended Controls</title> - - <para>The recommended way to enumerate over the extended -controls is by using &VIDIOC-QUERYCTRL; in combination with the -<constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> flag:</para> - - <informalexample> - <programlisting> -&v4l2-queryctrl; qctrl; - -qctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL; -while (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &qctrl)) { - /* ... */ - qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL; -} -</programlisting> - </informalexample> - - <para>The initial control ID is set to 0 ORed with the -<constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> flag. The -<constant>VIDIOC_QUERYCTRL</constant> ioctl will return the first -control with a higher ID than the specified one. When no such controls -are found an error is returned.</para> - - <para>If you want to get all controls within a specific control -class, then you can set the initial -<structfield>qctrl.id</structfield> value to the control class and add -an extra check to break out of the loop when a control of another -control class is found:</para> - - <informalexample> - <programlisting> -qctrl.id = V4L2_CTRL_CLASS_MPEG | V4L2_CTRL_FLAG_NEXT_CTRL; -while (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &qctrl)) { - if (V4L2_CTRL_ID2CLASS (qctrl.id) != V4L2_CTRL_CLASS_MPEG) - break; - /* ... */ - qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL; - } -</programlisting> - </informalexample> - - <para>The 32-bit <structfield>qctrl.id</structfield> value is -subdivided into three bit ranges: the top 4 bits are reserved for -flags (⪚ <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant>) and are not -actually part of the ID. The remaining 28 bits form the control ID, of -which the most significant 12 bits define the control class and the -least significant 16 bits identify the control within the control -class. It is guaranteed that these last 16 bits are always non-zero -for controls. The range of 0x1000 and up are reserved for -driver-specific controls. The macro -<constant>V4L2_CTRL_ID2CLASS(id)</constant> returns the control class -ID based on a control ID.</para> - - <para>If the driver does not support extended controls, then -<constant>VIDIOC_QUERYCTRL</constant> will fail when used in -combination with <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant>. In -that case the old method of enumerating control should be used (see -1.8). But if it is supported, then it is guaranteed to enumerate over -all controls, including driver-private controls.</para> - </section> - - <section> - <title>Creating Control Panels</title> - - <para>It is possible to create control panels for a graphical -user interface where the user can select the various controls. -Basically you will have to iterate over all controls using the method -described above. Each control class starts with a control of type -<constant>V4L2_CTRL_TYPE_CTRL_CLASS</constant>. -<constant>VIDIOC_QUERYCTRL</constant> will return the name of this -control class which can be used as the title of a tab page within a -control panel.</para> - - <para>The flags field of &v4l2-queryctrl; also contains hints on -the behavior of the control. See the &VIDIOC-QUERYCTRL; documentation -for more details.</para> - </section> - - <section id="mpeg-controls"> - <title>MPEG Control Reference</title> - - <para>Below all controls within the MPEG control class are -described. First the generic controls, then controls specific for -certain hardware.</para> - - <section> - <title>Generic MPEG Controls</title> - - <table pgwide="1" frame="none" id="mpeg-control-id"> - <title>MPEG Control IDs</title> - <tgroup cols="4"> - <colspec colname="c1" colwidth="1*" /> - <colspec colname="c2" colwidth="6*" /> - <colspec colname="c3" colwidth="2*" /> - <colspec colname="c4" colwidth="6*" /> - <spanspec namest="c1" nameend="c2" spanname="id" /> - <spanspec namest="c2" nameend="c4" spanname="descr" /> - <thead> - <row> - <entry spanname="id" align="left">ID</entry> - <entry align="left">Type</entry> - </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry> - </row> - </thead> - <tbody valign="top"> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_CLASS</constant> </entry> - <entry>class</entry> - </row><row><entry spanname="descr">The MPEG class -descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a -description of this control class. This description can be used as the -caption of a Tab page in a GUI, for example.</entry> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-stream-type"> - <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_TYPE</constant> </entry> - <entry>enum v4l2_mpeg_stream_type</entry> - </row><row><entry spanname="descr">The MPEG-1, -2 or -4 -output stream type. One cannot assume anything here. Each hardware -MPEG encoder tends to support different subsets of the available MPEG -stream types. The currently defined stream types are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_PS</constant> </entry> - <entry>MPEG-2 program stream</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_TS</constant> </entry> - <entry>MPEG-2 transport stream</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG1_SS</constant> </entry> - <entry>MPEG-1 system stream</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_DVD</constant> </entry> - <entry>MPEG-2 DVD-compatible stream</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG1_VCD</constant> </entry> - <entry>MPEG-1 VCD-compatible stream</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD</constant> </entry> - <entry>MPEG-2 SVCD-compatible stream</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_PMT</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Program Map Table -Packet ID for the MPEG transport stream (default 16)</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_AUDIO</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Audio Packet ID for -the MPEG transport stream (default 256)</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_VIDEO</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Video Packet ID for -the MPEG transport stream (default 260)</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_PCR</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Packet ID for the -MPEG transport stream carrying PCR fields (default 259)</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PES_ID_AUDIO</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Audio ID for MPEG -PES</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PES_ID_VIDEO</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Video ID for MPEG -PES</entry> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-stream-vbi-fmt"> - <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_VBI_FMT</constant> </entry> - <entry>enum v4l2_mpeg_stream_vbi_fmt</entry> - </row><row><entry spanname="descr">Some cards can embed -VBI data (⪚ Closed Caption, Teletext) into the MPEG stream. This -control selects whether VBI data should be embedded, and if so, what -embedding method should be used. The list of possible VBI formats -depends on the driver. The currently defined VBI format types -are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_STREAM_VBI_FMT_NONE</constant> </entry> - <entry>No VBI in the MPEG stream</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_STREAM_VBI_FMT_IVTV</constant> </entry> - <entry>VBI in private packets, IVTV format (documented -in the kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.vbi</filename>)</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-audio-sampling-freq"> - <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ</constant> </entry> - <entry>enum v4l2_mpeg_audio_sampling_freq</entry> - </row><row><entry spanname="descr">MPEG Audio sampling -frequency. Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100</constant> </entry> - <entry>44.1 kHz</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000</constant> </entry> - <entry>48 kHz</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000</constant> </entry> - <entry>32 kHz</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-audio-encoding"> - <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_ENCODING</constant> </entry> - <entry>enum v4l2_mpeg_audio_encoding</entry> - </row><row><entry spanname="descr">MPEG Audio encoding. -Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_AUDIO_ENCODING_LAYER_1</constant> </entry> - <entry>MPEG-1/2 Layer I encoding</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_ENCODING_LAYER_2</constant> </entry> - <entry>MPEG-1/2 Layer II encoding</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_ENCODING_LAYER_3</constant> </entry> - <entry>MPEG-1/2 Layer III encoding</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_ENCODING_AAC</constant> </entry> - <entry>MPEG-2/4 AAC (Advanced Audio Coding)</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_ENCODING_AC3</constant> </entry> - <entry>AC-3 aka ATSC A/52 encoding</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-audio-l1-bitrate"> - <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_L1_BITRATE</constant> </entry> - <entry>enum v4l2_mpeg_audio_l1_bitrate</entry> - </row><row><entry spanname="descr">MPEG-1/2 Layer I bitrate. -Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_32K</constant> </entry> - <entry>32 kbit/s</entry></row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_64K</constant> </entry> - <entry>64 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_96K</constant> </entry> - <entry>96 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_128K</constant> </entry> - <entry>128 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_160K</constant> </entry> - <entry>160 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_192K</constant> </entry> - <entry>192 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_224K</constant> </entry> - <entry>224 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_256K</constant> </entry> - <entry>256 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_288K</constant> </entry> - <entry>288 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_320K</constant> </entry> - <entry>320 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_352K</constant> </entry> - <entry>352 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_384K</constant> </entry> - <entry>384 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_416K</constant> </entry> - <entry>416 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_448K</constant> </entry> - <entry>448 kbit/s</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-audio-l2-bitrate"> - <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_L2_BITRATE</constant> </entry> - <entry>enum v4l2_mpeg_audio_l2_bitrate</entry> - </row><row><entry spanname="descr">MPEG-1/2 Layer II bitrate. -Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_32K</constant> </entry> - <entry>32 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_48K</constant> </entry> - <entry>48 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_56K</constant> </entry> - <entry>56 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_64K</constant> </entry> - <entry>64 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_80K</constant> </entry> - <entry>80 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_96K</constant> </entry> - <entry>96 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_112K</constant> </entry> - <entry>112 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_128K</constant> </entry> - <entry>128 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_160K</constant> </entry> - <entry>160 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_192K</constant> </entry> - <entry>192 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_224K</constant> </entry> - <entry>224 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_256K</constant> </entry> - <entry>256 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_320K</constant> </entry> - <entry>320 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_384K</constant> </entry> - <entry>384 kbit/s</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-audio-l3-bitrate"> - <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_L3_BITRATE</constant> </entry> - <entry>enum v4l2_mpeg_audio_l3_bitrate</entry> - </row><row><entry spanname="descr">MPEG-1/2 Layer III bitrate. -Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_32K</constant> </entry> - <entry>32 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_40K</constant> </entry> - <entry>40 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_48K</constant> </entry> - <entry>48 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_56K</constant> </entry> - <entry>56 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_64K</constant> </entry> - <entry>64 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_80K</constant> </entry> - <entry>80 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_96K</constant> </entry> - <entry>96 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_112K</constant> </entry> - <entry>112 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_128K</constant> </entry> - <entry>128 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_160K</constant> </entry> - <entry>160 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_192K</constant> </entry> - <entry>192 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_224K</constant> </entry> - <entry>224 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_256K</constant> </entry> - <entry>256 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_320K</constant> </entry> - <entry>320 kbit/s</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_AAC_BITRATE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">AAC bitrate in bits per second.</entry> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-audio-ac3-bitrate"> - <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_AC3_BITRATE</constant> </entry> - <entry>enum v4l2_mpeg_audio_ac3_bitrate</entry> - </row><row><entry spanname="descr">AC-3 bitrate. -Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_32K</constant> </entry> - <entry>32 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_40K</constant> </entry> - <entry>40 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_48K</constant> </entry> - <entry>48 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_56K</constant> </entry> - <entry>56 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_64K</constant> </entry> - <entry>64 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_80K</constant> </entry> - <entry>80 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_96K</constant> </entry> - <entry>96 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_112K</constant> </entry> - <entry>112 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_128K</constant> </entry> - <entry>128 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_160K</constant> </entry> - <entry>160 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_192K</constant> </entry> - <entry>192 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_224K</constant> </entry> - <entry>224 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_256K</constant> </entry> - <entry>256 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_320K</constant> </entry> - <entry>320 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_384K</constant> </entry> - <entry>384 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_448K</constant> </entry> - <entry>448 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_512K</constant> </entry> - <entry>512 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_576K</constant> </entry> - <entry>576 kbit/s</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_640K</constant> </entry> - <entry>640 kbit/s</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-audio-mode"> - <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_MODE</constant> </entry> - <entry>enum v4l2_mpeg_audio_mode</entry> - </row><row><entry spanname="descr">MPEG Audio mode. -Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_AUDIO_MODE_STEREO</constant> </entry> - <entry>Stereo</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_MODE_JOINT_STEREO</constant> </entry> - <entry>Joint Stereo</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_MODE_DUAL</constant> </entry> - <entry>Bilingual</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_MODE_MONO</constant> </entry> - <entry>Mono</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-audio-mode-extension"> - <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_MODE_EXTENSION</constant> </entry> - <entry>enum v4l2_mpeg_audio_mode_extension</entry> - </row><row><entry spanname="descr">Joint Stereo -audio mode extension. In Layer I and II they indicate which subbands -are in intensity stereo. All other subbands are coded in stereo. Layer -III is not (yet) supported. Possible values -are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4</constant> </entry> - <entry>Subbands 4-31 in intensity stereo</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8</constant> </entry> - <entry>Subbands 8-31 in intensity stereo</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12</constant> </entry> - <entry>Subbands 12-31 in intensity stereo</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16</constant> </entry> - <entry>Subbands 16-31 in intensity stereo</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-audio-emphasis"> - <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_EMPHASIS</constant> </entry> - <entry>enum v4l2_mpeg_audio_emphasis</entry> - </row><row><entry spanname="descr">Audio Emphasis. -Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_AUDIO_EMPHASIS_NONE</constant> </entry> - <entry>None</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS</constant> </entry> - <entry>50/15 microsecond emphasis</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17</constant> </entry> - <entry>CCITT J.17</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-audio-crc"> - <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_CRC</constant> </entry> - <entry>enum v4l2_mpeg_audio_crc</entry> - </row><row><entry spanname="descr">CRC method. Possible -values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_AUDIO_CRC_NONE</constant> </entry> - <entry>None</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_AUDIO_CRC_CRC16</constant> </entry> - <entry>16 bit parity check</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_MUTE</constant> </entry> - <entry>boolean</entry> - </row><row><entry spanname="descr">Mutes the audio when -capturing. This is not done by muting audio hardware, which can still -produce a slight hiss, but in the encoder itself, guaranteeing a fixed -and reproducible audio bitstream. 0 = unmuted, 1 = muted.</entry> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-video-encoding"> - <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ENCODING</constant> </entry> - <entry>enum v4l2_mpeg_video_encoding</entry> - </row><row><entry spanname="descr">MPEG Video encoding -method. Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_1</constant> </entry> - <entry>MPEG-1 Video encoding</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_2</constant> </entry> - <entry>MPEG-2 Video encoding</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC</constant> </entry> - <entry>MPEG-4 AVC (H.264) Video encoding</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-video-aspect"> - <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ASPECT</constant> </entry> - <entry>enum v4l2_mpeg_video_aspect</entry> - </row><row><entry spanname="descr">Video aspect. -Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_VIDEO_ASPECT_1x1</constant> </entry> - </row> - <row> - <entry><constant>V4L2_MPEG_VIDEO_ASPECT_4x3</constant> </entry> - </row> - <row> - <entry><constant>V4L2_MPEG_VIDEO_ASPECT_16x9</constant> </entry> - </row> - <row> - <entry><constant>V4L2_MPEG_VIDEO_ASPECT_221x100</constant> </entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_B_FRAMES</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Number of B-Frames -(default 2)</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_GOP_SIZE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">GOP size (default -12)</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_GOP_CLOSURE</constant> </entry> - <entry>boolean</entry> - </row><row><entry spanname="descr">GOP closure (default -1)</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_PULLDOWN</constant> </entry> - <entry>boolean</entry> - </row><row><entry spanname="descr">Enable 3:2 pulldown -(default 0)</entry> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-video-bitrate-mode"> - <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_BITRATE_MODE</constant> </entry> - <entry>enum v4l2_mpeg_video_bitrate_mode</entry> - </row><row><entry spanname="descr">Video bitrate mode. -Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_VIDEO_BITRATE_MODE_VBR</constant> </entry> - <entry>Variable bitrate</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_VIDEO_BITRATE_MODE_CBR</constant> </entry> - <entry>Constant bitrate</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_BITRATE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Video bitrate in bits -per second.</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_BITRATE_PEAK</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Peak video bitrate in -bits per second. Must be larger or equal to the average video bitrate. -It is ignored if the video bitrate mode is set to constant -bitrate.</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">For every captured -frame, skip this many subsequent frames (default 0).</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MUTE</constant> </entry> - <entry>boolean</entry> - </row> - <row><entry spanname="descr">"Mutes" the video to a -fixed color when capturing. This is useful for testing, to produce a -fixed video bitstream. 0 = unmuted, 1 = muted.</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MUTE_YUV</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Sets the "mute" color -of the video. The supplied 32-bit integer is interpreted as follows (bit -0 = least significant bit):</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry>Bit 0:7</entry> - <entry>V chrominance information</entry> - </row> - <row> - <entry>Bit 8:15</entry> - <entry>U chrominance information</entry> - </row> - <row> - <entry>Bit 16:23</entry> - <entry>Y luminance information</entry> - </row> - <row> - <entry>Bit 24:31</entry> - <entry>Must be zero.</entry> - </row> - </tbody> - </entrytbl> - </row> - </tbody> - </tgroup> - </table> - </section> - - <section> - <title>CX2341x MPEG Controls</title> - - <para>The following MPEG class controls deal with MPEG -encoding settings that are specific to the Conexant CX23415 and -CX23416 MPEG encoding chips.</para> - - <table pgwide="1" frame="none" id="cx2341x-control-id"> - <title>CX2341x Control IDs</title> - <tgroup cols="4"> - <colspec colname="c1" colwidth="1*" /> - <colspec colname="c2" colwidth="6*" /> - <colspec colname="c3" colwidth="2*" /> - <colspec colname="c4" colwidth="6*" /> - <spanspec namest="c1" nameend="c2" spanname="id" /> - <spanspec namest="c2" nameend="c4" spanname="descr" /> - <thead> - <row> - <entry spanname="id" align="left">ID</entry> - <entry align="left">Type</entry> - </row><row><entry spanname="descr" align="left">Description</entry> - </row> - </thead> - <tbody valign="top"> - <row><entry></entry></row> - <row id="v4l2-mpeg-cx2341x-video-spatial-filter-mode"> - <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE</constant> </entry> - <entry>enum v4l2_mpeg_cx2341x_video_spatial_filter_mode</entry> - </row><row><entry spanname="descr">Sets the Spatial -Filter mode (default <constant>MANUAL</constant>). Possible values -are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL</constant> </entry> - <entry>Choose the filter manually</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO</constant> </entry> - <entry>Choose the filter automatically</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER</constant> </entry> - <entry>integer (0-15)</entry> - </row><row><entry spanname="descr">The setting for the -Spatial Filter. 0 = off, 15 = maximum. (Default is 0.)</entry> - </row> - <row><entry></entry></row> - <row id="luma-spatial-filter-type"> - <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE</constant> </entry> - <entry>enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type</entry> - </row><row><entry spanname="descr">Select the algorithm -to use for the Luma Spatial Filter (default -<constant>1D_HOR</constant>). Possible values:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF</constant> </entry> - <entry>No filter</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR</constant> </entry> - <entry>One-dimensional horizontal</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT</constant> </entry> - <entry>One-dimensional vertical</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE</constant> </entry> - <entry>Two-dimensional separable</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE</constant> </entry> - <entry>Two-dimensional symmetrical -non-separable</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row id="chroma-spatial-filter-type"> - <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE</constant> </entry> - <entry>enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type</entry> - </row><row><entry spanname="descr">Select the algorithm -for the Chroma Spatial Filter (default <constant>1D_HOR</constant>). -Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF</constant> </entry> - <entry>No filter</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR</constant> </entry> - <entry>One-dimensional horizontal</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-cx2341x-video-temporal-filter-mode"> - <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE</constant> </entry> - <entry>enum v4l2_mpeg_cx2341x_video_temporal_filter_mode</entry> - </row><row><entry spanname="descr">Sets the Temporal -Filter mode (default <constant>MANUAL</constant>). Possible values -are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL</constant> </entry> - <entry>Choose the filter manually</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO</constant> </entry> - <entry>Choose the filter automatically</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER</constant> </entry> - <entry>integer (0-31)</entry> - </row><row><entry spanname="descr">The setting for the -Temporal Filter. 0 = off, 31 = maximum. (Default is 8 for full-scale -capturing and 0 for scaled capturing.)</entry> - </row> - <row><entry></entry></row> - <row id="v4l2-mpeg-cx2341x-video-median-filter-type"> - <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE</constant> </entry> - <entry>enum v4l2_mpeg_cx2341x_video_median_filter_type</entry> - </row><row><entry spanname="descr">Median Filter Type -(default <constant>OFF</constant>). Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF</constant> </entry> - <entry>No filter</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR</constant> </entry> - <entry>Horizontal filter</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT</constant> </entry> - <entry>Vertical filter</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT</constant> </entry> - <entry>Horizontal and vertical filter</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG</constant> </entry> - <entry>Diagonal filter</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM</constant> </entry> - <entry>integer (0-255)</entry> - </row><row><entry spanname="descr">Threshold above which -the luminance median filter is enabled (default 0)</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP</constant> </entry> - <entry>integer (0-255)</entry> - </row><row><entry spanname="descr">Threshold below which -the luminance median filter is enabled (default 255)</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM</constant> </entry> - <entry>integer (0-255)</entry> - </row><row><entry spanname="descr">Threshold above which -the chroma median filter is enabled (default 0)</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP</constant> </entry> - <entry>integer (0-255)</entry> - </row><row><entry spanname="descr">Threshold below which -the chroma median filter is enabled (default 255)</entry> - </row> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS</constant> </entry> - <entry>boolean</entry> - </row> - <row><entry spanname="descr">The CX2341X MPEG encoder -can insert one empty MPEG-2 PES packet into the stream between every -four video frames. The packet size is 2048 bytes, including the -packet_start_code_prefix and stream_id fields. The stream_id is 0xBF -(private stream 2). The payload consists of 0x00 bytes, to be filled -in by the application. 0 = do not insert, 1 = insert packets.</entry> - </row> - </tbody> - </tgroup> - </table> - </section> - </section> - - <section id="camera-controls"> - <title>Camera Control Reference</title> - - <para>The Camera class includes controls for mechanical (or -equivalent digital) features of a device such as controllable lenses -or sensors.</para> - - <table pgwide="1" frame="none" id="camera-control-id"> - <title>Camera Control IDs</title> - <tgroup cols="4"> - <colspec colname="c1" colwidth="1*" /> - <colspec colname="c2" colwidth="6*" /> - <colspec colname="c3" colwidth="2*" /> - <colspec colname="c4" colwidth="6*" /> - <spanspec namest="c1" nameend="c2" spanname="id" /> - <spanspec namest="c2" nameend="c4" spanname="descr" /> - <thead> - <row> - <entry spanname="id" align="left">ID</entry> - <entry align="left">Type</entry> - </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry> - </row> - </thead> - <tbody valign="top"> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_CAMERA_CLASS</constant> </entry> - <entry>class</entry> - </row><row><entry spanname="descr">The Camera class -descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a -description of this control class.</entry> - </row> - <row><entry></entry></row> - - <row id="v4l2-exposure-auto-type"> - <entry spanname="id"><constant>V4L2_CID_EXPOSURE_AUTO</constant> </entry> - <entry>enum v4l2_exposure_auto_type</entry> - </row><row><entry spanname="descr">Enables automatic -adjustments of the exposure time and/or iris aperture. The effect of -manual changes of the exposure time or iris aperture while these -features are enabled is undefined, drivers should ignore such -requests. Possible values are:</entry> - </row> - <row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_EXPOSURE_AUTO</constant> </entry> - <entry>Automatic exposure time, automatic iris -aperture.</entry> - </row> - <row> - <entry><constant>V4L2_EXPOSURE_MANUAL</constant> </entry> - <entry>Manual exposure time, manual iris.</entry> - </row> - <row> - <entry><constant>V4L2_EXPOSURE_SHUTTER_PRIORITY</constant> </entry> - <entry>Manual exposure time, auto iris.</entry> - </row> - <row> - <entry><constant>V4L2_EXPOSURE_APERTURE_PRIORITY</constant> </entry> - <entry>Auto exposure time, manual iris.</entry> - </row> - </tbody> - </entrytbl> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_EXPOSURE_ABSOLUTE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Determines the exposure -time of the camera sensor. The exposure time is limited by the frame -interval. Drivers should interpret the values as 100 µs units, -where the value 1 stands for 1/10000th of a second, 10000 for 1 second -and 100000 for 10 seconds.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_EXPOSURE_AUTO_PRIORITY</constant> </entry> - <entry>boolean</entry> - </row><row><entry spanname="descr">When -<constant>V4L2_CID_EXPOSURE_AUTO</constant> is set to -<constant>AUTO</constant> or <constant>APERTURE_PRIORITY</constant>, -this control determines if the device may dynamically vary the frame -rate. By default this feature is disabled (0) and the frame rate must -remain constant.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_PAN_RELATIVE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">This control turns the -camera horizontally by the specified amount. The unit is undefined. A -positive value moves the camera to the right (clockwise when viewed -from above), a negative value to the left. A value of zero does not -cause motion. This is a write-only control.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_TILT_RELATIVE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">This control turns the -camera vertically by the specified amount. The unit is undefined. A -positive value moves the camera up, a negative value down. A value of -zero does not cause motion. This is a write-only control.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_PAN_RESET</constant> </entry> - <entry>button</entry> - </row><row><entry spanname="descr">When this control is set, -the camera moves horizontally to the default position.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_TILT_RESET</constant> </entry> - <entry>button</entry> - </row><row><entry spanname="descr">When this control is set, -the camera moves vertically to the default position.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_PAN_ABSOLUTE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">This control -turns the camera horizontally to the specified position. Positive -values move the camera to the right (clockwise when viewed from above), -negative values to the left. Drivers should interpret the values as arc -seconds, with valid values between -180 * 3600 and +180 * 3600 -inclusive.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_TILT_ABSOLUTE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">This control -turns the camera vertically to the specified position. Positive values -move the camera up, negative values down. Drivers should interpret the -values as arc seconds, with valid values between -180 * 3600 and +180 -* 3600 inclusive.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_FOCUS_ABSOLUTE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">This control sets the -focal point of the camera to the specified position. The unit is -undefined. Positive values set the focus closer to the camera, -negative values towards infinity.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_FOCUS_RELATIVE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">This control moves the -focal point of the camera by the specified amount. The unit is -undefined. Positive values move the focus closer to the camera, -negative values towards infinity. This is a write-only control.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_FOCUS_AUTO</constant> </entry> - <entry>boolean</entry> - </row><row><entry spanname="descr">Enables automatic focus -adjustments. The effect of manual focus adjustments while this feature -is enabled is undefined, drivers should ignore such requests.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_ZOOM_ABSOLUTE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Specify the objective lens -focal length as an absolute value. The zoom unit is driver-specific and its -value should be a positive integer.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_ZOOM_RELATIVE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Specify the objective lens -focal length relatively to the current value. Positive values move the zoom -lens group towards the telephoto direction, negative values towards the -wide-angle direction. The zoom unit is driver-specific. This is a write-only control.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_ZOOM_CONTINUOUS</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Move the objective lens group -at the specified speed until it reaches physical device limits or until an -explicit request to stop the movement. A positive value moves the zoom lens -group towards the telephoto direction. A value of zero stops the zoom lens -group movement. A negative value moves the zoom lens group towards the -wide-angle direction. The zoom speed unit is driver-specific.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_IRIS_ABSOLUTE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">This control sets the -camera's aperture to the specified value. The unit is undefined. -Larger values open the iris wider, smaller values close it.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_IRIS_RELATIVE</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">This control modifies the -camera's aperture by the specified amount. The unit is undefined. -Positive values open the iris one step further, negative values close -it one step further. This is a write-only control.</entry> - </row> - <row><entry></entry></row> - - <row> - <entry spanname="id"><constant>V4L2_CID_PRIVACY</constant> </entry> - <entry>boolean</entry> - </row><row><entry spanname="descr">Prevent video from being acquired -by the camera. When this control is set to <constant>TRUE</constant> (1), no -image can be captured by the camera. Common means to enforce privacy are -mechanical obturation of the sensor and firmware image processing, but the -device is not restricted to these methods. Devices that implement the privacy -control must support read access and may support write access.</entry> - </row> - - <row> - <entry spanname="id"><constant>V4L2_CID_BAND_STOP_FILTER</constant> </entry> - <entry>integer</entry> - </row><row><entry spanname="descr">Switch the band-stop filter of a -camera sensor on or off, or specify its strength. Such band-stop filters can -be used, for example, to filter out the fluorescent light component.</entry> - </row> - <row><entry></entry></row> - </tbody> - </tgroup> - </table> - </section> - - <section id="fm-tx-controls"> - <title>FM Transmitter Control Reference</title> - - <para>The FM Transmitter (FM_TX) class includes controls for common features of -FM transmissions capable devices. Currently this class includes parameters for audio -compression, pilot tone generation, audio deviation limiter, RDS transmission and -tuning power features.</para> - - <table pgwide="1" frame="none" id="fm-tx-control-id"> - <title>FM_TX Control IDs</title> - - <tgroup cols="4"> - <colspec colname="c1" colwidth="1*" /> - <colspec colname="c2" colwidth="6*" /> - <colspec colname="c3" colwidth="2*" /> - <colspec colname="c4" colwidth="6*" /> - <spanspec namest="c1" nameend="c2" spanname="id" /> - <spanspec namest="c2" nameend="c4" spanname="descr" /> - <thead> - <row> - <entry spanname="id" align="left">ID</entry> - <entry align="left">Type</entry> - </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry> - </row> - </thead> - <tbody valign="top"> - <row><entry></entry></row> - <row> - <entry spanname="id"><constant>V4L2_CID_FM_TX_CLASS</constant> </entry> - <entry>class</entry> - </row><row><entry spanname="descr">The FM_TX class -descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a -description of this control class.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_RDS_TX_DEVIATION</constant> </entry> - <entry>integer</entry> - </row> - <row><entry spanname="descr">Configures RDS signal frequency deviation level in Hz. -The range and step are driver-specific.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_RDS_TX_PI</constant> </entry> - <entry>integer</entry> - </row> - <row><entry spanname="descr">Sets the RDS Programme Identification field -for transmission.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_RDS_TX_PTY</constant> </entry> - <entry>integer</entry> - </row> - <row><entry spanname="descr">Sets the RDS Programme Type field for transmission. -This encodes up to 31 pre-defined programme types.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_RDS_TX_PS_NAME</constant> </entry> - <entry>string</entry> - </row> - <row><entry spanname="descr">Sets the Programme Service name (PS_NAME) for transmission. -It is intended for static display on a receiver. It is the primary aid to listeners in programme service -identification and selection. In Annex E of <xref linkend="en50067" />, the RDS specification, -there is a full description of the correct character encoding for Programme Service name strings. -Also from RDS specification, PS is usually a single eight character text. However, it is also possible -to find receivers which can scroll strings sized as 8 x N characters. So, this control must be configured -with steps of 8 characters. The result is it must always contain a string with size multiple of 8.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_RDS_TX_RADIO_TEXT</constant> </entry> - <entry>string</entry> - </row> - <row><entry spanname="descr">Sets the Radio Text info for transmission. It is a textual description of -what is being broadcasted. RDS Radio Text can be applied when broadcaster wishes to transmit longer PS names, -programme-related information or any other text. In these cases, RadioText should be used in addition to -<constant>V4L2_CID_RDS_TX_PS_NAME</constant>. The encoding for Radio Text strings is also fully described -in Annex E of <xref linkend="en50067" />. The length of Radio Text strings depends on which RDS Block is being -used to transmit it, either 32 (2A block) or 64 (2B block). However, it is also possible -to find receivers which can scroll strings sized as 32 x N or 64 x N characters. So, this control must be configured -with steps of 32 or 64 characters. The result is it must always contain a string with size multiple of 32 or 64. </entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_ENABLED</constant> </entry> - <entry>boolean</entry> - </row> - <row><entry spanname="descr">Enables or disables the audio deviation limiter feature. -The limiter is useful when trying to maximize the audio volume, minimize receiver-generated -distortion and prevent overmodulation. -</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_RELEASE_TIME</constant> </entry> - <entry>integer</entry> - </row> - <row><entry spanname="descr">Sets the audio deviation limiter feature release time. -Unit is in useconds. Step and range are driver-specific.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_DEVIATION</constant> </entry> - <entry>integer</entry> - </row> - <row><entry spanname="descr">Configures audio frequency deviation level in Hz. -The range and step are driver-specific.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_ENABLED</constant> </entry> - <entry>boolean</entry> - </row> - <row><entry spanname="descr">Enables or disables the audio compression feature. -This feature amplifies signals below the threshold by a fixed gain and compresses audio -signals above the threshold by the ratio of Threshold/(Gain + Threshold).</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_GAIN</constant> </entry> - <entry>integer</entry> - </row> - <row><entry spanname="descr">Sets the gain for audio compression feature. It is -a dB value. The range and step are driver-specific.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_THRESHOLD</constant> </entry> - <entry>integer</entry> - </row> - <row><entry spanname="descr">Sets the threshold level for audio compression freature. -It is a dB value. The range and step are driver-specific.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME</constant> </entry> - <entry>integer</entry> - </row> - <row><entry spanname="descr">Sets the attack time for audio compression feature. -It is a useconds value. The range and step are driver-specific.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME</constant> </entry> - <entry>integer</entry> - </row> - <row><entry spanname="descr">Sets the release time for audio compression feature. -It is a useconds value. The range and step are driver-specific.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_PILOT_TONE_ENABLED</constant> </entry> - <entry>boolean</entry> - </row> - <row><entry spanname="descr">Enables or disables the pilot tone generation feature.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_PILOT_TONE_DEVIATION</constant> </entry> - <entry>integer</entry> - </row> - <row><entry spanname="descr">Configures pilot tone frequency deviation level. Unit is -in Hz. The range and step are driver-specific.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_PILOT_TONE_FREQUENCY</constant> </entry> - <entry>integer</entry> - </row> - <row><entry spanname="descr">Configures pilot tone frequency value. Unit is -in Hz. The range and step are driver-specific.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_TUNE_PREEMPHASIS</constant> </entry> - <entry>integer</entry> - </row> - <row id="v4l2-preemphasis"><entry spanname="descr">Configures the pre-emphasis value for broadcasting. -A pre-emphasis filter is applied to the broadcast to accentuate the high audio frequencies. -Depending on the region, a time constant of either 50 or 75 useconds is used. The enum v4l2_preemphasis -defines possible values for pre-emphasis. Here they are:</entry> - </row><row> - <entrytbl spanname="descr" cols="2"> - <tbody valign="top"> - <row> - <entry><constant>V4L2_PREEMPHASIS_DISABLED</constant> </entry> - <entry>No pre-emphasis is applied.</entry> - </row> - <row> - <entry><constant>V4L2_PREEMPHASIS_50_uS</constant> </entry> - <entry>A pre-emphasis of 50 uS is used.</entry> - </row> - <row> - <entry><constant>V4L2_PREEMPHASIS_75_uS</constant> </entry> - <entry>A pre-emphasis of 75 uS is used.</entry> - </row> - </tbody> - </entrytbl> - - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_TUNE_POWER_LEVEL</constant> </entry> - <entry>integer</entry> - </row> - <row><entry spanname="descr">Sets the output power level for signal transmission. -Unit is in dBuV. Range and step are driver-specific.</entry> - </row> - <row> - <entry spanname="id"><constant>V4L2_CID_TUNE_ANTENNA_CAPACITOR</constant> </entry> - <entry>integer</entry> - </row> - <row><entry spanname="descr">This selects the value of antenna tuning capacitor -manually or automatically if set to zero. Unit, range and step are driver-specific.</entry> - </row> - <row><entry></entry></row> - </tbody> - </tgroup> - </table> - -<para>For more details about RDS specification, refer to -<xref linkend="en50067" /> document, from CENELEC.</para> - </section> -</section> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "common.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/crop.gif b/Documentation/DocBook/v4l/crop.gif Binary files differdeleted file mode 100644 index 3b9e7d836d4b..000000000000 --- a/Documentation/DocBook/v4l/crop.gif +++ /dev/null diff --git a/Documentation/DocBook/v4l/crop.pdf b/Documentation/DocBook/v4l/crop.pdf Binary files differdeleted file mode 100644 index c9fb81cd32f3..000000000000 --- a/Documentation/DocBook/v4l/crop.pdf +++ /dev/null diff --git a/Documentation/DocBook/v4l/dev-capture.xml b/Documentation/DocBook/v4l/dev-capture.xml deleted file mode 100644 index 2237c661f26a..000000000000 --- a/Documentation/DocBook/v4l/dev-capture.xml +++ /dev/null @@ -1,118 +0,0 @@ - <title>Video Capture Interface</title> - - <para>Video capture devices sample an analog video signal and store -the digitized images in memory. Today nearly all devices can capture -at full 25 or 30 frames/second. With this interface applications can -control the capture process and move images from the driver into user -space.</para> - - <para>Conventionally V4L2 video capture devices are accessed through -character device special files named <filename>/dev/video</filename> -and <filename>/dev/video0</filename> to -<filename>/dev/video63</filename> with major number 81 and minor -numbers 0 to 63. <filename>/dev/video</filename> is typically a -symbolic link to the preferred video device. Note the same device -files are used for video output devices.</para> - - <section> - <title>Querying Capabilities</title> - - <para>Devices supporting the video capture interface set the -<constant>V4L2_CAP_VIDEO_CAPTURE</constant> or -<constant>V4L2_CAP_VIDEO_CAPTURE_MPLANE</constant> flag in the -<structfield>capabilities</structfield> field of &v4l2-capability; -returned by the &VIDIOC-QUERYCAP; ioctl. As secondary device functions -they may also support the <link linkend="overlay">video overlay</link> -(<constant>V4L2_CAP_VIDEO_OVERLAY</constant>) and the <link -linkend="raw-vbi">raw VBI capture</link> -(<constant>V4L2_CAP_VBI_CAPTURE</constant>) interface. At least one of -the read/write or streaming I/O methods must be supported. Tuners and -audio inputs are optional.</para> - </section> - - <section> - <title>Supplemental Functions</title> - - <para>Video capture devices shall support <link -linkend="audio">audio input</link>, <link -linkend="tuner">tuner</link>, <link linkend="control">controls</link>, -<link linkend="crop">cropping and scaling</link> and <link -linkend="streaming-par">streaming parameter</link> ioctls as needed. -The <link linkend="video">video input</link> and <link -linkend="standard">video standard</link> ioctls must be supported by -all video capture devices.</para> - </section> - - <section> - <title>Image Format Negotiation</title> - - <para>The result of a capture operation is determined by -cropping and image format parameters. The former select an area of the -video picture to capture, the latter how images are stored in memory, -&ie; in RGB or YUV format, the number of bits per pixel or width and -height. Together they also define how images are scaled in the -process.</para> - - <para>As usual these parameters are <emphasis>not</emphasis> reset -at &func-open; time to permit Unix tool chains, programming a device -and then reading from it as if it was a plain file. Well written V4L2 -applications ensure they really get what they want, including cropping -and scaling.</para> - - <para>Cropping initialization at minimum requires to reset the -parameters to defaults. An example is given in <xref -linkend="crop" />.</para> - - <para>To query the current image format applications set the -<structfield>type</structfield> field of a &v4l2-format; to -<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> or -<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant> and call the -&VIDIOC-G-FMT; ioctl with a pointer to this structure. Drivers fill -the &v4l2-pix-format; <structfield>pix</structfield> or the -&v4l2-pix-format-mplane; <structfield>pix_mp</structfield> member of the -<structfield>fmt</structfield> union.</para> - - <para>To request different parameters applications set the -<structfield>type</structfield> field of a &v4l2-format; as above and -initialize all fields of the &v4l2-pix-format; -<structfield>vbi</structfield> member of the -<structfield>fmt</structfield> union, or better just modify the -results of <constant>VIDIOC_G_FMT</constant>, and call the -&VIDIOC-S-FMT; ioctl with a pointer to this structure. Drivers may -adjust the parameters and finally return the actual parameters as -<constant>VIDIOC_G_FMT</constant> does.</para> - - <para>Like <constant>VIDIOC_S_FMT</constant> the -&VIDIOC-TRY-FMT; ioctl can be used to learn about hardware limitations -without disabling I/O or possibly time consuming hardware -preparations.</para> - - <para>The contents of &v4l2-pix-format; and &v4l2-pix-format-mplane; -are discussed in <xref linkend="pixfmt" />. See also the specification of the -<constant>VIDIOC_G_FMT</constant>, <constant>VIDIOC_S_FMT</constant> -and <constant>VIDIOC_TRY_FMT</constant> ioctls for details. Video -capture devices must implement both the -<constant>VIDIOC_G_FMT</constant> and -<constant>VIDIOC_S_FMT</constant> ioctl, even if -<constant>VIDIOC_S_FMT</constant> ignores all requests and always -returns default parameters as <constant>VIDIOC_G_FMT</constant> does. -<constant>VIDIOC_TRY_FMT</constant> is optional.</para> - </section> - - <section> - <title>Reading Images</title> - - <para>A video capture device may support the <link -linkend="rw">read() function</link> and/or streaming (<link -linkend="mmap">memory mapping</link> or <link -linkend="userp">user pointer</link>) I/O. See <xref -linkend="io" /> for details.</para> - </section> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/dev-codec.xml b/Documentation/DocBook/v4l/dev-codec.xml deleted file mode 100644 index 6e156dc45b94..000000000000 --- a/Documentation/DocBook/v4l/dev-codec.xml +++ /dev/null @@ -1,26 +0,0 @@ - <title>Codec Interface</title> - - <note> - <title>Suspended</title> - - <para>This interface has been be suspended from the V4L2 API -implemented in Linux 2.6 until we have more experience with codec -device interfaces.</para> - </note> - - <para>A V4L2 codec can compress, decompress, transform, or otherwise -convert video data from one format into another format, in memory. -Applications send data to be converted to the driver through a -&func-write; call, and receive the converted data through a -&func-read; call. For efficiency a driver may also support streaming -I/O.</para> - - <para>[to do]</para> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/dev-effect.xml b/Documentation/DocBook/v4l/dev-effect.xml deleted file mode 100644 index 9c243beba0e6..000000000000 --- a/Documentation/DocBook/v4l/dev-effect.xml +++ /dev/null @@ -1,25 +0,0 @@ - <title>Effect Devices Interface</title> - - <note> - <title>Suspended</title> - - <para>This interface has been be suspended from the V4L2 API -implemented in Linux 2.6 until we have more experience with effect -device interfaces.</para> - </note> - - <para>A V4L2 video effect device can do image effects, filtering, or -combine two or more images or image streams. For example video -transitions or wipes. Applications send data to be processed and -receive the result data either with &func-read; and &func-write; -functions, or through the streaming I/O mechanism.</para> - - <para>[to do]</para> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/dev-event.xml b/Documentation/DocBook/v4l/dev-event.xml deleted file mode 100644 index be5a98fb4fab..000000000000 --- a/Documentation/DocBook/v4l/dev-event.xml +++ /dev/null @@ -1,31 +0,0 @@ - <title>Event Interface</title> - - <para>The V4L2 event interface provides means for user to get - immediately notified on certain conditions taking place on a device. - This might include start of frame or loss of signal events, for - example. - </para> - - <para>To receive events, the events the user is interested in first must - be subscribed using the &VIDIOC-SUBSCRIBE-EVENT; ioctl. Once an event is - subscribed, the events of subscribed types are dequeueable using the - &VIDIOC-DQEVENT; ioctl. Events may be unsubscribed using - VIDIOC_UNSUBSCRIBE_EVENT ioctl. The special event type V4L2_EVENT_ALL may - be used to unsubscribe all the events the driver supports.</para> - - <para>The event subscriptions and event queues are specific to file - handles. Subscribing an event on one file handle does not affect - other file handles. - </para> - - <para>The information on dequeueable events is obtained by using select or - poll system calls on video devices. The V4L2 events use POLLPRI events on - poll system call and exceptions on select system call. </para> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/dev-osd.xml b/Documentation/DocBook/v4l/dev-osd.xml deleted file mode 100644 index c9a68a2ccd33..000000000000 --- a/Documentation/DocBook/v4l/dev-osd.xml +++ /dev/null @@ -1,164 +0,0 @@ - <title>Video Output Overlay Interface</title> - <subtitle>Also known as On-Screen Display (OSD)</subtitle> - - <note> - <title>Experimental</title> - - <para>This is an <link linkend="experimental">experimental</link> -interface and may change in the future.</para> - </note> - - <para>Some video output devices can overlay a framebuffer image onto -the outgoing video signal. Applications can set up such an overlay -using this interface, which borrows structures and ioctls of the <link -linkend="overlay">Video Overlay</link> interface.</para> - - <para>The OSD function is accessible through the same character -special file as the <link linkend="capture">Video Output</link> function. -Note the default function of such a <filename>/dev/video</filename> device -is video capturing or output. The OSD function is only available after -calling the &VIDIOC-S-FMT; ioctl.</para> - - <section> - <title>Querying Capabilities</title> - - <para>Devices supporting the <wordasword>Video Output -Overlay</wordasword> interface set the -<constant>V4L2_CAP_VIDEO_OUTPUT_OVERLAY</constant> flag in the -<structfield>capabilities</structfield> field of &v4l2-capability; -returned by the &VIDIOC-QUERYCAP; ioctl.</para> - </section> - - <section> - <title>Framebuffer</title> - - <para>Contrary to the <wordasword>Video Overlay</wordasword> -interface the framebuffer is normally implemented on the TV card and -not the graphics card. On Linux it is accessible as a framebuffer -device (<filename>/dev/fbN</filename>). Given a V4L2 device, -applications can find the corresponding framebuffer device by calling -the &VIDIOC-G-FBUF; ioctl. It returns, amongst other information, the -physical address of the framebuffer in the -<structfield>base</structfield> field of &v4l2-framebuffer;. The -framebuffer device ioctl <constant>FBIOGET_FSCREENINFO</constant> -returns the same address in the <structfield>smem_start</structfield> -field of struct <structname>fb_fix_screeninfo</structname>. The -<constant>FBIOGET_FSCREENINFO</constant> ioctl and struct -<structname>fb_fix_screeninfo</structname> are defined in the -<filename>linux/fb.h</filename> header file.</para> - - <para>The width and height of the framebuffer depends on the -current video standard. A V4L2 driver may reject attempts to change -the video standard (or any other ioctl which would imply a framebuffer -size change) with an &EBUSY; until all applications closed the -framebuffer device.</para> - - <example> - <title>Finding a framebuffer device for OSD</title> - - <programlisting> -#include <linux/fb.h> - -&v4l2-framebuffer; fbuf; -unsigned int i; -int fb_fd; - -if (-1 == ioctl (fd, VIDIOC_G_FBUF, &fbuf)) { - perror ("VIDIOC_G_FBUF"); - exit (EXIT_FAILURE); -} - -for (i = 0; i > 30; ++i) { - char dev_name[16]; - struct fb_fix_screeninfo si; - - snprintf (dev_name, sizeof (dev_name), "/dev/fb%u", i); - - fb_fd = open (dev_name, O_RDWR); - if (-1 == fb_fd) { - switch (errno) { - case ENOENT: /* no such file */ - case ENXIO: /* no driver */ - continue; - - default: - perror ("open"); - exit (EXIT_FAILURE); - } - } - - if (0 == ioctl (fb_fd, FBIOGET_FSCREENINFO, &si)) { - if (si.smem_start == (unsigned long) fbuf.base) - break; - } else { - /* Apparently not a framebuffer device. */ - } - - close (fb_fd); - fb_fd = -1; -} - -/* fb_fd is the file descriptor of the framebuffer device - for the video output overlay, or -1 if no device was found. */ -</programlisting> - </example> - </section> - - <section> - <title>Overlay Window and Scaling</title> - - <para>The overlay is controlled by source and target rectangles. -The source rectangle selects a subsection of the framebuffer image to -be overlaid, the target rectangle an area in the outgoing video signal -where the image will appear. Drivers may or may not support scaling, -and arbitrary sizes and positions of these rectangles. Further drivers -may support any (or none) of the clipping/blending methods defined for -the <link linkend="overlay">Video Overlay</link> interface.</para> - - <para>A &v4l2-window; defines the size of the source rectangle, -its position in the framebuffer and the clipping/blending method to be -used for the overlay. To get the current parameters applications set -the <structfield>type</structfield> field of a &v4l2-format; to -<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY</constant> and call the -&VIDIOC-G-FMT; ioctl. The driver fills the -<structname>v4l2_window</structname> substructure named -<structfield>win</structfield>. It is not possible to retrieve a -previously programmed clipping list or bitmap.</para> - - <para>To program the source rectangle applications set the -<structfield>type</structfield> field of a &v4l2-format; to -<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY</constant>, initialize -the <structfield>win</structfield> substructure and call the -&VIDIOC-S-FMT; ioctl. The driver adjusts the parameters against -hardware limits and returns the actual parameters as -<constant>VIDIOC_G_FMT</constant> does. Like -<constant>VIDIOC_S_FMT</constant>, the &VIDIOC-TRY-FMT; ioctl can be -used to learn about driver capabilities without actually changing -driver state. Unlike <constant>VIDIOC_S_FMT</constant> this also works -after the overlay has been enabled.</para> - - <para>A &v4l2-crop; defines the size and position of the target -rectangle. The scaling factor of the overlay is implied by the width -and height given in &v4l2-window; and &v4l2-crop;. The cropping API -applies to <wordasword>Video Output</wordasword> and <wordasword>Video -Output Overlay</wordasword> devices in the same way as to -<wordasword>Video Capture</wordasword> and <wordasword>Video -Overlay</wordasword> devices, merely reversing the direction of the -data flow. For more information see <xref linkend="crop" />.</para> - </section> - - <section> - <title>Enabling Overlay</title> - - <para>There is no V4L2 ioctl to enable or disable the overlay, -however the framebuffer interface of the driver may support the -<constant>FBIOBLANK</constant> ioctl.</para> - </section> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/dev-output.xml b/Documentation/DocBook/v4l/dev-output.xml deleted file mode 100644 index 919e22c53854..000000000000 --- a/Documentation/DocBook/v4l/dev-output.xml +++ /dev/null @@ -1,114 +0,0 @@ - <title>Video Output Interface</title> - - <para>Video output devices encode stills or image sequences as -analog video signal. With this interface applications can -control the encoding process and move images from user space to -the driver.</para> - - <para>Conventionally V4L2 video output devices are accessed through -character device special files named <filename>/dev/video</filename> -and <filename>/dev/video0</filename> to -<filename>/dev/video63</filename> with major number 81 and minor -numbers 0 to 63. <filename>/dev/video</filename> is typically a -symbolic link to the preferred video device. Note the same device -files are used for video capture devices.</para> - - <section> - <title>Querying Capabilities</title> - - <para>Devices supporting the video output interface set the -<constant>V4L2_CAP_VIDEO_OUTPUT</constant> or -<constant>V4L2_CAP_VIDEO_OUTPUT_MPLANE</constant> flag in the -<structfield>capabilities</structfield> field of &v4l2-capability; -returned by the &VIDIOC-QUERYCAP; ioctl. As secondary device functions -they may also support the <link linkend="raw-vbi">raw VBI -output</link> (<constant>V4L2_CAP_VBI_OUTPUT</constant>) interface. At -least one of the read/write or streaming I/O methods must be -supported. Modulators and audio outputs are optional.</para> - </section> - - <section> - <title>Supplemental Functions</title> - - <para>Video output devices shall support <link -linkend="audio">audio output</link>, <link -linkend="tuner">modulator</link>, <link linkend="control">controls</link>, -<link linkend="crop">cropping and scaling</link> and <link -linkend="streaming-par">streaming parameter</link> ioctls as needed. -The <link linkend="video">video output</link> and <link -linkend="standard">video standard</link> ioctls must be supported by -all video output devices.</para> - </section> - - <section> - <title>Image Format Negotiation</title> - - <para>The output is determined by cropping and image format -parameters. The former select an area of the video picture where the -image will appear, the latter how images are stored in memory, &ie; in -RGB or YUV format, the number of bits per pixel or width and height. -Together they also define how images are scaled in the process.</para> - - <para>As usual these parameters are <emphasis>not</emphasis> reset -at &func-open; time to permit Unix tool chains, programming a device -and then writing to it as if it was a plain file. Well written V4L2 -applications ensure they really get what they want, including cropping -and scaling.</para> - - <para>Cropping initialization at minimum requires to reset the -parameters to defaults. An example is given in <xref -linkend="crop" />.</para> - - <para>To query the current image format applications set the -<structfield>type</structfield> field of a &v4l2-format; to -<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> or -<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant> and call the -&VIDIOC-G-FMT; ioctl with a pointer to this structure. Drivers fill -the &v4l2-pix-format; <structfield>pix</structfield> or the -&v4l2-pix-format-mplane; <structfield>pix_mp</structfield> member of the -<structfield>fmt</structfield> union.</para> - - <para>To request different parameters applications set the -<structfield>type</structfield> field of a &v4l2-format; as above and -initialize all fields of the &v4l2-pix-format; -<structfield>vbi</structfield> member of the -<structfield>fmt</structfield> union, or better just modify the -results of <constant>VIDIOC_G_FMT</constant>, and call the -&VIDIOC-S-FMT; ioctl with a pointer to this structure. Drivers may -adjust the parameters and finally return the actual parameters as -<constant>VIDIOC_G_FMT</constant> does.</para> - - <para>Like <constant>VIDIOC_S_FMT</constant> the -&VIDIOC-TRY-FMT; ioctl can be used to learn about hardware limitations -without disabling I/O or possibly time consuming hardware -preparations.</para> - - <para>The contents of &v4l2-pix-format; and &v4l2-pix-format-mplane; -are discussed in <xref linkend="pixfmt" />. See also the specification of the -<constant>VIDIOC_G_FMT</constant>, <constant>VIDIOC_S_FMT</constant> -and <constant>VIDIOC_TRY_FMT</constant> ioctls for details. Video -output devices must implement both the -<constant>VIDIOC_G_FMT</constant> and -<constant>VIDIOC_S_FMT</constant> ioctl, even if -<constant>VIDIOC_S_FMT</constant> ignores all requests and always -returns default parameters as <constant>VIDIOC_G_FMT</constant> does. -<constant>VIDIOC_TRY_FMT</constant> is optional.</para> - </section> - - <section> - <title>Writing Images</title> - - <para>A video output device may support the <link -linkend="rw">write() function</link> and/or streaming (<link -linkend="mmap">memory mapping</link> or <link -linkend="userp">user pointer</link>) I/O. See <xref -linkend="io" /> for details.</para> - </section> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/dev-overlay.xml b/Documentation/DocBook/v4l/dev-overlay.xml deleted file mode 100644 index 92513cf79150..000000000000 --- a/Documentation/DocBook/v4l/dev-overlay.xml +++ /dev/null @@ -1,379 +0,0 @@ - <title>Video Overlay Interface</title> - <subtitle>Also known as Framebuffer Overlay or Previewing</subtitle> - - <para>Video overlay devices have the ability to genlock (TV-)video -into the (VGA-)video signal of a graphics card, or to store captured -images directly in video memory of a graphics card, typically with -clipping. This can be considerable more efficient than capturing -images and displaying them by other means. In the old days when only -nuclear power plants needed cooling towers this used to be the only -way to put live video into a window.</para> - - <para>Video overlay devices are accessed through the same character -special files as <link linkend="capture">video capture</link> devices. -Note the default function of a <filename>/dev/video</filename> device -is video capturing. The overlay function is only available after -calling the &VIDIOC-S-FMT; ioctl.</para> - - <para>The driver may support simultaneous overlay and capturing -using the read/write and streaming I/O methods. If so, operation at -the nominal frame rate of the video standard is not guaranteed. Frames -may be directed away from overlay to capture, or one field may be used -for overlay and the other for capture if the capture parameters permit -this.</para> - - <para>Applications should use different file descriptors for -capturing and overlay. This must be supported by all drivers capable -of simultaneous capturing and overlay. Optionally these drivers may -also permit capturing and overlay with a single file descriptor for -compatibility with V4L and earlier versions of V4L2.<footnote> - <para>A common application of two file descriptors is the -XFree86 <link linkend="xvideo">Xv/V4L</link> interface driver and -a V4L2 application. While the X server controls video overlay, the -application can take advantage of memory mapping and DMA.</para> - <para>In the opinion of the designers of this API, no driver -writer taking the efforts to support simultaneous capturing and -overlay will restrict this ability by requiring a single file -descriptor, as in V4L and earlier versions of V4L2. Making this -optional means applications depending on two file descriptors need -backup routines to be compatible with all drivers, which is -considerable more work than using two fds in applications which do -not. Also two fd's fit the general concept of one file descriptor for -each logical stream. Hence as a complexity trade-off drivers -<emphasis>must</emphasis> support two file descriptors and -<emphasis>may</emphasis> support single fd operation.</para> - </footnote></para> - - <section> - <title>Querying Capabilities</title> - - <para>Devices supporting the video overlay interface set the -<constant>V4L2_CAP_VIDEO_OVERLAY</constant> flag in the -<structfield>capabilities</structfield> field of &v4l2-capability; -returned by the &VIDIOC-QUERYCAP; ioctl. The overlay I/O method specified -below must be supported. Tuners and audio inputs are optional.</para> - </section> - - <section> - <title>Supplemental Functions</title> - - <para>Video overlay devices shall support <link -linkend="audio">audio input</link>, <link -linkend="tuner">tuner</link>, <link linkend="control">controls</link>, -<link linkend="crop">cropping and scaling</link> and <link -linkend="streaming-par">streaming parameter</link> ioctls as needed. -The <link linkend="video">video input</link> and <link -linkend="standard">video standard</link> ioctls must be supported by -all video overlay devices.</para> - </section> - - <section> - <title>Setup</title> - - <para>Before overlay can commence applications must program the -driver with frame buffer parameters, namely the address and size of -the frame buffer and the image format, for example RGB 5:6:5. The -&VIDIOC-G-FBUF; and &VIDIOC-S-FBUF; ioctls are available to get -and set these parameters, respectively. The -<constant>VIDIOC_S_FBUF</constant> ioctl is privileged because it -allows to set up DMA into physical memory, bypassing the memory -protection mechanisms of the kernel. Only the superuser can change the -frame buffer address and size. Users are not supposed to run TV -applications as root or with SUID bit set. A small helper application -with suitable privileges should query the graphics system and program -the V4L2 driver at the appropriate time.</para> - - <para>Some devices add the video overlay to the output signal -of the graphics card. In this case the frame buffer is not modified by -the video device, and the frame buffer address and pixel format are -not needed by the driver. The <constant>VIDIOC_S_FBUF</constant> ioctl -is not privileged. An application can check for this type of device by -calling the <constant>VIDIOC_G_FBUF</constant> ioctl.</para> - - <para>A driver may support any (or none) of five clipping/blending -methods:<orderedlist> - <listitem> - <para>Chroma-keying displays the overlaid image only where -pixels in the primary graphics surface assume a certain color.</para> - </listitem> - <listitem> - <para>A bitmap can be specified where each bit corresponds -to a pixel in the overlaid image. When the bit is set, the -corresponding video pixel is displayed, otherwise a pixel of the -graphics surface.</para> - </listitem> - <listitem> - <para>A list of clipping rectangles can be specified. In -these regions <emphasis>no</emphasis> video is displayed, so the -graphics surface can be seen here.</para> - </listitem> - <listitem> - <para>The framebuffer has an alpha channel that can be used -to clip or blend the framebuffer with the video.</para> - </listitem> - <listitem> - <para>A global alpha value can be specified to blend the -framebuffer contents with video images.</para> - </listitem> - </orderedlist></para> - - <para>When simultaneous capturing and overlay is supported and -the hardware prohibits different image and frame buffer formats, the -format requested first takes precedence. The attempt to capture -(&VIDIOC-S-FMT;) or overlay (&VIDIOC-S-FBUF;) may fail with an -&EBUSY; or return accordingly modified parameters..</para> - </section> - - <section> - <title>Overlay Window</title> - - <para>The overlaid image is determined by cropping and overlay -window parameters. The former select an area of the video picture to -capture, the latter how images are overlaid and clipped. Cropping -initialization at minimum requires to reset the parameters to -defaults. An example is given in <xref linkend="crop" />.</para> - - <para>The overlay window is described by a &v4l2-window;. It -defines the size of the image, its position over the graphics surface -and the clipping to be applied. To get the current parameters -applications set the <structfield>type</structfield> field of a -&v4l2-format; to <constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant> and -call the &VIDIOC-G-FMT; ioctl. The driver fills the -<structname>v4l2_window</structname> substructure named -<structfield>win</structfield>. It is not possible to retrieve a -previously programmed clipping list or bitmap.</para> - - <para>To program the overlay window applications set the -<structfield>type</structfield> field of a &v4l2-format; to -<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, initialize the -<structfield>win</structfield> substructure and call the -&VIDIOC-S-FMT; ioctl. The driver adjusts the parameters against -hardware limits and returns the actual parameters as -<constant>VIDIOC_G_FMT</constant> does. Like -<constant>VIDIOC_S_FMT</constant>, the &VIDIOC-TRY-FMT; ioctl can be -used to learn about driver capabilities without actually changing -driver state. Unlike <constant>VIDIOC_S_FMT</constant> this also works -after the overlay has been enabled.</para> - - <para>The scaling factor of the overlaid image is implied by the -width and height given in &v4l2-window; and the size of the cropping -rectangle. For more information see <xref linkend="crop" />.</para> - - <para>When simultaneous capturing and overlay is supported and -the hardware prohibits different image and window sizes, the size -requested first takes precedence. The attempt to capture or overlay as -well (&VIDIOC-S-FMT;) may fail with an &EBUSY; or return accordingly -modified parameters.</para> - - <table pgwide="1" frame="none" id="v4l2-window"> - <title>struct <structname>v4l2_window</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>&v4l2-rect;</entry> - <entry><structfield>w</structfield></entry> - <entry>Size and position of the window relative to the -top, left corner of the frame buffer defined with &VIDIOC-S-FBUF;. The -window can extend the frame buffer width and height, the -<structfield>x</structfield> and <structfield>y</structfield> -coordinates can be negative, and it can lie completely outside the -frame buffer. The driver clips the window accordingly, or if that is -not possible, modifies its size and/or position.</entry> - </row> - <row> - <entry>&v4l2-field;</entry> - <entry><structfield>field</structfield></entry> - <entry>Applications set this field to determine which -video field shall be overlaid, typically one of -<constant>V4L2_FIELD_ANY</constant> (0), -<constant>V4L2_FIELD_TOP</constant>, -<constant>V4L2_FIELD_BOTTOM</constant> or -<constant>V4L2_FIELD_INTERLACED</constant>. Drivers may have to choose -a different field order and return the actual setting here.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>chromakey</structfield></entry> - <entry>When chroma-keying has been negotiated with -&VIDIOC-S-FBUF; applications set this field to the desired pixel value -for the chroma key. The format is the same as the pixel format of the -framebuffer (&v4l2-framebuffer; -<structfield>fmt.pixelformat</structfield> field), with bytes in host -order. E. g. for <link -linkend="V4L2-PIX-FMT-BGR32"><constant>V4L2_PIX_FMT_BGR24</constant></link> -the value should be 0xRRGGBB on a little endian, 0xBBGGRR on a big -endian host.</entry> - </row> - <row> - <entry>&v4l2-clip; *</entry> - <entry><structfield>clips</structfield></entry> - <entry>When chroma-keying has <emphasis>not</emphasis> -been negotiated and &VIDIOC-G-FBUF; indicated this capability, -applications can set this field to point to an array of -clipping rectangles.</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>Like the window coordinates -<structfield>w</structfield>, clipping rectangles are defined relative -to the top, left corner of the frame buffer. However clipping -rectangles must not extend the frame buffer width and height, and they -must not overlap. If possible applications should merge adjacent -rectangles. Whether this must create x-y or y-x bands, or the order of -rectangles, is not defined. When clip lists are not supported the -driver ignores this field. Its contents after calling &VIDIOC-S-FMT; -are undefined.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>clipcount</structfield></entry> - <entry>When the application set the -<structfield>clips</structfield> field, this field must contain the -number of clipping rectangles in the list. When clip lists are not -supported the driver ignores this field, its contents after calling -<constant>VIDIOC_S_FMT</constant> are undefined. When clip lists are -supported but no clipping is desired this field must be set to -zero.</entry> - </row> - <row> - <entry>void *</entry> - <entry><structfield>bitmap</structfield></entry> - <entry>When chroma-keying has -<emphasis>not</emphasis> been negotiated and &VIDIOC-G-FBUF; indicated -this capability, applications can set this field to point to a -clipping bit mask.</entry> - </row> - <row> - <entry spanname="hspan"><para>It must be of the same size -as the window, <structfield>w.width</structfield> and -<structfield>w.height</structfield>. Each bit corresponds to a pixel -in the overlaid image, which is displayed only when the bit is -<emphasis>set</emphasis>. Pixel coordinates translate to bits like: -<programlisting> -((__u8 *) <structfield>bitmap</structfield>)[<structfield>w.width</structfield> * y + x / 8] & (1 << (x & 7))</programlisting></para><para>where <structfield>0</structfield> ≤ x < -<structfield>w.width</structfield> and <structfield>0</structfield> ≤ -y <<structfield>w.height</structfield>.<footnote> - <para>Should we require - <structfield>w.width</structfield> to be a multiple of - eight?</para> - </footnote></para><para>When a clipping -bit mask is not supported the driver ignores this field, its contents -after calling &VIDIOC-S-FMT; are undefined. When a bit mask is supported -but no clipping is desired this field must be set to -<constant>NULL</constant>.</para><para>Applications need not create a -clip list or bit mask. When they pass both, or despite negotiating -chroma-keying, the results are undefined. Regardless of the chosen -method, the clipping abilities of the hardware may be limited in -quantity or quality. The results when these limits are exceeded are -undefined.<footnote> - <para>When the image is written into frame buffer -memory it will be undesirable if the driver clips out less pixels -than expected, because the application and graphics system are not -aware these regions need to be refreshed. The driver should clip out -more pixels or not write the image at all.</para> - </footnote></para></entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>global_alpha</structfield></entry> - <entry>The global alpha value used to blend the -framebuffer with video images, if global alpha blending has been -negotiated (<constant>V4L2_FBUF_FLAG_GLOBAL_ALPHA</constant>, see -&VIDIOC-S-FBUF;, <xref linkend="framebuffer-flags" />).</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>Note this field was added in Linux 2.6.23, extending the structure. However -the <link linkend="vidioc-g-fmt">VIDIOC_G/S/TRY_FMT</link> ioctls, -which take a pointer to a <link -linkend="v4l2-format">v4l2_format</link> parent structure with padding -bytes at the end, are not affected.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-clip"> - <title>struct <structname>v4l2_clip</structname><footnote> - <para>The X Window system defines "regions" which are -vectors of struct BoxRec { short x1, y1, x2, y2; } with width = x2 - -x1 and height = y2 - y1, so one cannot pass X11 clip lists -directly.</para> - </footnote></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>&v4l2-rect;</entry> - <entry><structfield>c</structfield></entry> - <entry>Coordinates of the clipping rectangle, relative to -the top, left corner of the frame buffer. Only window pixels -<emphasis>outside</emphasis> all clipping rectangles are -displayed.</entry> - </row> - <row> - <entry>&v4l2-clip; *</entry> - <entry><structfield>next</structfield></entry> - <entry>Pointer to the next clipping rectangle, NULL when -this is the last rectangle. Drivers ignore this field, it cannot be -used to pass a linked list of clipping rectangles.</entry> - </row> - </tbody> - </tgroup> - </table> - - <!-- NB for easier reading this table is duplicated - in the vidioc-cropcap chapter.--> - - <table pgwide="1" frame="none" id="v4l2-rect"> - <title>struct <structname>v4l2_rect</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__s32</entry> - <entry><structfield>left</structfield></entry> - <entry>Horizontal offset of the top, left corner of the -rectangle, in pixels.</entry> - </row> - <row> - <entry>__s32</entry> - <entry><structfield>top</structfield></entry> - <entry>Vertical offset of the top, left corner of the -rectangle, in pixels. Offsets increase to the right and down.</entry> - </row> - <row> - <entry>__s32</entry> - <entry><structfield>width</structfield></entry> - <entry>Width of the rectangle, in pixels.</entry> - </row> - <row> - <entry>__s32</entry> - <entry><structfield>height</structfield></entry> - <entry>Height of the rectangle, in pixels. Width and -height cannot be negative, the fields are signed for hysterical -reasons. <!-- video4linux-list@redhat.com on 22 Oct 2002 subject -"Re:[V4L][patches!] Re:v4l2/kernel-2.5" --></entry> - </row> - </tbody> - </tgroup> - </table> - </section> - - <section> - <title>Enabling Overlay</title> - - <para>To start or stop the frame buffer overlay applications call -the &VIDIOC-OVERLAY; ioctl.</para> - </section> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/dev-radio.xml b/Documentation/DocBook/v4l/dev-radio.xml deleted file mode 100644 index 73aa90b45b34..000000000000 --- a/Documentation/DocBook/v4l/dev-radio.xml +++ /dev/null @@ -1,57 +0,0 @@ - <title>Radio Interface</title> - - <para>This interface is intended for AM and FM (analog) radio -receivers and transmitters.</para> - - <para>Conventionally V4L2 radio devices are accessed through -character device special files named <filename>/dev/radio</filename> -and <filename>/dev/radio0</filename> to -<filename>/dev/radio63</filename> with major number 81 and minor -numbers 64 to 127.</para> - - <section> - <title>Querying Capabilities</title> - - <para>Devices supporting the radio interface set the -<constant>V4L2_CAP_RADIO</constant> and -<constant>V4L2_CAP_TUNER</constant> or -<constant>V4L2_CAP_MODULATOR</constant> flag in the -<structfield>capabilities</structfield> field of &v4l2-capability; -returned by the &VIDIOC-QUERYCAP; ioctl. Other combinations of -capability flags are reserved for future extensions.</para> - </section> - - <section> - <title>Supplemental Functions</title> - - <para>Radio devices can support <link -linkend="control">controls</link>, and must support the <link -linkend="tuner">tuner or modulator</link> ioctls.</para> - - <para>They do not support the video input or output, audio input -or output, video standard, cropping and scaling, compression and -streaming parameter, or overlay ioctls. All other ioctls and I/O -methods are reserved for future extensions.</para> - </section> - - <section> - <title>Programming</title> - - <para>Radio devices may have a couple audio controls (as discussed -in <xref linkend="control" />) such as a volume control, possibly custom -controls. Further all radio devices have one tuner or modulator (these are -discussed in <xref linkend="tuner" />) with index number zero to select -the radio frequency and to determine if a monaural or FM stereo -program is received/emitted. Drivers switch automatically between AM and FM -depending on the selected frequency. The &VIDIOC-G-TUNER; or -&VIDIOC-G-MODULATOR; ioctl -reports the supported frequency range.</para> - </section> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/dev-raw-vbi.xml b/Documentation/DocBook/v4l/dev-raw-vbi.xml deleted file mode 100644 index c5a70bdfaf27..000000000000 --- a/Documentation/DocBook/v4l/dev-raw-vbi.xml +++ /dev/null @@ -1,347 +0,0 @@ - <title>Raw VBI Data Interface</title> - - <para>VBI is an abbreviation of Vertical Blanking Interval, a gap -in the sequence of lines of an analog video signal. During VBI -no picture information is transmitted, allowing some time while the -electron beam of a cathode ray tube TV returns to the top of the -screen. Using an oscilloscope you will find here the vertical -synchronization pulses and short data packages ASK -modulated<footnote><para>ASK: Amplitude-Shift Keying. A high signal -level represents a '1' bit, a low level a '0' bit.</para></footnote> -onto the video signal. These are transmissions of services such as -Teletext or Closed Caption.</para> - - <para>Subject of this interface type is raw VBI data, as sampled off -a video signal, or to be added to a signal for output. -The data format is similar to uncompressed video images, a number of -lines times a number of samples per line, we call this a VBI image.</para> - - <para>Conventionally V4L2 VBI devices are accessed through character -device special files named <filename>/dev/vbi</filename> and -<filename>/dev/vbi0</filename> to <filename>/dev/vbi31</filename> with -major number 81 and minor numbers 224 to 255. -<filename>/dev/vbi</filename> is typically a symbolic link to the -preferred VBI device. This convention applies to both input and output -devices.</para> - - <para>To address the problems of finding related video and VBI -devices VBI capturing and output is also available as device function -under <filename>/dev/video</filename>. To capture or output raw VBI -data with these devices applications must call the &VIDIOC-S-FMT; -ioctl. Accessed as <filename>/dev/vbi</filename>, raw VBI capturing -or output is the default device function.</para> - - <section> - <title>Querying Capabilities</title> - - <para>Devices supporting the raw VBI capturing or output API set -the <constant>V4L2_CAP_VBI_CAPTURE</constant> or -<constant>V4L2_CAP_VBI_OUTPUT</constant> flags, respectively, in the -<structfield>capabilities</structfield> field of &v4l2-capability; -returned by the &VIDIOC-QUERYCAP; ioctl. At least one of the -read/write, streaming or asynchronous I/O methods must be -supported. VBI devices may or may not have a tuner or modulator.</para> - </section> - - <section> - <title>Supplemental Functions</title> - - <para>VBI devices shall support <link linkend="video">video -input or output</link>, <link linkend="tuner">tuner or -modulator</link>, and <link linkend="control">controls</link> ioctls -as needed. The <link linkend="standard">video standard</link> ioctls provide -information vital to program a VBI device, therefore must be -supported.</para> - </section> - - <section> - <title>Raw VBI Format Negotiation</title> - - <para>Raw VBI sampling abilities can vary, in particular the -sampling frequency. To properly interpret the data V4L2 specifies an -ioctl to query the sampling parameters. Moreover, to allow for some -flexibility applications can also suggest different parameters.</para> - - <para>As usual these parameters are <emphasis>not</emphasis> -reset at &func-open; time to permit Unix tool chains, programming a -device and then reading from it as if it was a plain file. Well -written V4L2 applications should always ensure they really get what -they want, requesting reasonable parameters and then checking if the -actual parameters are suitable.</para> - - <para>To query the current raw VBI capture parameters -applications set the <structfield>type</structfield> field of a -&v4l2-format; to <constant>V4L2_BUF_TYPE_VBI_CAPTURE</constant> or -<constant>V4L2_BUF_TYPE_VBI_OUTPUT</constant>, and call the -&VIDIOC-G-FMT; ioctl with a pointer to this structure. Drivers fill -the &v4l2-vbi-format; <structfield>vbi</structfield> member of the -<structfield>fmt</structfield> union.</para> - - <para>To request different parameters applications set the -<structfield>type</structfield> field of a &v4l2-format; as above and -initialize all fields of the &v4l2-vbi-format; -<structfield>vbi</structfield> member of the -<structfield>fmt</structfield> union, or better just modify the -results of <constant>VIDIOC_G_FMT</constant>, and call the -&VIDIOC-S-FMT; ioctl with a pointer to this structure. Drivers return -an &EINVAL; only when the given parameters are ambiguous, otherwise -they modify the parameters according to the hardware capabilites and -return the actual parameters. When the driver allocates resources at -this point, it may return an &EBUSY; to indicate the returned -parameters are valid but the required resources are currently not -available. That may happen for instance when the video and VBI areas -to capture would overlap, or when the driver supports multiple opens -and another process already requested VBI capturing or output. Anyway, -applications must expect other resource allocation points which may -return <errorcode>EBUSY</errorcode>, at the &VIDIOC-STREAMON; ioctl -and the first read(), write() and select() call.</para> - - <para>VBI devices must implement both the -<constant>VIDIOC_G_FMT</constant> and -<constant>VIDIOC_S_FMT</constant> ioctl, even if -<constant>VIDIOC_S_FMT</constant> ignores all requests and always -returns default parameters as <constant>VIDIOC_G_FMT</constant> does. -<constant>VIDIOC_TRY_FMT</constant> is optional.</para> - - <table pgwide="1" frame="none" id="v4l2-vbi-format"> - <title>struct <structname>v4l2_vbi_format</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>sampling_rate</structfield></entry> - <entry>Samples per second, i. e. unit 1 Hz.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>offset</structfield></entry> - <entry><para>Horizontal offset of the VBI image, -relative to the leading edge of the line synchronization pulse and -counted in samples: The first sample in the VBI image will be located -<structfield>offset</structfield> / -<structfield>sampling_rate</structfield> seconds following the leading -edge. See also <xref linkend="vbi-hsync" />.</para></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>samples_per_line</structfield></entry> - <entry></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>sample_format</structfield></entry> - <entry><para>Defines the sample format as in <xref -linkend="pixfmt" />, a four-character-code.<footnote> - <para>A few devices may be unable to -sample VBI data at all but can extend the video capture window to the -VBI region.</para> - </footnote> Usually this is -<constant>V4L2_PIX_FMT_GREY</constant>, i. e. each sample -consists of 8 bits with lower values oriented towards the black level. -Do not assume any other correlation of values with the signal level. -For example, the MSB does not necessarily indicate if the signal is -'high' or 'low' because 128 may not be the mean value of the -signal. Drivers shall not convert the sample format by software.</para></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>start</structfield>[2]</entry> - <entry>This is the scanning system line number -associated with the first line of the VBI image, of the first and the -second field respectively. See <xref linkend="vbi-525" /> and -<xref linkend="vbi-625" /> for valid values. VBI input drivers can -return start values 0 if the hardware cannot reliable identify -scanning lines, VBI acquisition may not require this -information.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>count</structfield>[2]</entry> - <entry>The number of lines in the first and second -field image, respectively.</entry> - </row> - <row> - <entry spanname="hspan"><para>Drivers should be as -flexibility as possible. For example, it may be possible to extend or -move the VBI capture window down to the picture area, implementing a -'full field mode' to capture data service transmissions embedded in -the picture.</para><para>An application can set the first or second -<structfield>count</structfield> value to zero if no data is required -from the respective field; <structfield>count</structfield>[1] if the -scanning system is progressive, &ie; not interlaced. The -corresponding start value shall be ignored by the application and -driver. Anyway, drivers may not support single field capturing and -return both count values non-zero.</para><para>Both -<structfield>count</structfield> values set to zero, or line numbers -outside the bounds depicted in <xref linkend="vbi-525" /> and <xref - linkend="vbi-625" />, or a field image covering -lines of two fields, are invalid and shall not be returned by the -driver.</para><para>To initialize the <structfield>start</structfield> -and <structfield>count</structfield> fields, applications must first -determine the current video standard selection. The &v4l2-std-id; or -the <structfield>framelines</structfield> field of &v4l2-standard; can -be evaluated for this purpose.</para></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>flags</structfield></entry> - <entry>See <xref linkend="vbifmt-flags" /> below. Currently -only drivers set flags, applications must set this field to -zero.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[2]</entry> - <entry>This array is reserved for future extensions. -Drivers and applications must set it to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="vbifmt-flags"> - <title>Raw VBI Format Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_VBI_UNSYNC</constant></entry> - <entry>0x0001</entry> - <entry><para>This flag indicates hardware which does not -properly distinguish between fields. Normally the VBI image stores the -first field (lower scanning line numbers) first in memory. This may be -a top or bottom field depending on the video standard. When this flag -is set the first or second field may be stored first, however the -fields are still in correct temporal order with the older field first -in memory.<footnote> - <para>Most VBI services transmit on both fields, but -some have different semantics depending on the field number. These -cannot be reliable decoded or encoded when -<constant>V4L2_VBI_UNSYNC</constant> is set.</para> - </footnote></para></entry> - </row> - <row> - <entry><constant>V4L2_VBI_INTERLACED</constant></entry> - <entry>0x0002</entry> - <entry>By default the two field images will be passed -sequentially; all lines of the first field followed by all lines of -the second field (compare <xref linkend="field-order" /> -<constant>V4L2_FIELD_SEQ_TB</constant> and -<constant>V4L2_FIELD_SEQ_BT</constant>, whether the top or bottom -field is first in memory depends on the video standard). When this -flag is set, the two fields are interlaced (cf. -<constant>V4L2_FIELD_INTERLACED</constant>). The first line of the -first field followed by the first line of the second field, then the -two second lines, and so on. Such a layout may be necessary when the -hardware has been programmed to capture or output interlaced video -images and is unable to separate the fields for VBI capturing at -the same time. For simplicity setting this flag implies that both -<structfield>count</structfield> values are equal and non-zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <figure id="vbi-hsync"> - <title>Line synchronization</title> - <mediaobject> - <imageobject> - <imagedata fileref="vbi_hsync.pdf" format="PS" /> - </imageobject> - <imageobject> - <imagedata fileref="vbi_hsync.gif" format="GIF" /> - </imageobject> - <textobject> - <phrase>Line synchronization diagram</phrase> - </textobject> - </mediaobject> - </figure> - - <figure id="vbi-525"> - <title>ITU-R 525 line numbering (M/NTSC and M/PAL)</title> - <mediaobject> - <imageobject> - <imagedata fileref="vbi_525.pdf" format="PS" /> - </imageobject> - <imageobject> - <imagedata fileref="vbi_525.gif" format="GIF" /> - </imageobject> - <textobject> - <phrase>NTSC field synchronization diagram</phrase> - </textobject> - <caption> - <para>(1) For the purpose of this specification field 2 -starts in line 264 and not 263.5 because half line capturing is not -supported.</para> - </caption> - </mediaobject> - </figure> - - <figure id="vbi-625"> - <title>ITU-R 625 line numbering</title> - <mediaobject> - <imageobject> - <imagedata fileref="vbi_625.pdf" format="PS" /> - </imageobject> - <imageobject> - <imagedata fileref="vbi_625.gif" format="GIF" /> - </imageobject> - <textobject> - <phrase>PAL/SECAM field synchronization diagram</phrase> - </textobject> - <caption> - <para>(1) For the purpose of this specification field 2 -starts in line 314 and not 313.5 because half line capturing is not -supported.</para> - </caption> - </mediaobject> - </figure> - - <para>Remember the VBI image format depends on the selected -video standard, therefore the application must choose a new standard or -query the current standard first. Attempts to read or write data ahead -of format negotiation, or after switching the video standard which may -invalidate the negotiated VBI parameters, should be refused by the -driver. A format change during active I/O is not permitted.</para> - </section> - - <section> - <title>Reading and writing VBI images</title> - - <para>To assure synchronization with the field number and easier -implementation, the smallest unit of data passed at a time is one -frame, consisting of two fields of VBI images immediately following in -memory.</para> - - <para>The total size of a frame computes as follows:</para> - - <programlisting> -(<structfield>count</structfield>[0] + <structfield>count</structfield>[1]) * -<structfield>samples_per_line</structfield> * sample size in bytes</programlisting> - - <para>The sample size is most likely always one byte, -applications must check the <structfield>sample_format</structfield> -field though, to function properly with other drivers.</para> - - <para>A VBI device may support <link - linkend="rw">read/write</link> and/or streaming (<link - linkend="mmap">memory mapping</link> or <link - linkend="userp">user pointer</link>) I/O. The latter bears the -possibility of synchronizing video and -VBI data by using buffer timestamps.</para> - - <para>Remember the &VIDIOC-STREAMON; ioctl and the first read(), -write() and select() call can be resource allocation points returning -an &EBUSY; if the required hardware resources are temporarily -unavailable, for example the device is already in use by another -process.</para> - </section> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/dev-rds.xml b/Documentation/DocBook/v4l/dev-rds.xml deleted file mode 100644 index 2427f54397e7..000000000000 --- a/Documentation/DocBook/v4l/dev-rds.xml +++ /dev/null @@ -1,204 +0,0 @@ - <title>RDS Interface</title> - - <para>The Radio Data System transmits supplementary -information in binary format, for example the station name or travel -information, on an inaudible audio subcarrier of a radio program. This -interface is aimed at devices capable of receiving and/or transmitting RDS -information.</para> - - <para>For more information see the core RDS standard <xref linkend="en50067" /> -and the RBDS standard <xref linkend="nrsc4" />.</para> - - <para>Note that the RBDS standard as is used in the USA is almost identical -to the RDS standard. Any RDS decoder/encoder can also handle RBDS. Only some of the -fields have slightly different meanings. See the RBDS standard for more -information.</para> - - <para>The RBDS standard also specifies support for MMBS (Modified Mobile Search). -This is a proprietary format which seems to be discontinued. The RDS interface does not -support this format. Should support for MMBS (or the so-called 'E blocks' in general) -be needed, then please contact the linux-media mailing list: &v4l-ml;.</para> - - <section> - <title>Querying Capabilities</title> - - <para>Devices supporting the RDS capturing API set -the <constant>V4L2_CAP_RDS_CAPTURE</constant> flag in -the <structfield>capabilities</structfield> field of &v4l2-capability; -returned by the &VIDIOC-QUERYCAP; ioctl. Any tuner that supports RDS -will set the <constant>V4L2_TUNER_CAP_RDS</constant> flag in -the <structfield>capability</structfield> field of &v4l2-tuner;. If -the driver only passes RDS blocks without interpreting the data -the <constant>V4L2_TUNER_SUB_RDS_BLOCK_IO</constant> flag has to be -set, see <link linkend="reading-rds-data">Reading RDS data</link>. -For future use the -flag <constant>V4L2_TUNER_SUB_RDS_CONTROLS</constant> has also been -defined. However, a driver for a radio tuner with this capability does -not yet exist, so if you are planning to write such a driver you -should discuss this on the linux-media mailing list: &v4l-ml;.</para> - - <para> Whether an RDS signal is present can be detected by looking -at the <structfield>rxsubchans</structfield> field of &v4l2-tuner;: -the <constant>V4L2_TUNER_SUB_RDS</constant> will be set if RDS data -was detected.</para> - - <para>Devices supporting the RDS output API -set the <constant>V4L2_CAP_RDS_OUTPUT</constant> flag in -the <structfield>capabilities</structfield> field of &v4l2-capability; -returned by the &VIDIOC-QUERYCAP; ioctl. -Any modulator that supports RDS will set the -<constant>V4L2_TUNER_CAP_RDS</constant> flag in the <structfield>capability</structfield> -field of &v4l2-modulator;. -In order to enable the RDS transmission one must set the <constant>V4L2_TUNER_SUB_RDS</constant> -bit in the <structfield>txsubchans</structfield> field of &v4l2-modulator;. -If the driver only passes RDS blocks without interpreting the data -the <constant>V4L2_TUNER_SUB_RDS_BLOCK_IO</constant> flag has to be set. If the -tuner is capable of handling RDS entities like program identification codes and radio -text, the flag <constant>V4L2_TUNER_SUB_RDS_CONTROLS</constant> should be set, -see <link linkend="writing-rds-data">Writing RDS data</link> and -<link linkend="fm-tx-controls">FM Transmitter Control Reference</link>.</para> - </section> - - <section id="reading-rds-data"> - <title>Reading RDS data</title> - - <para>RDS data can be read from the radio device -with the &func-read; function. The data is packed in groups of three bytes.</para> - </section> - - <section id="writing-rds-data"> - <title>Writing RDS data</title> - - <para>RDS data can be written to the radio device -with the &func-write; function. The data is packed in groups of three bytes, -as follows:</para> - </section> - - <section> - <title>RDS datastructures</title> - <table frame="none" pgwide="1" id="v4l2-rds-data"> - <title>struct -<structname>v4l2_rds_data</structname></title> - <tgroup cols="3"> - <colspec colname="c1" colwidth="1*" /> - <colspec colname="c2" colwidth="1*" /> - <colspec colname="c3" colwidth="5*" /> - <tbody valign="top"> - <row> - <entry>__u8</entry> - <entry><structfield>lsb</structfield></entry> - <entry>Least Significant Byte of RDS Block</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>msb</structfield></entry> - <entry>Most Significant Byte of RDS Block</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>block</structfield></entry> - <entry>Block description</entry> - </row> - </tbody> - </tgroup> - </table> - <table frame="none" pgwide="1" id="v4l2-rds-block"> - <title>Block description</title> - <tgroup cols="2"> - <colspec colname="c1" colwidth="1*" /> - <colspec colname="c2" colwidth="5*" /> - <tbody valign="top"> - <row> - <entry>Bits 0-2</entry> - <entry>Block (aka offset) of the received data.</entry> - </row> - <row> - <entry>Bits 3-5</entry> - <entry>Deprecated. Currently identical to bits 0-2. Do not use these bits.</entry> - </row> - <row> - <entry>Bit 6</entry> - <entry>Corrected bit. Indicates that an error was corrected for this data block.</entry> - </row> - <row> - <entry>Bit 7</entry> - <entry>Error bit. Indicates that an uncorrectable error occurred during reception of this block.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="v4l2-rds-block-codes"> - <title>Block defines</title> - <tgroup cols="4"> - <colspec colname="c1" colwidth="1*" /> - <colspec colname="c2" colwidth="1*" /> - <colspec colname="c3" colwidth="1*" /> - <colspec colname="c4" colwidth="5*" /> - <tbody valign="top"> - <row> - <entry>V4L2_RDS_BLOCK_MSK</entry> - <entry> </entry> - <entry>7</entry> - <entry>Mask for bits 0-2 to get the block ID.</entry> - </row> - <row> - <entry>V4L2_RDS_BLOCK_A</entry> - <entry> </entry> - <entry>0</entry> - <entry>Block A.</entry> - </row> - <row> - <entry>V4L2_RDS_BLOCK_B</entry> - <entry> </entry> - <entry>1</entry> - <entry>Block B.</entry> - </row> - <row> - <entry>V4L2_RDS_BLOCK_C</entry> - <entry> </entry> - <entry>2</entry> - <entry>Block C.</entry> - </row> - <row> - <entry>V4L2_RDS_BLOCK_D</entry> - <entry> </entry> - <entry>3</entry> - <entry>Block D.</entry> - </row> - <row> - <entry>V4L2_RDS_BLOCK_C_ALT</entry> - <entry> </entry> - <entry>4</entry> - <entry>Block C'.</entry> - </row> - <row> - <entry>V4L2_RDS_BLOCK_INVALID</entry> - <entry>read-only</entry> - <entry>7</entry> - <entry>An invalid block.</entry> - </row> - <row> - <entry>V4L2_RDS_BLOCK_CORRECTED</entry> - <entry>read-only</entry> - <entry>0x40</entry> - <entry>A bit error was detected but corrected.</entry> - </row> - <row> - <entry>V4L2_RDS_BLOCK_ERROR</entry> - <entry>read-only</entry> - <entry>0x80</entry> - <entry>An uncorrectable error occurred.</entry> - </row> - </tbody> - </tgroup> - </table> - </section> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/dev-sliced-vbi.xml b/Documentation/DocBook/v4l/dev-sliced-vbi.xml deleted file mode 100644 index 69e789fa7f7b..000000000000 --- a/Documentation/DocBook/v4l/dev-sliced-vbi.xml +++ /dev/null @@ -1,708 +0,0 @@ - <title>Sliced VBI Data Interface</title> - - <para>VBI stands for Vertical Blanking Interval, a gap in the -sequence of lines of an analog video signal. During VBI no picture -information is transmitted, allowing some time while the electron beam -of a cathode ray tube TV returns to the top of the screen.</para> - - <para>Sliced VBI devices use hardware to demodulate data transmitted -in the VBI. V4L2 drivers shall <emphasis>not</emphasis> do this by -software, see also the <link linkend="raw-vbi">raw VBI -interface</link>. The data is passed as short packets of fixed size, -covering one scan line each. The number of packets per video frame is -variable.</para> - - <para>Sliced VBI capture and output devices are accessed through the -same character special files as raw VBI devices. When a driver -supports both interfaces, the default function of a -<filename>/dev/vbi</filename> device is <emphasis>raw</emphasis> VBI -capturing or output, and the sliced VBI function is only available -after calling the &VIDIOC-S-FMT; ioctl as defined below. Likewise a -<filename>/dev/video</filename> device may support the sliced VBI API, -however the default function here is video capturing or output. -Different file descriptors must be used to pass raw and sliced VBI -data simultaneously, if this is supported by the driver.</para> - - <section> - <title>Querying Capabilities</title> - - <para>Devices supporting the sliced VBI capturing or output API -set the <constant>V4L2_CAP_SLICED_VBI_CAPTURE</constant> or -<constant>V4L2_CAP_SLICED_VBI_OUTPUT</constant> flag respectively, in -the <structfield>capabilities</structfield> field of &v4l2-capability; -returned by the &VIDIOC-QUERYCAP; ioctl. At least one of the -read/write, streaming or asynchronous <link linkend="io">I/O -methods</link> must be supported. Sliced VBI devices may have a tuner -or modulator.</para> - </section> - - <section> - <title>Supplemental Functions</title> - - <para>Sliced VBI devices shall support <link linkend="video">video -input or output</link> and <link linkend="tuner">tuner or -modulator</link> ioctls if they have these capabilities, and they may -support <link linkend="control">control</link> ioctls. The <link -linkend="standard">video standard</link> ioctls provide information -vital to program a sliced VBI device, therefore must be -supported.</para> - </section> - - <section id="sliced-vbi-format-negotitation"> - <title>Sliced VBI Format Negotiation</title> - - <para>To find out which data services are supported by the -hardware applications can call the &VIDIOC-G-SLICED-VBI-CAP; ioctl. -All drivers implementing the sliced VBI interface must support this -ioctl. The results may differ from those of the &VIDIOC-S-FMT; ioctl -when the number of VBI lines the hardware can capture or output per -frame, or the number of services it can identify on a given line are -limited. For example on PAL line 16 the hardware may be able to look -for a VPS or Teletext signal, but not both at the same time.</para> - - <para>To determine the currently selected services applications -set the <structfield>type </structfield> field of &v4l2-format; to -<constant> V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</constant> or <constant> -V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</constant>, and the &VIDIOC-G-FMT; -ioctl fills the <structfield>fmt.sliced</structfield> member, a -&v4l2-sliced-vbi-format;.</para> - - <para>Applications can request different parameters by -initializing or modifying the <structfield>fmt.sliced</structfield> -member and calling the &VIDIOC-S-FMT; ioctl with a pointer to the -<structname>v4l2_format</structname> structure.</para> - - <para>The sliced VBI API is more complicated than the raw VBI API -because the hardware must be told which VBI service to expect on each -scan line. Not all services may be supported by the hardware on all -lines (this is especially true for VBI output where Teletext is often -unsupported and other services can only be inserted in one specific -line). In many cases, however, it is sufficient to just set the -<structfield>service_set</structfield> field to the required services -and let the driver fill the <structfield>service_lines</structfield> -array according to hardware capabilities. Only if more precise control -is needed should the programmer set the -<structfield>service_lines</structfield> array explicitly.</para> - - <para>The &VIDIOC-S-FMT; ioctl modifies the parameters -according to hardware capabilities. When the driver allocates -resources at this point, it may return an &EBUSY; if the required -resources are temporarily unavailable. Other resource allocation -points which may return <errorcode>EBUSY</errorcode> can be the -&VIDIOC-STREAMON; ioctl and the first &func-read;, &func-write; and -&func-select; call.</para> - - <table frame="none" pgwide="1" id="v4l2-sliced-vbi-format"> - <title>struct -<structname>v4l2_sliced_vbi_format</structname></title> - <tgroup cols="5"> - <colspec colname="c1" colwidth="3*" /> - <colspec colname="c2" colwidth="3*" /> - <colspec colname="c3" colwidth="2*" /> - <colspec colname="c4" colwidth="2*" /> - <colspec colname="c5" colwidth="2*" /> - <spanspec namest="c3" nameend="c5" spanname="hspan" /> - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>service_set</structfield></entry> - <entry spanname="hspan"><para>If -<structfield>service_set</structfield> is non-zero when passed with -&VIDIOC-S-FMT; or &VIDIOC-TRY-FMT;, the -<structfield>service_lines</structfield> array will be filled by the -driver according to the services specified in this field. For example, -if <structfield>service_set</structfield> is initialized with -<constant>V4L2_SLICED_TELETEXT_B | V4L2_SLICED_WSS_625</constant>, a -driver for the cx25840 video decoder sets lines 7-22 of both -fields<footnote><para>According to <link -linkend="ets300706">ETS 300 706</link> lines 6-22 of the -first field and lines 5-22 of the second field may carry Teletext -data.</para></footnote> to <constant>V4L2_SLICED_TELETEXT_B</constant> -and line 23 of the first field to -<constant>V4L2_SLICED_WSS_625</constant>. If -<structfield>service_set</structfield> is set to zero, then the values -of <structfield>service_lines</structfield> will be used instead. -</para><para>On return the driver sets this field to the union of all -elements of the returned <structfield>service_lines</structfield> -array. It may contain less services than requested, perhaps just one, -if the hardware cannot handle more services simultaneously. It may be -empty (zero) if none of the requested services are supported by the -hardware.</para></entry> - </row> - <row> - <entry>__u16</entry> - <entry><structfield>service_lines</structfield>[2][24]</entry> - <entry spanname="hspan"><para>Applications initialize this -array with sets of data services the driver shall look for or insert -on the respective scan line. Subject to hardware capabilities drivers -return the requested set, a subset, which may be just a single -service, or an empty set. When the hardware cannot handle multiple -services on the same line the driver shall choose one. No assumptions -can be made on which service the driver chooses.</para><para>Data -services are defined in <xref linkend="vbi-services2" />. Array indices -map to ITU-R line numbers (see also <xref linkend="vbi-525" /> and <xref - linkend="vbi-625" />) as follows: <!-- No nested -tables, sigh. --></para></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>Element</entry> - <entry>525 line systems</entry> - <entry>625 line systems</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry><structfield>service_lines</structfield>[0][1]</entry> - <entry align="center">1</entry> - <entry align="center">1</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry><structfield>service_lines</structfield>[0][23]</entry> - <entry align="center">23</entry> - <entry align="center">23</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry><structfield>service_lines</structfield>[1][1]</entry> - <entry align="center">264</entry> - <entry align="center">314</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry><structfield>service_lines</structfield>[1][23]</entry> - <entry align="center">286</entry> - <entry align="center">336</entry> - </row> - <!-- End of line numbers table. --> - <row> - <entry></entry> - <entry></entry> - <entry spanname="hspan">Drivers must set -<structfield>service_lines</structfield>[0][0] and -<structfield>service_lines</structfield>[1][0] to zero.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>io_size</structfield></entry> - <entry spanname="hspan">Maximum number of bytes passed by -one &func-read; or &func-write; call, and the buffer size in bytes for -the &VIDIOC-QBUF; and &VIDIOC-DQBUF; ioctl. Drivers set this field to -the size of &v4l2-sliced-vbi-data; times the number of non-zero -elements in the returned <structfield>service_lines</structfield> -array (that is the number of lines potentially carrying data).</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[2]</entry> - <entry spanname="hspan">This array is reserved for future -extensions. Applications and drivers must set it to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <!-- See also vidioc-g-sliced-vbi-cap.sgml --> - <table frame="none" pgwide="1" id="vbi-services2"> - <title>Sliced VBI services</title> - <tgroup cols="5"> - <colspec colname="c1" colwidth="2*" /> - <colspec colname="c2" colwidth="1*" /> - <colspec colname="c3" colwidth="1*" /> - <colspec colname="c4" colwidth="2*" /> - <colspec colname="c5" colwidth="2*" /> - <spanspec namest="c3" nameend="c5" spanname="rlp" /> - <thead> - <row> - <entry>Symbol</entry> - <entry>Value</entry> - <entry>Reference</entry> - <entry>Lines, usually</entry> - <entry>Payload</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>V4L2_SLICED_TELETEXT_B</constant> -(Teletext System B)</entry> - <entry>0x0001</entry> - <entry><xref linkend="ets300706" />, <xref linkend="itu653" /></entry> - <entry>PAL/SECAM line 7-22, 320-335 (second field 7-22)</entry> - <entry>Last 42 of the 45 byte Teletext packet, that is -without clock run-in and framing code, lsb first transmitted.</entry> - </row> - <row> - <entry><constant>V4L2_SLICED_VPS</constant></entry> - <entry>0x0400</entry> - <entry><xref linkend="ets300231" /></entry> - <entry>PAL line 16</entry> - <entry>Byte number 3 to 15 according to Figure 9 of -ETS 300 231, lsb first transmitted.</entry> - </row> - <row> - <entry><constant>V4L2_SLICED_CAPTION_525</constant></entry> - <entry>0x1000</entry> - <entry><xref linkend="eia608" /></entry> - <entry>NTSC line 21, 284 (second field 21)</entry> - <entry>Two bytes in transmission order, including parity -bit, lsb first transmitted.</entry> - </row> - <row> - <entry><constant>V4L2_SLICED_WSS_625</constant></entry> - <entry>0x4000</entry> - <entry><xref linkend="itu1119" />, <xref linkend="en300294" /></entry> - <entry>PAL/SECAM line 23</entry> - <entry><screen> -Byte 0 1 - msb lsb msb lsb - Bit 7 6 5 4 3 2 1 0 x x 13 12 11 10 9 -</screen></entry> - </row> - <row> - <entry><constant>V4L2_SLICED_VBI_525</constant></entry> - <entry>0x1000</entry> - <entry spanname="rlp">Set of services applicable to 525 -line systems.</entry> - </row> - <row> - <entry><constant>V4L2_SLICED_VBI_625</constant></entry> - <entry>0x4401</entry> - <entry spanname="rlp">Set of services applicable to 625 -line systems.</entry> - </row> - </tbody> - </tgroup> - </table> - - <para>Drivers may return an &EINVAL; when applications attempt to -read or write data without prior format negotiation, after switching -the video standard (which may invalidate the negotiated VBI -parameters) and after switching the video input (which may change the -video standard as a side effect). The &VIDIOC-S-FMT; ioctl may return -an &EBUSY; when applications attempt to change the format while i/o is -in progress (between a &VIDIOC-STREAMON; and &VIDIOC-STREAMOFF; call, -and after the first &func-read; or &func-write; call).</para> - </section> - - <section> - <title>Reading and writing sliced VBI data</title> - - <para>A single &func-read; or &func-write; call must pass all data -belonging to one video frame. That is an array of -<structname>v4l2_sliced_vbi_data</structname> structures with one or -more elements and a total size not exceeding -<structfield>io_size</structfield> bytes. Likewise in streaming I/O -mode one buffer of <structfield>io_size</structfield> bytes must -contain data of one video frame. The <structfield>id</structfield> of -unused <structname>v4l2_sliced_vbi_data</structname> elements must be -zero.</para> - - <table frame="none" pgwide="1" id="v4l2-sliced-vbi-data"> - <title>struct -<structname>v4l2_sliced_vbi_data</structname></title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>id</structfield></entry> - <entry>A flag from <xref linkend="vbi-services" /> -identifying the type of data in this packet. Only a single bit must be -set. When the <structfield>id</structfield> of a captured packet is -zero, the packet is empty and the contents of other fields are -undefined. Applications shall ignore empty packets. When the -<structfield>id</structfield> of a packet for output is zero the -contents of the <structfield>data</structfield> field are undefined -and the driver must no longer insert data on the requested -<structfield>field</structfield> and -<structfield>line</structfield>.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>field</structfield></entry> - <entry>The video field number this data has been captured -from, or shall be inserted at. <constant>0</constant> for the first -field, <constant>1</constant> for the second field.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>line</structfield></entry> - <entry>The field (as opposed to frame) line number this -data has been captured from, or shall be inserted at. See <xref - linkend="vbi-525" /> and <xref linkend="vbi-625" /> for valid -values. Sliced VBI capture devices can set the line number of all -packets to <constant>0</constant> if the hardware cannot reliably -identify scan lines. The field number must always be valid.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield></entry> - <entry>This field is reserved for future extensions. -Applications and drivers must set it to zero.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>data</structfield>[48]</entry> - <entry>The packet payload. See <xref - linkend="vbi-services" /> for the contents and number of -bytes passed for each data type. The contents of padding bytes at the -end of this array are undefined, drivers and applications shall ignore -them.</entry> - </row> - </tbody> - </tgroup> - </table> - - <para>Packets are always passed in ascending line number order, -without duplicate line numbers. The &func-write; function and the -&VIDIOC-QBUF; ioctl must return an &EINVAL; when applications violate -this rule. They must also return an &EINVAL; when applications pass an -incorrect field or line number, or a combination of -<structfield>field</structfield>, <structfield>line</structfield> and -<structfield>id</structfield> which has not been negotiated with the -&VIDIOC-G-FMT; or &VIDIOC-S-FMT; ioctl. When the line numbers are -unknown the driver must pass the packets in transmitted order. The -driver can insert empty packets with <structfield>id</structfield> set -to zero anywhere in the packet array.</para> - - <para>To assure synchronization and to distinguish from frame -dropping, when a captured frame does not carry any of the requested -data services drivers must pass one or more empty packets. When an -application fails to pass VBI data in time for output, the driver -must output the last VPS and WSS packet again, and disable the output -of Closed Caption and Teletext data, or output data which is ignored -by Closed Caption and Teletext decoders.</para> - - <para>A sliced VBI device may support <link -linkend="rw">read/write</link> and/or streaming (<link -linkend="mmap">memory mapping</link> and/or <link linkend="userp">user -pointer</link>) I/O. The latter bears the possibility of synchronizing -video and VBI data by using buffer timestamps.</para> - - </section> - - <section> - <title>Sliced VBI Data in MPEG Streams</title> - - <para>If a device can produce an MPEG output stream, it may be -capable of providing <link -linkend="sliced-vbi-format-negotitation">negotiated sliced VBI -services</link> as data embedded in the MPEG stream. Users or -applications control this sliced VBI data insertion with the <link -linkend="v4l2-mpeg-stream-vbi-fmt">V4L2_CID_MPEG_STREAM_VBI_FMT</link> -control.</para> - - <para>If the driver does not provide the <link -linkend="v4l2-mpeg-stream-vbi-fmt">V4L2_CID_MPEG_STREAM_VBI_FMT</link> -control, or only allows that control to be set to <link -linkend="v4l2-mpeg-stream-vbi-fmt"><constant> -V4L2_MPEG_STREAM_VBI_FMT_NONE</constant></link>, then the device -cannot embed sliced VBI data in the MPEG stream.</para> - - <para>The <link linkend="v4l2-mpeg-stream-vbi-fmt"> -V4L2_CID_MPEG_STREAM_VBI_FMT</link> control does not implicitly set -the device driver to capture nor cease capturing sliced VBI data. The -control only indicates to embed sliced VBI data in the MPEG stream, if -an application has negotiated sliced VBI service be captured.</para> - - <para>It may also be the case that a device can embed sliced VBI -data in only certain types of MPEG streams: for example in an MPEG-2 -PS but not an MPEG-2 TS. In this situation, if sliced VBI data -insertion is requested, the sliced VBI data will be embedded in MPEG -stream types when supported, and silently omitted from MPEG stream -types where sliced VBI data insertion is not supported by the device. -</para> - - <para>The following subsections specify the format of the -embedded sliced VBI data.</para> - - <section> - <title>MPEG Stream Embedded, Sliced VBI Data Format: NONE</title> - <para>The <link linkend="v4l2-mpeg-stream-vbi-fmt"><constant> -V4L2_MPEG_STREAM_VBI_FMT_NONE</constant></link> embedded sliced VBI -format shall be interpreted by drivers as a control to cease -embedding sliced VBI data in MPEG streams. Neither the device nor -driver shall insert "empty" embedded sliced VBI data packets in the -MPEG stream when this format is set. No MPEG stream data structures -are specified for this format.</para> - </section> - - <section> - <title>MPEG Stream Embedded, Sliced VBI Data Format: IVTV</title> - <para>The <link linkend="v4l2-mpeg-stream-vbi-fmt"><constant> -V4L2_MPEG_STREAM_VBI_FMT_IVTV</constant></link> embedded sliced VBI -format, when supported, indicates to the driver to embed up to 36 -lines of sliced VBI data per frame in an MPEG-2 <emphasis>Private -Stream 1 PES</emphasis> packet encapsulated in an MPEG-2 <emphasis> -Program Pack</emphasis> in the MPEG stream.</para> - - <para><emphasis>Historical context</emphasis>: This format -specification originates from a custom, embedded, sliced VBI data -format used by the <filename>ivtv</filename> driver. This format -has already been informally specified in the kernel sources in the -file <filename>Documentation/video4linux/cx2341x/README.vbi</filename> -. The maximum size of the payload and other aspects of this format -are driven by the CX23415 MPEG decoder's capabilities and limitations -with respect to extracting, decoding, and displaying sliced VBI data -embedded within an MPEG stream.</para> - - <para>This format's use is <emphasis>not</emphasis> exclusive to -the <filename>ivtv</filename> driver <emphasis>nor</emphasis> -exclusive to CX2341x devices, as the sliced VBI data packet insertion -into the MPEG stream is implemented in driver software. At least the -<filename>cx18</filename> driver provides sliced VBI data insertion -into an MPEG-2 PS in this format as well.</para> - - <para>The following definitions specify the payload of the -MPEG-2 <emphasis>Private Stream 1 PES</emphasis> packets that contain -sliced VBI data when <link linkend="v4l2-mpeg-stream-vbi-fmt"> -<constant>V4L2_MPEG_STREAM_VBI_FMT_IVTV</constant></link> is set. -(The MPEG-2 <emphasis>Private Stream 1 PES</emphasis> packet header -and encapsulating MPEG-2 <emphasis>Program Pack</emphasis> header are -not detailed here. Please refer to the MPEG-2 specifications for -details on those packet headers.)</para> - - <para>The payload of the MPEG-2 <emphasis>Private Stream 1 PES -</emphasis> packets that contain sliced VBI data is specified by -&v4l2-mpeg-vbi-fmt-ivtv;. The payload is variable -length, depending on the actual number of lines of sliced VBI data -present in a video frame. The payload may be padded at the end with -unspecified fill bytes to align the end of the payload to a 4-byte -boundary. The payload shall never exceed 1552 bytes (2 fields with -18 lines/field with 43 bytes of data/line and a 4 byte magic number). -</para> - - <table frame="none" pgwide="1" id="v4l2-mpeg-vbi-fmt-ivtv"> - <title>struct <structname>v4l2_mpeg_vbi_fmt_ivtv</structname> - </title> - <tgroup cols="4"> - &cs-ustr; - <tbody valign="top"> - <row> - <entry>__u8</entry> - <entry><structfield>magic</structfield>[4]</entry> - <entry></entry> - <entry>A "magic" constant from <xref - linkend="v4l2-mpeg-vbi-fmt-ivtv-magic" /> that indicates -this is a valid sliced VBI data payload and also indicates which -member of the anonymous union, <structfield>itv0</structfield> or -<structfield>ITV0</structfield>, to use for the payload data.</entry> - </row> - <row> - <entry>union</entry> - <entry>(anonymous)</entry> - </row> - <row> - <entry></entry> - <entry>struct <link linkend="v4l2-mpeg-vbi-itv0"> - <structname>v4l2_mpeg_vbi_itv0</structname></link> - </entry> - <entry><structfield>itv0</structfield></entry> - <entry>The primary form of the sliced VBI data payload -that contains anywhere from 1 to 35 lines of sliced VBI data. -Line masks are provided in this form of the payload indicating -which VBI lines are provided.</entry> - </row> - <row> - <entry></entry> - <entry>struct <link linkend="v4l2-mpeg-vbi-itv0-1"> - <structname>v4l2_mpeg_vbi_ITV0</structname></link> - </entry> - <entry><structfield>ITV0</structfield></entry> - <entry>An alternate form of the sliced VBI data payload -used when 36 lines of sliced VBI data are present. No line masks are -provided in this form of the payload; all valid line mask bits are -implcitly set.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="v4l2-mpeg-vbi-fmt-ivtv-magic"> - <title>Magic Constants for &v4l2-mpeg-vbi-fmt-ivtv; - <structfield>magic</structfield> field</title> - <tgroup cols="3"> - &cs-def; - <thead> - <row> - <entry align="left">Defined Symbol</entry> - <entry align="left">Value</entry> - <entry align="left">Description</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_VBI_IVTV_MAGIC0</constant> - </entry> - <entry>"itv0"</entry> - <entry>Indicates the <structfield>itv0</structfield> -member of the union in &v4l2-mpeg-vbi-fmt-ivtv; is valid.</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_VBI_IVTV_MAGIC1</constant> - </entry> - <entry>"ITV0"</entry> - <entry>Indicates the <structfield>ITV0</structfield> -member of the union in &v4l2-mpeg-vbi-fmt-ivtv; is valid and -that 36 lines of sliced VBI data are present.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="v4l2-mpeg-vbi-itv0"> - <title>struct <structname>v4l2_mpeg_vbi_itv0</structname> - </title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__le32</entry> - <entry><structfield>linemask</structfield>[2]</entry> - <entry><para>Bitmasks indicating the VBI service lines -present. These <structfield>linemask</structfield> values are stored -in little endian byte order in the MPEG stream. Some reference -<structfield>linemask</structfield> bit positions with their -corresponding VBI line number and video field are given below. -b<subscript>0</subscript> indicates the least significant bit of a -<structfield>linemask</structfield> value:<screen> -<structfield>linemask</structfield>[0] b<subscript>0</subscript>: line 6 first field -<structfield>linemask</structfield>[0] b<subscript>17</subscript>: line 23 first field -<structfield>linemask</structfield>[0] b<subscript>18</subscript>: line 6 second field -<structfield>linemask</structfield>[0] b<subscript>31</subscript>: line 19 second field -<structfield>linemask</structfield>[1] b<subscript>0</subscript>: line 20 second field -<structfield>linemask</structfield>[1] b<subscript>3</subscript>: line 23 second field -<structfield>linemask</structfield>[1] b<subscript>4</subscript>-b<subscript>31</subscript>: unused and set to 0</screen></para></entry> - </row> - <row> - <entry>struct <link linkend="v4l2-mpeg-vbi-itv0-line"> - <structname>v4l2_mpeg_vbi_itv0_line</structname></link> - </entry> - <entry><structfield>line</structfield>[35]</entry> - <entry>This is a variable length array that holds from 1 -to 35 lines of sliced VBI data. The sliced VBI data lines present -correspond to the bits set in the <structfield>linemask</structfield> -array, starting from b<subscript>0</subscript> of <structfield> -linemask</structfield>[0] up through b<subscript>31</subscript> of -<structfield>linemask</structfield>[0], and from b<subscript>0 -</subscript> of <structfield>linemask</structfield>[1] up through b -<subscript>3</subscript> of <structfield>linemask</structfield>[1]. -<structfield>line</structfield>[0] corresponds to the first bit -found set in the <structfield>linemask</structfield> array, -<structfield>line</structfield>[1] corresponds to the second bit -found set in the <structfield>linemask</structfield> array, etc. -If no <structfield>linemask</structfield> array bits are set, then -<structfield>line</structfield>[0] may contain one line of -unspecified data that should be ignored by applications.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="v4l2-mpeg-vbi-itv0-1"> - <title>struct <structname>v4l2_mpeg_vbi_ITV0</structname> - </title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>struct <link linkend="v4l2-mpeg-vbi-itv0-line"> - <structname>v4l2_mpeg_vbi_itv0_line</structname></link> - </entry> - <entry><structfield>line</structfield>[36]</entry> - <entry>A fixed length array of 36 lines of sliced VBI -data. <structfield>line</structfield>[0] through <structfield>line -</structfield>[17] correspond to lines 6 through 23 of the -first field. <structfield>line</structfield>[18] through -<structfield>line</structfield>[35] corresponds to lines 6 -through 23 of the second field.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="v4l2-mpeg-vbi-itv0-line"> - <title>struct <structname>v4l2_mpeg_vbi_itv0_line</structname> - </title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u8</entry> - <entry><structfield>id</structfield></entry> - <entry>A line identifier value from -<xref linkend="ITV0-Line-Identifier-Constants" /> that indicates -the type of sliced VBI data stored on this line.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>data</structfield>[42]</entry> - <entry>The sliced VBI data for the line.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="ITV0-Line-Identifier-Constants"> - <title>Line Identifiers for struct <link - linkend="v4l2-mpeg-vbi-itv0-line"><structname> -v4l2_mpeg_vbi_itv0_line</structname></link> <structfield>id -</structfield> field</title> - <tgroup cols="3"> - &cs-def; - <thead> - <row> - <entry align="left">Defined Symbol</entry> - <entry align="left">Value</entry> - <entry align="left">Description</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>V4L2_MPEG_VBI_IVTV_TELETEXT_B</constant> - </entry> - <entry>1</entry> - <entry>Refer to <link linkend="vbi-services2"> -Sliced VBI services</link> for a description of the line payload.</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_VBI_IVTV_CAPTION_525</constant> - </entry> - <entry>4</entry> - <entry>Refer to <link linkend="vbi-services2"> -Sliced VBI services</link> for a description of the line payload.</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_VBI_IVTV_WSS_625</constant> - </entry> - <entry>5</entry> - <entry>Refer to <link linkend="vbi-services2"> -Sliced VBI services</link> for a description of the line payload.</entry> - </row> - <row> - <entry><constant>V4L2_MPEG_VBI_IVTV_VPS</constant> - </entry> - <entry>7</entry> - <entry>Refer to <link linkend="vbi-services2"> -Sliced VBI services</link> for a description of the line payload.</entry> - </row> - </tbody> - </tgroup> - </table> - - </section> - </section> - - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/dev-subdev.xml b/Documentation/DocBook/v4l/dev-subdev.xml deleted file mode 100644 index 05c8fefcbcbe..000000000000 --- a/Documentation/DocBook/v4l/dev-subdev.xml +++ /dev/null @@ -1,313 +0,0 @@ - <title>Sub-device Interface</title> - - <note> - <title>Experimental</title> - <para>This is an <link linkend="experimental">experimental</link> - interface and may change in the future.</para> - </note> - - <para>The complex nature of V4L2 devices, where hardware is often made of - several integrated circuits that need to interact with each other in a - controlled way, leads to complex V4L2 drivers. The drivers usually reflect - the hardware model in software, and model the different hardware components - as software blocks called sub-devices.</para> - - <para>V4L2 sub-devices are usually kernel-only objects. If the V4L2 driver - implements the media device API, they will automatically inherit from media - entities. Applications will be able to enumerate the sub-devices and discover - the hardware topology using the media entities, pads and links enumeration - API.</para> - - <para>In addition to make sub-devices discoverable, drivers can also choose - to make them directly configurable by applications. When both the sub-device - driver and the V4L2 device driver support this, sub-devices will feature a - character device node on which ioctls can be called to - <itemizedlist> - <listitem><para>query, read and write sub-devices controls</para></listitem> - <listitem><para>subscribe and unsubscribe to events and retrieve them</para></listitem> - <listitem><para>negotiate image formats on individual pads</para></listitem> - </itemizedlist> - </para> - - <para>Sub-device character device nodes, conventionally named - <filename>/dev/v4l-subdev*</filename>, use major number 81.</para> - - <section> - <title>Controls</title> - <para>Most V4L2 controls are implemented by sub-device hardware. Drivers - usually merge all controls and expose them through video device nodes. - Applications can control all sub-devices through a single interface.</para> - - <para>Complex devices sometimes implement the same control in different - pieces of hardware. This situation is common in embedded platforms, where - both sensors and image processing hardware implement identical functions, - such as contrast adjustment, white balance or faulty pixels correction. As - the V4L2 controls API doesn't support several identical controls in a single - device, all but one of the identical controls are hidden.</para> - - <para>Applications can access those hidden controls through the sub-device - node with the V4L2 control API described in <xref linkend="control" />. The - ioctls behave identically as when issued on V4L2 device nodes, with the - exception that they deal only with controls implemented in the sub-device. - </para> - - <para>Depending on the driver, those controls might also be exposed through - one (or several) V4L2 device nodes.</para> - </section> - - <section> - <title>Events</title> - <para>V4L2 sub-devices can notify applications of events as described in - <xref linkend="event" />. The API behaves identically as when used on V4L2 - device nodes, with the exception that it only deals with events generated by - the sub-device. Depending on the driver, those events might also be reported - on one (or several) V4L2 device nodes.</para> - </section> - - <section id="pad-level-formats"> - <title>Pad-level Formats</title> - - <warning><para>Pad-level formats are only applicable to very complex device that - need to expose low-level format configuration to user space. Generic V4L2 - applications do <emphasis>not</emphasis> need to use the API described in - this section.</para></warning> - - <note><para>For the purpose of this section, the term - <wordasword>format</wordasword> means the combination of media bus data - format, frame width and frame height.</para></note> - - <para>Image formats are typically negotiated on video capture and output - devices using the <link linkend="crop">cropping and scaling</link> ioctls. - The driver is responsible for configuring every block in the video pipeline - according to the requested format at the pipeline input and/or - output.</para> - - <para>For complex devices, such as often found in embedded systems, - identical image sizes at the output of a pipeline can be achieved using - different hardware configurations. One such example is shown on - <xref linkend="pipeline-scaling" />, where - image scaling can be performed on both the video sensor and the host image - processing hardware.</para> - - <figure id="pipeline-scaling"> - <title>Image Format Negotiation on Pipelines</title> - <mediaobject> - <imageobject> - <imagedata fileref="pipeline.pdf" format="PS" /> - </imageobject> - <imageobject> - <imagedata fileref="pipeline.png" format="PNG" /> - </imageobject> - <textobject> - <phrase>High quality and high speed pipeline configuration</phrase> - </textobject> - </mediaobject> - </figure> - - <para>The sensor scaler is usually of less quality than the host scaler, but - scaling on the sensor is required to achieve higher frame rates. Depending - on the use case (quality vs. speed), the pipeline must be configured - differently. Applications need to configure the formats at every point in - the pipeline explicitly.</para> - - <para>Drivers that implement the <link linkend="media-controller-intro">media - API</link> can expose pad-level image format configuration to applications. - When they do, applications can use the &VIDIOC-SUBDEV-G-FMT; and - &VIDIOC-SUBDEV-S-FMT; ioctls. to negotiate formats on a per-pad basis.</para> - - <para>Applications are responsible for configuring coherent parameters on - the whole pipeline and making sure that connected pads have compatible - formats. The pipeline is checked for formats mismatch at &VIDIOC-STREAMON; - time, and an &EPIPE; is then returned if the configuration is - invalid.</para> - - <para>Pad-level image format configuration support can be tested by calling - the &VIDIOC-SUBDEV-G-FMT; ioctl on pad 0. If the driver returns an &EINVAL; - pad-level format configuration is not supported by the sub-device.</para> - - <section> - <title>Format Negotiation</title> - - <para>Acceptable formats on pads can (and usually do) depend on a number - of external parameters, such as formats on other pads, active links, or - even controls. Finding a combination of formats on all pads in a video - pipeline, acceptable to both application and driver, can't rely on formats - enumeration only. A format negotiation mechanism is required.</para> - - <para>Central to the format negotiation mechanism are the get/set format - operations. When called with the <structfield>which</structfield> argument - set to <constant>V4L2_SUBDEV_FORMAT_TRY</constant>, the - &VIDIOC-SUBDEV-G-FMT; and &VIDIOC-SUBDEV-S-FMT; ioctls operate on a set of - formats parameters that are not connected to the hardware configuration. - Modifying those 'try' formats leaves the device state untouched (this - applies to both the software state stored in the driver and the hardware - state stored in the device itself).</para> - - <para>While not kept as part of the device state, try formats are stored - in the sub-device file handles. A &VIDIOC-SUBDEV-G-FMT; call will return - the last try format set <emphasis>on the same sub-device file - handle</emphasis>. Several applications querying the same sub-device at - the same time will thus not interact with each other.</para> - - <para>To find out whether a particular format is supported by the device, - applications use the &VIDIOC-SUBDEV-S-FMT; ioctl. Drivers verify and, if - needed, change the requested <structfield>format</structfield> based on - device requirements and return the possibly modified value. Applications - can then choose to try a different format or accept the returned value and - continue.</para> - - <para>Formats returned by the driver during a negotiation iteration are - guaranteed to be supported by the device. In particular, drivers guarantee - that a returned format will not be further changed if passed to an - &VIDIOC-SUBDEV-S-FMT; call as-is (as long as external parameters, such as - formats on other pads or links' configuration are not changed).</para> - - <para>Drivers automatically propagate formats inside sub-devices. When a - try or active format is set on a pad, corresponding formats on other pads - of the same sub-device can be modified by the driver. Drivers are free to - modify formats as required by the device. However, they should comply with - the following rules when possible: - <itemizedlist> - <listitem><para>Formats should be propagated from sink pads to source pads. - Modifying a format on a source pad should not modify the format on any - sink pad.</para></listitem> - <listitem><para>Sub-devices that scale frames using variable scaling factors - should reset the scale factors to default values when sink pads formats - are modified. If the 1:1 scaling ratio is supported, this means that - source pads formats should be reset to the sink pads formats.</para></listitem> - </itemizedlist> - </para> - - <para>Formats are not propagated across links, as that would involve - propagating them from one sub-device file handle to another. Applications - must then take care to configure both ends of every link explicitly with - compatible formats. Identical formats on the two ends of a link are - guaranteed to be compatible. Drivers are free to accept different formats - matching device requirements as being compatible.</para> - - <para><xref linkend="sample-pipeline-config" /> - shows a sample configuration sequence for the pipeline described in - <xref linkend="pipeline-scaling" /> (table - columns list entity names and pad numbers).</para> - - <table pgwide="0" frame="none" id="sample-pipeline-config"> - <title>Sample Pipeline Configuration</title> - <tgroup cols="3"> - <colspec colname="what"/> - <colspec colname="sensor-0" /> - <colspec colname="frontend-0" /> - <colspec colname="frontend-1" /> - <colspec colname="scaler-0" /> - <colspec colname="scaler-1" /> - <thead> - <row> - <entry></entry> - <entry>Sensor/0</entry> - <entry>Frontend/0</entry> - <entry>Frontend/1</entry> - <entry>Scaler/0</entry> - <entry>Scaler/1</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry>Initial state</entry> - <entry>2048x1536</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - </row> - <row> - <entry>Configure frontend input</entry> - <entry>2048x1536</entry> - <entry><emphasis>2048x1536</emphasis></entry> - <entry><emphasis>2046x1534</emphasis></entry> - <entry>-</entry> - <entry>-</entry> - </row> - <row> - <entry>Configure scaler input</entry> - <entry>2048x1536</entry> - <entry>2048x1536</entry> - <entry>2046x1534</entry> - <entry><emphasis>2046x1534</emphasis></entry> - <entry><emphasis>2046x1534</emphasis></entry> - </row> - <row> - <entry>Configure scaler output</entry> - <entry>2048x1536</entry> - <entry>2048x1536</entry> - <entry>2046x1534</entry> - <entry>2046x1534</entry> - <entry><emphasis>1280x960</emphasis></entry> - </row> - </tbody> - </tgroup> - </table> - - <para> - <orderedlist> - <listitem><para>Initial state. The sensor output is set to its native 3MP - resolution. Resolutions on the host frontend and scaler input and output - pads are undefined.</para></listitem> - <listitem><para>The application configures the frontend input pad resolution to - 2048x1536. The driver propagates the format to the frontend output pad. - Note that the propagated output format can be different, as in this case, - than the input format, as the hardware might need to crop pixels (for - instance when converting a Bayer filter pattern to RGB or YUV).</para></listitem> - <listitem><para>The application configures the scaler input pad resolution to - 2046x1534 to match the frontend output resolution. The driver propagates - the format to the scaler output pad.</para></listitem> - <listitem><para>The application configures the scaler output pad resolution to - 1280x960.</para></listitem> - </orderedlist> - </para> - - <para>When satisfied with the try results, applications can set the active - formats by setting the <structfield>which</structfield> argument to - <constant>V4L2_SUBDEV_FORMAT_TRY</constant>. Active formats are changed - exactly as try formats by drivers. To avoid modifying the hardware state - during format negotiation, applications should negotiate try formats first - and then modify the active settings using the try formats returned during - the last negotiation iteration. This guarantees that the active format - will be applied as-is by the driver without being modified. - </para> - </section> - - <section> - <title>Cropping and scaling</title> - - <para>Many sub-devices support cropping frames on their input or output - pads (or possible even on both). Cropping is used to select the area of - interest in an image, typically on a video sensor or video decoder. It can - also be used as part of digital zoom implementations to select the area of - the image that will be scaled up.</para> - - <para>Crop settings are defined by a crop rectangle and represented in a - &v4l2-rect; by the coordinates of the top left corner and the rectangle - size. Both the coordinates and sizes are expressed in pixels.</para> - - <para>The crop rectangle is retrieved and set using the - &VIDIOC-SUBDEV-G-CROP; and &VIDIOC-SUBDEV-S-CROP; ioctls. Like for pad - formats, drivers store try and active crop rectangles. The format - negotiation mechanism applies to crop settings as well.</para> - - <para>On input pads, cropping is applied relatively to the current pad - format. The pad format represents the image size as received by the - sub-device from the previous block in the pipeline, and the crop rectangle - represents the sub-image that will be transmitted further inside the - sub-device for processing. The crop rectangle be entirely containted - inside the input image size.</para> - - <para>Input crop rectangle are reset to their default value when the input - image format is modified. Drivers should use the input image size as the - crop rectangle default value, but hardware requirements may prevent this. - </para> - - <para>Cropping behaviour on output pads is not defined.</para> - - </section> - </section> - - &sub-subdev-formats; diff --git a/Documentation/DocBook/v4l/dev-teletext.xml b/Documentation/DocBook/v4l/dev-teletext.xml deleted file mode 100644 index 414b1cfff9f4..000000000000 --- a/Documentation/DocBook/v4l/dev-teletext.xml +++ /dev/null @@ -1,37 +0,0 @@ - <title>Teletext Interface</title> - - <para>This interface was aimed at devices receiving and demodulating -Teletext data [<xref linkend="ets300706" />, <xref linkend="itu653" />], evaluating the -Teletext packages and storing formatted pages in cache memory. Such -devices are usually implemented as microcontrollers with serial -interface (I<superscript>2</superscript>C) and could be found on old -TV cards, dedicated Teletext decoding cards and home-brew devices -connected to the PC parallel port.</para> - - <para>The Teletext API was designed by Martin Buck. It was defined in -the kernel header file <filename>linux/videotext.h</filename>, the -specification is available from <ulink url="ftp://ftp.gwdg.de/pub/linux/misc/videotext/"> -ftp://ftp.gwdg.de/pub/linux/misc/videotext/</ulink>. (Videotext is the name of -the German public television Teletext service.)</para> - - <para>Eventually the Teletext API was integrated into the V4L API -with character device file names <filename>/dev/vtx0</filename> to -<filename>/dev/vtx31</filename>, device major number 81, minor numbers -192 to 223.</para> - - <para>However, teletext decoders were quickly replaced by more -generic VBI demodulators and those dedicated teletext decoders no longer exist. -For many years the vtx devices were still around, even though nobody used -them. So the decision was made to finally remove support for the Teletext API in -kernel 2.6.37.</para> - - <para>Modern devices all use the <link linkend="raw-vbi">raw</link> or -<link linkend="sliced">sliced</link> VBI API.</para> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/driver.xml b/Documentation/DocBook/v4l/driver.xml deleted file mode 100644 index 1f7eea5c4ec3..000000000000 --- a/Documentation/DocBook/v4l/driver.xml +++ /dev/null @@ -1,208 +0,0 @@ - <title>V4L2 Driver Programming</title> - - <!-- This part defines the interface between the "videodev" - module and individual drivers. --> - - <para>to do</para> -<!-- - <para>V4L2 is a two-layer driver system. The top layer is the "videodev" -kernel module. When videodev initializes it registers as character device -with major number 81, and it registers a set of file operations. All V4L2 -drivers are really clients of videodev, which calls V4L2 drivers through -driver method functions. V4L2 drivers are also written as kernel modules. -After probing the hardware they register one or more devices with -videodev.</para> - - <section id="driver-modules"> - <title>Driver Modules</title> - - <para>V4L2 driver modules must have an initialization function which is -called after the module was loaded into kernel, an exit function whis is -called before the module is removed. When the driver is compiled into the -kernel these functions called at system boot and shutdown time.</para> - - <informalexample> - <programlisting> -#include <linux/module.h> - -/* Export information about this module. For details and other useful - macros see <filename>linux/module.h</filename>. */ -MODULE_DESCRIPTION("my - driver for my hardware"); -MODULE_AUTHOR("Your name here"); -MODULE_LICENSE("GPL"); - -static void -my_module_exit (void) -{ - /* Free all resources allocated by my_module_init(). */ -} - -static int -my_module_init (void) -{ - /* Bind the driver to the supported hardware, see - <link linkend="driver-pci"> and - <link linkend="driver-usb"> for examples. */ - - return 0; /* a negative value on error, 0 on success. */ -} - -/* Export module functions. */ -module_init (my_module_init); -module_exit (my_module_exit); -</programlisting> - </informalexample> - - <para>Users can add parameters when kernel modules are inserted:</para> - - <informalexample> - <programlisting> -include <linux/moduleparam.h> - -static int my_option = 123; -static int my_option_array[47]; - -/* Export the symbol, an int, with access permissions 0664. - See <filename>linux/moduleparam.h</filename> for other types. */ -module_param (my_option, int, 0644); -module_param_array (my_option_array, int, NULL, 0644); - -MODULE_PARM_DESC (my_option, "Does magic things, default 123"); -</programlisting> - </informalexample> - - <para>One parameter should be supported by all V4L2 drivers, the minor -number of the device it will register. Purpose is to predictably link V4L2 -drivers to device nodes if more than one video device is installed. Use the -name of the device node followed by a "_nr" suffix, for example "video_nr" -for <filename>/dev/video</filename>.</para> - - <informalexample> - <programlisting> -/* Minor number of the device, -1 to allocate the first unused. */ -static int video_nr = -1; - -module_param (video_nr, int, 0444); -</programlisting> - </informalexample> - </section> - - <section id="driver-pci"> - <title>PCI Devices</title> - - <para>PCI devices are initialized like this:</para> - - <informalexample> - <programlisting> -typedef struct { - /* State of one physical device. */ -} my_device; - -static int -my_resume (struct pci_dev * pci_dev) -{ - /* Restore the suspended device to working state. */ -} - -static int -my_suspend (struct pci_dev * pci_dev, - pm_message_t state) -{ - /* This function is called before the system goes to sleep. - Stop all DMAs and disable interrupts, then put the device - into a low power state. For details see the kernel - sources under <filename>Documentation/power</filename>. */ - - return 0; /* a negative value on error, 0 on success. */ -} - -static void __devexit -my_remove (struct pci_dev * pci_dev) -{ - my_device *my = pci_get_drvdata (pci_dev); - - /* Describe me. */ -} - -static int __devinit -my_probe (struct pci_dev * pci_dev, - const struct pci_device_id * pci_id) -{ - my_device *my; - - /* Describe me. */ - - /* You can allocate per-device data here and store a pointer - to it in the pci_dev structure. */ - my = ...; - pci_set_drvdata (pci_dev, my); - - return 0; /* a negative value on error, 0 on success. */ -} - -/* A list of supported PCI devices. */ -static struct pci_device_id -my_pci_device_ids [] = { - { PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR, - PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, - { 0 } /* end of list */ -}; - -/* Load our module if supported PCI devices are installed. */ -MODULE_DEVICE_TABLE (pci, my_pci_device_ids); - -static struct pci_driver -my_pci_driver = { - .name = "my", - .id_table = my_pci_device_ids, - - .probe = my_probe, - .remove = __devexit_p (my_remove), - - /* Power management functions. */ - .suspend = my_suspend, - .resume = my_resume, -}; - -static void -my_module_exit (void) -{ - pci_unregister_driver (&my_pci_driver); -} - -static int -my_module_init (void) -{ - return pci_register_driver (&my_pci_driver); -} -</programlisting> - </informalexample> - </section> - - <section id="driver-usb"> - <title>USB Devices</title> - <para>to do</para> - </section> - <section id="driver-registering"> - <title>Registering V4L2 Drivers</title> - - <para>After a V4L2 driver probed the hardware it registers one or more -devices with the videodev module.</para> - </section> - <section id="driver-file-ops"> - <title>File Operations</title> - <para>to do</para> - </section> - <section id="driver-internal-api"> - <title>Internal API</title> - <para>to do</para> - </section> ---> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/fdl-appendix.xml b/Documentation/DocBook/v4l/fdl-appendix.xml deleted file mode 100644 index ae22394ba997..000000000000 --- a/Documentation/DocBook/v4l/fdl-appendix.xml +++ /dev/null @@ -1,671 +0,0 @@ -<!-- - The GNU Free Documentation License 1.1 in DocBook - Markup by Eric Baudais <baudais@okstate.edu> - Maintained by the GNOME Documentation Project - http://live.gnome.org/DocumentationProject - Version: 1.0.1 - Last Modified: Nov 16, 2000 ---> - -<appendix id="fdl"> - <appendixinfo> - <releaseinfo> - Version 1.1, March 2000 - </releaseinfo> - <copyright> - <year>2000</year><holder>Free Software Foundation, Inc.</holder> - </copyright> - <legalnotice id="fdl-legalnotice"> - <para> - <address>Free Software Foundation, Inc. <street>59 Temple Place, - Suite 330</street>, <city>Boston</city>, <state>MA</state> - <postcode>02111-1307</postcode> <country>USA</country></address> - Everyone is permitted to copy and distribute verbatim copies of this - license document, but changing it is not allowed. - </para> - </legalnotice> - </appendixinfo> - <title>GNU Free Documentation License</title> - - <sect1 id="fdl-preamble"> - <title>0. PREAMBLE</title> - <para> - The purpose of this License is to make a manual, textbook, or - other written document <quote>free</quote> in the sense of - freedom: to assure everyone the effective freedom to copy and - redistribute it, with or without modifying it, either - commercially or noncommercially. Secondarily, this License - preserves for the author and publisher a way to get credit for - their work, while not being considered responsible for - modifications made by others. - </para> - - <para> - This License is a kind of <quote>copyleft</quote>, which means - that derivative works of the document must themselves be free in - the same sense. It complements the GNU General Public License, - which is a copyleft license designed for free software. - </para> - - <para> - We have designed this License in order to use it for manuals for - free software, because free software needs free documentation: a - free program should come with manuals providing the same - freedoms that the software does. But this License is not limited - to software manuals; it can be used for any textual work, - regardless of subject matter or whether it is published as a - printed book. We recommend this License principally for works - whose purpose is instruction or reference. - </para> - </sect1> - <sect1 id="fdl-section1"> - <title>1. APPLICABILITY AND DEFINITIONS</title> - <para id="fdl-document"> - This License applies to any manual or other work that contains a - notice placed by the copyright holder saying it can be - distributed under the terms of this License. The - <quote>Document</quote>, below, refers to any such manual or - work. Any member of the public is a licensee, and is addressed - as <quote>you</quote>. - </para> - - <para id="fdl-modified"> - A <quote>Modified Version</quote> of the Document means any work - containing the Document or a portion of it, either copied - verbatim, or with modifications and/or translated into another - language. - </para> - - <para id="fdl-secondary"> - A <quote>Secondary Section</quote> is a named appendix or a - front-matter section of the <link - linkend="fdl-document">Document</link> that deals exclusively - with the relationship of the publishers or authors of the - Document to the Document's overall subject (or to related - matters) and contains nothing that could fall directly within - that overall subject. (For example, if the Document is in part a - textbook of mathematics, a Secondary Section may not explain any - mathematics.) The relationship could be a matter of historical - connection with the subject or with related matters, or of - legal, commercial, philosophical, ethical or political position - regarding them. - </para> - - <para id="fdl-invariant"> - The <quote>Invariant Sections</quote> are certain <link - linkend="fdl-secondary"> Secondary Sections</link> whose titles - are designated, as being those of Invariant Sections, in the - notice that says that the <link - linkend="fdl-document">Document</link> is released under this - License. - </para> - - <para id="fdl-cover-texts"> - The <quote>Cover Texts</quote> are certain short passages of - text that are listed, as Front-Cover Texts or Back-Cover Texts, - in the notice that says that the <link - linkend="fdl-document">Document</link> is released under this - License. - </para> - - <para id="fdl-transparent"> - A <quote>Transparent</quote> copy of the <link - linkend="fdl-document"> Document</link> means a machine-readable - copy, represented in a format whose specification is available - to the general public, whose contents can be viewed and edited - directly and straightforwardly with generic text editors or (for - images composed of pixels) generic paint programs or (for - drawings) some widely available drawing editor, and that is - suitable for input to text formatters or for automatic - translation to a variety of formats suitable for input to text - formatters. A copy made in an otherwise Transparent file format - whose markup has been designed to thwart or discourage - subsequent modification by readers is not Transparent. A copy - that is not <quote>Transparent</quote> is called - <quote>Opaque</quote>. - </para> - - <para> - Examples of suitable formats for Transparent copies include - plain ASCII without markup, Texinfo input format, LaTeX input - format, SGML or XML using a publicly available DTD, and - standard-conforming simple HTML designed for human - modification. Opaque formats include PostScript, PDF, - proprietary formats that can be read and edited only by - proprietary word processors, SGML or XML for which the DTD - and/or processing tools are not generally available, and the - machine-generated HTML produced by some word processors for - output purposes only. - </para> - - <para id="fdl-title-page"> - The <quote>Title Page</quote> means, for a printed book, the - title page itself, plus such following pages as are needed to - hold, legibly, the material this License requires to appear in - the title page. For works in formats which do not have any title - page as such, <quote>Title Page</quote> means the text near the - most prominent appearance of the work's title, preceding the - beginning of the body of the text. - </para> - </sect1> - - <sect1 id="fdl-section2"> - <title>2. VERBATIM COPYING</title> - <para> - You may copy and distribute the <link - linkend="fdl-document">Document</link> in any medium, either - commercially or noncommercially, provided that this License, the - copyright notices, and the license notice saying this License - applies to the Document are reproduced in all copies, and that - you add no other conditions whatsoever to those of this - License. You may not use technical measures to obstruct or - control the reading or further copying of the copies you make or - distribute. However, you may accept compensation in exchange for - copies. If you distribute a large enough number of copies you - must also follow the conditions in <link - linkend="fdl-section3">section 3</link>. - </para> - - <para> - You may also lend copies, under the same conditions stated - above, and you may publicly display copies. - </para> - </sect1> - - <sect1 id="fdl-section3"> - <title>3. COPYING IN QUANTITY</title> - <para> - If you publish printed copies of the <link - linkend="fdl-document">Document</link> numbering more than 100, - and the Document's license notice requires <link - linkend="fdl-cover-texts">Cover Texts</link>, you must enclose - the copies in covers that carry, clearly and legibly, all these - Cover Texts: Front-Cover Texts on the front cover, and - Back-Cover Texts on the back cover. Both covers must also - clearly and legibly identify you as the publisher of these - copies. The front cover must present the full title with all - words of the title equally prominent and visible. You may add - other material on the covers in addition. Copying with changes - limited to the covers, as long as they preserve the title of the - <link linkend="fdl-document">Document</link> and satisfy these - conditions, can be treated as verbatim copying in other - respects. - </para> - - <para> - If the required texts for either cover are too voluminous to fit - legibly, you should put the first ones listed (as many as fit - reasonably) on the actual cover, and continue the rest onto - adjacent pages. - </para> - - <para> - If you publish or distribute <link - linkend="fdl-transparent">Opaque</link> copies of the <link - linkend="fdl-document">Document</link> numbering more than 100, - you must either include a machine-readable <link - linkend="fdl-transparent">Transparent</link> copy along with - each Opaque copy, or state in or with each Opaque copy a - publicly-accessible computer-network location containing a - complete Transparent copy of the Document, free of added - material, which the general network-using public has access to - download anonymously at no charge using public-standard network - protocols. If you use the latter option, you must take - reasonably prudent steps, when you begin distribution of Opaque - copies in quantity, to ensure that this Transparent copy will - remain thus accessible at the stated location until at least one - year after the last time you distribute an Opaque copy (directly - or through your agents or retailers) of that edition to the - public. - </para> - - <para> - It is requested, but not required, that you contact the authors - of the <link linkend="fdl-document">Document</link> well before - redistributing any large number of copies, to give them a chance - to provide you with an updated version of the Document. - </para> - </sect1> - - <sect1 id="fdl-section4"> - <title>4. MODIFICATIONS</title> - <para> - You may copy and distribute a <link - linkend="fdl-modified">Modified Version</link> of the <link - linkend="fdl-document">Document</link> under the conditions of - sections <link linkend="fdl-section2">2</link> and <link - linkend="fdl-section3">3</link> above, provided that you release - the Modified Version under precisely this License, with the - Modified Version filling the role of the Document, thus - licensing distribution and modification of the Modified Version - to whoever possesses a copy of it. In addition, you must do - these things in the Modified Version: - </para> - - <itemizedlist mark="opencircle"> - <listitem> - <formalpara> - <title>A</title> - <para> - Use in the <link linkend="fdl-title-page">Title - Page</link> (and on the covers, if any) a title distinct - from that of the <link - linkend="fdl-document">Document</link>, and from those of - previous versions (which should, if there were any, be - listed in the History section of the Document). You may - use the same title as a previous version if the original - publisher of that version gives permission. - </para> - </formalpara> - </listitem> - - <listitem> - <formalpara> - <title>B</title> - <para> - List on the <link linkend="fdl-title-page">Title - Page</link>, as authors, one or more persons or entities - responsible for authorship of the modifications in the - <link linkend="fdl-modified">Modified Version</link>, - together with at least five of the principal authors of - the <link linkend="fdl-document">Document</link> (all of - its principal authors, if it has less than five). - </para> - </formalpara> - </listitem> - - <listitem> - <formalpara> - <title>C</title> - <para> - State on the <link linkend="fdl-title-page">Title - Page</link> the name of the publisher of the <link - linkend="fdl-modified">Modified Version</link>, as the - publisher. - </para> - </formalpara> - </listitem> - - <listitem> - <formalpara> - <title>D</title> - <para> - Preserve all the copyright notices of the <link - linkend="fdl-document">Document</link>. - </para> - </formalpara> - </listitem> - - <listitem> - <formalpara> - <title>E</title> - <para> - Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. - </para> - </formalpara> - </listitem> - - <listitem> - <formalpara> - <title>F</title> - <para> - Include, immediately after the copyright notices, a - license notice giving the public permission to use the - <link linkend="fdl-modified">Modified Version</link> under - the terms of this License, in the form shown in the - Addendum below. - </para> - </formalpara> - </listitem> - - <listitem> - <formalpara> - <title>G</title> - <para> - Preserve in that license notice the full lists of <link - linkend="fdl-invariant"> Invariant Sections</link> and - required <link linkend="fdl-cover-texts">Cover - Texts</link> given in the <link - linkend="fdl-document">Document's</link> license notice. - </para> - </formalpara> - </listitem> - - <listitem> - <formalpara> - <title>H</title> - <para> - Include an unaltered copy of this License. - </para> - </formalpara> - </listitem> - - <listitem> - <formalpara> - <title>I</title> - <para> - Preserve the section entitled <quote>History</quote>, and - its title, and add to it an item stating at least the - title, year, new authors, and publisher of the <link - linkend="fdl-modified">Modified Version </link>as given on - the <link linkend="fdl-title-page">Title Page</link>. If - there is no section entitled <quote>History</quote> in the - <link linkend="fdl-document">Document</link>, create one - stating the title, year, authors, and publisher of the - Document as given on its Title Page, then add an item - describing the Modified Version as stated in the previous - sentence. - </para> - </formalpara> - </listitem> - - <listitem> - <formalpara> - <title>J</title> - <para> - Preserve the network location, if any, given in the <link - linkend="fdl-document">Document</link> for public access - to a <link linkend="fdl-transparent">Transparent</link> - copy of the Document, and likewise the network locations - given in the Document for previous versions it was based - on. These may be placed in the <quote>History</quote> - section. You may omit a network location for a work that - was published at least four years before the Document - itself, or if the original publisher of the version it - refers to gives permission. - </para> - </formalpara> - </listitem> - - <listitem> - <formalpara> - <title>K</title> - <para> - In any section entitled <quote>Acknowledgements</quote> or - <quote>Dedications</quote>, preserve the section's title, - and preserve in the section all the substance and tone of - each of the contributor acknowledgements and/or - dedications given therein. - </para> - </formalpara> - </listitem> - - <listitem> - <formalpara> - <title>L</title> - <para> - Preserve all the <link linkend="fdl-invariant">Invariant - Sections</link> of the <link - linkend="fdl-document">Document</link>, unaltered in their - text and in their titles. Section numbers or the - equivalent are not considered part of the section titles. - </para> - </formalpara> - </listitem> - - <listitem> - <formalpara> - <title>M</title> - <para> - Delete any section entitled - <quote>Endorsements</quote>. Such a section may not be - included in the <link linkend="fdl-modified">Modified - Version</link>. - </para> - </formalpara> - </listitem> - - <listitem> - <formalpara> - <title>N</title> - <para> - Do not retitle any existing section as - <quote>Endorsements</quote> or to conflict in title with - any <link linkend="fdl-invariant">Invariant - Section</link>. - </para> - </formalpara> - </listitem> - </itemizedlist> - - <para> - If the <link linkend="fdl-modified">Modified Version</link> - includes new front-matter sections or appendices that qualify as - <link linkend="fdl-secondary">Secondary Sections</link> and - contain no material copied from the Document, you may at your - option designate some or all of these sections as invariant. To - do this, add their titles to the list of <link - linkend="fdl-invariant">Invariant Sections</link> in the - Modified Version's license notice. These titles must be - distinct from any other section titles. - </para> - - <para> - You may add a section entitled <quote>Endorsements</quote>, - provided it contains nothing but endorsements of your <link - linkend="fdl-modified">Modified Version</link> by various - parties--for example, statements of peer review or that the text - has been approved by an organization as the authoritative - definition of a standard. - </para> - - <para> - You may add a passage of up to five words as a <link - linkend="fdl-cover-texts">Front-Cover Text</link>, and a passage - of up to 25 words as a <link - linkend="fdl-cover-texts">Back-Cover Text</link>, to the end of - the list of <link linkend="fdl-cover-texts">Cover Texts</link> - in the <link linkend="fdl-modified">Modified Version</link>. - Only one passage of Front-Cover Text and one of Back-Cover Text - may be added by (or through arrangements made by) any one - entity. If the <link linkend="fdl-document">Document</link> - already includes a cover text for the same cover, previously - added by you or by arrangement made by the same entity you are - acting on behalf of, you may not add another; but you may - replace the old one, on explicit permission from the previous - publisher that added the old one. - </para> - - <para> - The author(s) and publisher(s) of the <link - linkend="fdl-document">Document</link> do not by this License - give permission to use their names for publicity for or to - assert or imply endorsement of any <link - linkend="fdl-modified">Modified Version </link>. - </para> - </sect1> - - <sect1 id="fdl-section5"> - <title>5. COMBINING DOCUMENTS</title> - <para> - You may combine the <link linkend="fdl-document">Document</link> - with other documents released under this License, under the - terms defined in <link linkend="fdl-section4">section 4</link> - above for modified versions, provided that you include in the - combination all of the <link linkend="fdl-invariant">Invariant - Sections</link> of all of the original documents, unmodified, - and list them all as Invariant Sections of your combined work in - its license notice. - </para> - - <para> - The combined work need only contain one copy of this License, - and multiple identical <link linkend="fdl-invariant">Invariant - Sections</link> may be replaced with a single copy. If there are - multiple Invariant Sections with the same name but different - contents, make the title of each such section unique by adding - at the end of it, in parentheses, the name of the original - author or publisher of that section if known, or else a unique - number. Make the same adjustment to the section titles in the - list of Invariant Sections in the license notice of the combined - work. - </para> - - <para> - In the combination, you must combine any sections entitled - <quote>History</quote> in the various original documents, - forming one section entitled <quote>History</quote>; likewise - combine any sections entitled <quote>Acknowledgements</quote>, - and any sections entitled <quote>Dedications</quote>. You must - delete all sections entitled <quote>Endorsements.</quote> - </para> - </sect1> - - <sect1 id="fdl-section6"> - <title>6. COLLECTIONS OF DOCUMENTS</title> - <para> - You may make a collection consisting of the <link - linkend="fdl-document">Document</link> and other documents - released under this License, and replace the individual copies - of this License in the various documents with a single copy that - is included in the collection, provided that you follow the - rules of this License for verbatim copying of each of the - documents in all other respects. - </para> - - <para> - You may extract a single document from such a collection, and - dispbibute it individually under this License, provided you - insert a copy of this License into the extracted document, and - follow this License in all other respects regarding verbatim - copying of that document. - </para> - </sect1> - - <sect1 id="fdl-section7"> - <title>7. AGGREGATION WITH INDEPENDENT WORKS</title> - <para> - A compilation of the <link - linkend="fdl-document">Document</link> or its derivatives with - other separate and independent documents or works, in or on a - volume of a storage or distribution medium, does not as a whole - count as a <link linkend="fdl-modified">Modified Version</link> - of the Document, provided no compilation copyright is claimed - for the compilation. Such a compilation is called an - <quote>aggregate</quote>, and this License does not apply to the - other self-contained works thus compiled with the Document , on - account of their being thus compiled, if they are not themselves - derivative works of the Document. If the <link - linkend="fdl-cover-texts">Cover Text</link> requirement of <link - linkend="fdl-section3">section 3</link> is applicable to these - copies of the Document, then if the Document is less than one - quarter of the entire aggregate, the Document's Cover Texts may - be placed on covers that surround only the Document within the - aggregate. Otherwise they must appear on covers around the whole - aggregate. - </para> - </sect1> - - <sect1 id="fdl-section8"> - <title>8. TRANSLATION</title> - <para> - Translation is considered a kind of modification, so you may - distribute translations of the <link - linkend="fdl-document">Document</link> under the terms of <link - linkend="fdl-section4">section 4</link>. Replacing <link - linkend="fdl-invariant"> Invariant Sections</link> with - translations requires special permission from their copyright - holders, but you may include translations of some or all - Invariant Sections in addition to the original versions of these - Invariant Sections. You may include a translation of this - License provided that you also include the original English - version of this License. In case of a disagreement between the - translation and the original English version of this License, - the original English version will prevail. - </para> - </sect1> - - <sect1 id="fdl-section9"> - <title>9. TERMINATION</title> - <para> - You may not copy, modify, sublicense, or distribute the <link - linkend="fdl-document">Document</link> except as expressly - provided for under this License. Any other attempt to copy, - modify, sublicense or distribute the Document is void, and will - automatically terminate your rights under this License. However, - parties who have received copies, or rights, from you under this - License will not have their licenses terminated so long as such - parties remain in full compliance. - </para> - </sect1> - - <sect1 id="fdl-section10"> - <title>10. FUTURE REVISIONS OF THIS LICENSE</title> - <para> - The <ulink type="http" - url="http://www.gnu.org/fsf/fsf.html">Free Software - Foundation</ulink> may publish new, revised versions of the GNU - Free Documentation License from time to time. Such new versions - will be similar in spirit to the present version, but may differ - in detail to address new problems or concerns. See <ulink - type="http" - url="http://www.gnu.org/copyleft">http://www.gnu.org/copyleft/</ulink>. - </para> - - <para> - Each version of the License is given a distinguishing version - number. If the <link linkend="fdl-document">Document</link> - specifies that a particular numbered version of this License - <quote>or any later version</quote> applies to it, you have the - option of following the terms and conditions either of that - specified version or of any later version that has been - published (not as a draft) by the Free Software Foundation. If - the Document does not specify a version number of this License, - you may choose any version ever published (not as a draft) by - the Free Software Foundation. - </para> - </sect1> - - <sect1 id="fdl-using"> - <title>Addendum</title> - <para> - To use this License in a document you have written, include a copy of - the License in the document and put the following copyright and - license notices just after the title page: - </para> - - <blockquote> - <para> - Copyright © YEAR YOUR NAME. - </para> - <para> - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation - License, Version 1.1 or any later version published by the - Free Software Foundation; with the <link - linkend="fdl-invariant">Invariant Sections</link> being LIST - THEIR TITLES, with the <link - linkend="fdl-cover-texts">Front-Cover Texts</link> being LIST, - and with the <link linkend="fdl-cover-texts">Back-Cover - Texts</link> being LIST. A copy of the license is included in - the section entitled <quote>GNU Free Documentation - License</quote>. - </para> - </blockquote> - - <para> - If you have no <link linkend="fdl-invariant">Invariant - Sections</link>, write <quote>with no Invariant Sections</quote> - instead of saying which ones are invariant. If you have no - <link linkend="fdl-cover-texts">Front-Cover Texts</link>, write - <quote>no Front-Cover Texts</quote> instead of - <quote>Front-Cover Texts being LIST</quote>; likewise for <link - linkend="fdl-cover-texts">Back-Cover Texts</link>. - </para> - - <para> - If your document contains nontrivial examples of program code, - we recommend releasing these examples in parallel under your - choice of free software license, such as the <ulink type="http" - url="http://www.gnu.org/copyleft/gpl.html"> GNU General Public - License</ulink>, to permit their use in free software. - </para> - </sect1> -</appendix> - - - - - - diff --git a/Documentation/DocBook/v4l/fieldseq_bt.gif b/Documentation/DocBook/v4l/fieldseq_bt.gif Binary files differdeleted file mode 100644 index 60e8569a76c9..000000000000 --- a/Documentation/DocBook/v4l/fieldseq_bt.gif +++ /dev/null diff --git a/Documentation/DocBook/v4l/fieldseq_bt.pdf b/Documentation/DocBook/v4l/fieldseq_bt.pdf Binary files differdeleted file mode 100644 index 26598b23f80d..000000000000 --- a/Documentation/DocBook/v4l/fieldseq_bt.pdf +++ /dev/null diff --git a/Documentation/DocBook/v4l/fieldseq_tb.gif b/Documentation/DocBook/v4l/fieldseq_tb.gif Binary files differdeleted file mode 100644 index 718492f1cfc7..000000000000 --- a/Documentation/DocBook/v4l/fieldseq_tb.gif +++ /dev/null diff --git a/Documentation/DocBook/v4l/fieldseq_tb.pdf b/Documentation/DocBook/v4l/fieldseq_tb.pdf Binary files differdeleted file mode 100644 index 4965b22ddb3a..000000000000 --- a/Documentation/DocBook/v4l/fieldseq_tb.pdf +++ /dev/null diff --git a/Documentation/DocBook/v4l/func-close.xml b/Documentation/DocBook/v4l/func-close.xml deleted file mode 100644 index dfb41cbbbec3..000000000000 --- a/Documentation/DocBook/v4l/func-close.xml +++ /dev/null @@ -1,70 +0,0 @@ -<refentry id="func-close"> - <refmeta> - <refentrytitle>V4L2 close()</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>v4l2-close</refname> - <refpurpose>Close a V4L2 device</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo>#include <unistd.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>close</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>Closes the device. Any I/O in progress is terminated and -resources associated with the file descriptor are freed. However data -format parameters, current input or output, control values or other -properties remain unchanged.</para> - </refsect1> - - <refsect1> - <title>Return Value</title> - - <para>The function returns <returnvalue>0</returnvalue> on -success, <returnvalue>-1</returnvalue> on failure and the -<varname>errno</varname> is set appropriately. Possible error -codes:</para> - - <variablelist> - <varlistentry> - <term><errorcode>EBADF</errorcode></term> - <listitem> - <para><parameter>fd</parameter> is not a valid open file -descriptor.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/func-ioctl.xml b/Documentation/DocBook/v4l/func-ioctl.xml deleted file mode 100644 index b60fd37a6295..000000000000 --- a/Documentation/DocBook/v4l/func-ioctl.xml +++ /dev/null @@ -1,145 +0,0 @@ -<refentry id="func-ioctl"> - <refmeta> - <refentrytitle>V4L2 ioctl()</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>v4l2-ioctl</refname> - <refpurpose>Program a V4L2 device</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo>#include <sys/ioctl.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>void *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>V4L2 ioctl request code as defined in the <filename>videodev2.h</filename> header file, for example -VIDIOC_QUERYCAP.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para>Pointer to a function parameter, usually a structure.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>The <function>ioctl()</function> function is used to program -V4L2 devices. The argument <parameter>fd</parameter> must be an open -file descriptor. An ioctl <parameter>request</parameter> has encoded -in it whether the argument is an input, output or read/write -parameter, and the size of the argument <parameter>argp</parameter> in -bytes. Macros and defines specifying V4L2 ioctl requests are located -in the <filename>videodev2.h</filename> header file. -Applications should use their own copy, not include the version in the -kernel sources on the system they compile on. All V4L2 ioctl requests, -their respective function and parameters are specified in <xref - linkend="user-func" />.</para> - </refsect1> - - <refsect1> - <title>Return Value</title> - - <para>On success the <function>ioctl()</function> function returns -<returnvalue>0</returnvalue> and does not reset the -<varname>errno</varname> variable. On failure -<returnvalue>-1</returnvalue> is returned, when the ioctl takes an -output or read/write parameter it remains unmodified, and the -<varname>errno</varname> variable is set appropriately. See below for -possible error codes. Generic errors like <errorcode>EBADF</errorcode> -or <errorcode>EFAULT</errorcode> are not listed in the sections -discussing individual ioctl requests.</para> - <para>Note ioctls may return undefined error codes. Since errors -may have side effects such as a driver reset applications should -abort on unexpected errors.</para> - - <variablelist> - <varlistentry> - <term><errorcode>EBADF</errorcode></term> - <listitem> - <para><parameter>fd</parameter> is not a valid open file -descriptor.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The property cannot be changed right now. Typically -this error code is returned when I/O is in progress or the driver -supports multiple opens and another process locked the property.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EFAULT</errorcode></term> - <listitem> - <para><parameter>argp</parameter> references an inaccessible -memory area.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ENOTTY</errorcode></term> - <listitem> - <para><parameter>fd</parameter> is not associated with a -character special device.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The <parameter>request</parameter> or the data pointed -to by <parameter>argp</parameter> is not valid. This is a very common -error code, see the individual ioctl requests listed in <xref - linkend="user-func" /> for actual causes.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ENOMEM</errorcode></term> - <listitem> - <para>Not enough physical or virtual memory was available to -complete the request.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ERANGE</errorcode></term> - <listitem> - <para>The application attempted to set a control with the -&VIDIOC-S-CTRL; ioctl to a value which is out of bounds.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/func-mmap.xml b/Documentation/DocBook/v4l/func-mmap.xml deleted file mode 100644 index 786732b64bbd..000000000000 --- a/Documentation/DocBook/v4l/func-mmap.xml +++ /dev/null @@ -1,191 +0,0 @@ -<refentry id="func-mmap"> - <refmeta> - <refentrytitle>V4L2 mmap()</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>v4l2-mmap</refname> - <refpurpose>Map device memory into application address space</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo> -#include <unistd.h> -#include <sys/mman.h></funcsynopsisinfo> - <funcprototype> - <funcdef>void *<function>mmap</function></funcdef> - <paramdef>void *<parameter>start</parameter></paramdef> - <paramdef>size_t <parameter>length</parameter></paramdef> - <paramdef>int <parameter>prot</parameter></paramdef> - <paramdef>int <parameter>flags</parameter></paramdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>off_t <parameter>offset</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - <variablelist> - <varlistentry> - <term><parameter>start</parameter></term> - <listitem> - <para>Map the buffer to this address in the -application's address space. When the <constant>MAP_FIXED</constant> -flag is specified, <parameter>start</parameter> must be a multiple of the -pagesize and mmap will fail when the specified address -cannot be used. Use of this option is discouraged; applications should -just specify a <constant>NULL</constant> pointer here.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>length</parameter></term> - <listitem> - <para>Length of the memory area to map. This must be the -same value as returned by the driver in the &v4l2-buffer; -<structfield>length</structfield> field for the -single-planar API, and the same value as returned by the driver -in the &v4l2-plane; <structfield>length</structfield> field for the -multi-planar API.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>prot</parameter></term> - <listitem> - <para>The <parameter>prot</parameter> argument describes the -desired memory protection. Regardless of the device type and the -direction of data exchange it should be set to -<constant>PROT_READ</constant> | <constant>PROT_WRITE</constant>, -permitting read and write access to image buffers. Drivers should -support at least this combination of flags. Note the Linux -<filename>video-buf</filename> kernel module, which is used by the -bttv, saa7134, saa7146, cx88 and vivi driver supports only -<constant>PROT_READ</constant> | <constant>PROT_WRITE</constant>. When -the driver does not support the desired protection the -<function>mmap()</function> function fails.</para> - <para>Note device memory accesses (⪚ the memory on a -graphics card with video capturing hardware) may incur a performance -penalty compared to main memory accesses, or reads may be -significantly slower than writes or vice versa. Other I/O methods may -be more efficient in this case.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>flags</parameter></term> - <listitem> - <para>The <parameter>flags</parameter> parameter -specifies the type of the mapped object, mapping options and whether -modifications made to the mapped copy of the page are private to the -process or are to be shared with other references.</para> - <para><constant>MAP_FIXED</constant> requests that the -driver selects no other address than the one specified. If the -specified address cannot be used, <function>mmap()</function> will fail. If -<constant>MAP_FIXED</constant> is specified, -<parameter>start</parameter> must be a multiple of the pagesize. Use -of this option is discouraged.</para> - <para>One of the <constant>MAP_SHARED</constant> or -<constant>MAP_PRIVATE</constant> flags must be set. -<constant>MAP_SHARED</constant> allows applications to share the -mapped memory with other (⪚ child-) processes. Note the Linux -<filename>video-buf</filename> module which is used by the bttv, -saa7134, saa7146, cx88 and vivi driver supports only -<constant>MAP_SHARED</constant>. <constant>MAP_PRIVATE</constant> -requests copy-on-write semantics. V4L2 applications should not set the -<constant>MAP_PRIVATE</constant>, <constant>MAP_DENYWRITE</constant>, -<constant>MAP_EXECUTABLE</constant> or <constant>MAP_ANON</constant> -flag.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>offset</parameter></term> - <listitem> - <para>Offset of the buffer in device memory. This must be the -same value as returned by the driver in the &v4l2-buffer; -<structfield>m</structfield> union <structfield>offset</structfield> field for -the single-planar API, and the same value as returned by the driver -in the &v4l2-plane; <structfield>m</structfield> union -<structfield>mem_offset</structfield> field for the multi-planar API.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>The <function>mmap()</function> function asks to map -<parameter>length</parameter> bytes starting at -<parameter>offset</parameter> in the memory of the device specified by -<parameter>fd</parameter> into the application address space, -preferably at address <parameter>start</parameter>. This latter -address is a hint only, and is usually specified as 0.</para> - - <para>Suitable length and offset parameters are queried with the -&VIDIOC-QUERYBUF; ioctl. Buffers must be allocated with the -&VIDIOC-REQBUFS; ioctl before they can be queried.</para> - - <para>To unmap buffers the &func-munmap; function is used.</para> - </refsect1> - - <refsect1> - <title>Return Value</title> - - <para>On success <function>mmap()</function> returns a pointer to -the mapped buffer. On error <constant>MAP_FAILED</constant> (-1) is -returned, and the <varname>errno</varname> variable is set -appropriately. Possible error codes are:</para> - - <variablelist> - <varlistentry> - <term><errorcode>EBADF</errorcode></term> - <listitem> - <para><parameter>fd</parameter> is not a valid file -descriptor.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EACCES</errorcode></term> - <listitem> - <para><parameter>fd</parameter> is -not open for reading and writing.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The <parameter>start</parameter> or -<parameter>length</parameter> or <parameter>offset</parameter> are not -suitable. (E. g. they are too large, or not aligned on a -<constant>PAGESIZE</constant> boundary.)</para> - <para>The <parameter>flags</parameter> or -<parameter>prot</parameter> value is not supported.</para> - <para>No buffers have been allocated with the -&VIDIOC-REQBUFS; ioctl.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ENOMEM</errorcode></term> - <listitem> - <para>Not enough physical or virtual memory was available to -complete the request.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/func-munmap.xml b/Documentation/DocBook/v4l/func-munmap.xml deleted file mode 100644 index e2c4190f9bb6..000000000000 --- a/Documentation/DocBook/v4l/func-munmap.xml +++ /dev/null @@ -1,84 +0,0 @@ -<refentry id="func-munmap"> - <refmeta> - <refentrytitle>V4L2 munmap()</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>v4l2-munmap</refname> - <refpurpose>Unmap device memory</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo> -#include <unistd.h> -#include <sys/mman.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>munmap</function></funcdef> - <paramdef>void *<parameter>start</parameter></paramdef> - <paramdef>size_t <parameter>length</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - <refsect1> - <title>Arguments</title> - <variablelist> - <varlistentry> - <term><parameter>start</parameter></term> - <listitem> - <para>Address of the mapped buffer as returned by the -&func-mmap; function.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>length</parameter></term> - <listitem> - <para>Length of the mapped buffer. This must be the same -value as given to <function>mmap()</function> and returned by the -driver in the &v4l2-buffer; <structfield>length</structfield> -field for the single-planar API and in the &v4l2-plane; -<structfield>length</structfield> field for the multi-planar API.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>Unmaps a previously with the &func-mmap; function mapped -buffer and frees it, if possible. <!-- ? This function (not freeing) -has no impact on I/O in progress, specifically it does not imply -&VIDIOC-STREAMOFF; to terminate I/O. Unmapped buffers can still be -enqueued, dequeued or queried, they are just not accessible by the -application.--></para> - </refsect1> - - <refsect1> - <title>Return Value</title> - - <para>On success <function>munmap()</function> returns 0, on -failure -1 and the <varname>errno</varname> variable is set -appropriately:</para> - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The <parameter>start</parameter> or -<parameter>length</parameter> is incorrect, or no buffers have been -mapped yet.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/func-open.xml b/Documentation/DocBook/v4l/func-open.xml deleted file mode 100644 index 7595d07a8c72..000000000000 --- a/Documentation/DocBook/v4l/func-open.xml +++ /dev/null @@ -1,121 +0,0 @@ -<refentry id="func-open"> - <refmeta> - <refentrytitle>V4L2 open()</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>v4l2-open</refname> - <refpurpose>Open a V4L2 device</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo>#include <fcntl.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>open</function></funcdef> - <paramdef>const char *<parameter>device_name</parameter></paramdef> - <paramdef>int <parameter>flags</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>device_name</parameter></term> - <listitem> - <para>Device to be opened.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>flags</parameter></term> - <listitem> - <para>Open flags. Access mode must be -<constant>O_RDWR</constant>. This is just a technicality, input devices -still support only reading and output devices only writing.</para> - <para>When the <constant>O_NONBLOCK</constant> flag is -given, the read() function and the &VIDIOC-DQBUF; ioctl will return -the &EAGAIN; when no data is available or no buffer is in the driver -outgoing queue, otherwise these functions block until data becomes -available. All V4L2 drivers exchanging data with applications must -support the <constant>O_NONBLOCK</constant> flag.</para> - <para>Other flags have no effect.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - <refsect1> - <title>Description</title> - - <para>To open a V4L2 device applications call -<function>open()</function> with the desired device name. This -function has no side effects; all data format parameters, current -input or output, control values or other properties remain unchanged. -At the first <function>open()</function> call after loading the driver -they will be reset to default values, drivers are never in an -undefined state.</para> - </refsect1> - <refsect1> - <title>Return Value</title> - - <para>On success <function>open</function> returns the new file -descriptor. On error -1 is returned, and the <varname>errno</varname> -variable is set appropriately. Possible error codes are:</para> - - <variablelist> - <varlistentry> - <term><errorcode>EACCES</errorcode></term> - <listitem> - <para>The caller has no permission to access the -device.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The driver does not support multiple opens and the -device is already in use.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ENXIO</errorcode></term> - <listitem> - <para>No device corresponding to this device special file -exists.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ENOMEM</errorcode></term> - <listitem> - <para>Not enough kernel memory was available to complete the -request.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EMFILE</errorcode></term> - <listitem> - <para>The process already has the maximum number of -files open.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ENFILE</errorcode></term> - <listitem> - <para>The limit on the total number of files open on the -system has been reached.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/func-poll.xml b/Documentation/DocBook/v4l/func-poll.xml deleted file mode 100644 index ec3c718f5963..000000000000 --- a/Documentation/DocBook/v4l/func-poll.xml +++ /dev/null @@ -1,127 +0,0 @@ -<refentry id="func-poll"> - <refmeta> - <refentrytitle>V4L2 poll()</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>v4l2-poll</refname> - <refpurpose>Wait for some event on a file descriptor</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo>#include <sys/poll.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>poll</function></funcdef> - <paramdef>struct pollfd *<parameter>ufds</parameter></paramdef> - <paramdef>unsigned int <parameter>nfds</parameter></paramdef> - <paramdef>int <parameter>timeout</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Description</title> - - <para>With the <function>poll()</function> function applications -can suspend execution until the driver has captured data or is ready -to accept data for output.</para> - - <para>When streaming I/O has been negotiated this function waits -until a buffer has been filled or displayed and can be dequeued with -the &VIDIOC-DQBUF; ioctl. When buffers are already in the outgoing -queue of the driver the function returns immediately.</para> - - <para>On success <function>poll()</function> returns the number of -file descriptors that have been selected (that is, file descriptors -for which the <structfield>revents</structfield> field of the -respective <structname>pollfd</structname> structure is non-zero). -Capture devices set the <constant>POLLIN</constant> and -<constant>POLLRDNORM</constant> flags in the -<structfield>revents</structfield> field, output devices the -<constant>POLLOUT</constant> and <constant>POLLWRNORM</constant> -flags. When the function timed out it returns a value of zero, on -failure it returns <returnvalue>-1</returnvalue> and the -<varname>errno</varname> variable is set appropriately. When the -application did not call &VIDIOC-QBUF; or &VIDIOC-STREAMON; yet the -<function>poll()</function> function succeeds, but sets the -<constant>POLLERR</constant> flag in the -<structfield>revents</structfield> field.</para> - - <para>When use of the <function>read()</function> function has -been negotiated and the driver does not capture yet, the -<function>poll</function> function starts capturing. When that fails -it returns a <constant>POLLERR</constant> as above. Otherwise it waits -until data has been captured and can be read. When the driver captures -continuously (as opposed to, for example, still images) the function -may return immediately.</para> - - <para>When use of the <function>write()</function> function has -been negotiated the <function>poll</function> function just waits -until the driver is ready for a non-blocking -<function>write()</function> call.</para> - - <para>All drivers implementing the <function>read()</function> or -<function>write()</function> function or streaming I/O must also -support the <function>poll()</function> function.</para> - - <para>For more details see the -<function>poll()</function> manual page.</para> - </refsect1> - - <refsect1> - <title>Return Value</title> - - <para>On success, <function>poll()</function> returns the number -structures which have non-zero <structfield>revents</structfield> -fields, or zero if the call timed out. On error -<returnvalue>-1</returnvalue> is returned, and the -<varname>errno</varname> variable is set appropriately:</para> - - <variablelist> - <varlistentry> - <term><errorcode>EBADF</errorcode></term> - <listitem> - <para>One or more of the <parameter>ufds</parameter> members -specify an invalid file descriptor.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The driver does not support multiple read or write -streams and the device is already in use.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EFAULT</errorcode></term> - <listitem> - <para><parameter>ufds</parameter> references an inaccessible -memory area.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINTR</errorcode></term> - <listitem> - <para>The call was interrupted by a signal.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The <parameter>nfds</parameter> argument is greater -than <constant>OPEN_MAX</constant>.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/func-read.xml b/Documentation/DocBook/v4l/func-read.xml deleted file mode 100644 index a5089bf8873d..000000000000 --- a/Documentation/DocBook/v4l/func-read.xml +++ /dev/null @@ -1,189 +0,0 @@ -<refentry id="func-read"> - <refmeta> - <refentrytitle>V4L2 read()</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>v4l2-read</refname> - <refpurpose>Read from a V4L2 device</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo>#include <unistd.h></funcsynopsisinfo> - <funcprototype> - <funcdef>ssize_t <function>read</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>void *<parameter>buf</parameter></paramdef> - <paramdef>size_t <parameter>count</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>buf</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>count</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para><function>read()</function> attempts to read up to -<parameter>count</parameter> bytes from file descriptor -<parameter>fd</parameter> into the buffer starting at -<parameter>buf</parameter>. The layout of the data in the buffer is -discussed in the respective device interface section, see ##. If <parameter>count</parameter> is zero, -<function>read()</function> returns zero and has no other results. If -<parameter>count</parameter> is greater than -<constant>SSIZE_MAX</constant>, the result is unspecified. Regardless -of the <parameter>count</parameter> value each -<function>read()</function> call will provide at most one frame (two -fields) worth of data.</para> - - <para>By default <function>read()</function> blocks until data -becomes available. When the <constant>O_NONBLOCK</constant> flag was -given to the &func-open; function it -returns immediately with an &EAGAIN; when no data is available. The -&func-select; or &func-poll; functions -can always be used to suspend execution until data becomes available. All -drivers supporting the <function>read()</function> function must also -support <function>select()</function> and -<function>poll()</function>.</para> - - <para>Drivers can implement read functionality in different -ways, using a single or multiple buffers and discarding the oldest or -newest frames once the internal buffers are filled.</para> - - <para><function>read()</function> never returns a "snapshot" of a -buffer being filled. Using a single buffer the driver will stop -capturing when the application starts reading the buffer until the -read is finished. Thus only the period of the vertical blanking -interval is available for reading, or the capture rate must fall below -the nominal frame rate of the video standard.</para> - -<para>The behavior of -<function>read()</function> when called during the active picture -period or the vertical blanking separating the top and bottom field -depends on the discarding policy. A driver discarding the oldest -frames keeps capturing into an internal buffer, continuously -overwriting the previously, not read frame, and returns the frame -being received at the time of the <function>read()</function> call as -soon as it is complete.</para> - - <para>A driver discarding the newest frames stops capturing until -the next <function>read()</function> call. The frame being received at -<function>read()</function> time is discarded, returning the following -frame instead. Again this implies a reduction of the capture rate to -one half or less of the nominal frame rate. An example of this model -is the video read mode of the bttv driver, initiating a DMA to user -memory when <function>read()</function> is called and returning when -the DMA finished.</para> - - <para>In the multiple buffer model drivers maintain a ring of -internal buffers, automatically advancing to the next free buffer. -This allows continuous capturing when the application can empty the -buffers fast enough. Again, the behavior when the driver runs out of -free buffers depends on the discarding policy.</para> - - <para>Applications can get and set the number of buffers used -internally by the driver with the &VIDIOC-G-PARM; and &VIDIOC-S-PARM; -ioctls. They are optional, however. The discarding policy is not -reported and cannot be changed. For minimum requirements see <xref - linkend="devices" />.</para> - </refsect1> - - <refsect1> - <title>Return Value</title> - - <para>On success, the number of bytes read is returned. It is not -an error if this number is smaller than the number of bytes requested, -or the amount of data required for one frame. This may happen for -example because <function>read()</function> was interrupted by a -signal. On error, -1 is returned, and the <varname>errno</varname> -variable is set appropriately. In this case the next read will start -at the beginning of a new frame. Possible error codes are:</para> - - <variablelist> - <varlistentry> - <term><errorcode>EAGAIN</errorcode></term> - <listitem> - <para>Non-blocking I/O has been selected using -O_NONBLOCK and no data was immediately available for reading.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBADF</errorcode></term> - <listitem> - <para><parameter>fd</parameter> is not a valid file -descriptor or is not open for reading, or the process already has the -maximum number of files open.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The driver does not support multiple read streams and the -device is already in use.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EFAULT</errorcode></term> - <listitem> - <para><parameter>buf</parameter> references an inaccessible -memory area.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINTR</errorcode></term> - <listitem> - <para>The call was interrupted by a signal before any -data was read.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EIO</errorcode></term> - <listitem> - <para>I/O error. This indicates some hardware problem or a -failure to communicate with a remote device (USB camera etc.).</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The <function>read()</function> function is not -supported by this driver, not on this device, or generally not on this -type of device.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/func-select.xml b/Documentation/DocBook/v4l/func-select.xml deleted file mode 100644 index b6713623181f..000000000000 --- a/Documentation/DocBook/v4l/func-select.xml +++ /dev/null @@ -1,138 +0,0 @@ -<refentry id="func-select"> - <refmeta> - <refentrytitle>V4L2 select()</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>v4l2-select</refname> - <refpurpose>Synchronous I/O multiplexing</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo> -#include <sys/time.h> -#include <sys/types.h> -#include <unistd.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>select</function></funcdef> - <paramdef>int <parameter>nfds</parameter></paramdef> - <paramdef>fd_set *<parameter>readfds</parameter></paramdef> - <paramdef>fd_set *<parameter>writefds</parameter></paramdef> - <paramdef>fd_set *<parameter>exceptfds</parameter></paramdef> - <paramdef>struct timeval *<parameter>timeout</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Description</title> - - <para>With the <function>select()</function> function applications -can suspend execution until the driver has captured data or is ready -to accept data for output.</para> - - <para>When streaming I/O has been negotiated this function waits -until a buffer has been filled or displayed and can be dequeued with -the &VIDIOC-DQBUF; ioctl. When buffers are already in the outgoing -queue of the driver the function returns immediately.</para> - - <para>On success <function>select()</function> returns the total -number of bits set in the <structname>fd_set</structname>s. When the -function timed out it returns a value of zero. On failure it returns -<returnvalue>-1</returnvalue> and the <varname>errno</varname> -variable is set appropriately. When the application did not call -&VIDIOC-QBUF; or &VIDIOC-STREAMON; yet the -<function>select()</function> function succeeds, setting the bit of -the file descriptor in <parameter>readfds</parameter> or -<parameter>writefds</parameter>, but subsequent &VIDIOC-DQBUF; calls -will fail.<footnote><para>The Linux kernel implements -<function>select()</function> like the &func-poll; function, but -<function>select()</function> cannot return a -<constant>POLLERR</constant>.</para> - </footnote></para> - - <para>When use of the <function>read()</function> function has -been negotiated and the driver does not capture yet, the -<function>select()</function> function starts capturing. When that -fails, <function>select()</function> returns successful and a -subsequent <function>read()</function> call, which also attempts to -start capturing, will return an appropriate error code. When the -driver captures continuously (as opposed to, for example, still -images) and data is already available the -<function>select()</function> function returns immediately.</para> - - <para>When use of the <function>write()</function> function has -been negotiated the <function>select()</function> function just waits -until the driver is ready for a non-blocking -<function>write()</function> call.</para> - - <para>All drivers implementing the <function>read()</function> or -<function>write()</function> function or streaming I/O must also -support the <function>select()</function> function.</para> - - <para>For more details see the <function>select()</function> -manual page.</para> - - </refsect1> - - <refsect1> - <title>Return Value</title> - - <para>On success, <function>select()</function> returns the number -of descriptors contained in the three returned descriptor sets, which -will be zero if the timeout expired. On error -<returnvalue>-1</returnvalue> is returned, and the -<varname>errno</varname> variable is set appropriately; the sets and -<parameter>timeout</parameter> are undefined. Possible error codes -are:</para> - - <variablelist> - <varlistentry> - <term><errorcode>EBADF</errorcode></term> - <listitem> - <para>One or more of the file descriptor sets specified a -file descriptor that is not open.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The driver does not support multiple read or write -streams and the device is already in use.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EFAULT</errorcode></term> - <listitem> - <para>The <parameter>readfds</parameter>, -<parameter>writefds</parameter>, <parameter>exceptfds</parameter> or -<parameter>timeout</parameter> pointer references an inaccessible memory -area.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINTR</errorcode></term> - <listitem> - <para>The call was interrupted by a signal.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The <parameter>nfds</parameter> argument is less than -zero or greater than <constant>FD_SETSIZE</constant>.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/func-write.xml b/Documentation/DocBook/v4l/func-write.xml deleted file mode 100644 index 2c09c09371c3..000000000000 --- a/Documentation/DocBook/v4l/func-write.xml +++ /dev/null @@ -1,136 +0,0 @@ -<refentry id="func-write"> - <refmeta> - <refentrytitle>V4L2 write()</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>v4l2-write</refname> - <refpurpose>Write to a V4L2 device</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo>#include <unistd.h></funcsynopsisinfo> - <funcprototype> - <funcdef>ssize_t <function>write</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>void *<parameter>buf</parameter></paramdef> - <paramdef>size_t <parameter>count</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>buf</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>count</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para><function>write()</function> writes up to -<parameter>count</parameter> bytes to the device referenced by the -file descriptor <parameter>fd</parameter> from the buffer starting at -<parameter>buf</parameter>. When the hardware outputs are not active -yet, this function enables them. When <parameter>count</parameter> is -zero, <function>write()</function> returns -<returnvalue>0</returnvalue> without any other effect.</para> - - <para>When the application does not provide more data in time, the -previous video frame, raw VBI image, sliced VPS or WSS data is -displayed again. Sliced Teletext or Closed Caption data is not -repeated, the driver inserts a blank line instead.</para> - </refsect1> - - <refsect1> - <title>Return Value</title> - - <para>On success, the number of bytes written are returned. Zero -indicates nothing was written. On error, <returnvalue>-1</returnvalue> -is returned, and the <varname>errno</varname> variable is set -appropriately. In this case the next write will start at the beginning -of a new frame. Possible error codes are:</para> - - <variablelist> - <varlistentry> - <term><errorcode>EAGAIN</errorcode></term> - <listitem> - <para>Non-blocking I/O has been selected using the <link -linkend="func-open"><constant>O_NONBLOCK</constant></link> flag and no -buffer space was available to write the data immediately.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBADF</errorcode></term> - <listitem> - <para><parameter>fd</parameter> is not a valid file -descriptor or is not open for writing.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The driver does not support multiple write streams and the -device is already in use.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EFAULT</errorcode></term> - <listitem> - <para><parameter>buf</parameter> references an inaccessible -memory area.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINTR</errorcode></term> - <listitem> - <para>The call was interrupted by a signal before any -data was written.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EIO</errorcode></term> - <listitem> - <para>I/O error. This indicates some hardware problem.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The <function>write()</function> function is not -supported by this driver, not on this device, or generally not on this -type of device.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/io.xml b/Documentation/DocBook/v4l/io.xml deleted file mode 100644 index 227e7ac45a06..000000000000 --- a/Documentation/DocBook/v4l/io.xml +++ /dev/null @@ -1,1265 +0,0 @@ - <title>Input/Output</title> - - <para>The V4L2 API defines several different methods to read from or -write to a device. All drivers exchanging data with applications must -support at least one of them.</para> - - <para>The classic I/O method using the <function>read()</function> -and <function>write()</function> function is automatically selected -after opening a V4L2 device. When the driver does not support this -method attempts to read or write will fail at any time.</para> - - <para>Other methods must be negotiated. To select the streaming I/O -method with memory mapped or user buffers applications call the -&VIDIOC-REQBUFS; ioctl. The asynchronous I/O method is not defined -yet.</para> - - <para>Video overlay can be considered another I/O method, although -the application does not directly receive the image data. It is -selected by initiating video overlay with the &VIDIOC-S-FMT; ioctl. -For more information see <xref linkend="overlay" />.</para> - - <para>Generally exactly one I/O method, including overlay, is -associated with each file descriptor. The only exceptions are -applications not exchanging data with a driver ("panel applications", -see <xref linkend="open" />) and drivers permitting simultaneous video capturing -and overlay using the same file descriptor, for compatibility with V4L -and earlier versions of V4L2.</para> - - <para><constant>VIDIOC_S_FMT</constant> and -<constant>VIDIOC_REQBUFS</constant> would permit this to some degree, -but for simplicity drivers need not support switching the I/O method -(after first switching away from read/write) other than by closing -and reopening the device.</para> - - <para>The following sections describe the various I/O methods in -more detail.</para> - - <section id="rw"> - <title>Read/Write</title> - - <para>Input and output devices support the -<function>read()</function> and <function>write()</function> function, -respectively, when the <constant>V4L2_CAP_READWRITE</constant> flag in -the <structfield>capabilities</structfield> field of &v4l2-capability; -returned by the &VIDIOC-QUERYCAP; ioctl is set.</para> - - <para>Drivers may need the CPU to copy the data, but they may also -support DMA to or from user memory, so this I/O method is not -necessarily less efficient than other methods merely exchanging buffer -pointers. It is considered inferior though because no meta-information -like frame counters or timestamps are passed. This information is -necessary to recognize frame dropping and to synchronize with other -data streams. However this is also the simplest I/O method, requiring -little or no setup to exchange data. It permits command line stunts -like this (the <application>vidctrl</application> tool is -fictitious):</para> - - <informalexample> - <screen> -> vidctrl /dev/video --input=0 --format=YUYV --size=352x288 -> dd if=/dev/video of=myimage.422 bs=202752 count=1 -</screen> - </informalexample> - - <para>To read from the device applications use the -&func-read; function, to write the &func-write; function. -Drivers must implement one I/O method if they -exchange data with applications, but it need not be this.<footnote> - <para>It would be desirable if applications could depend on -drivers supporting all I/O interfaces, but as much as the complex -memory mapping I/O can be inadequate for some devices we have no -reason to require this interface, which is most useful for simple -applications capturing still images.</para> - </footnote> When reading or writing is supported, the driver -must also support the &func-select; and &func-poll; -function.<footnote> - <para>At the driver level <function>select()</function> and -<function>poll()</function> are the same, and -<function>select()</function> is too important to be optional.</para> - </footnote></para> - </section> - - <section id="mmap"> - <title>Streaming I/O (Memory Mapping)</title> - - <para>Input and output devices support this I/O method when the -<constant>V4L2_CAP_STREAMING</constant> flag in the -<structfield>capabilities</structfield> field of &v4l2-capability; -returned by the &VIDIOC-QUERYCAP; ioctl is set. There are two -streaming methods, to determine if the memory mapping flavor is -supported applications must call the &VIDIOC-REQBUFS; ioctl.</para> - - <para>Streaming is an I/O method where only pointers to buffers -are exchanged between application and driver, the data itself is not -copied. Memory mapping is primarily intended to map buffers in device -memory into the application's address space. Device memory can be for -example the video memory on a graphics card with a video capture -add-on. However, being the most efficient I/O method available for a -long time, many other drivers support streaming as well, allocating -buffers in DMA-able main memory.</para> - - <para>A driver can support many sets of buffers. Each set is -identified by a unique buffer type value. The sets are independent and -each set can hold a different type of data. To access different sets -at the same time different file descriptors must be used.<footnote> - <para>One could use one file descriptor and set the buffer -type field accordingly when calling &VIDIOC-QBUF; etc., but it makes -the <function>select()</function> function ambiguous. We also like the -clean approach of one file descriptor per logical stream. Video -overlay for example is also a logical stream, although the CPU is not -needed for continuous operation.</para> - </footnote></para> - - <para>To allocate device buffers applications call the -&VIDIOC-REQBUFS; ioctl with the desired number of buffers and buffer -type, for example <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>. -This ioctl can also be used to change the number of buffers or to free -the allocated memory, provided none of the buffers are still -mapped.</para> - - <para>Before applications can access the buffers they must map -them into their address space with the &func-mmap; function. The -location of the buffers in device memory can be determined with the -&VIDIOC-QUERYBUF; ioctl. In the single-planar API case, the -<structfield>m.offset</structfield> and <structfield>length</structfield> -returned in a &v4l2-buffer; are passed as sixth and second parameter to the -<function>mmap()</function> function. When using the multi-planar API, -struct &v4l2-buffer; contains an array of &v4l2-plane; structures, each -containing its own <structfield>m.offset</structfield> and -<structfield>length</structfield>. When using the multi-planar API, every -plane of every buffer has to be mapped separately, so the number of -calls to &func-mmap; should be equal to number of buffers times number of -planes in each buffer. The offset and length values must not be modified. -Remember, the buffers are allocated in physical memory, as opposed to virtual -memory, which can be swapped out to disk. Applications should free the buffers -as soon as possible with the &func-munmap; function.</para> - - <example> - <title>Mapping buffers in the single-planar API</title> - <programlisting> -&v4l2-requestbuffers; reqbuf; -struct { - void *start; - size_t length; -} *buffers; -unsigned int i; - -memset(&reqbuf, 0, sizeof(reqbuf)); -reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -reqbuf.memory = V4L2_MEMORY_MMAP; -reqbuf.count = 20; - -if (-1 == ioctl (fd, &VIDIOC-REQBUFS;, &reqbuf)) { - if (errno == EINVAL) - printf("Video capturing or mmap-streaming is not supported\n"); - else - perror("VIDIOC_REQBUFS"); - - exit(EXIT_FAILURE); -} - -/* We want at least five buffers. */ - -if (reqbuf.count < 5) { - /* You may need to free the buffers here. */ - printf("Not enough buffer memory\n"); - exit(EXIT_FAILURE); -} - -buffers = calloc(reqbuf.count, sizeof(*buffers)); -assert(buffers != NULL); - -for (i = 0; i < reqbuf.count; i++) { - &v4l2-buffer; buffer; - - memset(&buffer, 0, sizeof(buffer)); - buffer.type = reqbuf.type; - buffer.memory = V4L2_MEMORY_MMAP; - buffer.index = i; - - if (-1 == ioctl (fd, &VIDIOC-QUERYBUF;, &buffer)) { - perror("VIDIOC_QUERYBUF"); - exit(EXIT_FAILURE); - } - - buffers[i].length = buffer.length; /* remember for munmap() */ - - buffers[i].start = mmap(NULL, buffer.length, - PROT_READ | PROT_WRITE, /* recommended */ - MAP_SHARED, /* recommended */ - fd, buffer.m.offset); - - if (MAP_FAILED == buffers[i].start) { - /* If you do not exit here you should unmap() and free() - the buffers mapped so far. */ - perror("mmap"); - exit(EXIT_FAILURE); - } -} - -/* Cleanup. */ - -for (i = 0; i < reqbuf.count; i++) - munmap(buffers[i].start, buffers[i].length); - </programlisting> - </example> - - <example> - <title>Mapping buffers in the multi-planar API</title> - <programlisting> -&v4l2-requestbuffers; reqbuf; -/* Our current format uses 3 planes per buffer */ -#define FMT_NUM_PLANES = 3; - -struct { - void *start[FMT_NUM_PLANES]; - size_t length[FMT_NUM_PLANES]; -} *buffers; -unsigned int i, j; - -memset(&reqbuf, 0, sizeof(reqbuf)); -reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; -reqbuf.memory = V4L2_MEMORY_MMAP; -reqbuf.count = 20; - -if (ioctl(fd, &VIDIOC-REQBUFS;, &reqbuf) < 0) { - if (errno == EINVAL) - printf("Video capturing or mmap-streaming is not supported\n"); - else - perror("VIDIOC_REQBUFS"); - - exit(EXIT_FAILURE); -} - -/* We want at least five buffers. */ - -if (reqbuf.count < 5) { - /* You may need to free the buffers here. */ - printf("Not enough buffer memory\n"); - exit(EXIT_FAILURE); -} - -buffers = calloc(reqbuf.count, sizeof(*buffers)); -assert(buffers != NULL); - -for (i = 0; i < reqbuf.count; i++) { - &v4l2-buffer; buffer; - &v4l2-plane; planes[FMT_NUM_PLANES]; - - memset(&buffer, 0, sizeof(buffer)); - buffer.type = reqbuf.type; - buffer.memory = V4L2_MEMORY_MMAP; - buffer.index = i; - /* length in struct v4l2_buffer in multi-planar API stores the size - * of planes array. */ - buffer.length = FMT_NUM_PLANES; - buffer.m.planes = planes; - - if (ioctl(fd, &VIDIOC-QUERYBUF;, &buffer) < 0) { - perror("VIDIOC_QUERYBUF"); - exit(EXIT_FAILURE); - } - - /* Every plane has to be mapped separately */ - for (j = 0; j < FMT_NUM_PLANES; j++) { - buffers[i].length[j] = buffer.m.planes[j].length; /* remember for munmap() */ - - buffers[i].start[j] = mmap(NULL, buffer.m.planes[j].length, - PROT_READ | PROT_WRITE, /* recommended */ - MAP_SHARED, /* recommended */ - fd, buffer.m.planes[j].m.offset); - - if (MAP_FAILED == buffers[i].start[j]) { - /* If you do not exit here you should unmap() and free() - the buffers and planes mapped so far. */ - perror("mmap"); - exit(EXIT_FAILURE); - } - } -} - -/* Cleanup. */ - -for (i = 0; i < reqbuf.count; i++) - for (j = 0; j < FMT_NUM_PLANES; j++) - munmap(buffers[i].start[j], buffers[i].length[j]); - </programlisting> - </example> - - <para>Conceptually streaming drivers maintain two buffer queues, an incoming -and an outgoing queue. They separate the synchronous capture or output -operation locked to a video clock from the application which is -subject to random disk or network delays and preemption by -other processes, thereby reducing the probability of data loss. -The queues are organized as FIFOs, buffers will be -output in the order enqueued in the incoming FIFO, and were -captured in the order dequeued from the outgoing FIFO.</para> - - <para>The driver may require a minimum number of buffers enqueued -at all times to function, apart of this no limit exists on the number -of buffers applications can enqueue in advance, or dequeue and -process. They can also enqueue in a different order than buffers have -been dequeued, and the driver can <emphasis>fill</emphasis> enqueued -<emphasis>empty</emphasis> buffers in any order. <footnote> - <para>Random enqueue order permits applications processing -images out of order (such as video codecs) to return buffers earlier, -reducing the probability of data loss. Random fill order allows -drivers to reuse buffers on a LIFO-basis, taking advantage of caches -holding scatter-gather lists and the like.</para> - </footnote> The index number of a buffer (&v4l2-buffer; -<structfield>index</structfield>) plays no role here, it only -identifies the buffer.</para> - - <para>Initially all mapped buffers are in dequeued state, -inaccessible by the driver. For capturing applications it is customary -to first enqueue all mapped buffers, then to start capturing and enter -the read loop. Here the application waits until a filled buffer can be -dequeued, and re-enqueues the buffer when the data is no longer -needed. Output applications fill and enqueue buffers, when enough -buffers are stacked up the output is started with -<constant>VIDIOC_STREAMON</constant>. In the write loop, when -the application runs out of free buffers, it must wait until an empty -buffer can be dequeued and reused.</para> - - <para>To enqueue and dequeue a buffer applications use the -&VIDIOC-QBUF; and &VIDIOC-DQBUF; ioctl. The status of a buffer being -mapped, enqueued, full or empty can be determined at any time using the -&VIDIOC-QUERYBUF; ioctl. Two methods exist to suspend execution of the -application until one or more buffers can be dequeued. By default -<constant>VIDIOC_DQBUF</constant> blocks when no buffer is in the -outgoing queue. When the <constant>O_NONBLOCK</constant> flag was -given to the &func-open; function, <constant>VIDIOC_DQBUF</constant> -returns immediately with an &EAGAIN; when no buffer is available. The -&func-select; or &func-poll; function are always available.</para> - - <para>To start and stop capturing or output applications call the -&VIDIOC-STREAMON; and &VIDIOC-STREAMOFF; ioctl. Note -<constant>VIDIOC_STREAMOFF</constant> removes all buffers from both -queues as a side effect. Since there is no notion of doing anything -"now" on a multitasking system, if an application needs to synchronize -with another event it should examine the &v4l2-buffer; -<structfield>timestamp</structfield> of captured buffers, or set the -field before enqueuing buffers for output.</para> - - <para>Drivers implementing memory mapping I/O must -support the <constant>VIDIOC_REQBUFS</constant>, -<constant>VIDIOC_QUERYBUF</constant>, -<constant>VIDIOC_QBUF</constant>, <constant>VIDIOC_DQBUF</constant>, -<constant>VIDIOC_STREAMON</constant> and -<constant>VIDIOC_STREAMOFF</constant> ioctl, the -<function>mmap()</function>, <function>munmap()</function>, -<function>select()</function> and <function>poll()</function> -function.<footnote> - <para>At the driver level <function>select()</function> and -<function>poll()</function> are the same, and -<function>select()</function> is too important to be optional. The -rest should be evident.</para> - </footnote></para> - - <para>[capture example]</para> - - </section> - - <section id="userp"> - <title>Streaming I/O (User Pointers)</title> - - <para>Input and output devices support this I/O method when the -<constant>V4L2_CAP_STREAMING</constant> flag in the -<structfield>capabilities</structfield> field of &v4l2-capability; -returned by the &VIDIOC-QUERYCAP; ioctl is set. If the particular user -pointer method (not only memory mapping) is supported must be -determined by calling the &VIDIOC-REQBUFS; ioctl.</para> - - <para>This I/O method combines advantages of the read/write and -memory mapping methods. Buffers (planes) are allocated by the application -itself, and can reside for example in virtual or shared memory. Only -pointers to data are exchanged, these pointers and meta-information -are passed in &v4l2-buffer; (or in &v4l2-plane; in the multi-planar API case). -The driver must be switched into user pointer I/O mode by calling the -&VIDIOC-REQBUFS; with the desired buffer type. No buffers (planes) are allocated -beforehand, consequently they are not indexed and cannot be queried like mapped -buffers with the <constant>VIDIOC_QUERYBUF</constant> ioctl.</para> - - <example> - <title>Initiating streaming I/O with user pointers</title> - - <programlisting> -&v4l2-requestbuffers; reqbuf; - -memset (&reqbuf, 0, sizeof (reqbuf)); -reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -reqbuf.memory = V4L2_MEMORY_USERPTR; - -if (ioctl (fd, &VIDIOC-REQBUFS;, &reqbuf) == -1) { - if (errno == EINVAL) - printf ("Video capturing or user pointer streaming is not supported\n"); - else - perror ("VIDIOC_REQBUFS"); - - exit (EXIT_FAILURE); -} - </programlisting> - </example> - - <para>Buffer (plane) addresses and sizes are passed on the fly with the -&VIDIOC-QBUF; ioctl. Although buffers are commonly cycled, -applications can pass different addresses and sizes at each -<constant>VIDIOC_QBUF</constant> call. If required by the hardware the -driver swaps memory pages within physical memory to create a -continuous area of memory. This happens transparently to the -application in the virtual memory subsystem of the kernel. When buffer -pages have been swapped out to disk they are brought back and finally -locked in physical memory for DMA.<footnote> - <para>We expect that frequently used buffers are typically not -swapped out. Anyway, the process of swapping, locking or generating -scatter-gather lists may be time consuming. The delay can be masked by -the depth of the incoming buffer queue, and perhaps by maintaining -caches assuming a buffer will be soon enqueued again. On the other -hand, to optimize memory usage drivers can limit the number of buffers -locked in advance and recycle the most recently used buffers first. Of -course, the pages of empty buffers in the incoming queue need not be -saved to disk. Output buffers must be saved on the incoming and -outgoing queue because an application may share them with other -processes.</para> - </footnote></para> - - <para>Filled or displayed buffers are dequeued with the -&VIDIOC-DQBUF; ioctl. The driver can unlock the memory pages at any -time between the completion of the DMA and this ioctl. The memory is -also unlocked when &VIDIOC-STREAMOFF; is called, &VIDIOC-REQBUFS;, or -when the device is closed. Applications must take care not to free -buffers without dequeuing. For once, the buffers remain locked until -further, wasting physical memory. Second the driver will not be -notified when the memory is returned to the application's free list -and subsequently reused for other purposes, possibly completing the -requested DMA and overwriting valuable data.</para> - - <para>For capturing applications it is customary to enqueue a -number of empty buffers, to start capturing and enter the read loop. -Here the application waits until a filled buffer can be dequeued, and -re-enqueues the buffer when the data is no longer needed. Output -applications fill and enqueue buffers, when enough buffers are stacked -up output is started. In the write loop, when the application -runs out of free buffers it must wait until an empty buffer can be -dequeued and reused. Two methods exist to suspend execution of the -application until one or more buffers can be dequeued. By default -<constant>VIDIOC_DQBUF</constant> blocks when no buffer is in the -outgoing queue. When the <constant>O_NONBLOCK</constant> flag was -given to the &func-open; function, <constant>VIDIOC_DQBUF</constant> -returns immediately with an &EAGAIN; when no buffer is available. The -&func-select; or &func-poll; function are always available.</para> - - <para>To start and stop capturing or output applications call the -&VIDIOC-STREAMON; and &VIDIOC-STREAMOFF; ioctl. Note -<constant>VIDIOC_STREAMOFF</constant> removes all buffers from both -queues and unlocks all buffers as a side effect. Since there is no -notion of doing anything "now" on a multitasking system, if an -application needs to synchronize with another event it should examine -the &v4l2-buffer; <structfield>timestamp</structfield> of captured -buffers, or set the field before enqueuing buffers for output.</para> - - <para>Drivers implementing user pointer I/O must -support the <constant>VIDIOC_REQBUFS</constant>, -<constant>VIDIOC_QBUF</constant>, <constant>VIDIOC_DQBUF</constant>, -<constant>VIDIOC_STREAMON</constant> and -<constant>VIDIOC_STREAMOFF</constant> ioctl, the -<function>select()</function> and <function>poll()</function> function.<footnote> - <para>At the driver level <function>select()</function> and -<function>poll()</function> are the same, and -<function>select()</function> is too important to be optional. The -rest should be evident.</para> - </footnote></para> - </section> - - <section id="async"> - <title>Asynchronous I/O</title> - - <para>This method is not defined yet.</para> - </section> - - <section id="buffer"> - <title>Buffers</title> - - <para>A buffer contains data exchanged by application and -driver using one of the Streaming I/O methods. In the multi-planar API, the -data is held in planes, while the buffer structure acts as a container -for the planes. Only pointers to buffers (planes) are exchanged, the data -itself is not copied. These pointers, together with meta-information like -timestamps or field parity, are stored in a struct -<structname>v4l2_buffer</structname>, argument to -the &VIDIOC-QUERYBUF;, &VIDIOC-QBUF; and &VIDIOC-DQBUF; ioctl. -In the multi-planar API, some plane-specific members of struct -<structname>v4l2_buffer</structname>, such as pointers and sizes for each -plane, are stored in struct <structname>v4l2_plane</structname> instead. -In that case, struct <structname>v4l2_buffer</structname> contains an array of -plane structures.</para> - - <para>Nominally timestamps refer to the first data byte transmitted. -In practice however the wide range of hardware covered by the V4L2 API -limits timestamp accuracy. Often an interrupt routine will -sample the system clock shortly after the field or frame was stored -completely in memory. So applications must expect a constant -difference up to one field or frame period plus a small (few scan -lines) random error. The delay and error can be much -larger due to compression or transmission over an external bus when -the frames are not properly stamped by the sender. This is frequently -the case with USB cameras. Here timestamps refer to the instant the -field or frame was received by the driver, not the capture time. These -devices identify by not enumerating any video standards, see <xref -linkend="standard" />.</para> - - <para>Similar limitations apply to output timestamps. Typically -the video hardware locks to a clock controlling the video timing, the -horizontal and vertical synchronization pulses. At some point in the -line sequence, possibly the vertical blanking, an interrupt routine -samples the system clock, compares against the timestamp and programs -the hardware to repeat the previous field or frame, or to display the -buffer contents.</para> - - <para>Apart of limitations of the video device and natural -inaccuracies of all clocks, it should be noted system time itself is -not perfectly stable. It can be affected by power saving cycles, -warped to insert leap seconds, or even turned back or forth by the -system administrator affecting long term measurements. <footnote> - <para>Since no other Linux multimedia -API supports unadjusted time it would be foolish to introduce here. We -must use a universally supported clock to synchronize different media, -hence time of day.</para> - </footnote></para> - - <table frame="none" pgwide="1" id="v4l2-buffer"> - <title>struct <structname>v4l2_buffer</structname></title> - <tgroup cols="4"> - &cs-ustr; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry></entry> - <entry>Number of the buffer, set by the application. This -field is only used for <link linkend="mmap">memory mapping</link> I/O -and can range from zero to the number of buffers allocated -with the &VIDIOC-REQBUFS; ioctl (&v4l2-requestbuffers; <structfield>count</structfield>) minus one.</entry> - </row> - <row> - <entry>&v4l2-buf-type;</entry> - <entry><structfield>type</structfield></entry> - <entry></entry> - <entry>Type of the buffer, same as &v4l2-format; -<structfield>type</structfield> or &v4l2-requestbuffers; -<structfield>type</structfield>, set by the application.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>bytesused</structfield></entry> - <entry></entry> - <entry>The number of bytes occupied by the data in the -buffer. It depends on the negotiated data format and may change with -each buffer for compressed variable size data like JPEG images. -Drivers must set this field when <structfield>type</structfield> -refers to an input stream, applications when an output stream.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>flags</structfield></entry> - <entry></entry> - <entry>Flags set by the application or driver, see <xref -linkend="buffer-flags" />.</entry> - </row> - <row> - <entry>&v4l2-field;</entry> - <entry><structfield>field</structfield></entry> - <entry></entry> - <entry>Indicates the field order of the image in the -buffer, see <xref linkend="v4l2-field" />. This field is not used when -the buffer contains VBI data. Drivers must set it when -<structfield>type</structfield> refers to an input stream, -applications when an output stream.</entry> - </row> - <row> - <entry>struct timeval</entry> - <entry><structfield>timestamp</structfield></entry> - <entry></entry> - <entry><para>For input streams this is the -system time (as returned by the <function>gettimeofday()</function> -function) when the first data byte was captured. For output streams -the data will not be displayed before this time, secondary to the -nominal frame rate determined by the current video standard in -enqueued order. Applications can for example zero this field to -display frames as soon as possible. The driver stores the time at -which the first data byte was actually sent out in the -<structfield>timestamp</structfield> field. This permits -applications to monitor the drift between the video and system -clock.</para></entry> - </row> - <row> - <entry>&v4l2-timecode;</entry> - <entry><structfield>timecode</structfield></entry> - <entry></entry> - <entry>When <structfield>type</structfield> is -<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> and the -<constant>V4L2_BUF_FLAG_TIMECODE</constant> flag is set in -<structfield>flags</structfield>, this structure contains a frame -timecode. In <link linkend="v4l2-field">V4L2_FIELD_ALTERNATE</link> -mode the top and bottom field contain the same timecode. -Timecodes are intended to help video editing and are typically recorded on -video tapes, but also embedded in compressed formats like MPEG. This -field is independent of the <structfield>timestamp</structfield> and -<structfield>sequence</structfield> fields.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>sequence</structfield></entry> - <entry></entry> - <entry>Set by the driver, counting the frames in the -sequence.</entry> - </row> - <row> - <entry spanname="hspan"><para>In <link -linkend="v4l2-field">V4L2_FIELD_ALTERNATE</link> mode the top and -bottom field have the same sequence number. The count starts at zero -and includes dropped or repeated frames. A dropped frame was received -by an input device but could not be stored due to lack of free buffer -space. A repeated frame was displayed again by an output device -because the application did not pass new data in -time.</para><para>Note this may count the frames received -e.g. over USB, without taking into account the frames dropped by the -remote hardware due to limited compression throughput or bus -bandwidth. These devices identify by not enumerating any video -standards, see <xref linkend="standard" />.</para></entry> - </row> - <row> - <entry>&v4l2-memory;</entry> - <entry><structfield>memory</structfield></entry> - <entry></entry> - <entry>This field must be set by applications and/or drivers -in accordance with the selected I/O method.</entry> - </row> - <row> - <entry>union</entry> - <entry><structfield>m</structfield></entry> - </row> - <row> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>offset</structfield></entry> - <entry>For the single-planar API and when -<structfield>memory</structfield> is <constant>V4L2_MEMORY_MMAP</constant> this -is the offset of the buffer from the start of the device memory. The value is -returned by the driver and apart of serving as parameter to the &func-mmap; -function not useful for applications. See <xref linkend="mmap" /> for details - </entry> - </row> - <row> - <entry></entry> - <entry>unsigned long</entry> - <entry><structfield>userptr</structfield></entry> - <entry>For the single-planar API and when -<structfield>memory</structfield> is <constant>V4L2_MEMORY_USERPTR</constant> -this is a pointer to the buffer (casted to unsigned long type) in virtual -memory, set by the application. See <xref linkend="userp" /> for details. - </entry> - </row> - <row> - <entry></entry> - <entry>struct v4l2_plane</entry> - <entry><structfield>*planes</structfield></entry> - <entry>When using the multi-planar API, contains a userspace pointer - to an array of &v4l2-plane;. The size of the array should be put - in the <structfield>length</structfield> field of this - <structname>v4l2_buffer</structname> structure.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>length</structfield></entry> - <entry></entry> - <entry>Size of the buffer (not the payload) in bytes for the - single-planar API. For the multi-planar API should contain the - number of elements in the <structfield>planes</structfield> array. - </entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>input</structfield></entry> - <entry></entry> - <entry>Some video capture drivers support rapid and -synchronous video input changes, a function useful for example in -video surveillance applications. For this purpose applications set the -<constant>V4L2_BUF_FLAG_INPUT</constant> flag, and this field to the -number of a video input as in &v4l2-input; field -<structfield>index</structfield>.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield></entry> - <entry></entry> - <entry>A place holder for future extensions and custom -(driver defined) buffer types -<constant>V4L2_BUF_TYPE_PRIVATE</constant> and higher. Applications -should set this to 0.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="v4l2-plane"> - <title>struct <structname>v4l2_plane</structname></title> - <tgroup cols="4"> - &cs-ustr; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>bytesused</structfield></entry> - <entry></entry> - <entry>The number of bytes occupied by data in the plane - (its payload).</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>length</structfield></entry> - <entry></entry> - <entry>Size in bytes of the plane (not its payload).</entry> - </row> - <row> - <entry>union</entry> - <entry><structfield>m</structfield></entry> - <entry></entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>mem_offset</structfield></entry> - <entry>When the memory type in the containing &v4l2-buffer; is - <constant>V4L2_MEMORY_MMAP</constant>, this is the value that - should be passed to &func-mmap;, similar to the - <structfield>offset</structfield> field in &v4l2-buffer;.</entry> - </row> - <row> - <entry></entry> - <entry>__unsigned long</entry> - <entry><structfield>userptr</structfield></entry> - <entry>When the memory type in the containing &v4l2-buffer; is - <constant>V4L2_MEMORY_USERPTR</constant>, this is a userspace - pointer to the memory allocated for this plane by an application. - </entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>data_offset</structfield></entry> - <entry></entry> - <entry>Offset in bytes to video data in the plane, if applicable. - </entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved[11]</structfield></entry> - <entry></entry> - <entry>Reserved for future use. Should be zeroed by an - application.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="v4l2-buf-type"> - <title>enum v4l2_buf_type</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant></entry> - <entry>1</entry> - <entry>Buffer of a single-planar video capture stream, see <xref - linkend="capture" />.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant> - </entry> - <entry>9</entry> - <entry>Buffer of a multi-planar video capture stream, see <xref - linkend="capture" />.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant></entry> - <entry>2</entry> - <entry>Buffer of a single-planar video output stream, see <xref - linkend="output" />.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant> - </entry> - <entry>10</entry> - <entry>Buffer of a multi-planar video output stream, see <xref - linkend="output" />.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant></entry> - <entry>3</entry> - <entry>Buffer for video overlay, see <xref linkend="overlay" />.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_VBI_CAPTURE</constant></entry> - <entry>4</entry> - <entry>Buffer of a raw VBI capture stream, see <xref - linkend="raw-vbi" />.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_VBI_OUTPUT</constant></entry> - <entry>5</entry> - <entry>Buffer of a raw VBI output stream, see <xref - linkend="raw-vbi" />.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</constant></entry> - <entry>6</entry> - <entry>Buffer of a sliced VBI capture stream, see <xref - linkend="sliced" />.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</constant></entry> - <entry>7</entry> - <entry>Buffer of a sliced VBI output stream, see <xref - linkend="sliced" />.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY</constant></entry> - <entry>8</entry> - <entry>Buffer for video output overlay (OSD), see <xref - linkend="osd" />. Status: <link -linkend="experimental">Experimental</link>.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_TYPE_PRIVATE</constant></entry> - <entry>0x80</entry> - <entry>This and higher values are reserved for custom -(driver defined) buffer types.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="buffer-flags"> - <title>Buffer Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_BUF_FLAG_MAPPED</constant></entry> - <entry>0x0001</entry> - <entry>The buffer resides in device memory and has been mapped -into the application's address space, see <xref linkend="mmap" /> for details. -Drivers set or clear this flag when the -<link linkend="vidioc-querybuf">VIDIOC_QUERYBUF</link>, <link - linkend="vidioc-qbuf">VIDIOC_QBUF</link> or <link - linkend="vidioc-qbuf">VIDIOC_DQBUF</link> ioctl is called. Set by the driver.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_FLAG_QUEUED</constant></entry> - <entry>0x0002</entry> - <entry>Internally drivers maintain two buffer queues, an -incoming and outgoing queue. When this flag is set, the buffer is -currently on the incoming queue. It automatically moves to the -outgoing queue after the buffer has been filled (capture devices) or -displayed (output devices). Drivers set or clear this flag when the -<constant>VIDIOC_QUERYBUF</constant> ioctl is called. After -(successful) calling the <constant>VIDIOC_QBUF </constant>ioctl it is -always set and after <constant>VIDIOC_DQBUF</constant> always -cleared.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_FLAG_DONE</constant></entry> - <entry>0x0004</entry> - <entry>When this flag is set, the buffer is currently on -the outgoing queue, ready to be dequeued from the driver. Drivers set -or clear this flag when the <constant>VIDIOC_QUERYBUF</constant> ioctl -is called. After calling the <constant>VIDIOC_QBUF</constant> or -<constant>VIDIOC_DQBUF</constant> it is always cleared. Of course a -buffer cannot be on both queues at the same time, the -<constant>V4L2_BUF_FLAG_QUEUED</constant> and -<constant>V4L2_BUF_FLAG_DONE</constant> flag are mutually exclusive. -They can be both cleared however, then the buffer is in "dequeued" -state, in the application domain to say so.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_FLAG_ERROR</constant></entry> - <entry>0x0040</entry> - <entry>When this flag is set, the buffer has been dequeued - successfully, although the data might have been corrupted. - This is recoverable, streaming may continue as normal and - the buffer may be reused normally. - Drivers set this flag when the <constant>VIDIOC_DQBUF</constant> - ioctl is called.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_FLAG_KEYFRAME</constant></entry> - <entry>0x0008</entry> - <entry>Drivers set or clear this flag when calling the -<constant>VIDIOC_DQBUF</constant> ioctl. It may be set by video -capture devices when the buffer contains a compressed image which is a -key frame (or field), &ie; can be decompressed on its own.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_FLAG_PFRAME</constant></entry> - <entry>0x0010</entry> - <entry>Similar to <constant>V4L2_BUF_FLAG_KEYFRAME</constant> -this flags predicted frames or fields which contain only differences to a -previous key frame.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_FLAG_BFRAME</constant></entry> - <entry>0x0020</entry> - <entry>Similar to <constant>V4L2_BUF_FLAG_PFRAME</constant> - this is a bidirectional predicted frame or field. [ooc tbd]</entry> - </row> - <row> - <entry><constant>V4L2_BUF_FLAG_TIMECODE</constant></entry> - <entry>0x0100</entry> - <entry>The <structfield>timecode</structfield> field is valid. -Drivers set or clear this flag when the <constant>VIDIOC_DQBUF</constant> -ioctl is called.</entry> - </row> - <row> - <entry><constant>V4L2_BUF_FLAG_INPUT</constant></entry> - <entry>0x0200</entry> - <entry>The <structfield>input</structfield> field is valid. -Applications set or clear this flag before calling the -<constant>VIDIOC_QBUF</constant> ioctl.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-memory"> - <title>enum v4l2_memory</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_MEMORY_MMAP</constant></entry> - <entry>1</entry> - <entry>The buffer is used for <link linkend="mmap">memory -mapping</link> I/O.</entry> - </row> - <row> - <entry><constant>V4L2_MEMORY_USERPTR</constant></entry> - <entry>2</entry> - <entry>The buffer is used for <link linkend="userp">user -pointer</link> I/O.</entry> - </row> - <row> - <entry><constant>V4L2_MEMORY_OVERLAY</constant></entry> - <entry>3</entry> - <entry>[to do]</entry> - </row> - </tbody> - </tgroup> - </table> - - <section> - <title>Timecodes</title> - - <para>The <structname>v4l2_timecode</structname> structure is -designed to hold a <xref linkend="smpte12m" /> or similar timecode. -(struct <structname>timeval</structname> timestamps are stored in -&v4l2-buffer; field <structfield>timestamp</structfield>.)</para> - - <table frame="none" pgwide="1" id="v4l2-timecode"> - <title>struct <structname>v4l2_timecode</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>type</structfield></entry> - <entry>Frame rate the timecodes are based on, see <xref - linkend="timecode-type" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>flags</structfield></entry> - <entry>Timecode flags, see <xref linkend="timecode-flags" />.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>frames</structfield></entry> - <entry>Frame count, 0 ... 23/24/29/49/59, depending on the - type of timecode.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>seconds</structfield></entry> - <entry>Seconds count, 0 ... 59. This is a binary, not BCD number.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>minutes</structfield></entry> - <entry>Minutes count, 0 ... 59. This is a binary, not BCD number.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>hours</structfield></entry> - <entry>Hours count, 0 ... 29. This is a binary, not BCD number.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>userbits</structfield>[4]</entry> - <entry>The "user group" bits from the timecode.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="timecode-type"> - <title>Timecode Types</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_TC_TYPE_24FPS</constant></entry> - <entry>1</entry> - <entry>24 frames per second, i. e. film.</entry> - </row> - <row> - <entry><constant>V4L2_TC_TYPE_25FPS</constant></entry> - <entry>2</entry> - <entry>25 frames per second, &ie; PAL or SECAM video.</entry> - </row> - <row> - <entry><constant>V4L2_TC_TYPE_30FPS</constant></entry> - <entry>3</entry> - <entry>30 frames per second, &ie; NTSC video.</entry> - </row> - <row> - <entry><constant>V4L2_TC_TYPE_50FPS</constant></entry> - <entry>4</entry> - <entry></entry> - </row> - <row> - <entry><constant>V4L2_TC_TYPE_60FPS</constant></entry> - <entry>5</entry> - <entry></entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="timecode-flags"> - <title>Timecode Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_TC_FLAG_DROPFRAME</constant></entry> - <entry>0x0001</entry> - <entry>Indicates "drop frame" semantics for counting frames -in 29.97 fps material. When set, frame numbers 0 and 1 at the start of -each minute, except minutes 0, 10, 20, 30, 40, 50 are omitted from the -count.</entry> - </row> - <row> - <entry><constant>V4L2_TC_FLAG_COLORFRAME</constant></entry> - <entry>0x0002</entry> - <entry>The "color frame" flag.</entry> - </row> - <row> - <entry><constant>V4L2_TC_USERBITS_field</constant></entry> - <entry>0x000C</entry> - <entry>Field mask for the "binary group flags".</entry> - </row> - <row> - <entry><constant>V4L2_TC_USERBITS_USERDEFINED</constant></entry> - <entry>0x0000</entry> - <entry>Unspecified format.</entry> - </row> - <row> - <entry><constant>V4L2_TC_USERBITS_8BITCHARS</constant></entry> - <entry>0x0008</entry> - <entry>8-bit ISO characters.</entry> - </row> - </tbody> - </tgroup> - </table> - </section> - </section> - - <section id="field-order"> - <title>Field Order</title> - - <para>We have to distinguish between progressive and interlaced -video. Progressive video transmits all lines of a video image -sequentially. Interlaced video divides an image into two fields, -containing only the odd and even lines of the image, respectively. -Alternating the so called odd and even field are transmitted, and due -to a small delay between fields a cathode ray TV displays the lines -interleaved, yielding the original frame. This curious technique was -invented because at refresh rates similar to film the image would -fade out too quickly. Transmitting fields reduces the flicker without -the necessity of doubling the frame rate and with it the bandwidth -required for each channel.</para> - - <para>It is important to understand a video camera does not expose -one frame at a time, merely transmitting the frames separated into -fields. The fields are in fact captured at two different instances in -time. An object on screen may well move between one field and the -next. For applications analysing motion it is of paramount importance -to recognize which field of a frame is older, the <emphasis>temporal -order</emphasis>.</para> - - <para>When the driver provides or accepts images field by field -rather than interleaved, it is also important applications understand -how the fields combine to frames. We distinguish between top (aka odd) and -bottom (aka even) fields, the <emphasis>spatial order</emphasis>: The first line -of the top field is the first line of an interlaced frame, the first -line of the bottom field is the second line of that frame.</para> - - <para>However because fields were captured one after the other, -arguing whether a frame commences with the top or bottom field is -pointless. Any two successive top and bottom, or bottom and top fields -yield a valid frame. Only when the source was progressive to begin -with, ⪚ when transferring film to video, two fields may come from -the same frame, creating a natural order.</para> - - <para>Counter to intuition the top field is not necessarily the -older field. Whether the older field contains the top or bottom lines -is a convention determined by the video standard. Hence the -distinction between temporal and spatial order of fields. The diagrams -below should make this clearer.</para> - - <para>All video capture and output devices must report the current -field order. Some drivers may permit the selection of a different -order, to this end applications initialize the -<structfield>field</structfield> field of &v4l2-pix-format; before -calling the &VIDIOC-S-FMT; ioctl. If this is not desired it should -have the value <constant>V4L2_FIELD_ANY</constant> (0).</para> - - <table frame="none" pgwide="1" id="v4l2-field"> - <title>enum v4l2_field</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_FIELD_ANY</constant></entry> - <entry>0</entry> - <entry>Applications request this field order when any -one of the <constant>V4L2_FIELD_NONE</constant>, -<constant>V4L2_FIELD_TOP</constant>, -<constant>V4L2_FIELD_BOTTOM</constant>, or -<constant>V4L2_FIELD_INTERLACED</constant> formats is acceptable. -Drivers choose depending on hardware capabilities or e. g. the -requested image size, and return the actual field order. &v4l2-buffer; -<structfield>field</structfield> can never be -<constant>V4L2_FIELD_ANY</constant>.</entry> - </row> - <row> - <entry><constant>V4L2_FIELD_NONE</constant></entry> - <entry>1</entry> - <entry>Images are in progressive format, not interlaced. -The driver may also indicate this order when it cannot distinguish -between <constant>V4L2_FIELD_TOP</constant> and -<constant>V4L2_FIELD_BOTTOM</constant>.</entry> - </row> - <row> - <entry><constant>V4L2_FIELD_TOP</constant></entry> - <entry>2</entry> - <entry>Images consist of the top (aka odd) field only.</entry> - </row> - <row> - <entry><constant>V4L2_FIELD_BOTTOM</constant></entry> - <entry>3</entry> - <entry>Images consist of the bottom (aka even) field only. -Applications may wish to prevent a device from capturing interlaced -images because they will have "comb" or "feathering" artefacts around -moving objects.</entry> - </row> - <row> - <entry><constant>V4L2_FIELD_INTERLACED</constant></entry> - <entry>4</entry> - <entry>Images contain both fields, interleaved line by -line. The temporal order of the fields (whether the top or bottom -field is first transmitted) depends on the current video standard. -M/NTSC transmits the bottom field first, all other standards the top -field first.</entry> - </row> - <row> - <entry><constant>V4L2_FIELD_SEQ_TB</constant></entry> - <entry>5</entry> - <entry>Images contain both fields, the top field lines -are stored first in memory, immediately followed by the bottom field -lines. Fields are always stored in temporal order, the older one first -in memory. Image sizes refer to the frame, not fields.</entry> - </row> - <row> - <entry><constant>V4L2_FIELD_SEQ_BT</constant></entry> - <entry>6</entry> - <entry>Images contain both fields, the bottom field -lines are stored first in memory, immediately followed by the top -field lines. Fields are always stored in temporal order, the older one -first in memory. Image sizes refer to the frame, not fields.</entry> - </row> - <row> - <entry><constant>V4L2_FIELD_ALTERNATE</constant></entry> - <entry>7</entry> - <entry>The two fields of a frame are passed in separate -buffers, in temporal order, &ie; the older one first. To indicate the field -parity (whether the current field is a top or bottom field) the driver -or application, depending on data direction, must set &v4l2-buffer; -<structfield>field</structfield> to -<constant>V4L2_FIELD_TOP</constant> or -<constant>V4L2_FIELD_BOTTOM</constant>. Any two successive fields pair -to build a frame. If fields are successive, without any dropped fields -between them (fields can drop individually), can be determined from -the &v4l2-buffer; <structfield>sequence</structfield> field. Image -sizes refer to the frame, not fields. This format cannot be selected -when using the read/write I/O method.<!-- Where it's indistinguishable -from V4L2_FIELD_SEQ_*. --></entry> - </row> - <row> - <entry><constant>V4L2_FIELD_INTERLACED_TB</constant></entry> - <entry>8</entry> - <entry>Images contain both fields, interleaved line by -line, top field first. The top field is transmitted first.</entry> - </row> - <row> - <entry><constant>V4L2_FIELD_INTERLACED_BT</constant></entry> - <entry>9</entry> - <entry>Images contain both fields, interleaved line by -line, top field first. The bottom field is transmitted first.</entry> - </row> - </tbody> - </tgroup> - </table> - - <figure id="fieldseq-tb"> - <title>Field Order, Top Field First Transmitted</title> - <mediaobject> - <imageobject> - <imagedata fileref="fieldseq_tb.pdf" format="PS" /> - </imageobject> - <imageobject> - <imagedata fileref="fieldseq_tb.gif" format="GIF" /> - </imageobject> - </mediaobject> - </figure> - - <figure id="fieldseq-bt"> - <title>Field Order, Bottom Field First Transmitted</title> - <mediaobject> - <imageobject> - <imagedata fileref="fieldseq_bt.pdf" format="PS" /> - </imageobject> - <imageobject> - <imagedata fileref="fieldseq_bt.gif" format="GIF" /> - </imageobject> - </mediaobject> - </figure> - </section> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/keytable.c.xml b/Documentation/DocBook/v4l/keytable.c.xml deleted file mode 100644 index d53254a3be15..000000000000 --- a/Documentation/DocBook/v4l/keytable.c.xml +++ /dev/null @@ -1,172 +0,0 @@ -<programlisting> -/* keytable.c - This program allows checking/replacing keys at IR - - Copyright (C) 2006-2009 Mauro Carvalho Chehab <mchehab@infradead.org> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - */ - -#include <ctype.h> -#include <errno.h> -#include <fcntl.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <linux/input.h> -#include <sys/ioctl.h> - -#include "parse.h" - -void prtcode (int *codes) -{ - struct parse_key *p; - - for (p=keynames;p->name!=NULL;p++) { - if (p->value == (unsigned)codes[1]) { - printf("scancode 0x%04x = %s (0x%02x)\n", codes[0], p->name, codes[1]); - return; - } - } - - if (isprint (codes[1])) - printf("scancode %d = '%c' (0x%02x)\n", codes[0], codes[1], codes[1]); - else - printf("scancode %d = 0x%02x\n", codes[0], codes[1]); -} - -int parse_code(char *string) -{ - struct parse_key *p; - - for (p=keynames;p->name!=NULL;p++) { - if (!strcasecmp(p->name, string)) { - return p->value; - } - } - return -1; -} - -int main (int argc, char *argv[]) -{ - int fd; - unsigned int i, j; - int codes[2]; - - if (argc<2 || argc>4) { - printf ("usage: %s <device> to get table; or\n" - " %s <device> <scancode> <keycode>\n" - " %s <device> <keycode_file>\n",*argv,*argv,*argv); - return -1; - } - - if ((fd = open(argv[1], O_RDONLY)) < 0) { - perror("Couldn't open input device"); - return(-1); - } - - if (argc==4) { - int value; - - value=parse_code(argv[3]); - - if (value==-1) { - value = strtol(argv[3], NULL, 0); - if (errno) - perror("value"); - } - - codes [0] = (unsigned) strtol(argv[2], NULL, 0); - codes [1] = (unsigned) value; - - if(ioctl(fd, EVIOCSKEYCODE, codes)) - perror ("EVIOCSKEYCODE"); - - if(ioctl(fd, EVIOCGKEYCODE, codes)==0) - prtcode(codes); - return 0; - } - - if (argc==3) { - FILE *fin; - int value; - char *scancode, *keycode, s[2048]; - - fin=fopen(argv[2],"r"); - if (fin==NULL) { - perror ("opening keycode file"); - return -1; - } - - /* Clears old table */ - for (j = 0; j < 256; j++) { - for (i = 0; i < 256; i++) { - codes[0] = (j << 8) | i; - codes[1] = KEY_RESERVED; - ioctl(fd, EVIOCSKEYCODE, codes); - } - } - - while (fgets(s,sizeof(s),fin)) { - scancode=strtok(s,"\n\t =:"); - if (!scancode) { - perror ("parsing input file scancode"); - return -1; - } - if (!strcasecmp(scancode, "scancode")) { - scancode = strtok(NULL,"\n\t =:"); - if (!scancode) { - perror ("parsing input file scancode"); - return -1; - } - } - - keycode=strtok(NULL,"\n\t =:("); - if (!keycode) { - perror ("parsing input file keycode"); - return -1; - } - - // printf ("parsing %s=%s:", scancode, keycode); - value=parse_code(keycode); - // printf ("\tvalue=%d\n",value); - - if (value==-1) { - value = strtol(keycode, NULL, 0); - if (errno) - perror("value"); - } - - codes [0] = (unsigned) strtol(scancode, NULL, 0); - codes [1] = (unsigned) value; - - // printf("\t%04x=%04x\n",codes[0], codes[1]); - if(ioctl(fd, EVIOCSKEYCODE, codes)) { - fprintf(stderr, "Setting scancode 0x%04x with 0x%04x via ",codes[0], codes[1]); - perror ("EVIOCSKEYCODE"); - } - - if(ioctl(fd, EVIOCGKEYCODE, codes)==0) - prtcode(codes); - } - return 0; - } - - /* Get scancode table */ - for (j = 0; j < 256; j++) { - for (i = 0; i < 256; i++) { - codes[0] = (j << 8) | i; - if (!ioctl(fd, EVIOCGKEYCODE, codes) && codes[1] != KEY_RESERVED) - prtcode(codes); - } - } - return 0; -} - -</programlisting> diff --git a/Documentation/DocBook/v4l/libv4l.xml b/Documentation/DocBook/v4l/libv4l.xml deleted file mode 100644 index 3cb10ec51929..000000000000 --- a/Documentation/DocBook/v4l/libv4l.xml +++ /dev/null @@ -1,167 +0,0 @@ -<title>Libv4l Userspace Library</title> -<section id="libv4l-introduction"> - <title>Introduction</title> - - <para>libv4l is a collection of libraries which adds a thin abstraction -layer on top of video4linux2 devices. The purpose of this (thin) layer -is to make it easy for application writers to support a wide variety of -devices without having to write separate code for different devices in the -same class.</para> -<para>An example of using libv4l is provided by -<link linkend='v4l2grab-example'>v4l2grab</link>. -</para> - - <para>libv4l consists of 3 different libraries:</para> - <section> - <title>libv4lconvert</title> - - <para>libv4lconvert is a library that converts several -different pixelformats found in V4L2 drivers into a few common RGB and -YUY formats.</para> - <para>It currently accepts the following V4L2 driver formats: -<link linkend="V4L2-PIX-FMT-BGR24"><constant>V4L2_PIX_FMT_BGR24</constant></link>, -<link linkend="V4L2-PIX-FMT-HM12"><constant>V4L2_PIX_FMT_HM12</constant></link>, -<link linkend="V4L2-PIX-FMT-JPEG"><constant>V4L2_PIX_FMT_JPEG</constant></link>, -<link linkend="V4L2-PIX-FMT-MJPEG"><constant>V4L2_PIX_FMT_MJPEG</constant></link>, -<link linkend="V4L2-PIX-FMT-MR97310A"><constant>V4L2_PIX_FMT_MR97310A</constant></link>, -<link linkend="V4L2-PIX-FMT-OV511"><constant>V4L2_PIX_FMT_OV511</constant></link>, -<link linkend="V4L2-PIX-FMT-OV518"><constant>V4L2_PIX_FMT_OV518</constant></link>, -<link linkend="V4L2-PIX-FMT-PAC207"><constant>V4L2_PIX_FMT_PAC207</constant></link>, -<link linkend="V4L2-PIX-FMT-PJPG"><constant>V4L2_PIX_FMT_PJPG</constant></link>, -<link linkend="V4L2-PIX-FMT-RGB24"><constant>V4L2_PIX_FMT_RGB24</constant></link>, -<link linkend="V4L2-PIX-FMT-SBGGR8"><constant>V4L2_PIX_FMT_SBGGR8</constant></link>, -<link linkend="V4L2-PIX-FMT-SGBRG8"><constant>V4L2_PIX_FMT_SGBRG8</constant></link>, -<link linkend="V4L2-PIX-FMT-SGRBG8"><constant>V4L2_PIX_FMT_SGRBG8</constant></link>, -<link linkend="V4L2-PIX-FMT-SN9C10X"><constant>V4L2_PIX_FMT_SN9C10X</constant></link>, -<link linkend="V4L2-PIX-FMT-SN9C20X-I420"><constant>V4L2_PIX_FMT_SN9C20X_I420</constant></link>, -<link linkend="V4L2-PIX-FMT-SPCA501"><constant>V4L2_PIX_FMT_SPCA501</constant></link>, -<link linkend="V4L2-PIX-FMT-SPCA505"><constant>V4L2_PIX_FMT_SPCA505</constant></link>, -<link linkend="V4L2-PIX-FMT-SPCA508"><constant>V4L2_PIX_FMT_SPCA508</constant></link>, -<link linkend="V4L2-PIX-FMT-SPCA561"><constant>V4L2_PIX_FMT_SPCA561</constant></link>, -<link linkend="V4L2-PIX-FMT-SQ905C"><constant>V4L2_PIX_FMT_SQ905C</constant></link>, -<constant>V4L2_PIX_FMT_SRGGB8</constant>, -<link linkend="V4L2-PIX-FMT-UYVY"><constant>V4L2_PIX_FMT_UYVY</constant></link>, -<link linkend="V4L2-PIX-FMT-YUV420"><constant>V4L2_PIX_FMT_YUV420</constant></link>, -<link linkend="V4L2-PIX-FMT-YUYV"><constant>V4L2_PIX_FMT_YUYV</constant></link>, -<link linkend="V4L2-PIX-FMT-YVU420"><constant>V4L2_PIX_FMT_YVU420</constant></link>, -and <link linkend="V4L2-PIX-FMT-YVYU"><constant>V4L2_PIX_FMT_YVYU</constant></link>. -</para> - <para>Later on libv4lconvert was expanded to also be able to do -various video processing functions to improve webcam video quality. -The video processing is split in to 2 parts: libv4lconvert/control and -libv4lconvert/processing.</para> - - <para>The control part is used to offer video controls which can -be used to control the video processing functions made available by - libv4lconvert/processing. These controls are stored application wide -(until reboot) by using a persistent shared memory object.</para> - - <para>libv4lconvert/processing offers the actual video -processing functionality.</para> - </section> - <section> - <title>libv4l1</title> - <para>This library offers functions that can be used to quickly -make v4l1 applications work with v4l2 devices. These functions work exactly -like the normal open/close/etc, except that libv4l1 does full emulation of -the v4l1 api on top of v4l2 drivers, in case of v4l1 drivers it -will just pass calls through.</para> - <para>Since those functions are emulations of the old V4L1 API, -it shouldn't be used for new applications.</para> - </section> - <section> - <title>libv4l2</title> - <para>This library should be used for all modern V4L2 -applications.</para> - <para>It provides handles to call V4L2 open/ioctl/close/poll -methods. Instead of just providing the raw output of the device, it enhances -the calls in the sense that it will use libv4lconvert to provide more video -formats and to enhance the image quality.</para> - <para>In most cases, libv4l2 just passes the calls directly -through to the v4l2 driver, intercepting the calls to -<link linkend='vidioc-g-fmt'><constant>VIDIOC_TRY_FMT</constant></link>, -<link linkend='vidioc-g-fmt'><constant>VIDIOC_G_FMT</constant></link> -<link linkend='vidioc-g-fmt'><constant>VIDIOC_S_FMT</constant></link> -<link linkend='vidioc-enum-framesizes'><constant>VIDIOC_ENUM_FRAMESIZES</constant></link> -and <link linkend='vidioc-enum-frameintervals'><constant>VIDIOC_ENUM_FRAMEINTERVALS</constant></link> -in order to emulate the formats -<link linkend="V4L2-PIX-FMT-BGR24"><constant>V4L2_PIX_FMT_BGR24</constant></link>, -<link linkend="V4L2-PIX-FMT-RGB24"><constant>V4L2_PIX_FMT_RGB24</constant></link>, -<link linkend="V4L2-PIX-FMT-YUV420"><constant>V4L2_PIX_FMT_YUV420</constant></link>, -and <link linkend="V4L2-PIX-FMT-YVU420"><constant>V4L2_PIX_FMT_YVU420</constant></link>, -if they aren't available in the driver. -<link linkend='vidioc-enum-fmt'><constant>VIDIOC_ENUM_FMT</constant></link> -keeps enumerating the hardware supported formats, plus the emulated formats -offered by libv4l at the end. -</para> - <section id="libv4l-ops"> - <title>Libv4l device control functions</title> - <para>The common file operation methods are provided by -libv4l.</para> - <para>Those functions operate just like glibc -open/close/dup/ioctl/read/mmap/munmap:</para> -<itemizedlist><listitem> - <para>int v4l2_open(const char *file, int oflag, -...) - -operates like the standard <link linkend='func-open'>open()</link> function. -</para></listitem><listitem> - <para>int v4l2_close(int fd) - -operates like the standard <link linkend='func-close'>close()</link> function. -</para></listitem><listitem> - <para>int v4l2_dup(int fd) - -operates like the standard dup() function, duplicating a file handler. -</para></listitem><listitem> - <para>int v4l2_ioctl (int fd, unsigned long int request, ...) - -operates like the standard <link linkend='func-ioctl'>ioctl()</link> function. -</para></listitem><listitem> - <para>int v4l2_read (int fd, void* buffer, size_t n) - -operates like the standard <link linkend='func-read'>read()</link> function. -</para></listitem><listitem> - <para>void v4l2_mmap(void *start, size_t length, int prot, int flags, int fd, int64_t offset); - -operates like the standard <link linkend='func-mmap'>mmap()</link> function. -</para></listitem><listitem> - <para>int v4l2_munmap(void *_start, size_t length); - -operates like the standard <link linkend='func-munmap'>munmap()</link> function. -</para></listitem> -</itemizedlist> - <para>Those functions provide additional control:</para> -<itemizedlist><listitem> - <para>int v4l2_fd_open(int fd, int v4l2_flags) - -opens an already opened fd for further use through v4l2lib and possibly -modify libv4l2's default behavior through the v4l2_flags argument. -Currently, v4l2_flags can be <constant>V4L2_DISABLE_CONVERSION</constant>, -to disable format conversion. -</para></listitem><listitem> - <para>int v4l2_set_control(int fd, int cid, int value) - -This function takes a value of 0 - 65535, and then scales that range to -the actual range of the given v4l control id, and then if the cid exists -and is not locked sets the cid to the scaled value. -</para></listitem><listitem> - <para>int v4l2_get_control(int fd, int cid) - -This function returns a value of 0 - 65535, scaled to from the actual range -of the given v4l control id. when the cid does not exist, could not be -accessed for some reason, or some error occurred 0 is returned. -</para></listitem> -</itemizedlist> - </section> - </section> - <section> - - <title>v4l1compat.so wrapper library</title> - - <para>This library intercepts calls to -open/close/ioctl/mmap/mmunmap operations and redirects them to the libv4l -counterparts, by using LD_PRELOAD=/usr/lib/v4l1compat.so. It also -emulates V4L1 calls via V4L2 API.</para> - <para>It allows usage of binary legacy applications that -still don't use libv4l.</para> - </section> - -</section> -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/lirc_device_interface.xml b/Documentation/DocBook/v4l/lirc_device_interface.xml deleted file mode 100644 index 0e0453f39e73..000000000000 --- a/Documentation/DocBook/v4l/lirc_device_interface.xml +++ /dev/null @@ -1,251 +0,0 @@ -<section id="lirc_dev"> -<title>LIRC Device Interface</title> - - -<section id="lirc_dev_intro"> -<title>Introduction</title> - -<para>The LIRC device interface is a bi-directional interface for -transporting raw IR data between userspace and kernelspace. Fundamentally, -it is just a chardev (/dev/lircX, for X = 0, 1, 2, ...), with a number -of standard struct file_operations defined on it. With respect to -transporting raw IR data to and fro, the essential fops are read, write -and ioctl.</para> - -<para>Example dmesg output upon a driver registering w/LIRC:</para> - <blockquote> - <para>$ dmesg |grep lirc_dev</para> - <para>lirc_dev: IR Remote Control driver registered, major 248</para> - <para>rc rc0: lirc_dev: driver ir-lirc-codec (mceusb) registered at minor = 0</para> - </blockquote> - -<para>What you should see for a chardev:</para> - <blockquote> - <para>$ ls -l /dev/lirc*</para> - <para>crw-rw---- 1 root root 248, 0 Jul 2 22:20 /dev/lirc0</para> - </blockquote> -</section> - -<section id="lirc_read"> -<title>LIRC read fop</title> - -<para>The lircd userspace daemon reads raw IR data from the LIRC chardev. The -exact format of the data depends on what modes a driver supports, and what -mode has been selected. lircd obtains supported modes and sets the active mode -via the ioctl interface, detailed at <xref linkend="lirc_ioctl"/>. The generally -preferred mode is LIRC_MODE_MODE2, in which packets containing an int value -describing an IR signal are read from the chardev.</para> - -<para>See also <ulink url="http://www.lirc.org/html/technical.html">http://www.lirc.org/html/technical.html</ulink> for more info.</para> -</section> - -<section id="lirc_write"> -<title>LIRC write fop</title> - -<para>The data written to the chardev is a pulse/space sequence of integer -values. Pulses and spaces are only marked implicitly by their position. The -data must start and end with a pulse, therefore, the data must always include -an uneven number of samples. The write function must block until the data has -been transmitted by the hardware.</para> -</section> - -<section id="lirc_ioctl"> -<title>LIRC ioctl fop</title> - -<para>The LIRC device's ioctl definition is bound by the ioctl function -definition of struct file_operations, leaving us with an unsigned int -for the ioctl command and an unsigned long for the arg. For the purposes -of ioctl portability across 32-bit and 64-bit, these values are capped -to their 32-bit sizes.</para> - -<para>The following ioctls can be used to change specific hardware settings. -In general each driver should have a default set of settings. The driver -implementation is expected to re-apply the default settings when the device -is closed by user-space, so that every application opening the device can rely -on working with the default settings initially.</para> - -<variablelist> - <varlistentry> - <term>LIRC_GET_FEATURES</term> - <listitem> - <para>Obviously, get the underlying hardware device's features. If a driver - does not announce support of certain features, calling of the corresponding - ioctls is undefined.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_GET_SEND_MODE</term> - <listitem> - <para>Get supported transmit mode. Only LIRC_MODE_PULSE is supported by lircd.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_GET_REC_MODE</term> - <listitem> - <para>Get supported receive modes. Only LIRC_MODE_MODE2 and LIRC_MODE_LIRCCODE - are supported by lircd.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_GET_SEND_CARRIER</term> - <listitem> - <para>Get carrier frequency (in Hz) currently used for transmit.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_GET_REC_CARRIER</term> - <listitem> - <para>Get carrier frequency (in Hz) currently used for IR reception.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_{G,S}ET_{SEND,REC}_DUTY_CYCLE</term> - <listitem> - <para>Get/set the duty cycle (from 0 to 100) of the carrier signal. Currently, - no special meaning is defined for 0 or 100, but this could be used to switch - off carrier generation in the future, so these values should be reserved.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_GET_REC_RESOLUTION</term> - <listitem> - <para>Some receiver have maximum resolution which is defined by internal - sample rate or data format limitations. E.g. it's common that signals can - only be reported in 50 microsecond steps. This integer value is used by - lircd to automatically adjust the aeps tolerance value in the lircd - config file.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_GET_M{IN,AX}_TIMEOUT</term> - <listitem> - <para>Some devices have internal timers that can be used to detect when - there's no IR activity for a long time. This can help lircd in detecting - that a IR signal is finished and can speed up the decoding process. - Returns an integer value with the minimum/maximum timeout that can be - set. Some devices have a fixed timeout, in that case both ioctls will - return the same value even though the timeout cannot be changed.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_GET_M{IN,AX}_FILTER_{PULSE,SPACE}</term> - <listitem> - <para>Some devices are able to filter out spikes in the incoming signal - using given filter rules. These ioctls return the hardware capabilities - that describe the bounds of the possible filters. Filter settings depend - on the IR protocols that are expected. lircd derives the settings from - all protocols definitions found in its config file.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_GET_LENGTH</term> - <listitem> - <para>Retrieves the code length in bits (only for LIRC_MODE_LIRCCODE). - Reads on the device must be done in blocks matching the bit count. - The bit could should be rounded up so that it matches full bytes.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_SET_{SEND,REC}_MODE</term> - <listitem> - <para>Set send/receive mode. Largely obsolete for send, as only - LIRC_MODE_PULSE is supported.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_SET_{SEND,REC}_CARRIER</term> - <listitem> - <para>Set send/receive carrier (in Hz).</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_SET_TRANSMITTER_MASK</term> - <listitem> - <para>This enables the given set of transmitters. The first transmitter - is encoded by the least significant bit, etc. When an invalid bit mask - is given, i.e. a bit is set, even though the device does not have so many - transitters, then this ioctl returns the number of available transitters - and does nothing otherwise.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_SET_REC_TIMEOUT</term> - <listitem> - <para>Sets the integer value for IR inactivity timeout (cf. - LIRC_GET_MIN_TIMEOUT and LIRC_GET_MAX_TIMEOUT). A value of 0 (if - supported by the hardware) disables all hardware timeouts and data should - be reported as soon as possible. If the exact value cannot be set, then - the next possible value _greater_ than the given value should be set.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_SET_REC_TIMEOUT_REPORTS</term> - <listitem> - <para>Enable (1) or disable (0) timeout reports in LIRC_MODE_MODE2. By - default, timeout reports should be turned off.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_SET_REC_FILTER_{,PULSE,SPACE}</term> - <listitem> - <para>Pulses/spaces shorter than this are filtered out by hardware. If - filters cannot be set independently for pulse/space, the corresponding - ioctls must return an error and LIRC_SET_REC_FILTER shall be used instead.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_SET_MEASURE_CARRIER_MODE</term> - <listitem> - <para>Enable (1)/disable (0) measure mode. If enabled, from the next key - press on, the driver will send LIRC_MODE2_FREQUENCY packets. By default - this should be turned off.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_SET_REC_{DUTY_CYCLE,CARRIER}_RANGE</term> - <listitem> - <para>To set a range use LIRC_SET_REC_DUTY_CYCLE_RANGE/LIRC_SET_REC_CARRIER_RANGE - with the lower bound first and later LIRC_SET_REC_DUTY_CYCLE/LIRC_SET_REC_CARRIER - with the upper bound.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_NOTIFY_DECODE</term> - <listitem> - <para>This ioctl is called by lircd whenever a successful decoding of an - incoming IR signal could be done. This can be used by supporting hardware - to give visual feedback to the user e.g. by flashing a LED.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_SETUP_{START,END}</term> - <listitem> - <para>Setting of several driver parameters can be optimized by encapsulating - the according ioctl calls with LIRC_SETUP_START/LIRC_SETUP_END. When a - driver receives a LIRC_SETUP_START ioctl it can choose to not commit - further setting changes to the hardware until a LIRC_SETUP_END is received. - But this is open to the driver implementation and every driver must also - handle parameter changes which are not encapsulated by LIRC_SETUP_START - and LIRC_SETUP_END. Drivers can also choose to ignore these ioctls.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>LIRC_SET_WIDEBAND_RECEIVER</term> - <listitem> - <para>Some receivers are equipped with special wide band receiver which is intended - to be used to learn output of existing remote. - Calling that ioctl with (1) will enable it, and with (0) disable it. - This might be useful of receivers that have otherwise narrow band receiver - that prevents them to be used with some remotes. - Wide band receiver might also be more precise - On the other hand its disadvantage it usually reduced range of reception. - Note: wide band receiver might be implictly enabled if you enable - carrier reports. In that case it will be disabled as soon as you disable - carrier reports. Trying to disable wide band receiver while carrier - reports are active will do nothing.</para> - </listitem> - </varlistentry> -</variablelist> - -</section> -</section> diff --git a/Documentation/DocBook/v4l/media-controller.xml b/Documentation/DocBook/v4l/media-controller.xml deleted file mode 100644 index 873ac3a621f0..000000000000 --- a/Documentation/DocBook/v4l/media-controller.xml +++ /dev/null @@ -1,89 +0,0 @@ -<partinfo> - <authorgroup> - <author> - <firstname>Laurent</firstname> - <surname>Pinchart</surname> - <affiliation><address><email>laurent.pinchart@ideasonboard.com</email></address></affiliation> - <contrib>Initial version.</contrib> - </author> - </authorgroup> - <copyright> - <year>2010</year> - <holder>Laurent Pinchart</holder> - </copyright> - - <revhistory> - <!-- Put document revisions here, newest first. --> - <revision> - <revnumber>1.0.0</revnumber> - <date>2010-11-10</date> - <authorinitials>lp</authorinitials> - <revremark>Initial revision</revremark> - </revision> - </revhistory> -</partinfo> - -<title>Media Controller API</title> - -<chapter id="media_controller"> - <title>Media Controller</title> - - <section id="media-controller-intro"> - <title>Introduction</title> - <para>Media devices increasingly handle multiple related functions. Many USB - cameras include microphones, video capture hardware can also output video, - or SoC camera interfaces also perform memory-to-memory operations similar to - video codecs.</para> - <para>Independent functions, even when implemented in the same hardware, can - be modelled as separate devices. A USB camera with a microphone will be - presented to userspace applications as V4L2 and ALSA capture devices. The - devices' relationships (when using a webcam, end-users shouldn't have to - manually select the associated USB microphone), while not made available - directly to applications by the drivers, can usually be retrieved from - sysfs.</para> - <para>With more and more advanced SoC devices being introduced, the current - approach will not scale. Device topologies are getting increasingly complex - and can't always be represented by a tree structure. Hardware blocks are - shared between different functions, creating dependencies between seemingly - unrelated devices.</para> - <para>Kernel abstraction APIs such as V4L2 and ALSA provide means for - applications to access hardware parameters. As newer hardware expose an - increasingly high number of those parameters, drivers need to guess what - applications really require based on limited information, thereby - implementing policies that belong to userspace.</para> - <para>The media controller API aims at solving those problems.</para> - </section> - - <section id="media-controller-model"> - <title>Media device model</title> - <para>Discovering a device internal topology, and configuring it at runtime, - is one of the goals of the media controller API. To achieve this, hardware - devices are modelled as an oriented graph of building blocks called entities - connected through pads.</para> - <para>An entity is a basic media hardware or software building block. It can - correspond to a large variety of logical blocks such as physical hardware - devices (CMOS sensor for instance), logical hardware devices (a building - block in a System-on-Chip image processing pipeline), DMA channels or - physical connectors.</para> - <para>A pad is a connection endpoint through which an entity can interact - with other entities. Data (not restricted to video) produced by an entity - flows from the entity's output to one or more entity inputs. Pads should not - be confused with physical pins at chip boundaries.</para> - <para>A link is a point-to-point oriented connection between two pads, - either on the same entity or on different entities. Data flows from a source - pad to a sink pad.</para> - </section> -</chapter> - -<appendix id="media-user-func"> - <title>Function Reference</title> - <!-- Keep this alphabetically sorted. --> - &sub-media-func-open; - &sub-media-func-close; - &sub-media-func-ioctl; - <!-- All ioctls go here. --> - &sub-media-ioc-device-info; - &sub-media-ioc-enum-entities; - &sub-media-ioc-enum-links; - &sub-media-ioc-setup-link; -</appendix> diff --git a/Documentation/DocBook/v4l/media-func-close.xml b/Documentation/DocBook/v4l/media-func-close.xml deleted file mode 100644 index be149c802aeb..000000000000 --- a/Documentation/DocBook/v4l/media-func-close.xml +++ /dev/null @@ -1,59 +0,0 @@ -<refentry id="media-func-close"> - <refmeta> - <refentrytitle>media close()</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>media-close</refname> - <refpurpose>Close a media device</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo>#include <unistd.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>close</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>Closes the media device. Resources associated with the file descriptor - are freed. The device configuration remain unchanged.</para> - </refsect1> - - <refsect1> - <title>Return Value</title> - - <para><function>close</function> returns 0 on success. On error, -1 is - returned, and <varname>errno</varname> is set appropriately. Possible error - codes are:</para> - - <variablelist> - <varlistentry> - <term><errorcode>EBADF</errorcode></term> - <listitem> - <para><parameter>fd</parameter> is not a valid open file descriptor. - </para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/media-func-ioctl.xml b/Documentation/DocBook/v4l/media-func-ioctl.xml deleted file mode 100644 index bda8604de15c..000000000000 --- a/Documentation/DocBook/v4l/media-func-ioctl.xml +++ /dev/null @@ -1,116 +0,0 @@ -<refentry id="media-func-ioctl"> - <refmeta> - <refentrytitle>media ioctl()</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>media-ioctl</refname> - <refpurpose>Control a media device</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo>#include <sys/ioctl.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>void *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>Media ioctl request code as defined in the media.h header file, - for example MEDIA_IOC_SETUP_LINK.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para>Pointer to a request-specific structure.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - <para>The <function>ioctl()</function> function manipulates media device - parameters. The argument <parameter>fd</parameter> must be an open file - descriptor.</para> - <para>The ioctl <parameter>request</parameter> code specifies the media - function to be called. It has encoded in it whether the argument is an - input, output or read/write parameter, and the size of the argument - <parameter>argp</parameter> in bytes.</para> - <para>Macros and structures definitions specifying media ioctl requests and - their parameters are located in the media.h header file. All media ioctl - requests, their respective function and parameters are specified in - <xref linkend="media-user-func" />.</para> - </refsect1> - - <refsect1> - <title>Return Value</title> - - <para><function>ioctl()</function> returns <returnvalue>0</returnvalue> on - success. On failure, <returnvalue>-1</returnvalue> is returned, and the - <varname>errno</varname> variable is set appropriately. Generic error codes - are listed below, and request-specific error codes are listed in the - individual requests descriptions.</para> - <para>When an ioctl that takes an output or read/write parameter fails, - the parameter remains unmodified.</para> - - <variablelist> - <varlistentry> - <term><errorcode>EBADF</errorcode></term> - <listitem> - <para><parameter>fd</parameter> is not a valid open file descriptor. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EFAULT</errorcode></term> - <listitem> - <para><parameter>argp</parameter> references an inaccessible memory - area.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The <parameter>request</parameter> or the data pointed to by - <parameter>argp</parameter> is not valid. This is a very common error - code, see the individual ioctl requests listed in - <xref linkend="media-user-func" /> for actual causes.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ENOMEM</errorcode></term> - <listitem> - <para>Insufficient kernel memory was available to complete the - request.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ENOTTY</errorcode></term> - <listitem> - <para><parameter>fd</parameter> is not associated with a character - special device.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/media-func-open.xml b/Documentation/DocBook/v4l/media-func-open.xml deleted file mode 100644 index f7df034dc9ed..000000000000 --- a/Documentation/DocBook/v4l/media-func-open.xml +++ /dev/null @@ -1,94 +0,0 @@ -<refentry id="media-func-open"> - <refmeta> - <refentrytitle>media open()</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>media-open</refname> - <refpurpose>Open a media device</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo>#include <fcntl.h></funcsynopsisinfo> - <funcprototype> - <funcdef>int <function>open</function></funcdef> - <paramdef>const char *<parameter>device_name</parameter></paramdef> - <paramdef>int <parameter>flags</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>device_name</parameter></term> - <listitem> - <para>Device to be opened.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>flags</parameter></term> - <listitem> - <para>Open flags. Access mode must be either <constant>O_RDONLY</constant> - or <constant>O_RDWR</constant>. Other flags have no effect.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - <refsect1> - <title>Description</title> - <para>To open a media device applications call <function>open()</function> - with the desired device name. The function has no side effects; the device - configuration remain unchanged.</para> - <para>When the device is opened in read-only mode, attemps to modify its - configuration will result in an error, and <varname>errno</varname> will be - set to <errorcode>EBADF</errorcode>.</para> - </refsect1> - <refsect1> - <title>Return Value</title> - - <para><function>open</function> returns the new file descriptor on success. - On error, -1 is returned, and <varname>errno</varname> is set appropriately. - Possible error codes are:</para> - - <variablelist> - <varlistentry> - <term><errorcode>EACCES</errorcode></term> - <listitem> - <para>The requested access to the file is not allowed.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EMFILE</errorcode></term> - <listitem> - <para>The process already has the maximum number of files open. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ENFILE</errorcode></term> - <listitem> - <para>The system limit on the total number of open files has been - reached.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ENOMEM</errorcode></term> - <listitem> - <para>Insufficient kernel memory was available.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ENXIO</errorcode></term> - <listitem> - <para>No device corresponding to this device special file exists. - </para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/media-ioc-device-info.xml b/Documentation/DocBook/v4l/media-ioc-device-info.xml deleted file mode 100644 index 1f3237351bba..000000000000 --- a/Documentation/DocBook/v4l/media-ioc-device-info.xml +++ /dev/null @@ -1,133 +0,0 @@ -<refentry id="media-ioc-device-info"> - <refmeta> - <refentrytitle>ioctl MEDIA_IOC_DEVICE_INFO</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>MEDIA_IOC_DEVICE_INFO</refname> - <refpurpose>Query device information</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct media_device_info *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>File descriptor returned by - <link linkend='media-func-open'><function>open()</function></link>.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>MEDIA_IOC_DEVICE_INFO</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>All media devices must support the <constant>MEDIA_IOC_DEVICE_INFO</constant> - ioctl. To query device information, applications call the ioctl with a - pointer to a &media-device-info;. The driver fills the structure and returns - the information to the application. - The ioctl never fails.</para> - - <table pgwide="1" frame="none" id="media-device-info"> - <title>struct <structname>media_device_info</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>char</entry> - <entry><structfield>driver</structfield>[16]</entry> - <entry><para>Name of the driver implementing the media API as a - NUL-terminated ASCII string. The driver version is stored in the - <structfield>driver_version</structfield> field.</para> - <para>Driver specific applications can use this information to - verify the driver identity. It is also useful to work around - known bugs, or to identify drivers in error reports.</para></entry> - </row> - <row> - <entry>char</entry> - <entry><structfield>model</structfield>[32]</entry> - <entry>Device model name as a NUL-terminated UTF-8 string. The - device version is stored in the <structfield>device_version</structfield> - field and is not be appended to the model name.</entry> - </row> - <row> - <entry>char</entry> - <entry><structfield>serial</structfield>[40]</entry> - <entry>Serial number as a NUL-terminated ASCII string.</entry> - </row> - <row> - <entry>char</entry> - <entry><structfield>bus_info</structfield>[32]</entry> - <entry>Location of the device in the system as a NUL-terminated - ASCII string. This includes the bus type name (PCI, USB, ...) and a - bus-specific identifier.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>media_version</structfield></entry> - <entry>Media API version, formatted with the - <constant>KERNEL_VERSION()</constant> macro.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>hw_revision</structfield></entry> - <entry>Hardware device revision in a driver-specific format.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>media_version</structfield></entry> - <entry>Media device driver version, formatted with the - <constant>KERNEL_VERSION()</constant> macro. Together with the - <structfield>driver</structfield> field this identifies a particular - driver.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[31]</entry> - <entry>Reserved for future extensions. Drivers and applications must - set this array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - <para>The <structfield>serial</structfield> and <structfield>bus_info</structfield> - fields can be used to distinguish between multiple instances of otherwise - identical hardware. The serial number takes precedence when provided and can - be assumed to be unique. If the serial number is an empty string, the - <structfield>bus_info</structfield> field can be used instead. The - <structfield>bus_info</structfield> field is guaranteed to be unique, but - can vary across reboots or device unplug/replug.</para> - </refsect1> - - <refsect1> - <title>Return value</title> - <para>This function doesn't return specific error codes.</para> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/media-ioc-enum-entities.xml b/Documentation/DocBook/v4l/media-ioc-enum-entities.xml deleted file mode 100644 index 576b68b33f2c..000000000000 --- a/Documentation/DocBook/v4l/media-ioc-enum-entities.xml +++ /dev/null @@ -1,308 +0,0 @@ -<refentry id="media-ioc-enum-entities"> - <refmeta> - <refentrytitle>ioctl MEDIA_IOC_ENUM_ENTITIES</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>MEDIA_IOC_ENUM_ENTITIES</refname> - <refpurpose>Enumerate entities and their properties</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct media_entity_desc *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>File descriptor returned by - <link linkend='media-func-open'><function>open()</function></link>.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>MEDIA_IOC_ENUM_ENTITIES</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - <para>To query the attributes of an entity, applications set the id field - of a &media-entity-desc; structure and call the MEDIA_IOC_ENUM_ENTITIES - ioctl with a pointer to this structure. The driver fills the rest of the - structure or returns an &EINVAL; when the id is invalid.</para> - <para>Entities can be enumerated by or'ing the id with the - <constant>MEDIA_ENT_ID_FLAG_NEXT</constant> flag. The driver will return - information about the entity with the smallest id strictly larger than the - requested one ('next entity'), or the &EINVAL; if there is none.</para> - <para>Entity IDs can be non-contiguous. Applications must - <emphasis>not</emphasis> try to enumerate entities by calling - MEDIA_IOC_ENUM_ENTITIES with increasing id's until they get an error.</para> - <para>Two or more entities that share a common non-zero - <structfield>group_id</structfield> value are considered as logically - grouped. Groups are used to report - <itemizedlist> - <listitem><para>ALSA, VBI and video nodes that carry the same media - stream</para></listitem> - <listitem><para>lens and flash controllers associated with a sensor</para></listitem> - </itemizedlist> - </para> - - <table pgwide="1" frame="none" id="media-entity-desc"> - <title>struct <structname>media_entity_desc</structname></title> - <tgroup cols="5"> - <colspec colname="c1" /> - <colspec colname="c2" /> - <colspec colname="c3" /> - <colspec colname="c4" /> - <colspec colname="c5" /> - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>id</structfield></entry> - <entry></entry> - <entry></entry> - <entry>Entity id, set by the application. When the id is or'ed with - <constant>MEDIA_ENT_ID_FLAG_NEXT</constant>, the driver clears the - flag and returns the first entity with a larger id.</entry> - </row> - <row> - <entry>char</entry> - <entry><structfield>name</structfield>[32]</entry> - <entry></entry> - <entry></entry> - <entry>Entity name as an UTF-8 NULL-terminated string.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>type</structfield></entry> - <entry></entry> - <entry></entry> - <entry>Entity type, see <xref linkend="media-entity-type" /> for details.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>revision</structfield></entry> - <entry></entry> - <entry></entry> - <entry>Entity revision in a driver/hardware specific format.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>flags</structfield></entry> - <entry></entry> - <entry></entry> - <entry>Entity flags, see <xref linkend="media-entity-flag" /> for details.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>group_id</structfield></entry> - <entry></entry> - <entry></entry> - <entry>Entity group ID</entry> - </row> - <row> - <entry>__u16</entry> - <entry><structfield>pads</structfield></entry> - <entry></entry> - <entry></entry> - <entry>Number of pads</entry> - </row> - <row> - <entry>__u16</entry> - <entry><structfield>links</structfield></entry> - <entry></entry> - <entry></entry> - <entry>Total number of outbound links. Inbound links are not counted - in this field.</entry> - </row> - <row> - <entry>union</entry> - </row> - <row> - <entry></entry> - <entry>struct</entry> - <entry><structfield>v4l</structfield></entry> - <entry></entry> - <entry>Valid for V4L sub-devices and nodes only.</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>major</structfield></entry> - <entry>V4L device node major number. For V4L sub-devices with no - device node, set by the driver to 0.</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>minor</structfield></entry> - <entry>V4L device node minor number. For V4L sub-devices with no - device node, set by the driver to 0.</entry> - </row> - <row> - <entry></entry> - <entry>struct</entry> - <entry><structfield>fb</structfield></entry> - <entry></entry> - <entry>Valid for frame buffer nodes only.</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>major</structfield></entry> - <entry>Frame buffer device node major number.</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>minor</structfield></entry> - <entry>Frame buffer device node minor number.</entry> - </row> - <row> - <entry></entry> - <entry>struct</entry> - <entry><structfield>alsa</structfield></entry> - <entry></entry> - <entry>Valid for ALSA devices only.</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>card</structfield></entry> - <entry>ALSA card number</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>device</structfield></entry> - <entry>ALSA device number</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>subdevice</structfield></entry> - <entry>ALSA sub-device number</entry> - </row> - <row> - <entry></entry> - <entry>int</entry> - <entry><structfield>dvb</structfield></entry> - <entry></entry> - <entry>DVB card number</entry> - </row> - <row> - <entry></entry> - <entry>__u8</entry> - <entry><structfield>raw</structfield>[180]</entry> - <entry></entry> - <entry></entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="media-entity-type"> - <title>Media entity types</title> - <tgroup cols="2"> - <colspec colname="c1"/> - <colspec colname="c2"/> - <tbody valign="top"> - <row> - <entry><constant>MEDIA_ENT_T_DEVNODE</constant></entry> - <entry>Unknown device node</entry> - </row> - <row> - <entry><constant>MEDIA_ENT_T_DEVNODE_V4L</constant></entry> - <entry>V4L video, radio or vbi device node</entry> - </row> - <row> - <entry><constant>MEDIA_ENT_T_DEVNODE_FB</constant></entry> - <entry>Frame buffer device node</entry> - </row> - <row> - <entry><constant>MEDIA_ENT_T_DEVNODE_ALSA</constant></entry> - <entry>ALSA card</entry> - </row> - <row> - <entry><constant>MEDIA_ENT_T_DEVNODE_DVB</constant></entry> - <entry>DVB card</entry> - </row> - <row> - <entry><constant>MEDIA_ENT_T_V4L2_SUBDEV</constant></entry> - <entry>Unknown V4L sub-device</entry> - </row> - <row> - <entry><constant>MEDIA_ENT_T_V4L2_SUBDEV_SENSOR</constant></entry> - <entry>Video sensor</entry> - </row> - <row> - <entry><constant>MEDIA_ENT_T_V4L2_SUBDEV_FLASH</constant></entry> - <entry>Flash controller</entry> - </row> - <row> - <entry><constant>MEDIA_ENT_T_V4L2_SUBDEV_LENS</constant></entry> - <entry>Lens controller</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="media-entity-flag"> - <title>Media entity flags</title> - <tgroup cols="2"> - <colspec colname="c1"/> - <colspec colname="c2"/> - <tbody valign="top"> - <row> - <entry><constant>MEDIA_ENT_FL_DEFAULT</constant></entry> - <entry>Default entity for its type. Used to discover the default - audio, VBI and video devices, the default camera sensor, ...</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &media-entity-desc; <structfield>id</structfield> references - a non-existing entity.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/media-ioc-enum-links.xml b/Documentation/DocBook/v4l/media-ioc-enum-links.xml deleted file mode 100644 index d2fc73ef8d56..000000000000 --- a/Documentation/DocBook/v4l/media-ioc-enum-links.xml +++ /dev/null @@ -1,207 +0,0 @@ -<refentry id="media-ioc-enum-links"> - <refmeta> - <refentrytitle>ioctl MEDIA_IOC_ENUM_LINKS</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>MEDIA_IOC_ENUM_LINKS</refname> - <refpurpose>Enumerate all pads and links for a given entity</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct media_links_enum *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>File descriptor returned by - <link linkend='media-func-open'><function>open()</function></link>.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>MEDIA_IOC_ENUM_LINKS</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To enumerate pads and/or links for a given entity, applications set - the entity field of a &media-links-enum; structure and initialize the - &media-pad-desc; and &media-link-desc; structure arrays pointed by the - <structfield>pads</structfield> and <structfield>links</structfield> fields. - They then call the MEDIA_IOC_ENUM_LINKS ioctl with a pointer to this - structure.</para> - <para>If the <structfield>pads</structfield> field is not NULL, the driver - fills the <structfield>pads</structfield> array with information about the - entity's pads. The array must have enough room to store all the entity's - pads. The number of pads can be retrieved with the &MEDIA-IOC-ENUM-ENTITIES; - ioctl.</para> - <para>If the <structfield>links</structfield> field is not NULL, the driver - fills the <structfield>links</structfield> array with information about the - entity's outbound links. The array must have enough room to store all the - entity's outbound links. The number of outbound links can be retrieved with - the &MEDIA-IOC-ENUM-ENTITIES; ioctl.</para> - <para>Only forward links that originate at one of the entity's source pads - are returned during the enumeration process.</para> - - <table pgwide="1" frame="none" id="media-links-enum"> - <title>struct <structname>media_links_enum</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>entity</structfield></entry> - <entry>Entity id, set by the application.</entry> - </row> - <row> - <entry>struct &media-pad-desc;</entry> - <entry>*<structfield>pads</structfield></entry> - <entry>Pointer to a pads array allocated by the application. Ignored - if NULL.</entry> - </row> - <row> - <entry>struct &media-link-desc;</entry> - <entry>*<structfield>links</structfield></entry> - <entry>Pointer to a links array allocated by the application. Ignored - if NULL.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="media-pad-desc"> - <title>struct <structname>media_pad_desc</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>entity</structfield></entry> - <entry>ID of the entity this pad belongs to.</entry> - </row> - <row> - <entry>__u16</entry> - <entry><structfield>index</structfield></entry> - <entry>0-based pad index.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>flags</structfield></entry> - <entry>Pad flags, see <xref linkend="media-pad-flag" /> for more details.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="media-pad-flag"> - <title>Media pad flags</title> - <tgroup cols="2"> - <colspec colname="c1"/> - <colspec colname="c2"/> - <tbody valign="top"> - <row> - <entry><constant>MEDIA_PAD_FL_SINK</constant></entry> - <entry>Input pad, relative to the entity. Input pads sink data and - are targets of links.</entry> - </row> - <row> - <entry><constant>MEDIA_PAD_FL_SOURCE</constant></entry> - <entry>Output pad, relative to the entity. Output pads source data - and are origins of links.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="media-link-desc"> - <title>struct <structname>media_links_desc</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>struct &media-pad-desc;</entry> - <entry><structfield>source</structfield></entry> - <entry>Pad at the origin of this link.</entry> - </row> - <row> - <entry>struct &media-pad-desc;</entry> - <entry><structfield>sink</structfield></entry> - <entry>Pad at the target of this link.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>flags</structfield></entry> - <entry>Link flags, see <xref linkend="media-link-flag" /> for more details.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="media-link-flag"> - <title>Media link flags</title> - <tgroup cols="2"> - <colspec colname="c1"/> - <colspec colname="c2"/> - <tbody valign="top"> - <row> - <entry><constant>MEDIA_LNK_FL_ENABLED</constant></entry> - <entry>The link is enabled and can be used to transfer media data. - When two or more links target a sink pad, only one of them can be - enabled at a time.</entry> - </row> - <row> - <entry><constant>MEDIA_LNK_FL_IMMUTABLE</constant></entry> - <entry>The link enabled state can't be modified at runtime. An - immutable link is always enabled.</entry> - </row> - <row> - <entry><constant>MEDIA_LNK_FL_DYNAMIC</constant></entry> - <entry>The link enabled state can be modified during streaming. This - flag is set by drivers and is read-only for applications.</entry> - </row> - </tbody> - </tgroup> - </table> - <para>One and only one of <constant>MEDIA_PAD_FL_SINK</constant> and - <constant>MEDIA_PAD_FL_SOURCE</constant> must be set for every pad.</para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &media-links-enum; <structfield>id</structfield> references - a non-existing entity.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/media-ioc-setup-link.xml b/Documentation/DocBook/v4l/media-ioc-setup-link.xml deleted file mode 100644 index cec97af4dab4..000000000000 --- a/Documentation/DocBook/v4l/media-ioc-setup-link.xml +++ /dev/null @@ -1,93 +0,0 @@ -<refentry id="media-ioc-setup-link"> - <refmeta> - <refentrytitle>ioctl MEDIA_IOC_SETUP_LINK</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>MEDIA_IOC_SETUP_LINK</refname> - <refpurpose>Modify the properties of a link</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct media_link_desc *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>File descriptor returned by - <link linkend='media-func-open'><function>open()</function></link>.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>MEDIA_IOC_SETUP_LINK</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To change link properties applications fill a &media-link-desc; with - link identification information (source and sink pad) and the new requested - link flags. They then call the MEDIA_IOC_SETUP_LINK ioctl with a pointer to - that structure.</para> - <para>The only configurable property is the <constant>ENABLED</constant> - link flag to enable/disable a link. Links marked with the - <constant>IMMUTABLE</constant> link flag can not be enabled or disabled. - </para> - <para>Link configuration has no side effect on other links. If an enabled - link at the sink pad prevents the link from being enabled, the driver - returns with an &EBUSY;.</para> - <para>Only links marked with the <constant>DYNAMIC</constant> link flag can - be enabled/disabled while streaming media data. Attempting to enable or - disable a streaming non-dynamic link will return an &EBUSY;.</para> - <para>If the specified link can't be found the driver returns with an - &EINVAL;.</para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The link properties can't be changed because the link is - currently busy. This can be caused, for instance, by an active media - stream (audio or video) on the link. The ioctl shouldn't be retried if - no other action is performed before to fix the problem.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &media-link-desc; references a non-existing link, or the - link is immutable and an attempt to modify its configuration was made. - </para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/nv12mt.gif b/Documentation/DocBook/v4l/nv12mt.gif Binary files differdeleted file mode 100644 index ef2d4cf8367b..000000000000 --- a/Documentation/DocBook/v4l/nv12mt.gif +++ /dev/null diff --git a/Documentation/DocBook/v4l/nv12mt_example.gif b/Documentation/DocBook/v4l/nv12mt_example.gif Binary files differdeleted file mode 100644 index df81d68108ee..000000000000 --- a/Documentation/DocBook/v4l/nv12mt_example.gif +++ /dev/null diff --git a/Documentation/DocBook/v4l/pipeline.pdf b/Documentation/DocBook/v4l/pipeline.pdf Binary files differdeleted file mode 100644 index ee3e37f04b6a..000000000000 --- a/Documentation/DocBook/v4l/pipeline.pdf +++ /dev/null diff --git a/Documentation/DocBook/v4l/pipeline.png b/Documentation/DocBook/v4l/pipeline.png Binary files differdeleted file mode 100644 index f19b86c2c24d..000000000000 --- a/Documentation/DocBook/v4l/pipeline.png +++ /dev/null diff --git a/Documentation/DocBook/v4l/pixfmt-grey.xml b/Documentation/DocBook/v4l/pixfmt-grey.xml deleted file mode 100644 index 3b72bc6b2de7..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-grey.xml +++ /dev/null @@ -1,70 +0,0 @@ - <refentry id="V4L2-PIX-FMT-GREY"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_GREY ('GREY')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_GREY</constant></refname> - <refpurpose>Grey-scale image</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This is a grey-scale image. It is really a degenerate -Y'CbCr format which simply contains no Cb or Cr data.</para> - - <example> - <title><constant>V4L2_PIX_FMT_GREY</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 4:</entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 12:</entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-m420.xml b/Documentation/DocBook/v4l/pixfmt-m420.xml deleted file mode 100644 index ce4bc019e5c0..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-m420.xml +++ /dev/null @@ -1,147 +0,0 @@ - <refentry id="V4L2-PIX-FMT-M420"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_M420 ('M420')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_M420</constant></refname> - <refpurpose>Format with ½ horizontal and vertical chroma - resolution, also known as YUV 4:2:0. Hybrid plane line-interleaved - layout.</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>M420 is a YUV format with ½ horizontal and vertical chroma - subsampling (YUV 4:2:0). Pixels are organized as interleaved luma and - chroma planes. Two lines of luma data are followed by one line of chroma - data.</para> - <para>The luma plane has one byte per pixel. The chroma plane contains - interleaved CbCr pixels subsampled by ½ in the horizontal and - vertical directions. Each CbCr pair belongs to four pixels. For example, -Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to -Y'<subscript>00</subscript>, Y'<subscript>01</subscript>, -Y'<subscript>10</subscript>, Y'<subscript>11</subscript>.</para> - - <para>All line lengths are identical: if the Y lines include pad bytes - so do the CbCr lines.</para> - - <example> - <title><constant>V4L2_PIX_FMT_M420</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 4:</entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Cb<subscript>00</subscript></entry> - <entry>Cr<subscript>00</subscript></entry> - <entry>Cb<subscript>01</subscript></entry> - <entry>Cr<subscript>01</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 20:</entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>Cb<subscript>10</subscript></entry> - <entry>Cr<subscript>10</subscript></entry> - <entry>Cb<subscript>11</subscript></entry> - <entry>Cr<subscript>11</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="7" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-nv12.xml b/Documentation/DocBook/v4l/pixfmt-nv12.xml deleted file mode 100644 index 873f67035181..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-nv12.xml +++ /dev/null @@ -1,151 +0,0 @@ - <refentry> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_NV12 ('NV12'), V4L2_PIX_FMT_NV21 ('NV21')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname id="V4L2-PIX-FMT-NV12"><constant>V4L2_PIX_FMT_NV12</constant></refname> - <refname id="V4L2-PIX-FMT-NV21"><constant>V4L2_PIX_FMT_NV21</constant></refname> - <refpurpose>Formats with ½ horizontal and vertical -chroma resolution, also known as YUV 4:2:0. One luminance and one -chrominance plane with alternating chroma samples as opposed to -<constant>V4L2_PIX_FMT_YVU420</constant></refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>These are two-plane versions of the YUV 4:2:0 format. -The three components are separated into two sub-images or planes. The -Y plane is first. The Y plane has one byte per pixel. For -<constant>V4L2_PIX_FMT_NV12</constant>, a combined CbCr plane -immediately follows the Y plane in memory. The CbCr plane is the same -width, in bytes, as the Y plane (and of the image), but is half as -tall in pixels. Each CbCr pair belongs to four pixels. For example, -Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to -Y'<subscript>00</subscript>, Y'<subscript>01</subscript>, -Y'<subscript>10</subscript>, Y'<subscript>11</subscript>. -<constant>V4L2_PIX_FMT_NV21</constant> is the same except the Cb and -Cr bytes are swapped, the CrCb plane starts with a Cr byte.</para> - - <para>If the Y plane has pad bytes after each row, then the -CbCr plane has as many pad bytes after its rows.</para> - - <example> - <title><constant>V4L2_PIX_FMT_NV12</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 4:</entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 12:</entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Cb<subscript>00</subscript></entry> - <entry>Cr<subscript>00</subscript></entry> - <entry>Cb<subscript>01</subscript></entry> - <entry>Cr<subscript>01</subscript></entry> - </row> - <row> - <entry>start + 20:</entry> - <entry>Cb<subscript>10</subscript></entry> - <entry>Cr<subscript>10</subscript></entry> - <entry>Cb<subscript>11</subscript></entry> - <entry>Cr<subscript>11</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="7" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-nv12m.xml b/Documentation/DocBook/v4l/pixfmt-nv12m.xml deleted file mode 100644 index c9e166d9ded8..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-nv12m.xml +++ /dev/null @@ -1,154 +0,0 @@ - <refentry id="V4L2-PIX-FMT-NV12M"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_NV12M ('NV12M')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname> <constant>V4L2_PIX_FMT_NV12M</constant></refname> - <refpurpose>Variation of <constant>V4L2_PIX_FMT_NV12</constant> with planes - non contiguous in memory. </refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This is a multi-planar, two-plane version of the YUV 4:2:0 format. -The three components are separated into two sub-images or planes. -<constant>V4L2_PIX_FMT_NV12M</constant> differs from <constant>V4L2_PIX_FMT_NV12 -</constant> in that the two planes are non-contiguous in memory, i.e. the chroma -plane do not necessarily immediately follows the luma plane. -The luminance data occupies the first plane. The Y plane has one byte per pixel. -In the second plane there is a chrominance data with alternating chroma samples. -The CbCr plane is the same width, in bytes, as the Y plane (and of the image), -but is half as tall in pixels. Each CbCr pair belongs to four pixels. For example, -Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to -Y'<subscript>00</subscript>, Y'<subscript>01</subscript>, -Y'<subscript>10</subscript>, Y'<subscript>11</subscript>. </para> - - <para><constant>V4L2_PIX_FMT_NV12M</constant> is intended to be -used only in drivers and applications that support the multi-planar API, -described in <xref linkend="planar-apis"/>. </para> - - <para>If the Y plane has pad bytes after each row, then the -CbCr plane has as many pad bytes after its rows.</para> - - <example> - <title><constant>V4L2_PIX_FMT_NV12M</constant> 4 × 4 pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start0 + 0:</entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - </row> - <row> - <entry>start0 + 4:</entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - </row> - <row> - <entry>start0 + 8:</entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - </row> - <row> - <entry>start0 + 12:</entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - </row> - <row> - <entry></entry> - </row> - <row> - <entry>start1 + 0:</entry> - <entry>Cb<subscript>00</subscript></entry> - <entry>Cr<subscript>00</subscript></entry> - <entry>Cb<subscript>01</subscript></entry> - <entry>Cr<subscript>01</subscript></entry> - </row> - <row> - <entry>start1 + 4:</entry> - <entry>Cb<subscript>10</subscript></entry> - <entry>Cr<subscript>10</subscript></entry> - <entry>Cb<subscript>11</subscript></entry> - <entry>Cr<subscript>11</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="7" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-nv12mt.xml b/Documentation/DocBook/v4l/pixfmt-nv12mt.xml deleted file mode 100644 index 7a2855a526c1..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-nv12mt.xml +++ /dev/null @@ -1,74 +0,0 @@ - <refentry> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_NV12MT ('TM12')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname id="V4L2-PIX-FMT-NV12MT"><constant>V4L2_PIX_FMT_NV12MT -</constant></refname> - <refpurpose>Formats with ½ horizontal and vertical -chroma resolution. This format has two planes - one for luminance and one for -chrominance. Chroma samples are interleaved. The difference to -<constant>V4L2_PIX_FMT_NV12</constant> is the memory layout. Pixels are -grouped in macroblocks of 64x32 size. The order of macroblocks in memory is -also not standard. - </refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This is the two-plane versions of the YUV 4:2:0 format where data -is grouped into 64x32 macroblocks. The three components are separated into two -sub-images or planes. The Y plane has one byte per pixel and pixels are grouped -into 64x32 macroblocks. The CbCr plane has the same width, in bytes, as the Y -plane (and the image), but is half as tall in pixels. The chroma plane is also -grouped into 64x32 macroblocks.</para> - <para>Width of the buffer has to be aligned to the multiple of 128, and -height alignment is 32. Every four adjactent buffers - two horizontally and two -vertically are grouped together and are located in memory in Z or flipped Z -order. </para> - <para>Layout of macroblocks in memory is presented in the following -figure.</para> - <para><figure id="nv12mt"> - <title><constant>V4L2_PIX_FMT_NV12MT</constant> macroblock Z shape -memory layout</title> - <mediaobject> - <imageobject> - <imagedata fileref="nv12mt.gif" format="GIF" /> - </imageobject> - </mediaobject> - </figure> - The requirement that width is multiple of 128 is implemented because, -the Z shape cannot be cut in half horizontally. In case the vertical resolution -of macroblocks is odd then the last row of macroblocks is arranged in a linear -order. </para> - <para>In case of chroma the layout is identical. Cb and Cr samples are -interleaved. Height of the buffer is aligned to 32. - </para> - <example> - <title>Memory layout of macroblocks in <constant>V4L2_PIX_FMT_NV12 -</constant> format pixel image - extreme case</title> - <para> - <figure id="nv12mt_ex"> - <title>Example <constant>V4L2_PIX_FMT_NV12MT</constant> memory -layout of macroblocks</title> - <mediaobject> - <imageobject> - <imagedata fileref="nv12mt_example.gif" format="GIF" /> - </imageobject> - </mediaobject> - </figure> - Memory layout of macroblocks of <constant>V4L2_PIX_FMT_NV12MT -</constant> format in most extreme case. - </para> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-nv16.xml b/Documentation/DocBook/v4l/pixfmt-nv16.xml deleted file mode 100644 index 26094035fc04..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-nv16.xml +++ /dev/null @@ -1,174 +0,0 @@ - <refentry> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_NV16 ('NV16'), V4L2_PIX_FMT_NV61 ('NV61')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname id="V4L2-PIX-FMT-NV16"><constant>V4L2_PIX_FMT_NV16</constant></refname> - <refname id="V4L2-PIX-FMT-NV61"><constant>V4L2_PIX_FMT_NV61</constant></refname> - <refpurpose>Formats with ½ horizontal -chroma resolution, also known as YUV 4:2:2. One luminance and one -chrominance plane with alternating chroma samples as opposed to -<constant>V4L2_PIX_FMT_YVU420</constant></refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>These are two-plane versions of the YUV 4:2:2 format. -The three components are separated into two sub-images or planes. The -Y plane is first. The Y plane has one byte per pixel. For -<constant>V4L2_PIX_FMT_NV16</constant>, a combined CbCr plane -immediately follows the Y plane in memory. The CbCr plane is the same -width and height, in bytes, as the Y plane (and of the image). -Each CbCr pair belongs to two pixels. For example, -Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to -Y'<subscript>00</subscript>, Y'<subscript>01</subscript>. -<constant>V4L2_PIX_FMT_NV61</constant> is the same except the Cb and -Cr bytes are swapped, the CrCb plane starts with a Cr byte.</para> - - <para>If the Y plane has pad bytes after each row, then the -CbCr plane has as many pad bytes after its rows.</para> - - <example> - <title><constant>V4L2_PIX_FMT_NV16</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 4:</entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 12:</entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Cb<subscript>00</subscript></entry> - <entry>Cr<subscript>00</subscript></entry> - <entry>Cb<subscript>01</subscript></entry> - <entry>Cr<subscript>01</subscript></entry> - </row> - <row> - <entry>start + 20:</entry> - <entry>Cb<subscript>10</subscript></entry> - <entry>Cr<subscript>10</subscript></entry> - <entry>Cb<subscript>11</subscript></entry> - <entry>Cr<subscript>11</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>Cb<subscript>20</subscript></entry> - <entry>Cr<subscript>20</subscript></entry> - <entry>Cb<subscript>21</subscript></entry> - <entry>Cr<subscript>21</subscript></entry> - </row> - <row> - <entry>start + 28:</entry> - <entry>Cb<subscript>30</subscript></entry> - <entry>Cr<subscript>30</subscript></entry> - <entry>Cb<subscript>31</subscript></entry> - <entry>Cr<subscript>31</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="7" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - <row> - <entry></entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-packed-rgb.xml b/Documentation/DocBook/v4l/pixfmt-packed-rgb.xml deleted file mode 100644 index 4db272b8a0d3..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-packed-rgb.xml +++ /dev/null @@ -1,940 +0,0 @@ -<refentry id="packed-rgb"> - <refmeta> - <refentrytitle>Packed RGB formats</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname>Packed RGB formats</refname> - <refpurpose>Packed RGB formats</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>These formats are designed to match the pixel formats of -typical PC graphics frame buffers. They occupy 8, 16, 24 or 32 bits -per pixel. These are all packed-pixel formats, meaning all the data -for a pixel lie next to each other in memory.</para> - - <para>When one of these formats is used, drivers shall report the -colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para> - - <table pgwide="1" frame="none" id="rgb-formats"> - <title>Packed RGB Image Formats</title> - <tgroup cols="37" align="center"> - <colspec colname="id" align="left" /> - <colspec colname="fourcc" /> - <colspec colname="bit" /> - - <colspec colnum="4" colname="b07" align="center" /> - <colspec colnum="5" colname="b06" align="center" /> - <colspec colnum="6" colname="b05" align="center" /> - <colspec colnum="7" colname="b04" align="center" /> - <colspec colnum="8" colname="b03" align="center" /> - <colspec colnum="9" colname="b02" align="center" /> - <colspec colnum="10" colname="b01" align="center" /> - <colspec colnum="11" colname="b00" align="center" /> - - <colspec colnum="13" colname="b17" align="center" /> - <colspec colnum="14" colname="b16" align="center" /> - <colspec colnum="15" colname="b15" align="center" /> - <colspec colnum="16" colname="b14" align="center" /> - <colspec colnum="17" colname="b13" align="center" /> - <colspec colnum="18" colname="b12" align="center" /> - <colspec colnum="19" colname="b11" align="center" /> - <colspec colnum="20" colname="b10" align="center" /> - - <colspec colnum="22" colname="b27" align="center" /> - <colspec colnum="23" colname="b26" align="center" /> - <colspec colnum="24" colname="b25" align="center" /> - <colspec colnum="25" colname="b24" align="center" /> - <colspec colnum="26" colname="b23" align="center" /> - <colspec colnum="27" colname="b22" align="center" /> - <colspec colnum="28" colname="b21" align="center" /> - <colspec colnum="29" colname="b20" align="center" /> - - <colspec colnum="31" colname="b37" align="center" /> - <colspec colnum="32" colname="b36" align="center" /> - <colspec colnum="33" colname="b35" align="center" /> - <colspec colnum="34" colname="b34" align="center" /> - <colspec colnum="35" colname="b33" align="center" /> - <colspec colnum="36" colname="b32" align="center" /> - <colspec colnum="37" colname="b31" align="center" /> - <colspec colnum="38" colname="b30" align="center" /> - - <spanspec namest="b07" nameend="b00" spanname="b0" /> - <spanspec namest="b17" nameend="b10" spanname="b1" /> - <spanspec namest="b27" nameend="b20" spanname="b2" /> - <spanspec namest="b37" nameend="b30" spanname="b3" /> - <thead> - <row> - <entry>Identifier</entry> - <entry>Code</entry> - <entry> </entry> - <entry spanname="b0">Byte 0 in memory</entry> - <entry spanname="b1">Byte 1</entry> - <entry spanname="b2">Byte 2</entry> - <entry spanname="b3">Byte 3</entry> - </row> - <row> - <entry> </entry> - <entry> </entry> - <entry>Bit</entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - <entry> </entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - <entry> </entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - <entry> </entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - </row> - </thead> - <tbody valign="top"> - <row id="V4L2-PIX-FMT-RGB332"> - <entry><constant>V4L2_PIX_FMT_RGB332</constant></entry> - <entry>'RGB1'</entry> - <entry></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row id="V4L2-PIX-FMT-RGB444"> - <entry><constant>V4L2_PIX_FMT_RGB444</constant></entry> - <entry>'R444'</entry> - <entry></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry></entry> - <entry>a<subscript>3</subscript></entry> - <entry>a<subscript>2</subscript></entry> - <entry>a<subscript>1</subscript></entry> - <entry>a<subscript>0</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row id="V4L2-PIX-FMT-RGB555"> - <entry><constant>V4L2_PIX_FMT_RGB555</constant></entry> - <entry>'RGBO'</entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry></entry> - <entry>a</entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - </row> - <row id="V4L2-PIX-FMT-RGB565"> - <entry><constant>V4L2_PIX_FMT_RGB565</constant></entry> - <entry>'RGBP'</entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - </row> - <row id="V4L2-PIX-FMT-RGB555X"> - <entry><constant>V4L2_PIX_FMT_RGB555X</constant></entry> - <entry>'RGBQ'</entry> - <entry></entry> - <entry>a</entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row id="V4L2-PIX-FMT-RGB565X"> - <entry><constant>V4L2_PIX_FMT_RGB565X</constant></entry> - <entry>'RGBR'</entry> - <entry></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row id="V4L2-PIX-FMT-BGR666"> - <entry><constant>V4L2_PIX_FMT_BGR666</constant></entry> - <entry>'BGRH'</entry> - <entry></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - </row> - <row id="V4L2-PIX-FMT-BGR24"> - <entry><constant>V4L2_PIX_FMT_BGR24</constant></entry> - <entry>'BGR3'</entry> - <entry></entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry></entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry></entry> - <entry>r<subscript>7</subscript></entry> - <entry>r<subscript>6</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row id="V4L2-PIX-FMT-RGB24"> - <entry><constant>V4L2_PIX_FMT_RGB24</constant></entry> - <entry>'RGB3'</entry> - <entry></entry> - <entry>r<subscript>7</subscript></entry> - <entry>r<subscript>6</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry></entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry></entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row id="V4L2-PIX-FMT-BGR32"> - <entry><constant>V4L2_PIX_FMT_BGR32</constant></entry> - <entry>'BGR4'</entry> - <entry></entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry></entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry></entry> - <entry>r<subscript>7</subscript></entry> - <entry>r<subscript>6</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry></entry> - <entry>a<subscript>7</subscript></entry> - <entry>a<subscript>6</subscript></entry> - <entry>a<subscript>5</subscript></entry> - <entry>a<subscript>4</subscript></entry> - <entry>a<subscript>3</subscript></entry> - <entry>a<subscript>2</subscript></entry> - <entry>a<subscript>1</subscript></entry> - <entry>a<subscript>0</subscript></entry> - </row> - <row id="V4L2-PIX-FMT-RGB32"> - <entry><constant>V4L2_PIX_FMT_RGB32</constant></entry> - <entry>'RGB4'</entry> - <entry></entry> - <entry>r<subscript>7</subscript></entry> - <entry>r<subscript>6</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry></entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry></entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry></entry> - <entry>a<subscript>7</subscript></entry> - <entry>a<subscript>6</subscript></entry> - <entry>a<subscript>5</subscript></entry> - <entry>a<subscript>4</subscript></entry> - <entry>a<subscript>3</subscript></entry> - <entry>a<subscript>2</subscript></entry> - <entry>a<subscript>1</subscript></entry> - <entry>a<subscript>0</subscript></entry> - </row> - </tbody> - </tgroup> - </table> - - <para>Bit 7 is the most significant bit. The value of a = alpha -bits is undefined when reading from the driver, ignored when writing -to the driver, except when alpha blending has been negotiated for a -<link linkend="overlay">Video Overlay</link> or <link -linkend="osd">Video Output Overlay</link>.</para> - - <example> - <title><constant>V4L2_PIX_FMT_BGR24</constant> 4 × 4 pixel -image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="13" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>B<subscript>00</subscript></entry> - <entry>G<subscript>00</subscript></entry> - <entry>R<subscript>00</subscript></entry> - <entry>B<subscript>01</subscript></entry> - <entry>G<subscript>01</subscript></entry> - <entry>R<subscript>01</subscript></entry> - <entry>B<subscript>02</subscript></entry> - <entry>G<subscript>02</subscript></entry> - <entry>R<subscript>02</subscript></entry> - <entry>B<subscript>03</subscript></entry> - <entry>G<subscript>03</subscript></entry> - <entry>R<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 12:</entry> - <entry>B<subscript>10</subscript></entry> - <entry>G<subscript>10</subscript></entry> - <entry>R<subscript>10</subscript></entry> - <entry>B<subscript>11</subscript></entry> - <entry>G<subscript>11</subscript></entry> - <entry>R<subscript>11</subscript></entry> - <entry>B<subscript>12</subscript></entry> - <entry>G<subscript>12</subscript></entry> - <entry>R<subscript>12</subscript></entry> - <entry>B<subscript>13</subscript></entry> - <entry>G<subscript>13</subscript></entry> - <entry>R<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>B<subscript>20</subscript></entry> - <entry>G<subscript>20</subscript></entry> - <entry>R<subscript>20</subscript></entry> - <entry>B<subscript>21</subscript></entry> - <entry>G<subscript>21</subscript></entry> - <entry>R<subscript>21</subscript></entry> - <entry>B<subscript>22</subscript></entry> - <entry>G<subscript>22</subscript></entry> - <entry>R<subscript>22</subscript></entry> - <entry>B<subscript>23</subscript></entry> - <entry>G<subscript>23</subscript></entry> - <entry>R<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 36:</entry> - <entry>B<subscript>30</subscript></entry> - <entry>G<subscript>30</subscript></entry> - <entry>R<subscript>30</subscript></entry> - <entry>B<subscript>31</subscript></entry> - <entry>G<subscript>31</subscript></entry> - <entry>R<subscript>31</subscript></entry> - <entry>B<subscript>32</subscript></entry> - <entry>G<subscript>32</subscript></entry> - <entry>R<subscript>32</subscript></entry> - <entry>B<subscript>33</subscript></entry> - <entry>G<subscript>33</subscript></entry> - <entry>R<subscript>33</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - - <important> - <para>Drivers may interpret these formats differently.</para> - </important> - - <para>Some RGB formats above are uncommon and were probably -defined in error. Drivers may interpret them as in <xref - linkend="rgb-formats-corrected" />.</para> - - <table pgwide="1" frame="none" id="rgb-formats-corrected"> - <title>Packed RGB Image Formats (corrected)</title> - <tgroup cols="37" align="center"> - <colspec colname="id" align="left" /> - <colspec colname="fourcc" /> - <colspec colname="bit" /> - - <colspec colnum="4" colname="b07" align="center" /> - <colspec colnum="5" colname="b06" align="center" /> - <colspec colnum="6" colname="b05" align="center" /> - <colspec colnum="7" colname="b04" align="center" /> - <colspec colnum="8" colname="b03" align="center" /> - <colspec colnum="9" colname="b02" align="center" /> - <colspec colnum="10" colname="b01" align="center" /> - <colspec colnum="11" colname="b00" align="center" /> - - <colspec colnum="13" colname="b17" align="center" /> - <colspec colnum="14" colname="b16" align="center" /> - <colspec colnum="15" colname="b15" align="center" /> - <colspec colnum="16" colname="b14" align="center" /> - <colspec colnum="17" colname="b13" align="center" /> - <colspec colnum="18" colname="b12" align="center" /> - <colspec colnum="19" colname="b11" align="center" /> - <colspec colnum="20" colname="b10" align="center" /> - - <colspec colnum="22" colname="b27" align="center" /> - <colspec colnum="23" colname="b26" align="center" /> - <colspec colnum="24" colname="b25" align="center" /> - <colspec colnum="25" colname="b24" align="center" /> - <colspec colnum="26" colname="b23" align="center" /> - <colspec colnum="27" colname="b22" align="center" /> - <colspec colnum="28" colname="b21" align="center" /> - <colspec colnum="29" colname="b20" align="center" /> - - <colspec colnum="31" colname="b37" align="center" /> - <colspec colnum="32" colname="b36" align="center" /> - <colspec colnum="33" colname="b35" align="center" /> - <colspec colnum="34" colname="b34" align="center" /> - <colspec colnum="35" colname="b33" align="center" /> - <colspec colnum="36" colname="b32" align="center" /> - <colspec colnum="37" colname="b31" align="center" /> - <colspec colnum="38" colname="b30" align="center" /> - - <spanspec namest="b07" nameend="b00" spanname="b0" /> - <spanspec namest="b17" nameend="b10" spanname="b1" /> - <spanspec namest="b27" nameend="b20" spanname="b2" /> - <spanspec namest="b37" nameend="b30" spanname="b3" /> - <thead> - <row> - <entry>Identifier</entry> - <entry>Code</entry> - <entry> </entry> - <entry spanname="b0">Byte 0 in memory</entry> - <entry spanname="b1">Byte 1</entry> - <entry spanname="b2">Byte 2</entry> - <entry spanname="b3">Byte 3</entry> - </row> - <row> - <entry> </entry> - <entry> </entry> - <entry>Bit</entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - <entry> </entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - <entry> </entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - <entry> </entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - </row> - </thead> - <tbody valign="top"> - <row><!-- id="V4L2-PIX-FMT-RGB332" --> - <entry><constant>V4L2_PIX_FMT_RGB332</constant></entry> - <entry>'RGB1'</entry> - <entry></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row><!-- id="V4L2-PIX-FMT-RGB444" --> - <entry><constant>V4L2_PIX_FMT_RGB444</constant></entry> - <entry>'R444'</entry> - <entry></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry></entry> - <entry>a<subscript>3</subscript></entry> - <entry>a<subscript>2</subscript></entry> - <entry>a<subscript>1</subscript></entry> - <entry>a<subscript>0</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row><!-- id="V4L2-PIX-FMT-RGB555" --> - <entry><constant>V4L2_PIX_FMT_RGB555</constant></entry> - <entry>'RGBO'</entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry></entry> - <entry>a</entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - </row> - <row><!-- id="V4L2-PIX-FMT-RGB565" --> - <entry><constant>V4L2_PIX_FMT_RGB565</constant></entry> - <entry>'RGBP'</entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - </row> - <row><!-- id="V4L2-PIX-FMT-RGB555X" --> - <entry><constant>V4L2_PIX_FMT_RGB555X</constant></entry> - <entry>'RGBQ'</entry> - <entry></entry> - <entry>a</entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row><!-- id="V4L2-PIX-FMT-RGB565X" --> - <entry><constant>V4L2_PIX_FMT_RGB565X</constant></entry> - <entry>'RGBR'</entry> - <entry></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row><!-- id="V4L2-PIX-FMT-BGR666" --> - <entry><constant>V4L2_PIX_FMT_BGR666</constant></entry> - <entry>'BGRH'</entry> - <entry></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - </row> - <row><!-- id="V4L2-PIX-FMT-BGR24" --> - <entry><constant>V4L2_PIX_FMT_BGR24</constant></entry> - <entry>'BGR3'</entry> - <entry></entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry></entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry></entry> - <entry>r<subscript>7</subscript></entry> - <entry>r<subscript>6</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row><!-- id="V4L2-PIX-FMT-RGB24" --> - <entry><constant>V4L2_PIX_FMT_RGB24</constant></entry> - <entry>'RGB3'</entry> - <entry></entry> - <entry>r<subscript>7</subscript></entry> - <entry>r<subscript>6</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry></entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry></entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row><!-- id="V4L2-PIX-FMT-BGR32" --> - <entry><constant>V4L2_PIX_FMT_BGR32</constant></entry> - <entry>'BGR4'</entry> - <entry></entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry></entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry></entry> - <entry>r<subscript>7</subscript></entry> - <entry>r<subscript>6</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry></entry> - <entry>a<subscript>7</subscript></entry> - <entry>a<subscript>6</subscript></entry> - <entry>a<subscript>5</subscript></entry> - <entry>a<subscript>4</subscript></entry> - <entry>a<subscript>3</subscript></entry> - <entry>a<subscript>2</subscript></entry> - <entry>a<subscript>1</subscript></entry> - <entry>a<subscript>0</subscript></entry> - </row> - <row><!-- id="V4L2-PIX-FMT-RGB32" --> - <entry><constant>V4L2_PIX_FMT_RGB32</constant></entry> - <entry>'RGB4'</entry> - <entry></entry> - <entry>a<subscript>7</subscript></entry> - <entry>a<subscript>6</subscript></entry> - <entry>a<subscript>5</subscript></entry> - <entry>a<subscript>4</subscript></entry> - <entry>a<subscript>3</subscript></entry> - <entry>a<subscript>2</subscript></entry> - <entry>a<subscript>1</subscript></entry> - <entry>a<subscript>0</subscript></entry> - <entry></entry> - <entry>r<subscript>7</subscript></entry> - <entry>r<subscript>6</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry></entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry></entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - </tbody> - </tgroup> - </table> - - <para>A test utility to determine which RGB formats a driver -actually supports is available from the LinuxTV v4l-dvb repository. -See &v4l-dvb; for access instructions.</para> - - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-packed-yuv.xml b/Documentation/DocBook/v4l/pixfmt-packed-yuv.xml deleted file mode 100644 index 3cab5d0ca75d..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-packed-yuv.xml +++ /dev/null @@ -1,244 +0,0 @@ -<refentry id="packed-yuv"> - <refmeta> - <refentrytitle>Packed YUV formats</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname>Packed YUV formats</refname> - <refpurpose>Packed YUV formats</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>Similar to the packed RGB formats these formats store -the Y, Cb and Cr component of each pixel in one 16 or 32 bit -word.</para> - - <table pgwide="1" frame="none"> - <title>Packed YUV Image Formats</title> - <tgroup cols="37" align="center"> - <colspec colname="id" align="left" /> - <colspec colname="fourcc" /> - <colspec colname="bit" /> - - <colspec colnum="4" colname="b07" align="center" /> - <colspec colnum="5" colname="b06" align="center" /> - <colspec colnum="6" colname="b05" align="center" /> - <colspec colnum="7" colname="b04" align="center" /> - <colspec colnum="8" colname="b03" align="center" /> - <colspec colnum="9" colname="b02" align="center" /> - <colspec colnum="10" colname="b01" align="center" /> - <colspec colnum="11" colname="b00" align="center" /> - - <colspec colnum="13" colname="b17" align="center" /> - <colspec colnum="14" colname="b16" align="center" /> - <colspec colnum="15" colname="b15" align="center" /> - <colspec colnum="16" colname="b14" align="center" /> - <colspec colnum="17" colname="b13" align="center" /> - <colspec colnum="18" colname="b12" align="center" /> - <colspec colnum="19" colname="b11" align="center" /> - <colspec colnum="20" colname="b10" align="center" /> - - <colspec colnum="22" colname="b27" align="center" /> - <colspec colnum="23" colname="b26" align="center" /> - <colspec colnum="24" colname="b25" align="center" /> - <colspec colnum="25" colname="b24" align="center" /> - <colspec colnum="26" colname="b23" align="center" /> - <colspec colnum="27" colname="b22" align="center" /> - <colspec colnum="28" colname="b21" align="center" /> - <colspec colnum="29" colname="b20" align="center" /> - - <colspec colnum="31" colname="b37" align="center" /> - <colspec colnum="32" colname="b36" align="center" /> - <colspec colnum="33" colname="b35" align="center" /> - <colspec colnum="34" colname="b34" align="center" /> - <colspec colnum="35" colname="b33" align="center" /> - <colspec colnum="36" colname="b32" align="center" /> - <colspec colnum="37" colname="b31" align="center" /> - <colspec colnum="38" colname="b30" align="center" /> - - <spanspec namest="b07" nameend="b00" spanname="b0" /> - <spanspec namest="b17" nameend="b10" spanname="b1" /> - <spanspec namest="b27" nameend="b20" spanname="b2" /> - <spanspec namest="b37" nameend="b30" spanname="b3" /> - <thead> - <row> - <entry>Identifier</entry> - <entry>Code</entry> - <entry> </entry> - <entry spanname="b0">Byte 0 in memory</entry> - <entry spanname="b1">Byte 1</entry> - <entry spanname="b2">Byte 2</entry> - <entry spanname="b3">Byte 3</entry> - </row> - <row> - <entry> </entry> - <entry> </entry> - <entry>Bit</entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - <entry> </entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - <entry> </entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - <entry> </entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - </row> - </thead> - <tbody valign="top"> - <row id="V4L2-PIX-FMT-YUV444"> - <entry><constant>V4L2_PIX_FMT_YUV444</constant></entry> - <entry>'Y444'</entry> - <entry></entry> - <entry>Cb<subscript>3</subscript></entry> - <entry>Cb<subscript>2</subscript></entry> - <entry>Cb<subscript>1</subscript></entry> - <entry>Cb<subscript>0</subscript></entry> - <entry>Cr<subscript>3</subscript></entry> - <entry>Cr<subscript>2</subscript></entry> - <entry>Cr<subscript>1</subscript></entry> - <entry>Cr<subscript>0</subscript></entry> - <entry></entry> - <entry>a<subscript>3</subscript></entry> - <entry>a<subscript>2</subscript></entry> - <entry>a<subscript>1</subscript></entry> - <entry>a<subscript>0</subscript></entry> - <entry>Y'<subscript>3</subscript></entry> - <entry>Y'<subscript>2</subscript></entry> - <entry>Y'<subscript>1</subscript></entry> - <entry>Y'<subscript>0</subscript></entry> - </row> - - <row id="V4L2-PIX-FMT-YUV555"> - <entry><constant>V4L2_PIX_FMT_YUV555</constant></entry> - <entry>'YUVO'</entry> - <entry></entry> - <entry>Cb<subscript>2</subscript></entry> - <entry>Cb<subscript>1</subscript></entry> - <entry>Cb<subscript>0</subscript></entry> - <entry>Cr<subscript>4</subscript></entry> - <entry>Cr<subscript>3</subscript></entry> - <entry>Cr<subscript>2</subscript></entry> - <entry>Cr<subscript>1</subscript></entry> - <entry>Cr<subscript>0</subscript></entry> - <entry></entry> - <entry>a</entry> - <entry>Y'<subscript>4</subscript></entry> - <entry>Y'<subscript>3</subscript></entry> - <entry>Y'<subscript>2</subscript></entry> - <entry>Y'<subscript>1</subscript></entry> - <entry>Y'<subscript>0</subscript></entry> - <entry>Cb<subscript>4</subscript></entry> - <entry>Cb<subscript>3</subscript></entry> - </row> - - <row id="V4L2-PIX-FMT-YUV565"> - <entry><constant>V4L2_PIX_FMT_YUV565</constant></entry> - <entry>'YUVP'</entry> - <entry></entry> - <entry>Cb<subscript>2</subscript></entry> - <entry>Cb<subscript>1</subscript></entry> - <entry>Cb<subscript>0</subscript></entry> - <entry>Cr<subscript>4</subscript></entry> - <entry>Cr<subscript>3</subscript></entry> - <entry>Cr<subscript>2</subscript></entry> - <entry>Cr<subscript>1</subscript></entry> - <entry>Cr<subscript>0</subscript></entry> - <entry></entry> - <entry>Y'<subscript>4</subscript></entry> - <entry>Y'<subscript>3</subscript></entry> - <entry>Y'<subscript>2</subscript></entry> - <entry>Y'<subscript>1</subscript></entry> - <entry>Y'<subscript>0</subscript></entry> - <entry>Cb<subscript>5</subscript></entry> - <entry>Cb<subscript>4</subscript></entry> - <entry>Cb<subscript>3</subscript></entry> - </row> - - <row id="V4L2-PIX-FMT-YUV32"> - <entry><constant>V4L2_PIX_FMT_YUV32</constant></entry> - <entry>'YUV4'</entry> - <entry></entry> - <entry>a<subscript>7</subscript></entry> - <entry>a<subscript>6</subscript></entry> - <entry>a<subscript>5</subscript></entry> - <entry>a<subscript>4</subscript></entry> - <entry>a<subscript>3</subscript></entry> - <entry>a<subscript>2</subscript></entry> - <entry>a<subscript>1</subscript></entry> - <entry>a<subscript>0</subscript></entry> - <entry></entry> - <entry>Y'<subscript>7</subscript></entry> - <entry>Y'<subscript>6</subscript></entry> - <entry>Y'<subscript>5</subscript></entry> - <entry>Y'<subscript>4</subscript></entry> - <entry>Y'<subscript>3</subscript></entry> - <entry>Y'<subscript>2</subscript></entry> - <entry>Y'<subscript>1</subscript></entry> - <entry>Y'<subscript>0</subscript></entry> - <entry></entry> - <entry>Cb<subscript>7</subscript></entry> - <entry>Cb<subscript>6</subscript></entry> - <entry>Cb<subscript>5</subscript></entry> - <entry>Cb<subscript>4</subscript></entry> - <entry>Cb<subscript>3</subscript></entry> - <entry>Cb<subscript>2</subscript></entry> - <entry>Cb<subscript>1</subscript></entry> - <entry>Cb<subscript>0</subscript></entry> - <entry></entry> - <entry>Cr<subscript>7</subscript></entry> - <entry>Cr<subscript>6</subscript></entry> - <entry>Cr<subscript>5</subscript></entry> - <entry>Cr<subscript>4</subscript></entry> - <entry>Cr<subscript>3</subscript></entry> - <entry>Cr<subscript>2</subscript></entry> - <entry>Cr<subscript>1</subscript></entry> - <entry>Cr<subscript>0</subscript></entry> - </row> - </tbody> - </tgroup> - </table> - - <para>Bit 7 is the most significant bit. The value of a = alpha -bits is undefined when reading from the driver, ignored when writing -to the driver, except when alpha blending has been negotiated for a -<link linkend="overlay">Video Overlay</link> or <link -linkend="osd">Video Output Overlay</link>.</para> - - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-sbggr16.xml b/Documentation/DocBook/v4l/pixfmt-sbggr16.xml deleted file mode 100644 index 519a9efbac10..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-sbggr16.xml +++ /dev/null @@ -1,91 +0,0 @@ -<refentry id="V4L2-PIX-FMT-SBGGR16"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_SBGGR16 ('BYR2')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_SBGGR16</constant></refname> - <refpurpose>Bayer RGB format</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This format is similar to <link -linkend="V4L2-PIX-FMT-SBGGR8"> -<constant>V4L2_PIX_FMT_SBGGR8</constant></link>, except each pixel has -a depth of 16 bits. The least significant byte is stored at lower -memory addresses (little-endian). Note the actual sampling precision -may be lower than 16 bits, for example 10 bits per pixel with values -in range 0 to 1023.</para> - - <example> - <title><constant>V4L2_PIX_FMT_SBGGR16</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>B<subscript>00low</subscript></entry> - <entry>B<subscript>00high</subscript></entry> - <entry>G<subscript>01low</subscript></entry> - <entry>G<subscript>01high</subscript></entry> - <entry>B<subscript>02low</subscript></entry> - <entry>B<subscript>02high</subscript></entry> - <entry>G<subscript>03low</subscript></entry> - <entry>G<subscript>03high</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>G<subscript>10low</subscript></entry> - <entry>G<subscript>10high</subscript></entry> - <entry>R<subscript>11low</subscript></entry> - <entry>R<subscript>11high</subscript></entry> - <entry>G<subscript>12low</subscript></entry> - <entry>G<subscript>12high</subscript></entry> - <entry>R<subscript>13low</subscript></entry> - <entry>R<subscript>13high</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>B<subscript>20low</subscript></entry> - <entry>B<subscript>20high</subscript></entry> - <entry>G<subscript>21low</subscript></entry> - <entry>G<subscript>21high</subscript></entry> - <entry>B<subscript>22low</subscript></entry> - <entry>B<subscript>22high</subscript></entry> - <entry>G<subscript>23low</subscript></entry> - <entry>G<subscript>23high</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>G<subscript>30low</subscript></entry> - <entry>G<subscript>30high</subscript></entry> - <entry>R<subscript>31low</subscript></entry> - <entry>R<subscript>31high</subscript></entry> - <entry>G<subscript>32low</subscript></entry> - <entry>G<subscript>32high</subscript></entry> - <entry>R<subscript>33low</subscript></entry> - <entry>R<subscript>33high</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> -</refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-sbggr8.xml b/Documentation/DocBook/v4l/pixfmt-sbggr8.xml deleted file mode 100644 index 5fe84ecc2ebe..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-sbggr8.xml +++ /dev/null @@ -1,75 +0,0 @@ - <refentry id="V4L2-PIX-FMT-SBGGR8"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_SBGGR8 ('BA81')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_SBGGR8</constant></refname> - <refpurpose>Bayer RGB format</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This is commonly the native format of digital cameras, -reflecting the arrangement of sensors on the CCD device. Only one red, -green or blue value is given for each pixel. Missing components must -be interpolated from neighbouring pixels. From left to right the first -row consists of a blue and green value, the second row of a green and -red value. This scheme repeats to the right and down for every two -columns and rows.</para> - - <example> - <title><constant>V4L2_PIX_FMT_SBGGR8</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>B<subscript>00</subscript></entry> - <entry>G<subscript>01</subscript></entry> - <entry>B<subscript>02</subscript></entry> - <entry>G<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 4:</entry> - <entry>G<subscript>10</subscript></entry> - <entry>R<subscript>11</subscript></entry> - <entry>G<subscript>12</subscript></entry> - <entry>R<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>B<subscript>20</subscript></entry> - <entry>G<subscript>21</subscript></entry> - <entry>B<subscript>22</subscript></entry> - <entry>G<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 12:</entry> - <entry>G<subscript>30</subscript></entry> - <entry>R<subscript>31</subscript></entry> - <entry>G<subscript>32</subscript></entry> - <entry>R<subscript>33</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-sgbrg8.xml b/Documentation/DocBook/v4l/pixfmt-sgbrg8.xml deleted file mode 100644 index d67a472b0880..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-sgbrg8.xml +++ /dev/null @@ -1,75 +0,0 @@ - <refentry id="V4L2-PIX-FMT-SGBRG8"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_SGBRG8 ('GBRG')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_SGBRG8</constant></refname> - <refpurpose>Bayer RGB format</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This is commonly the native format of digital cameras, -reflecting the arrangement of sensors on the CCD device. Only one red, -green or blue value is given for each pixel. Missing components must -be interpolated from neighbouring pixels. From left to right the first -row consists of a green and blue value, the second row of a red and -green value. This scheme repeats to the right and down for every two -columns and rows.</para> - - <example> - <title><constant>V4L2_PIX_FMT_SGBRG8</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>G<subscript>00</subscript></entry> - <entry>B<subscript>01</subscript></entry> - <entry>G<subscript>02</subscript></entry> - <entry>B<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 4:</entry> - <entry>R<subscript>10</subscript></entry> - <entry>G<subscript>11</subscript></entry> - <entry>R<subscript>12</subscript></entry> - <entry>G<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>G<subscript>20</subscript></entry> - <entry>B<subscript>21</subscript></entry> - <entry>G<subscript>22</subscript></entry> - <entry>B<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 12:</entry> - <entry>R<subscript>30</subscript></entry> - <entry>G<subscript>31</subscript></entry> - <entry>R<subscript>32</subscript></entry> - <entry>G<subscript>33</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-sgrbg8.xml b/Documentation/DocBook/v4l/pixfmt-sgrbg8.xml deleted file mode 100644 index 0cdf13b8ac1c..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-sgrbg8.xml +++ /dev/null @@ -1,75 +0,0 @@ - <refentry id="V4L2-PIX-FMT-SGRBG8"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_SGRBG8 ('GRBG')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_SGRBG8</constant></refname> - <refpurpose>Bayer RGB format</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This is commonly the native format of digital cameras, -reflecting the arrangement of sensors on the CCD device. Only one red, -green or blue value is given for each pixel. Missing components must -be interpolated from neighbouring pixels. From left to right the first -row consists of a green and blue value, the second row of a red and -green value. This scheme repeats to the right and down for every two -columns and rows.</para> - - <example> - <title><constant>V4L2_PIX_FMT_SGRBG8</constant> 4 × -4 pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>G<subscript>00</subscript></entry> - <entry>R<subscript>01</subscript></entry> - <entry>G<subscript>02</subscript></entry> - <entry>R<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 4:</entry> - <entry>R<subscript>10</subscript></entry> - <entry>B<subscript>11</subscript></entry> - <entry>R<subscript>12</subscript></entry> - <entry>B<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>G<subscript>20</subscript></entry> - <entry>R<subscript>21</subscript></entry> - <entry>G<subscript>22</subscript></entry> - <entry>R<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 12:</entry> - <entry>R<subscript>30</subscript></entry> - <entry>B<subscript>31</subscript></entry> - <entry>R<subscript>32</subscript></entry> - <entry>B<subscript>33</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-srggb10.xml b/Documentation/DocBook/v4l/pixfmt-srggb10.xml deleted file mode 100644 index 7b274092e60c..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-srggb10.xml +++ /dev/null @@ -1,90 +0,0 @@ - <refentry> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_SRGGB10 ('RG10'), - V4L2_PIX_FMT_SGRBG10 ('BA10'), - V4L2_PIX_FMT_SGBRG10 ('GB10'), - V4L2_PIX_FMT_SBGGR10 ('BG10'), - </refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname id="V4L2-PIX-FMT-SRGGB10"><constant>V4L2_PIX_FMT_SRGGB10</constant></refname> - <refname id="V4L2-PIX-FMT-SGRBG10"><constant>V4L2_PIX_FMT_SGRBG10</constant></refname> - <refname id="V4L2-PIX-FMT-SGBRG10"><constant>V4L2_PIX_FMT_SGBRG10</constant></refname> - <refname id="V4L2-PIX-FMT-SBGGR10"><constant>V4L2_PIX_FMT_SBGGR10</constant></refname> - <refpurpose>10-bit Bayer formats expanded to 16 bits</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>The following four pixel formats are raw sRGB / Bayer formats with -10 bits per colour. Each colour component is stored in a 16-bit word, with 6 -unused high bits filled with zeros. Each n-pixel row contains n/2 green samples -and n/2 blue or red samples, with alternating red and blue rows. Bytes are -stored in memory in little endian order. They are conventionally described -as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of one of these -formats</para> - - <example> - <title><constant>V4L2_PIX_FMT_SBGGR10</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte, high 6 bits in high bytes are 0. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>B<subscript>00low</subscript></entry> - <entry>B<subscript>00high</subscript></entry> - <entry>G<subscript>01low</subscript></entry> - <entry>G<subscript>01high</subscript></entry> - <entry>B<subscript>02low</subscript></entry> - <entry>B<subscript>02high</subscript></entry> - <entry>G<subscript>03low</subscript></entry> - <entry>G<subscript>03high</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>G<subscript>10low</subscript></entry> - <entry>G<subscript>10high</subscript></entry> - <entry>R<subscript>11low</subscript></entry> - <entry>R<subscript>11high</subscript></entry> - <entry>G<subscript>12low</subscript></entry> - <entry>G<subscript>12high</subscript></entry> - <entry>R<subscript>13low</subscript></entry> - <entry>R<subscript>13high</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>B<subscript>20low</subscript></entry> - <entry>B<subscript>20high</subscript></entry> - <entry>G<subscript>21low</subscript></entry> - <entry>G<subscript>21high</subscript></entry> - <entry>B<subscript>22low</subscript></entry> - <entry>B<subscript>22high</subscript></entry> - <entry>G<subscript>23low</subscript></entry> - <entry>G<subscript>23high</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>G<subscript>30low</subscript></entry> - <entry>G<subscript>30high</subscript></entry> - <entry>R<subscript>31low</subscript></entry> - <entry>R<subscript>31high</subscript></entry> - <entry>G<subscript>32low</subscript></entry> - <entry>G<subscript>32high</subscript></entry> - <entry>R<subscript>33low</subscript></entry> - <entry>R<subscript>33high</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/pixfmt-srggb12.xml b/Documentation/DocBook/v4l/pixfmt-srggb12.xml deleted file mode 100644 index 9ba4fb690bc0..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-srggb12.xml +++ /dev/null @@ -1,90 +0,0 @@ - <refentry> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_SRGGB12 ('RG12'), - V4L2_PIX_FMT_SGRBG12 ('BA12'), - V4L2_PIX_FMT_SGBRG12 ('GB12'), - V4L2_PIX_FMT_SBGGR12 ('BG12'), - </refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname id="V4L2-PIX-FMT-SRGGB12"><constant>V4L2_PIX_FMT_SRGGB12</constant></refname> - <refname id="V4L2-PIX-FMT-SGRBG12"><constant>V4L2_PIX_FMT_SGRBG12</constant></refname> - <refname id="V4L2-PIX-FMT-SGBRG12"><constant>V4L2_PIX_FMT_SGBRG12</constant></refname> - <refname id="V4L2-PIX-FMT-SBGGR12"><constant>V4L2_PIX_FMT_SBGGR12</constant></refname> - <refpurpose>12-bit Bayer formats expanded to 16 bits</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>The following four pixel formats are raw sRGB / Bayer formats with -12 bits per colour. Each colour component is stored in a 16-bit word, with 6 -unused high bits filled with zeros. Each n-pixel row contains n/2 green samples -and n/2 blue or red samples, with alternating red and blue rows. Bytes are -stored in memory in little endian order. They are conventionally described -as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of one of these -formats</para> - - <example> - <title><constant>V4L2_PIX_FMT_SBGGR12</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte, high 6 bits in high bytes are 0. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>B<subscript>00low</subscript></entry> - <entry>B<subscript>00high</subscript></entry> - <entry>G<subscript>01low</subscript></entry> - <entry>G<subscript>01high</subscript></entry> - <entry>B<subscript>02low</subscript></entry> - <entry>B<subscript>02high</subscript></entry> - <entry>G<subscript>03low</subscript></entry> - <entry>G<subscript>03high</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>G<subscript>10low</subscript></entry> - <entry>G<subscript>10high</subscript></entry> - <entry>R<subscript>11low</subscript></entry> - <entry>R<subscript>11high</subscript></entry> - <entry>G<subscript>12low</subscript></entry> - <entry>G<subscript>12high</subscript></entry> - <entry>R<subscript>13low</subscript></entry> - <entry>R<subscript>13high</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>B<subscript>20low</subscript></entry> - <entry>B<subscript>20high</subscript></entry> - <entry>G<subscript>21low</subscript></entry> - <entry>G<subscript>21high</subscript></entry> - <entry>B<subscript>22low</subscript></entry> - <entry>B<subscript>22high</subscript></entry> - <entry>G<subscript>23low</subscript></entry> - <entry>G<subscript>23high</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>G<subscript>30low</subscript></entry> - <entry>G<subscript>30high</subscript></entry> - <entry>R<subscript>31low</subscript></entry> - <entry>R<subscript>31high</subscript></entry> - <entry>G<subscript>32low</subscript></entry> - <entry>G<subscript>32high</subscript></entry> - <entry>R<subscript>33low</subscript></entry> - <entry>R<subscript>33high</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/pixfmt-srggb8.xml b/Documentation/DocBook/v4l/pixfmt-srggb8.xml deleted file mode 100644 index 2570e3be3cf1..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-srggb8.xml +++ /dev/null @@ -1,67 +0,0 @@ - <refentry id="V4L2-PIX-FMT-SRGGB8"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_SRGGB8 ('RGGB')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_SRGGB8</constant></refname> - <refpurpose>Bayer RGB format</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This is commonly the native format of digital cameras, -reflecting the arrangement of sensors on the CCD device. Only one red, -green or blue value is given for each pixel. Missing components must -be interpolated from neighbouring pixels. From left to right the first -row consists of a red and green value, the second row of a green and -blue value. This scheme repeats to the right and down for every two -columns and rows.</para> - - <example> - <title><constant>V4L2_PIX_FMT_SRGGB8</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>R<subscript>00</subscript></entry> - <entry>G<subscript>01</subscript></entry> - <entry>R<subscript>02</subscript></entry> - <entry>G<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 4:</entry> - <entry>G<subscript>10</subscript></entry> - <entry>B<subscript>11</subscript></entry> - <entry>G<subscript>12</subscript></entry> - <entry>B<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>R<subscript>20</subscript></entry> - <entry>G<subscript>21</subscript></entry> - <entry>R<subscript>22</subscript></entry> - <entry>G<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 12:</entry> - <entry>G<subscript>30</subscript></entry> - <entry>B<subscript>31</subscript></entry> - <entry>G<subscript>32</subscript></entry> - <entry>B<subscript>33</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> diff --git a/Documentation/DocBook/v4l/pixfmt-uyvy.xml b/Documentation/DocBook/v4l/pixfmt-uyvy.xml deleted file mode 100644 index 816c8d467c16..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-uyvy.xml +++ /dev/null @@ -1,128 +0,0 @@ - <refentry id="V4L2-PIX-FMT-UYVY"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_UYVY ('UYVY')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_UYVY</constant></refname> - <refpurpose>Variation of -<constant>V4L2_PIX_FMT_YUYV</constant> with different order of samples -in memory</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>In this format each four bytes is two pixels. Each four -bytes is two Y's, a Cb and a Cr. Each Y goes to one of the pixels, and -the Cb and Cr belong to both pixels. As you can see, the Cr and Cb -components have half the horizontal resolution of the Y -component.</para> - - <example> - <title><constant>V4L2_PIX_FMT_UYVY</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="9" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Cb<subscript>00</subscript></entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Cr<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Cb<subscript>01</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Cr<subscript>01</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Cb<subscript>10</subscript></entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Cr<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Cb<subscript>11</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Cr<subscript>11</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Cb<subscript>20</subscript></entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Cr<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Cb<subscript>21</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Cr<subscript>21</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>Cb<subscript>30</subscript></entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Cr<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Cb<subscript>31</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Cr<subscript>31</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="7" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-vyuy.xml b/Documentation/DocBook/v4l/pixfmt-vyuy.xml deleted file mode 100644 index 61f12a5e68d9..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-vyuy.xml +++ /dev/null @@ -1,128 +0,0 @@ - <refentry id="V4L2-PIX-FMT-VYUY"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_VYUY ('VYUY')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_VYUY</constant></refname> - <refpurpose>Variation of -<constant>V4L2_PIX_FMT_YUYV</constant> with different order of samples -in memory</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>In this format each four bytes is two pixels. Each four -bytes is two Y's, a Cb and a Cr. Each Y goes to one of the pixels, and -the Cb and Cr belong to both pixels. As you can see, the Cr and Cb -components have half the horizontal resolution of the Y -component.</para> - - <example> - <title><constant>V4L2_PIX_FMT_VYUY</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="9" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Cr<subscript>00</subscript></entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Cb<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Cr<subscript>01</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Cb<subscript>01</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Cr<subscript>10</subscript></entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Cb<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Cr<subscript>11</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Cb<subscript>11</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Cr<subscript>20</subscript></entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Cb<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Cr<subscript>21</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Cb<subscript>21</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>Cr<subscript>30</subscript></entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Cb<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Cr<subscript>31</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Cb<subscript>31</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="7" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-y10.xml b/Documentation/DocBook/v4l/pixfmt-y10.xml deleted file mode 100644 index d065043db8d8..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-y10.xml +++ /dev/null @@ -1,79 +0,0 @@ -<refentry id="V4L2-PIX-FMT-Y10"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_Y10 ('Y10 ')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_Y10</constant></refname> - <refpurpose>Grey-scale image</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This is a grey-scale image with a depth of 10 bits per pixel. Pixels -are stored in 16-bit words with unused high bits padded with 0. The least -significant byte is stored at lower memory addresses (little-endian).</para> - - <example> - <title><constant>V4L2_PIX_FMT_Y10</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="9" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Y'<subscript>00low</subscript></entry> - <entry>Y'<subscript>00high</subscript></entry> - <entry>Y'<subscript>01low</subscript></entry> - <entry>Y'<subscript>01high</subscript></entry> - <entry>Y'<subscript>02low</subscript></entry> - <entry>Y'<subscript>02high</subscript></entry> - <entry>Y'<subscript>03low</subscript></entry> - <entry>Y'<subscript>03high</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Y'<subscript>10low</subscript></entry> - <entry>Y'<subscript>10high</subscript></entry> - <entry>Y'<subscript>11low</subscript></entry> - <entry>Y'<subscript>11high</subscript></entry> - <entry>Y'<subscript>12low</subscript></entry> - <entry>Y'<subscript>12high</subscript></entry> - <entry>Y'<subscript>13low</subscript></entry> - <entry>Y'<subscript>13high</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Y'<subscript>20low</subscript></entry> - <entry>Y'<subscript>20high</subscript></entry> - <entry>Y'<subscript>21low</subscript></entry> - <entry>Y'<subscript>21high</subscript></entry> - <entry>Y'<subscript>22low</subscript></entry> - <entry>Y'<subscript>22high</subscript></entry> - <entry>Y'<subscript>23low</subscript></entry> - <entry>Y'<subscript>23high</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>Y'<subscript>30low</subscript></entry> - <entry>Y'<subscript>30high</subscript></entry> - <entry>Y'<subscript>31low</subscript></entry> - <entry>Y'<subscript>31high</subscript></entry> - <entry>Y'<subscript>32low</subscript></entry> - <entry>Y'<subscript>32high</subscript></entry> - <entry>Y'<subscript>33low</subscript></entry> - <entry>Y'<subscript>33high</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/pixfmt-y10b.xml b/Documentation/DocBook/v4l/pixfmt-y10b.xml deleted file mode 100644 index adb0ad808c93..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-y10b.xml +++ /dev/null @@ -1,43 +0,0 @@ -<refentry id="V4L2-PIX-FMT-Y10BPACK"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_Y10BPACK ('Y10B')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_Y10BPACK</constant></refname> - <refpurpose>Grey-scale image as a bit-packed array</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This is a packed grey-scale image format with a depth of 10 bits per - pixel. Pixels are stored in a bit-packed array of 10bit bits per pixel, - with no padding between them and with the most significant bits coming - first from the left.</para> - - <example> - <title><constant>V4L2_PIX_FMT_Y10BPACK</constant> 4 pixel data stream taking 5 bytes</title> - - <formalpara> - <title>Bit-packed representation</title> - <para>pixels cross the byte boundary and have a ratio of 5 bytes for each 4 - pixels. - <informaltable frame="all"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>Y'<subscript>00[9:2]</subscript></entry> - <entry>Y'<subscript>00[1:0]</subscript>Y'<subscript>01[9:4]</subscript></entry> - <entry>Y'<subscript>01[3:0]</subscript>Y'<subscript>02[9:6]</subscript></entry> - <entry>Y'<subscript>02[5:0]</subscript>Y'<subscript>03[9:8]</subscript></entry> - <entry>Y'<subscript>03[7:0]</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/pixfmt-y12.xml b/Documentation/DocBook/v4l/pixfmt-y12.xml deleted file mode 100644 index ff417b858cc9..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-y12.xml +++ /dev/null @@ -1,79 +0,0 @@ -<refentry id="V4L2-PIX-FMT-Y12"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_Y12 ('Y12 ')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_Y12</constant></refname> - <refpurpose>Grey-scale image</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This is a grey-scale image with a depth of 12 bits per pixel. Pixels -are stored in 16-bit words with unused high bits padded with 0. The least -significant byte is stored at lower memory addresses (little-endian).</para> - - <example> - <title><constant>V4L2_PIX_FMT_Y12</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="9" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Y'<subscript>00low</subscript></entry> - <entry>Y'<subscript>00high</subscript></entry> - <entry>Y'<subscript>01low</subscript></entry> - <entry>Y'<subscript>01high</subscript></entry> - <entry>Y'<subscript>02low</subscript></entry> - <entry>Y'<subscript>02high</subscript></entry> - <entry>Y'<subscript>03low</subscript></entry> - <entry>Y'<subscript>03high</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Y'<subscript>10low</subscript></entry> - <entry>Y'<subscript>10high</subscript></entry> - <entry>Y'<subscript>11low</subscript></entry> - <entry>Y'<subscript>11high</subscript></entry> - <entry>Y'<subscript>12low</subscript></entry> - <entry>Y'<subscript>12high</subscript></entry> - <entry>Y'<subscript>13low</subscript></entry> - <entry>Y'<subscript>13high</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Y'<subscript>20low</subscript></entry> - <entry>Y'<subscript>20high</subscript></entry> - <entry>Y'<subscript>21low</subscript></entry> - <entry>Y'<subscript>21high</subscript></entry> - <entry>Y'<subscript>22low</subscript></entry> - <entry>Y'<subscript>22high</subscript></entry> - <entry>Y'<subscript>23low</subscript></entry> - <entry>Y'<subscript>23high</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>Y'<subscript>30low</subscript></entry> - <entry>Y'<subscript>30high</subscript></entry> - <entry>Y'<subscript>31low</subscript></entry> - <entry>Y'<subscript>31high</subscript></entry> - <entry>Y'<subscript>32low</subscript></entry> - <entry>Y'<subscript>32high</subscript></entry> - <entry>Y'<subscript>33low</subscript></entry> - <entry>Y'<subscript>33high</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/pixfmt-y16.xml b/Documentation/DocBook/v4l/pixfmt-y16.xml deleted file mode 100644 index d58404015078..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-y16.xml +++ /dev/null @@ -1,89 +0,0 @@ -<refentry id="V4L2-PIX-FMT-Y16"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_Y16 ('Y16 ')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_Y16</constant></refname> - <refpurpose>Grey-scale image</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This is a grey-scale image with a depth of 16 bits per -pixel. The least significant byte is stored at lower memory addresses -(little-endian). Note the actual sampling precision may be lower than -16 bits, for example 10 bits per pixel with values in range 0 to -1023.</para> - - <example> - <title><constant>V4L2_PIX_FMT_Y16</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="9" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Y'<subscript>00low</subscript></entry> - <entry>Y'<subscript>00high</subscript></entry> - <entry>Y'<subscript>01low</subscript></entry> - <entry>Y'<subscript>01high</subscript></entry> - <entry>Y'<subscript>02low</subscript></entry> - <entry>Y'<subscript>02high</subscript></entry> - <entry>Y'<subscript>03low</subscript></entry> - <entry>Y'<subscript>03high</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Y'<subscript>10low</subscript></entry> - <entry>Y'<subscript>10high</subscript></entry> - <entry>Y'<subscript>11low</subscript></entry> - <entry>Y'<subscript>11high</subscript></entry> - <entry>Y'<subscript>12low</subscript></entry> - <entry>Y'<subscript>12high</subscript></entry> - <entry>Y'<subscript>13low</subscript></entry> - <entry>Y'<subscript>13high</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Y'<subscript>20low</subscript></entry> - <entry>Y'<subscript>20high</subscript></entry> - <entry>Y'<subscript>21low</subscript></entry> - <entry>Y'<subscript>21high</subscript></entry> - <entry>Y'<subscript>22low</subscript></entry> - <entry>Y'<subscript>22high</subscript></entry> - <entry>Y'<subscript>23low</subscript></entry> - <entry>Y'<subscript>23high</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>Y'<subscript>30low</subscript></entry> - <entry>Y'<subscript>30high</subscript></entry> - <entry>Y'<subscript>31low</subscript></entry> - <entry>Y'<subscript>31high</subscript></entry> - <entry>Y'<subscript>32low</subscript></entry> - <entry>Y'<subscript>32high</subscript></entry> - <entry>Y'<subscript>33low</subscript></entry> - <entry>Y'<subscript>33high</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> -</refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-y41p.xml b/Documentation/DocBook/v4l/pixfmt-y41p.xml deleted file mode 100644 index 73c8536efb05..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-y41p.xml +++ /dev/null @@ -1,157 +0,0 @@ - <refentry id="V4L2-PIX-FMT-Y41P"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_Y41P ('Y41P')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_Y41P</constant></refname> - <refpurpose>Format with ¼ horizontal chroma -resolution, also known as YUV 4:1:1</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>In this format each 12 bytes is eight pixels. In the -twelve bytes are two CbCr pairs and eight Y's. The first CbCr pair -goes with the first four Y's, and the second CbCr pair goes with the -other four Y's. The Cb and Cr components have one fourth the -horizontal resolution of the Y component.</para> - - <para>Do not confuse this format with <link -linkend="V4L2-PIX-FMT-YUV411P"><constant>V4L2_PIX_FMT_YUV411P</constant></link>. -Y41P is derived from "YUV 4:1:1 <emphasis>packed</emphasis>", while -YUV411P stands for "YUV 4:1:1 <emphasis>planar</emphasis>".</para> - - <example> - <title><constant>V4L2_PIX_FMT_Y41P</constant> 8 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="13" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Cb<subscript>00</subscript></entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Cr<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Cb<subscript>01</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Cr<subscript>01</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - <entry>Y'<subscript>04</subscript></entry> - <entry>Y'<subscript>05</subscript></entry> - <entry>Y'<subscript>06</subscript></entry> - <entry>Y'<subscript>07</subscript></entry> - </row> - <row> - <entry>start + 12:</entry> - <entry>Cb<subscript>10</subscript></entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Cr<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Cb<subscript>11</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Cr<subscript>11</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - <entry>Y'<subscript>14</subscript></entry> - <entry>Y'<subscript>15</subscript></entry> - <entry>Y'<subscript>16</subscript></entry> - <entry>Y'<subscript>17</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>Cb<subscript>20</subscript></entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Cr<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Cb<subscript>21</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Cr<subscript>21</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - <entry>Y'<subscript>24</subscript></entry> - <entry>Y'<subscript>25</subscript></entry> - <entry>Y'<subscript>26</subscript></entry> - <entry>Y'<subscript>27</subscript></entry> - </row> - <row> - <entry>start + 36:</entry> - <entry>Cb<subscript>30</subscript></entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Cr<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Cb<subscript>31</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Cr<subscript>31</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - <entry>Y'<subscript>34</subscript></entry> - <entry>Y'<subscript>35</subscript></entry> - <entry>Y'<subscript>36</subscript></entry> - <entry>Y'<subscript>37</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable></para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="15" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry><entry></entry> - <entry>4</entry><entry></entry><entry>5</entry><entry></entry> - <entry>6</entry><entry></entry><entry>7</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-yuv410.xml b/Documentation/DocBook/v4l/pixfmt-yuv410.xml deleted file mode 100644 index 8eb4a193d770..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-yuv410.xml +++ /dev/null @@ -1,141 +0,0 @@ - <refentry> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_YVU410 ('YVU9'), V4L2_PIX_FMT_YUV410 ('YUV9')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname id="V4L2-PIX-FMT-YVU410"><constant>V4L2_PIX_FMT_YVU410</constant></refname> - <refname id="V4L2-PIX-FMT-YUV410"><constant>V4L2_PIX_FMT_YUV410</constant></refname> - <refpurpose>Planar formats with ¼ horizontal and -vertical chroma resolution, also known as YUV 4:1:0</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>These are planar formats, as opposed to a packed format. -The three components are separated into three sub-images or planes. -The Y plane is first. The Y plane has one byte per pixel. For -<constant>V4L2_PIX_FMT_YVU410</constant>, the Cr plane immediately -follows the Y plane in memory. The Cr plane is ¼ the width and -¼ the height of the Y plane (and of the image). Each Cr belongs -to 16 pixels, a four-by-four square of the image. Following the Cr -plane is the Cb plane, just like the Cr plane. -<constant>V4L2_PIX_FMT_YUV410</constant> is the same, except the Cb -plane comes first, then the Cr plane.</para> - - <para>If the Y plane has pad bytes after each row, then the Cr -and Cb planes have ¼ as many pad bytes after their rows. In -other words, four Cx rows (including padding) are exactly as long as -one Y row (including padding).</para> - - <example> - <title><constant>V4L2_PIX_FMT_YVU410</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 4:</entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 12:</entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Cr<subscript>00</subscript></entry> - </row> - <row> - <entry>start + 17:</entry> - <entry>Cb<subscript>00</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="7" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry></entry><entry></entry><entry>C</entry> - <entry></entry><entry></entry><entry></entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-yuv411p.xml b/Documentation/DocBook/v4l/pixfmt-yuv411p.xml deleted file mode 100644 index 00e0960a9869..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-yuv411p.xml +++ /dev/null @@ -1,155 +0,0 @@ - <refentry id="V4L2-PIX-FMT-YUV411P"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_YUV411P ('411P')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_YUV411P</constant></refname> - <refpurpose>Format with ¼ horizontal chroma resolution, -also known as YUV 4:1:1. Planar layout as opposed to -<constant>V4L2_PIX_FMT_Y41P</constant></refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This format is not commonly used. This is a planar -format similar to the 4:2:2 planar format except with half as many -chroma. The three components are separated into three sub-images or -planes. The Y plane is first. The Y plane has one byte per pixel. The -Cb plane immediately follows the Y plane in memory. The Cb plane is -¼ the width of the Y plane (and of the image). Each Cb belongs -to 4 pixels all on the same row. For example, -Cb<subscript>0</subscript> belongs to Y'<subscript>00</subscript>, -Y'<subscript>01</subscript>, Y'<subscript>02</subscript> and -Y'<subscript>03</subscript>. Following the Cb plane is the Cr plane, -just like the Cb plane.</para> - - <para>If the Y plane has pad bytes after each row, then the Cr -and Cb planes have ¼ as many pad bytes after their rows. In -other words, four C x rows (including padding) is exactly as long as -one Y row (including padding).</para> - - <example> - <title><constant>V4L2_PIX_FMT_YUV411P</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 4:</entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 12:</entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Cb<subscript>00</subscript></entry> - </row> - <row> - <entry>start + 17:</entry> - <entry>Cb<subscript>10</subscript></entry> - </row> - <row> - <entry>start + 18:</entry> - <entry>Cb<subscript>20</subscript></entry> - </row> - <row> - <entry>start + 19:</entry> - <entry>Cb<subscript>30</subscript></entry> - </row> - <row> - <entry>start + 20:</entry> - <entry>Cr<subscript>00</subscript></entry> - </row> - <row> - <entry>start + 21:</entry> - <entry>Cr<subscript>10</subscript></entry> - </row> - <row> - <entry>start + 22:</entry> - <entry>Cr<subscript>20</subscript></entry> - </row> - <row> - <entry>start + 23:</entry> - <entry>Cr<subscript>30</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="7" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-yuv420.xml b/Documentation/DocBook/v4l/pixfmt-yuv420.xml deleted file mode 100644 index 42d7de5e456d..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-yuv420.xml +++ /dev/null @@ -1,157 +0,0 @@ - <refentry> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_YVU420 ('YV12'), V4L2_PIX_FMT_YUV420 ('YU12')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname id="V4L2-PIX-FMT-YVU420"><constant>V4L2_PIX_FMT_YVU420</constant></refname> - <refname id="V4L2-PIX-FMT-YUV420"><constant>V4L2_PIX_FMT_YUV420</constant></refname> - <refpurpose>Planar formats with ½ horizontal and -vertical chroma resolution, also known as YUV 4:2:0</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>These are planar formats, as opposed to a packed format. -The three components are separated into three sub- images or planes. -The Y plane is first. The Y plane has one byte per pixel. For -<constant>V4L2_PIX_FMT_YVU420</constant>, the Cr plane immediately -follows the Y plane in memory. The Cr plane is half the width and half -the height of the Y plane (and of the image). Each Cr belongs to four -pixels, a two-by-two square of the image. For example, -Cr<subscript>0</subscript> belongs to Y'<subscript>00</subscript>, -Y'<subscript>01</subscript>, Y'<subscript>10</subscript>, and -Y'<subscript>11</subscript>. Following the Cr plane is the Cb plane, -just like the Cr plane. <constant>V4L2_PIX_FMT_YUV420</constant> is -the same except the Cb plane comes first, then the Cr plane.</para> - - <para>If the Y plane has pad bytes after each row, then the Cr -and Cb planes have half as many pad bytes after their rows. In other -words, two Cx rows (including padding) is exactly as long as one Y row -(including padding).</para> - - <example> - <title><constant>V4L2_PIX_FMT_YVU420</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 4:</entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 12:</entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Cr<subscript>00</subscript></entry> - <entry>Cr<subscript>01</subscript></entry> - </row> - <row> - <entry>start + 18:</entry> - <entry>Cr<subscript>10</subscript></entry> - <entry>Cr<subscript>11</subscript></entry> - </row> - <row> - <entry>start + 20:</entry> - <entry>Cb<subscript>00</subscript></entry> - <entry>Cb<subscript>01</subscript></entry> - </row> - <row> - <entry>start + 22:</entry> - <entry>Cb<subscript>10</subscript></entry> - <entry>Cb<subscript>11</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="7" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-yuv420m.xml b/Documentation/DocBook/v4l/pixfmt-yuv420m.xml deleted file mode 100644 index f5d8f57495c8..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-yuv420m.xml +++ /dev/null @@ -1,162 +0,0 @@ - <refentry id="V4L2-PIX-FMT-YUV420M"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_YUV420M ('YU12M')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname> <constant>V4L2_PIX_FMT_YUV420M</constant></refname> - <refpurpose>Variation of <constant>V4L2_PIX_FMT_YUV420</constant> - with planes non contiguous in memory. </refpurpose> - </refnamediv> - - <refsect1> - <title>Description</title> - - <para>This is a multi-planar format, as opposed to a packed format. -The three components are separated into three sub- images or planes. - -The Y plane is first. The Y plane has one byte per pixel. The Cb data -constitutes the second plane which is half the width and half -the height of the Y plane (and of the image). Each Cb belongs to four -pixels, a two-by-two square of the image. For example, -Cb<subscript>0</subscript> belongs to Y'<subscript>00</subscript>, -Y'<subscript>01</subscript>, Y'<subscript>10</subscript>, and -Y'<subscript>11</subscript>. The Cr data, just like the Cb plane, is -in the third plane. </para> - - <para>If the Y plane has pad bytes after each row, then the Cb -and Cr planes have half as many pad bytes after their rows. In other -words, two Cx rows (including padding) is exactly as long as one Y row -(including padding).</para> - - <para><constant>V4L2_PIX_FMT_NV12M</constant> is intended to be -used only in drivers and applications that support the multi-planar API, -described in <xref linkend="planar-apis"/>. </para> - - <example> - <title><constant>V4L2_PIX_FMT_YVU420M</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start0 + 0:</entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - </row> - <row> - <entry>start0 + 4:</entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - </row> - <row> - <entry>start0 + 8:</entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - </row> - <row> - <entry>start0 + 12:</entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - </row> - <row><entry></entry></row> - <row> - <entry>start1 + 0:</entry> - <entry>Cb<subscript>00</subscript></entry> - <entry>Cb<subscript>01</subscript></entry> - </row> - <row> - <entry>start1 + 2:</entry> - <entry>Cb<subscript>10</subscript></entry> - <entry>Cb<subscript>11</subscript></entry> - </row> - <row><entry></entry></row> - <row> - <entry>start2 + 0:</entry> - <entry>Cr<subscript>00</subscript></entry> - <entry>Cr<subscript>01</subscript></entry> - </row> - <row> - <entry>start2 + 2:</entry> - <entry>Cr<subscript>10</subscript></entry> - <entry>Cr<subscript>11</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="7" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - <row> - <entry></entry> - <entry></entry><entry>C</entry><entry></entry><entry></entry> - <entry></entry><entry>C</entry><entry></entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry></entry><entry>Y</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-yuv422p.xml b/Documentation/DocBook/v4l/pixfmt-yuv422p.xml deleted file mode 100644 index 4348bd9f0d01..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-yuv422p.xml +++ /dev/null @@ -1,161 +0,0 @@ - <refentry id="V4L2-PIX-FMT-YUV422P"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_YUV422P ('422P')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_YUV422P</constant></refname> - <refpurpose>Format with ½ horizontal chroma resolution, -also known as YUV 4:2:2. Planar layout as opposed to -<constant>V4L2_PIX_FMT_YUYV</constant></refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>This format is not commonly used. This is a planar -version of the YUYV format. The three components are separated into -three sub-images or planes. The Y plane is first. The Y plane has one -byte per pixel. The Cb plane immediately follows the Y plane in -memory. The Cb plane is half the width of the Y plane (and of the -image). Each Cb belongs to two pixels. For example, -Cb<subscript>0</subscript> belongs to Y'<subscript>00</subscript>, -Y'<subscript>01</subscript>. Following the Cb plane is the Cr plane, -just like the Cb plane.</para> - - <para>If the Y plane has pad bytes after each row, then the Cr -and Cb planes have half as many pad bytes after their rows. In other -words, two Cx rows (including padding) is exactly as long as one Y row -(including padding).</para> - - <example> - <title><constant>V4L2_PIX_FMT_YUV422P</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="5" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - </row> - <row> - <entry>start + 4:</entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - </row> - <row> - <entry>start + 12:</entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Cb<subscript>00</subscript></entry> - <entry>Cb<subscript>01</subscript></entry> - </row> - <row> - <entry>start + 18:</entry> - <entry>Cb<subscript>10</subscript></entry> - <entry>Cb<subscript>11</subscript></entry> - </row> - <row> - <entry>start + 20:</entry> - <entry>Cb<subscript>20</subscript></entry> - <entry>Cb<subscript>21</subscript></entry> - </row> - <row> - <entry>start + 22:</entry> - <entry>Cb<subscript>30</subscript></entry> - <entry>Cb<subscript>31</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>Cr<subscript>00</subscript></entry> - <entry>Cr<subscript>01</subscript></entry> - </row> - <row> - <entry>start + 26:</entry> - <entry>Cr<subscript>10</subscript></entry> - <entry>Cr<subscript>11</subscript></entry> - </row> - <row> - <entry>start + 28:</entry> - <entry>Cr<subscript>20</subscript></entry> - <entry>Cr<subscript>21</subscript></entry> - </row> - <row> - <entry>start + 30:</entry> - <entry>Cr<subscript>30</subscript></entry> - <entry>Cr<subscript>31</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="7" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-yuyv.xml b/Documentation/DocBook/v4l/pixfmt-yuyv.xml deleted file mode 100644 index bdb2ffacbbcc..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-yuyv.xml +++ /dev/null @@ -1,128 +0,0 @@ - <refentry id="V4L2-PIX-FMT-YUYV"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_YUYV ('YUYV')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_YUYV</constant></refname> - <refpurpose>Packed format with ½ horizontal chroma -resolution, also known as YUV 4:2:2</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>In this format each four bytes is two pixels. Each four -bytes is two Y's, a Cb and a Cr. Each Y goes to one of the pixels, and -the Cb and Cr belong to both pixels. As you can see, the Cr and Cb -components have half the horizontal resolution of the Y component. -<constant>V4L2_PIX_FMT_YUYV </constant> is known in the Windows -environment as YUY2.</para> - - <example> - <title><constant>V4L2_PIX_FMT_YUYV</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="9" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Cb<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Cr<subscript>00</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Cb<subscript>01</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - <entry>Cr<subscript>01</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Cb<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Cr<subscript>10</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Cb<subscript>11</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - <entry>Cr<subscript>11</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Cb<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Cr<subscript>20</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Cb<subscript>21</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - <entry>Cr<subscript>21</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Cb<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Cr<subscript>30</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Cb<subscript>31</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - <entry>Cr<subscript>31</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="7" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt-yvyu.xml b/Documentation/DocBook/v4l/pixfmt-yvyu.xml deleted file mode 100644 index 40d17ae39dde..000000000000 --- a/Documentation/DocBook/v4l/pixfmt-yvyu.xml +++ /dev/null @@ -1,128 +0,0 @@ - <refentry id="V4L2-PIX-FMT-YVYU"> - <refmeta> - <refentrytitle>V4L2_PIX_FMT_YVYU ('YVYU')</refentrytitle> - &manvol; - </refmeta> - <refnamediv> - <refname><constant>V4L2_PIX_FMT_YVYU</constant></refname> - <refpurpose>Variation of -<constant>V4L2_PIX_FMT_YUYV</constant> with different order of samples -in memory</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - - <para>In this format each four bytes is two pixels. Each four -bytes is two Y's, a Cb and a Cr. Each Y goes to one of the pixels, and -the Cb and Cr belong to both pixels. As you can see, the Cr and Cb -components have half the horizontal resolution of the Y -component.</para> - - <example> - <title><constant>V4L2_PIX_FMT_YVYU</constant> 4 × 4 -pixel image</title> - - <formalpara> - <title>Byte Order.</title> - <para>Each cell is one byte. - <informaltable frame="none"> - <tgroup cols="9" align="center"> - <colspec align="left" colwidth="2*" /> - <tbody valign="top"> - <row> - <entry>start + 0:</entry> - <entry>Y'<subscript>00</subscript></entry> - <entry>Cr<subscript>00</subscript></entry> - <entry>Y'<subscript>01</subscript></entry> - <entry>Cb<subscript>00</subscript></entry> - <entry>Y'<subscript>02</subscript></entry> - <entry>Cr<subscript>01</subscript></entry> - <entry>Y'<subscript>03</subscript></entry> - <entry>Cb<subscript>01</subscript></entry> - </row> - <row> - <entry>start + 8:</entry> - <entry>Y'<subscript>10</subscript></entry> - <entry>Cr<subscript>10</subscript></entry> - <entry>Y'<subscript>11</subscript></entry> - <entry>Cb<subscript>10</subscript></entry> - <entry>Y'<subscript>12</subscript></entry> - <entry>Cr<subscript>11</subscript></entry> - <entry>Y'<subscript>13</subscript></entry> - <entry>Cb<subscript>11</subscript></entry> - </row> - <row> - <entry>start + 16:</entry> - <entry>Y'<subscript>20</subscript></entry> - <entry>Cr<subscript>20</subscript></entry> - <entry>Y'<subscript>21</subscript></entry> - <entry>Cb<subscript>20</subscript></entry> - <entry>Y'<subscript>22</subscript></entry> - <entry>Cr<subscript>21</subscript></entry> - <entry>Y'<subscript>23</subscript></entry> - <entry>Cb<subscript>21</subscript></entry> - </row> - <row> - <entry>start + 24:</entry> - <entry>Y'<subscript>30</subscript></entry> - <entry>Cr<subscript>30</subscript></entry> - <entry>Y'<subscript>31</subscript></entry> - <entry>Cb<subscript>30</subscript></entry> - <entry>Y'<subscript>32</subscript></entry> - <entry>Cr<subscript>31</subscript></entry> - <entry>Y'<subscript>33</subscript></entry> - <entry>Cb<subscript>31</subscript></entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - - <formalpara> - <title>Color Sample Location.</title> - <para> - <informaltable frame="none"> - <tgroup cols="7" align="center"> - <tbody valign="top"> - <row> - <entry></entry> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry> - <entry>2</entry><entry></entry><entry>3</entry> - </row> - <row> - <entry>0</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>1</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>2</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - <row> - <entry>3</entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry> - <entry>Y</entry><entry>C</entry><entry>Y</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - </formalpara> - </example> - </refsect1> - </refentry> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "pixfmt.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/pixfmt.xml b/Documentation/DocBook/v4l/pixfmt.xml deleted file mode 100644 index deb660207f94..000000000000 --- a/Documentation/DocBook/v4l/pixfmt.xml +++ /dev/null @@ -1,951 +0,0 @@ - <title>Image Formats</title> - - <para>The V4L2 API was primarily designed for devices exchanging -image data with applications. The -<structname>v4l2_pix_format</structname> and <structname>v4l2_pix_format_mplane -</structname> structures define the format and layout of an image in memory. -The former is used with the single-planar API, while the latter is used with the -multi-planar version (see <xref linkend="planar-apis"/>). Image formats are -negotiated with the &VIDIOC-S-FMT; ioctl. (The explanations here focus on video -capturing and output, for overlay frame buffer formats see also -&VIDIOC-G-FBUF;.)</para> - -<section> - <title>Single-planar format structure</title> - <table pgwide="1" frame="none" id="v4l2-pix-format"> - <title>struct <structname>v4l2_pix_format</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>width</structfield></entry> - <entry>Image width in pixels.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>height</structfield></entry> - <entry>Image height in pixels.</entry> - </row> - <row> - <entry spanname="hspan">Applications set these fields to -request an image size, drivers return the closest possible values. In -case of planar formats the <structfield>width</structfield> and -<structfield>height</structfield> applies to the largest plane. To -avoid ambiguities drivers must return values rounded up to a multiple -of the scale factor of any smaller planes. For example when the image -format is YUV 4:2:0, <structfield>width</structfield> and -<structfield>height</structfield> must be multiples of two.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>pixelformat</structfield></entry> - <entry>The pixel format or type of compression, set by the -application. This is a little endian <link -linkend="v4l2-fourcc">four character code</link>. V4L2 defines -standard RGB formats in <xref linkend="rgb-formats" />, YUV formats in <xref -linkend="yuv-formats" />, and reserved codes in <xref -linkend="reserved-formats" /></entry> - </row> - <row> - <entry>&v4l2-field;</entry> - <entry><structfield>field</structfield></entry> - <entry>Video images are typically interlaced. Applications -can request to capture or output only the top or bottom field, or both -fields interlaced or sequentially stored in one buffer or alternating -in separate buffers. Drivers return the actual field order selected. -For details see <xref linkend="field-order" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>bytesperline</structfield></entry> - <entry>Distance in bytes between the leftmost pixels in two -adjacent lines.</entry> - </row> - <row> - <entry spanname="hspan"><para>Both applications and drivers -can set this field to request padding bytes at the end of each line. -Drivers however may ignore the value requested by the application, -returning <structfield>width</structfield> times bytes per pixel or a -larger value required by the hardware. That implies applications can -just set this field to zero to get a reasonable -default.</para><para>Video hardware may access padding bytes, -therefore they must reside in accessible memory. Consider cases where -padding bytes after the last line of an image cross a system page -boundary. Input devices may write padding bytes, the value is -undefined. Output devices ignore the contents of padding -bytes.</para><para>When the image format is planar the -<structfield>bytesperline</structfield> value applies to the largest -plane and is divided by the same factor as the -<structfield>width</structfield> field for any smaller planes. For -example the Cb and Cr planes of a YUV 4:2:0 image have half as many -padding bytes following each line as the Y plane. To avoid ambiguities -drivers must return a <structfield>bytesperline</structfield> value -rounded up to a multiple of the scale factor.</para></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>sizeimage</structfield></entry> - <entry>Size in bytes of the buffer to hold a complete image, -set by the driver. Usually this is -<structfield>bytesperline</structfield> times -<structfield>height</structfield>. When the image consists of variable -length compressed data this is the maximum number of bytes required to -hold an image.</entry> - </row> - <row> - <entry>&v4l2-colorspace;</entry> - <entry><structfield>colorspace</structfield></entry> - <entry>This information supplements the -<structfield>pixelformat</structfield> and must be set by the driver, -see <xref linkend="colorspaces" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>priv</structfield></entry> - <entry>Reserved for custom (driver defined) additional -information about formats. When not used drivers and applications must -set this field to zero.</entry> - </row> - </tbody> - </tgroup> - </table> -</section> - -<section> - <title>Multi-planar format structures</title> - <para>The <structname>v4l2_plane_pix_format</structname> structures define - size and layout for each of the planes in a multi-planar format. - The <structname>v4l2_pix_format_mplane</structname> structure contains - information common to all planes (such as image width and height) and - an array of <structname>v4l2_plane_pix_format</structname> structures, - describing all planes of that format.</para> - <table pgwide="1" frame="none" id="v4l2-plane-pix-format"> - <title>struct <structname>vl42_plane_pix_format</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>sizeimage</structfield></entry> - <entry>Maximum size in bytes required for image data in this plane. - </entry> - </row> - <row> - <entry>__u16</entry> - <entry><structfield>bytesperline</structfield></entry> - <entry>Distance in bytes between the leftmost pixels in two adjacent - lines.</entry> - </row> - <row> - <entry>__u16</entry> - <entry><structfield>reserved[7]</structfield></entry> - <entry>Reserved for future extensions. Should be zeroed by the - application.</entry> - </row> - </tbody> - </tgroup> - </table> - <table pgwide="1" frame="none" id="v4l2-pix-format-mplane"> - <title>struct <structname>v4l2_pix_format_mplane</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>width</structfield></entry> - <entry>Image width in pixels.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>height</structfield></entry> - <entry>Image height in pixels.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>pixelformat</structfield></entry> - <entry>The pixel format. Both single- and multi-planar four character -codes can be used.</entry> - </row> - <row> - <entry>&v4l2-field;</entry> - <entry><structfield>field</structfield></entry> - <entry>See &v4l2-pix-format;.</entry> - </row> - <row> - <entry>&v4l2-colorspace;</entry> - <entry><structfield>colorspace</structfield></entry> - <entry>See &v4l2-pix-format;.</entry> - </row> - <row> - <entry>&v4l2-plane-pix-format;</entry> - <entry><structfield>plane_fmt[VIDEO_MAX_PLANES]</structfield></entry> - <entry>An array of structures describing format of each plane this - pixel format consists of. The number of valid entries in this array - has to be put in the <structfield>num_planes</structfield> - field.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>num_planes</structfield></entry> - <entry>Number of planes (i.e. separate memory buffers) for this format - and the number of valid entries in the - <structfield>plane_fmt</structfield> array.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>reserved[11]</structfield></entry> - <entry>Reserved for future extensions. Should be zeroed by the - application.</entry> - </row> - </tbody> - </tgroup> - </table> -</section> - - <section> - <title>Standard Image Formats</title> - - <para>In order to exchange images between drivers and -applications, it is necessary to have standard image data formats -which both sides will interpret the same way. V4L2 includes several -such formats, and this section is intended to be an unambiguous -specification of the standard image data formats in V4L2.</para> - - <para>V4L2 drivers are not limited to these formats, however. -Driver-specific formats are possible. In that case the application may -depend on a codec to convert images to one of the standard formats -when needed. But the data can still be stored and retrieved in the -proprietary format. For example, a device may support a proprietary -compressed format. Applications can still capture and save the data in -the compressed format, saving much disk space, and later use a codec -to convert the images to the X Windows screen format when the video is -to be displayed.</para> - - <para>Even so, ultimately, some standard formats are needed, so -the V4L2 specification would not be complete without well-defined -standard formats.</para> - - <para>The V4L2 standard formats are mainly uncompressed formats. The -pixels are always arranged in memory from left to right, and from top -to bottom. The first byte of data in the image buffer is always for -the leftmost pixel of the topmost row. Following that is the pixel -immediately to its right, and so on until the end of the top row of -pixels. Following the rightmost pixel of the row there may be zero or -more bytes of padding to guarantee that each row of pixel data has a -certain alignment. Following the pad bytes, if any, is data for the -leftmost pixel of the second row from the top, and so on. The last row -has just as many pad bytes after it as the other rows.</para> - - <para>In V4L2 each format has an identifier which looks like -<constant>PIX_FMT_XXX</constant>, defined in the <link -linkend="videodev">videodev.h</link> header file. These identifiers -represent <link linkend="v4l2-fourcc">four character (FourCC) codes</link> -which are also listed below, however they are not the same as those -used in the Windows world.</para> - - <para>For some formats, data is stored in separate, discontiguous -memory buffers. Those formats are identified by a separate set of FourCC codes -and are referred to as "multi-planar formats". For example, a YUV422 frame is -normally stored in one memory buffer, but it can also be placed in two or three -separate buffers, with Y component in one buffer and CbCr components in another -in the 2-planar version or with each component in its own buffer in the -3-planar case. Those sub-buffers are referred to as "planes".</para> - </section> - - <section id="colorspaces"> - <title>Colorspaces</title> - - <para>[intro]</para> - - <!-- See proposal by Billy Biggs, video4linux-list@redhat.com -on 11 Oct 2002, subject: "Re: [V4L] Re: v4l2 api", and -http://vektor.theorem.ca/graphics/ycbcr/ and -http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html --> - - <para> - <variablelist> - <varlistentry> - <term>Gamma Correction</term> - <listitem> - <para>[to do]</para> - <para>E'<subscript>R</subscript> = f(R)</para> - <para>E'<subscript>G</subscript> = f(G)</para> - <para>E'<subscript>B</subscript> = f(B)</para> - </listitem> - </varlistentry> - <varlistentry> - <term>Construction of luminance and color-difference -signals</term> - <listitem> - <para>[to do]</para> - <para>E'<subscript>Y</subscript> = -Coeff<subscript>R</subscript> E'<subscript>R</subscript> -+ Coeff<subscript>G</subscript> E'<subscript>G</subscript> -+ Coeff<subscript>B</subscript> E'<subscript>B</subscript></para> - <para>(E'<subscript>R</subscript> - E'<subscript>Y</subscript>) = E'<subscript>R</subscript> -- Coeff<subscript>R</subscript> E'<subscript>R</subscript> -- Coeff<subscript>G</subscript> E'<subscript>G</subscript> -- Coeff<subscript>B</subscript> E'<subscript>B</subscript></para> - <para>(E'<subscript>B</subscript> - E'<subscript>Y</subscript>) = E'<subscript>B</subscript> -- Coeff<subscript>R</subscript> E'<subscript>R</subscript> -- Coeff<subscript>G</subscript> E'<subscript>G</subscript> -- Coeff<subscript>B</subscript> E'<subscript>B</subscript></para> - </listitem> - </varlistentry> - <varlistentry> - <term>Re-normalized color-difference signals</term> - <listitem> - <para>The color-difference signals are scaled back to unity -range [-0.5;+0.5]:</para> - <para>K<subscript>B</subscript> = 0.5 / (1 - Coeff<subscript>B</subscript>)</para> - <para>K<subscript>R</subscript> = 0.5 / (1 - Coeff<subscript>R</subscript>)</para> - <para>P<subscript>B</subscript> = -K<subscript>B</subscript> (E'<subscript>B</subscript> - E'<subscript>Y</subscript>) = - 0.5 (Coeff<subscript>R</subscript> / Coeff<subscript>B</subscript>) E'<subscript>R</subscript> -+ 0.5 (Coeff<subscript>G</subscript> / Coeff<subscript>B</subscript>) E'<subscript>G</subscript> -+ 0.5 E'<subscript>B</subscript></para> - <para>P<subscript>R</subscript> = -K<subscript>R</subscript> (E'<subscript>R</subscript> - E'<subscript>Y</subscript>) = - 0.5 E'<subscript>R</subscript> -+ 0.5 (Coeff<subscript>G</subscript> / Coeff<subscript>R</subscript>) E'<subscript>G</subscript> -+ 0.5 (Coeff<subscript>B</subscript> / Coeff<subscript>R</subscript>) E'<subscript>B</subscript></para> - </listitem> - </varlistentry> - <varlistentry> - <term>Quantization</term> - <listitem> - <para>[to do]</para> - <para>Y' = (Lum. Levels - 1) · E'<subscript>Y</subscript> + Lum. Offset</para> - <para>C<subscript>B</subscript> = (Chrom. Levels - 1) -· P<subscript>B</subscript> + Chrom. Offset</para> - <para>C<subscript>R</subscript> = (Chrom. Levels - 1) -· P<subscript>R</subscript> + Chrom. Offset</para> - <para>Rounding to the nearest integer and clamping to the range -[0;255] finally yields the digital color components Y'CbCr -stored in YUV images.</para> - </listitem> - </varlistentry> - </variablelist> - </para> - - <example> - <title>ITU-R Rec. BT.601 color conversion</title> - - <para>Forward Transformation</para> - - <programlisting> -int ER, EG, EB; /* gamma corrected RGB input [0;255] */ -int Y1, Cb, Cr; /* output [0;255] */ - -double r, g, b; /* temporaries */ -double y1, pb, pr; - -int -clamp (double x) -{ - int r = x; /* round to nearest */ - - if (r < 0) return 0; - else if (r > 255) return 255; - else return r; -} - -r = ER / 255.0; -g = EG / 255.0; -b = EB / 255.0; - -y1 = 0.299 * r + 0.587 * g + 0.114 * b; -pb = -0.169 * r - 0.331 * g + 0.5 * b; -pr = 0.5 * r - 0.419 * g - 0.081 * b; - -Y1 = clamp (219 * y1 + 16); -Cb = clamp (224 * pb + 128); -Cr = clamp (224 * pr + 128); - -/* or shorter */ - -y1 = 0.299 * ER + 0.587 * EG + 0.114 * EB; - -Y1 = clamp ( (219 / 255.0) * y1 + 16); -Cb = clamp (((224 / 255.0) / (2 - 2 * 0.114)) * (EB - y1) + 128); -Cr = clamp (((224 / 255.0) / (2 - 2 * 0.299)) * (ER - y1) + 128); - </programlisting> - - <para>Inverse Transformation</para> - - <programlisting> -int Y1, Cb, Cr; /* gamma pre-corrected input [0;255] */ -int ER, EG, EB; /* output [0;255] */ - -double r, g, b; /* temporaries */ -double y1, pb, pr; - -int -clamp (double x) -{ - int r = x; /* round to nearest */ - - if (r < 0) return 0; - else if (r > 255) return 255; - else return r; -} - -y1 = (255 / 219.0) * (Y1 - 16); -pb = (255 / 224.0) * (Cb - 128); -pr = (255 / 224.0) * (Cr - 128); - -r = 1.0 * y1 + 0 * pb + 1.402 * pr; -g = 1.0 * y1 - 0.344 * pb - 0.714 * pr; -b = 1.0 * y1 + 1.772 * pb + 0 * pr; - -ER = clamp (r * 255); /* [ok? one should prob. limit y1,pb,pr] */ -EG = clamp (g * 255); -EB = clamp (b * 255); - </programlisting> - </example> - - <table pgwide="1" id="v4l2-colorspace" orient="land"> - <title>enum v4l2_colorspace</title> - <tgroup cols="11" align="center"> - <colspec align="left" /> - <colspec align="center" /> - <colspec align="left" /> - <colspec colname="cr" /> - <colspec colname="cg" /> - <colspec colname="cb" /> - <colspec colname="wp" /> - <colspec colname="gc" /> - <colspec colname="lum" /> - <colspec colname="qy" /> - <colspec colname="qc" /> - <spanspec namest="cr" nameend="cb" spanname="chrom" /> - <spanspec namest="qy" nameend="qc" spanname="quant" /> - <spanspec namest="lum" nameend="qc" spanname="spam" /> - <thead> - <row> - <entry morerows="1">Identifier</entry> - <entry morerows="1">Value</entry> - <entry morerows="1">Description</entry> - <entry spanname="chrom">Chromaticities<footnote> - <para>The coordinates of the color primaries are -given in the CIE system (1931)</para> - </footnote></entry> - <entry morerows="1">White Point</entry> - <entry morerows="1">Gamma Correction</entry> - <entry morerows="1">Luminance E'<subscript>Y</subscript></entry> - <entry spanname="quant">Quantization</entry> - </row> - <row> - <entry>Red</entry> - <entry>Green</entry> - <entry>Blue</entry> - <entry>Y'</entry> - <entry>Cb, Cr</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>V4L2_COLORSPACE_SMPTE170M</constant></entry> - <entry>1</entry> - <entry>NTSC/PAL according to <xref linkend="smpte170m" />, -<xref linkend="itu601" /></entry> - <entry>x = 0.630, y = 0.340</entry> - <entry>x = 0.310, y = 0.595</entry> - <entry>x = 0.155, y = 0.070</entry> - <entry>x = 0.3127, y = 0.3290, - Illuminant D<subscript>65</subscript></entry> - <entry>E' = 4.5 I for I ≤0.018, -1.099 I<superscript>0.45</superscript> - 0.099 for 0.018 < I</entry> - <entry>0.299 E'<subscript>R</subscript> -+ 0.587 E'<subscript>G</subscript> -+ 0.114 E'<subscript>B</subscript></entry> - <entry>219 E'<subscript>Y</subscript> + 16</entry> - <entry>224 P<subscript>B,R</subscript> + 128</entry> - </row> - <row> - <entry><constant>V4L2_COLORSPACE_SMPTE240M</constant></entry> - <entry>2</entry> - <entry>1125-Line (US) HDTV, see <xref -linkend="smpte240m" /></entry> - <entry>x = 0.630, y = 0.340</entry> - <entry>x = 0.310, y = 0.595</entry> - <entry>x = 0.155, y = 0.070</entry> - <entry>x = 0.3127, y = 0.3290, - Illuminant D<subscript>65</subscript></entry> - <entry>E' = 4 I for I ≤0.0228, -1.1115 I<superscript>0.45</superscript> - 0.1115 for 0.0228 < I</entry> - <entry>0.212 E'<subscript>R</subscript> -+ 0.701 E'<subscript>G</subscript> -+ 0.087 E'<subscript>B</subscript></entry> - <entry>219 E'<subscript>Y</subscript> + 16</entry> - <entry>224 P<subscript>B,R</subscript> + 128</entry> - </row> - <row> - <entry><constant>V4L2_COLORSPACE_REC709</constant></entry> - <entry>3</entry> - <entry>HDTV and modern devices, see <xref -linkend="itu709" /></entry> - <entry>x = 0.640, y = 0.330</entry> - <entry>x = 0.300, y = 0.600</entry> - <entry>x = 0.150, y = 0.060</entry> - <entry>x = 0.3127, y = 0.3290, - Illuminant D<subscript>65</subscript></entry> - <entry>E' = 4.5 I for I ≤0.018, -1.099 I<superscript>0.45</superscript> - 0.099 for 0.018 < I</entry> - <entry>0.2125 E'<subscript>R</subscript> -+ 0.7154 E'<subscript>G</subscript> -+ 0.0721 E'<subscript>B</subscript></entry> - <entry>219 E'<subscript>Y</subscript> + 16</entry> - <entry>224 P<subscript>B,R</subscript> + 128</entry> - </row> - <row> - <entry><constant>V4L2_COLORSPACE_BT878</constant></entry> - <entry>4</entry> - <entry>Broken Bt878 extents<footnote> - <para>The ubiquitous Bt878 video capture chip -quantizes E'<subscript>Y</subscript> to 238 levels, yielding a range -of Y' = 16 … 253, unlike Rec. 601 Y' = 16 … -235. This is not a typo in the Bt878 documentation, it has been -implemented in silicon. The chroma extents are unclear.</para> - </footnote>, <xref linkend="itu601" /></entry> - <entry>?</entry> - <entry>?</entry> - <entry>?</entry> - <entry>?</entry> - <entry>?</entry> - <entry>0.299 E'<subscript>R</subscript> -+ 0.587 E'<subscript>G</subscript> -+ 0.114 E'<subscript>B</subscript></entry> - <entry><emphasis>237</emphasis> E'<subscript>Y</subscript> + 16</entry> - <entry>224 P<subscript>B,R</subscript> + 128 (probably)</entry> - </row> - <row> - <entry><constant>V4L2_COLORSPACE_470_SYSTEM_M</constant></entry> - <entry>5</entry> - <entry>M/NTSC<footnote> - <para>No identifier exists for M/PAL which uses -the chromaticities of M/NTSC, the remaining parameters are equal to B and -G/PAL.</para> - </footnote> according to <xref linkend="itu470" />, <xref - linkend="itu601" /></entry> - <entry>x = 0.67, y = 0.33</entry> - <entry>x = 0.21, y = 0.71</entry> - <entry>x = 0.14, y = 0.08</entry> - <entry>x = 0.310, y = 0.316, Illuminant C</entry> - <entry>?</entry> - <entry>0.299 E'<subscript>R</subscript> -+ 0.587 E'<subscript>G</subscript> -+ 0.114 E'<subscript>B</subscript></entry> - <entry>219 E'<subscript>Y</subscript> + 16</entry> - <entry>224 P<subscript>B,R</subscript> + 128</entry> - </row> - <row> - <entry><constant>V4L2_COLORSPACE_470_SYSTEM_BG</constant></entry> - <entry>6</entry> - <entry>625-line PAL and SECAM systems according to <xref -linkend="itu470" />, <xref linkend="itu601" /></entry> - <entry>x = 0.64, y = 0.33</entry> - <entry>x = 0.29, y = 0.60</entry> - <entry>x = 0.15, y = 0.06</entry> - <entry>x = 0.313, y = 0.329, -Illuminant D<subscript>65</subscript></entry> - <entry>?</entry> - <entry>0.299 E'<subscript>R</subscript> -+ 0.587 E'<subscript>G</subscript> -+ 0.114 E'<subscript>B</subscript></entry> - <entry>219 E'<subscript>Y</subscript> + 16</entry> - <entry>224 P<subscript>B,R</subscript> + 128</entry> - </row> - <row> - <entry><constant>V4L2_COLORSPACE_JPEG</constant></entry> - <entry>7</entry> - <entry>JPEG Y'CbCr, see <xref linkend="jfif" />, <xref linkend="itu601" /></entry> - <entry>?</entry> - <entry>?</entry> - <entry>?</entry> - <entry>?</entry> - <entry>?</entry> - <entry>0.299 E'<subscript>R</subscript> -+ 0.587 E'<subscript>G</subscript> -+ 0.114 E'<subscript>B</subscript></entry> - <entry>256 E'<subscript>Y</subscript> + 16<footnote> - <para>Note JFIF quantizes -Y'P<subscript>B</subscript>P<subscript>R</subscript> in range [0;+1] and -[-0.5;+0.5] to <emphasis>257</emphasis> levels, however Y'CbCr signals -are still clamped to [0;255].</para> - </footnote></entry> - <entry>256 P<subscript>B,R</subscript> + 128</entry> - </row> - <row> - <entry><constant>V4L2_COLORSPACE_SRGB</constant></entry> - <entry>8</entry> - <entry>[?]</entry> - <entry>x = 0.640, y = 0.330</entry> - <entry>x = 0.300, y = 0.600</entry> - <entry>x = 0.150, y = 0.060</entry> - <entry>x = 0.3127, y = 0.3290, - Illuminant D<subscript>65</subscript></entry> - <entry>E' = 4.5 I for I ≤0.018, -1.099 I<superscript>0.45</superscript> - 0.099 for 0.018 < I</entry> - <entry spanname="spam">n/a</entry> - </row> - </tbody> - </tgroup> - </table> - </section> - - <section id="pixfmt-indexed"> - <title>Indexed Format</title> - - <para>In this format each pixel is represented by an 8 bit index -into a 256 entry ARGB palette. It is intended for <link -linkend="osd">Video Output Overlays</link> only. There are no ioctls to -access the palette, this must be done with ioctls of the Linux framebuffer API.</para> - - <table pgwide="0" frame="none"> - <title>Indexed Image Format</title> - <tgroup cols="37" align="center"> - <colspec colname="id" align="left" /> - <colspec colname="fourcc" /> - <colspec colname="bit" /> - - <colspec colnum="4" colname="b07" align="center" /> - <colspec colnum="5" colname="b06" align="center" /> - <colspec colnum="6" colname="b05" align="center" /> - <colspec colnum="7" colname="b04" align="center" /> - <colspec colnum="8" colname="b03" align="center" /> - <colspec colnum="9" colname="b02" align="center" /> - <colspec colnum="10" colname="b01" align="center" /> - <colspec colnum="11" colname="b00" align="center" /> - - <spanspec namest="b07" nameend="b00" spanname="b0" /> - <spanspec namest="b17" nameend="b10" spanname="b1" /> - <spanspec namest="b27" nameend="b20" spanname="b2" /> - <spanspec namest="b37" nameend="b30" spanname="b3" /> - <thead> - <row> - <entry>Identifier</entry> - <entry>Code</entry> - <entry> </entry> - <entry spanname="b0">Byte 0</entry> - </row> - <row> - <entry> </entry> - <entry> </entry> - <entry>Bit</entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - </row> - </thead> - <tbody valign="top"> - <row id="V4L2-PIX-FMT-PAL8"> - <entry><constant>V4L2_PIX_FMT_PAL8</constant></entry> - <entry>'PAL8'</entry> - <entry></entry> - <entry>i<subscript>7</subscript></entry> - <entry>i<subscript>6</subscript></entry> - <entry>i<subscript>5</subscript></entry> - <entry>i<subscript>4</subscript></entry> - <entry>i<subscript>3</subscript></entry> - <entry>i<subscript>2</subscript></entry> - <entry>i<subscript>1</subscript></entry> - <entry>i<subscript>0</subscript></entry> - </row> - </tbody> - </tgroup> - </table> - </section> - - <section id="pixfmt-rgb"> - <title>RGB Formats</title> - - &sub-packed-rgb; - &sub-sbggr8; - &sub-sgbrg8; - &sub-sgrbg8; - &sub-srggb8; - &sub-sbggr16; - &sub-srggb10; - &sub-srggb12; - </section> - - <section id="yuv-formats"> - <title>YUV Formats</title> - - <para>YUV is the format native to TV broadcast and composite video -signals. It separates the brightness information (Y) from the color -information (U and V or Cb and Cr). The color information consists of -red and blue <emphasis>color difference</emphasis> signals, this way -the green component can be reconstructed by subtracting from the -brightness component. See <xref linkend="colorspaces" /> for conversion -examples. YUV was chosen because early television would only transmit -brightness information. To add color in a way compatible with existing -receivers a new signal carrier was added to transmit the color -difference signals. Secondary in the YUV format the U and V components -usually have lower resolution than the Y component. This is an analog -video compression technique taking advantage of a property of the -human visual system, being more sensitive to brightness -information.</para> - - &sub-packed-yuv; - &sub-grey; - &sub-y10; - &sub-y12; - &sub-y10b; - &sub-y16; - &sub-yuyv; - &sub-uyvy; - &sub-yvyu; - &sub-vyuy; - &sub-y41p; - &sub-yuv420; - &sub-yuv420m; - &sub-yuv410; - &sub-yuv422p; - &sub-yuv411p; - &sub-nv12; - &sub-nv12m; - &sub-nv12mt; - &sub-nv16; - &sub-m420; - </section> - - <section> - <title>Compressed Formats</title> - - <table pgwide="1" frame="none" id="compressed-formats"> - <title>Compressed Image Formats</title> - <tgroup cols="3" align="left"> - &cs-def; - <thead> - <row> - <entry>Identifier</entry> - <entry>Code</entry> - <entry>Details</entry> - </row> - </thead> - <tbody valign="top"> - <row id="V4L2-PIX-FMT-JPEG"> - <entry><constant>V4L2_PIX_FMT_JPEG</constant></entry> - <entry>'JPEG'</entry> - <entry>TBD. See also &VIDIOC-G-JPEGCOMP;, - &VIDIOC-S-JPEGCOMP;.</entry> - </row> - <row id="V4L2-PIX-FMT-MPEG"> - <entry><constant>V4L2_PIX_FMT_MPEG</constant></entry> - <entry>'MPEG'</entry> - <entry>MPEG stream. The actual format is determined by -extended control <constant>V4L2_CID_MPEG_STREAM_TYPE</constant>, see -<xref linkend="mpeg-control-id" />.</entry> - </row> - </tbody> - </tgroup> - </table> - </section> - - <section id="pixfmt-reserved"> - <title>Reserved Format Identifiers</title> - - <para>These formats are not defined by this specification, they -are just listed for reference and to avoid naming conflicts. If you -want to register your own format, send an e-mail to the linux-media mailing -list &v4l-ml; for inclusion in the <filename>videodev2.h</filename> -file. If you want to share your format with other developers add a -link to your documentation and send a copy to the linux-media mailing list -for inclusion in this section. If you think your format should be listed -in a standard format section please make a proposal on the linux-media mailing -list.</para> - - <table pgwide="1" frame="none" id="reserved-formats"> - <title>Reserved Image Formats</title> - <tgroup cols="3" align="left"> - &cs-def; - <thead> - <row> - <entry>Identifier</entry> - <entry>Code</entry> - <entry>Details</entry> - </row> - </thead> - <tbody valign="top"> - <row id="V4L2-PIX-FMT-DV"> - <entry><constant>V4L2_PIX_FMT_DV</constant></entry> - <entry>'dvsd'</entry> - <entry>unknown</entry> - </row> - <row id="V4L2-PIX-FMT-ET61X251"> - <entry><constant>V4L2_PIX_FMT_ET61X251</constant></entry> - <entry>'E625'</entry> - <entry>Compressed format of the ET61X251 driver.</entry> - </row> - <row id="V4L2-PIX-FMT-HI240"> - <entry><constant>V4L2_PIX_FMT_HI240</constant></entry> - <entry>'HI24'</entry> - <entry><para>8 bit RGB format used by the BTTV driver.</para></entry> - </row> - <row id="V4L2-PIX-FMT-HM12"> - <entry><constant>V4L2_PIX_FMT_HM12</constant></entry> - <entry>'HM12'</entry> - <entry><para>YUV 4:2:0 format used by the -IVTV driver, <ulink url="http://www.ivtvdriver.org/"> -http://www.ivtvdriver.org/</ulink></para><para>The format is documented in the -kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm12</filename> -</para></entry> - </row> - <row id="V4L2-PIX-FMT-CPIA1"> - <entry><constant>V4L2_PIX_FMT_CPIA1</constant></entry> - <entry>'CPIA'</entry> - <entry>YUV format used by the gspca cpia1 driver.</entry> - </row> - <row id="V4L2-PIX-FMT-SPCA501"> - <entry><constant>V4L2_PIX_FMT_SPCA501</constant></entry> - <entry>'S501'</entry> - <entry>YUYV per line used by the gspca driver.</entry> - </row> - <row id="V4L2-PIX-FMT-SPCA505"> - <entry><constant>V4L2_PIX_FMT_SPCA505</constant></entry> - <entry>'S505'</entry> - <entry>YYUV per line used by the gspca driver.</entry> - </row> - <row id="V4L2-PIX-FMT-SPCA508"> - <entry><constant>V4L2_PIX_FMT_SPCA508</constant></entry> - <entry>'S508'</entry> - <entry>YUVY per line used by the gspca driver.</entry> - </row> - <row id="V4L2-PIX-FMT-SPCA561"> - <entry><constant>V4L2_PIX_FMT_SPCA561</constant></entry> - <entry>'S561'</entry> - <entry>Compressed GBRG Bayer format used by the gspca driver.</entry> - </row> - <row id="V4L2-PIX-FMT-SGRBG10DPCM8"> - <entry><constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant></entry> - <entry>'DB10'</entry> - <entry>10 bit raw Bayer DPCM compressed to 8 bits.</entry> - </row> - <row id="V4L2-PIX-FMT-PAC207"> - <entry><constant>V4L2_PIX_FMT_PAC207</constant></entry> - <entry>'P207'</entry> - <entry>Compressed BGGR Bayer format used by the gspca driver.</entry> - </row> - <row id="V4L2-PIX-FMT-MR97310A"> - <entry><constant>V4L2_PIX_FMT_MR97310A</constant></entry> - <entry>'M310'</entry> - <entry>Compressed BGGR Bayer format used by the gspca driver.</entry> - </row> - <row id="V4L2-PIX-FMT-OV511"> - <entry><constant>V4L2_PIX_FMT_OV511</constant></entry> - <entry>'O511'</entry> - <entry>OV511 JPEG format used by the gspca driver.</entry> - </row> - <row id="V4L2-PIX-FMT-OV518"> - <entry><constant>V4L2_PIX_FMT_OV518</constant></entry> - <entry>'O518'</entry> - <entry>OV518 JPEG format used by the gspca driver.</entry> - </row> - <row id="V4L2-PIX-FMT-PJPG"> - <entry><constant>V4L2_PIX_FMT_PJPG</constant></entry> - <entry>'PJPG'</entry> - <entry>Pixart 73xx JPEG format used by the gspca driver.</entry> - </row> - <row id="V4L2-PIX-FMT-SQ905C"> - <entry><constant>V4L2_PIX_FMT_SQ905C</constant></entry> - <entry>'905C'</entry> - <entry>Compressed RGGB bayer format used by the gspca driver.</entry> - </row> - <row id="V4L2-PIX-FMT-MJPEG"> - <entry><constant>V4L2_PIX_FMT_MJPEG</constant></entry> - <entry>'MJPG'</entry> - <entry>Compressed format used by the Zoran driver</entry> - </row> - <row id="V4L2-PIX-FMT-PWC1"> - <entry><constant>V4L2_PIX_FMT_PWC1</constant></entry> - <entry>'PWC1'</entry> - <entry>Compressed format of the PWC driver.</entry> - </row> - <row id="V4L2-PIX-FMT-PWC2"> - <entry><constant>V4L2_PIX_FMT_PWC2</constant></entry> - <entry>'PWC2'</entry> - <entry>Compressed format of the PWC driver.</entry> - </row> - <row id="V4L2-PIX-FMT-SN9C10X"> - <entry><constant>V4L2_PIX_FMT_SN9C10X</constant></entry> - <entry>'S910'</entry> - <entry>Compressed format of the SN9C102 driver.</entry> - </row> - <row id="V4L2-PIX-FMT-SN9C20X-I420"> - <entry><constant>V4L2_PIX_FMT_SN9C20X_I420</constant></entry> - <entry>'S920'</entry> - <entry>YUV 4:2:0 format of the gspca sn9c20x driver.</entry> - </row> - <row id="V4L2-PIX-FMT-SN9C2028"> - <entry><constant>V4L2_PIX_FMT_SN9C2028</constant></entry> - <entry>'SONX'</entry> - <entry>Compressed GBRG bayer format of the gspca sn9c2028 driver.</entry> - </row> - <row id="V4L2-PIX-FMT-STV0680"> - <entry><constant>V4L2_PIX_FMT_STV0680</constant></entry> - <entry>'S680'</entry> - <entry>Bayer format of the gspca stv0680 driver.</entry> - </row> - <row id="V4L2-PIX-FMT-WNVA"> - <entry><constant>V4L2_PIX_FMT_WNVA</constant></entry> - <entry>'WNVA'</entry> - <entry><para>Used by the Winnov Videum driver, <ulink -url="http://www.thedirks.org/winnov/"> -http://www.thedirks.org/winnov/</ulink></para></entry> - </row> - <row id="V4L2-PIX-FMT-TM6000"> - <entry><constant>V4L2_PIX_FMT_TM6000</constant></entry> - <entry>'TM60'</entry> - <entry><para>Used by Trident tm6000</para></entry> - </row> - <row id="V4L2-PIX-FMT-CIT-YYVYUY"> - <entry><constant>V4L2_PIX_FMT_CIT_YYVYUY</constant></entry> - <entry>'CITV'</entry> - <entry><para>Used by xirlink CIT, found at IBM webcams.</para> - <para>Uses one line of Y then 1 line of VYUY</para> - </entry> - </row> - <row id="V4L2-PIX-FMT-KONICA420"> - <entry><constant>V4L2_PIX_FMT_KONICA420</constant></entry> - <entry>'KONI'</entry> - <entry><para>Used by Konica webcams.</para> - <para>YUV420 planar in blocks of 256 pixels.</para> - </entry> - </row> - <row id="V4L2-PIX-FMT-YYUV"> - <entry><constant>V4L2_PIX_FMT_YYUV</constant></entry> - <entry>'YYUV'</entry> - <entry>unknown</entry> - </row> - <row id="V4L2-PIX-FMT-Y4"> - <entry><constant>V4L2_PIX_FMT_Y4</constant></entry> - <entry>'Y04 '</entry> - <entry>Old 4-bit greyscale format. Only the least significant 4 bits of each byte are used, -the other bits are set to 0.</entry> - </row> - <row id="V4L2-PIX-FMT-Y6"> - <entry><constant>V4L2_PIX_FMT_Y6</constant></entry> - <entry>'Y06 '</entry> - <entry>Old 6-bit greyscale format. Only the least significant 6 bits of each byte are used, -the other bits are set to 0.</entry> - </row> - </tbody> - </tgroup> - </table> - </section> - - <!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: - --> diff --git a/Documentation/DocBook/v4l/planar-apis.xml b/Documentation/DocBook/v4l/planar-apis.xml deleted file mode 100644 index 878ce2040488..000000000000 --- a/Documentation/DocBook/v4l/planar-apis.xml +++ /dev/null @@ -1,62 +0,0 @@ -<section id="planar-apis"> - <title>Single- and multi-planar APIs</title> - - <para>Some devices require data for each input or output video frame - to be placed in discontiguous memory buffers. In such cases, one - video frame has to be addressed using more than one memory address, i.e. one - pointer per "plane". A plane is a sub-buffer of the current frame. For - examples of such formats see <xref linkend="pixfmt" />.</para> - - <para>Initially, V4L2 API did not support multi-planar buffers and a set of - extensions has been introduced to handle them. Those extensions constitute - what is being referred to as the "multi-planar API".</para> - - <para>Some of the V4L2 API calls and structures are interpreted differently, - depending on whether single- or multi-planar API is being used. An application - can choose whether to use one or the other by passing a corresponding buffer - type to its ioctl calls. Multi-planar versions of buffer types are suffixed - with an `_MPLANE' string. For a list of available multi-planar buffer types - see &v4l2-buf-type;. - </para> - - <section> - <title>Multi-planar formats</title> - <para>Multi-planar API introduces new multi-planar formats. Those formats - use a separate set of FourCC codes. It is important to distinguish between - the multi-planar API and a multi-planar format. Multi-planar API calls can - handle all single-planar formats as well (as long as they are passed in - multi-planar API structures), while the single-planar API cannot - handle multi-planar formats.</para> - </section> - - <section> - <title>Calls that distinguish between single and multi-planar APIs</title> - <variablelist> - <varlistentry> - <term>&VIDIOC-QUERYCAP;</term> - <listitem><para>Two additional multi-planar capabilities are added. They can - be set together with non-multi-planar ones for devices that handle - both single- and multi-planar formats.</para></listitem> - </varlistentry> - <varlistentry> - <term>&VIDIOC-G-FMT;, &VIDIOC-S-FMT;, &VIDIOC-TRY-FMT;</term> - <listitem><para>New structures for describing multi-planar formats are added: - &v4l2-pix-format-mplane; and &v4l2-plane-pix-format;. Drivers may - define new multi-planar formats, which have distinct FourCC codes from - the existing single-planar ones.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>&VIDIOC-QBUF;, &VIDIOC-DQBUF;, &VIDIOC-QUERYBUF;</term> - <listitem><para>A new &v4l2-plane; structure for describing planes is added. - Arrays of this structure are passed in the new - <structfield>m.planes</structfield> field of &v4l2-buffer;.</para> - </listitem> - </varlistentry> - <varlistentry> - <term>&VIDIOC-REQBUFS;</term> - <listitem><para>Will allocate multi-planar buffers as requested.</para></listitem> - </varlistentry> - </variablelist> - </section> -</section> diff --git a/Documentation/DocBook/v4l/remote_controllers.xml b/Documentation/DocBook/v4l/remote_controllers.xml deleted file mode 100644 index 160e464d44b7..000000000000 --- a/Documentation/DocBook/v4l/remote_controllers.xml +++ /dev/null @@ -1,177 +0,0 @@ -<title>Remote Controllers</title> -<section id="Remote_controllers_Intro"> -<title>Introduction</title> - -<para>Currently, most analog and digital devices have a Infrared input for remote controllers. Each -manufacturer has their own type of control. It is not rare for the same manufacturer to ship different -types of controls, depending on the device.</para> -<para>Unfortunately, for several years, there was no effort to create uniform IR keycodes for -different devices. This caused the same IR keyname to be mapped completely differently on -different IR devices. This resulted that the same IR keyname to be mapped completely different on -different IR's. Due to that, V4L2 API now specifies a standard for mapping Media keys on IR.</para> -<para>This standard should be used by both V4L/DVB drivers and userspace applications</para> -<para>The modules register the remote as keyboard within the linux input layer. This means that the IR key strokes will look like normal keyboard key strokes (if CONFIG_INPUT_KEYBOARD is enabled). Using the event devices (CONFIG_INPUT_EVDEV) it is possible for applications to access the remote via /dev/input/event devices.</para> - -<table pgwide="1" frame="none" id="rc_standard_keymap"> -<title>IR default keymapping</title> -<tgroup cols="3"> -&cs-str; -<tbody valign="top"> -<row> -<entry>Key code</entry> -<entry>Meaning</entry> -<entry>Key examples on IR</entry> -</row> - -<row><entry><emphasis role="bold">Numeric keys</emphasis></entry></row> - -<row><entry><constant>KEY_0</constant></entry><entry>Keyboard digit 0</entry><entry>0</entry></row> -<row><entry><constant>KEY_1</constant></entry><entry>Keyboard digit 1</entry><entry>1</entry></row> -<row><entry><constant>KEY_2</constant></entry><entry>Keyboard digit 2</entry><entry>2</entry></row> -<row><entry><constant>KEY_3</constant></entry><entry>Keyboard digit 3</entry><entry>3</entry></row> -<row><entry><constant>KEY_4</constant></entry><entry>Keyboard digit 4</entry><entry>4</entry></row> -<row><entry><constant>KEY_5</constant></entry><entry>Keyboard digit 5</entry><entry>5</entry></row> -<row><entry><constant>KEY_6</constant></entry><entry>Keyboard digit 6</entry><entry>6</entry></row> -<row><entry><constant>KEY_7</constant></entry><entry>Keyboard digit 7</entry><entry>7</entry></row> -<row><entry><constant>KEY_8</constant></entry><entry>Keyboard digit 8</entry><entry>8</entry></row> -<row><entry><constant>KEY_9</constant></entry><entry>Keyboard digit 9</entry><entry>9</entry></row> - -<row><entry><emphasis role="bold">Movie play control</emphasis></entry></row> - -<row><entry><constant>KEY_FORWARD</constant></entry><entry>Instantly advance in time</entry><entry>>> / FORWARD</entry></row> -<row><entry><constant>KEY_BACK</constant></entry><entry>Instantly go back in time</entry><entry><<< / BACK</entry></row> -<row><entry><constant>KEY_FASTFORWARD</constant></entry><entry>Play movie faster</entry><entry>>>> / FORWARD</entry></row> -<row><entry><constant>KEY_REWIND</constant></entry><entry>Play movie back</entry><entry>REWIND / BACKWARD</entry></row> -<row><entry><constant>KEY_NEXT</constant></entry><entry>Select next chapter / sub-chapter / interval</entry><entry>NEXT / SKIP</entry></row> -<row><entry><constant>KEY_PREVIOUS</constant></entry><entry>Select previous chapter / sub-chapter / interval</entry><entry><< / PREV / PREVIOUS</entry></row> -<row><entry><constant>KEY_AGAIN</constant></entry><entry>Repeat the video or a video interval</entry><entry>REPEAT / LOOP / RECALL</entry></row> -<row><entry><constant>KEY_PAUSE</constant></entry><entry>Pause sroweam</entry><entry>PAUSE / FREEZE</entry></row> -<row><entry><constant>KEY_PLAY</constant></entry><entry>Play movie at the normal timeshift</entry><entry>NORMAL TIMESHIFT / LIVE / ></entry></row> -<row><entry><constant>KEY_PLAYPAUSE</constant></entry><entry>Alternate between play and pause</entry><entry>PLAY / PAUSE</entry></row> -<row><entry><constant>KEY_STOP</constant></entry><entry>Stop sroweam</entry><entry>STOP</entry></row> -<row><entry><constant>KEY_RECORD</constant></entry><entry>Start/stop recording sroweam</entry><entry>CAPTURE / REC / RECORD/PAUSE</entry></row> -<row><entry><constant>KEY_CAMERA</constant></entry><entry>Take a picture of the image</entry><entry>CAMERA ICON / CAPTURE / SNAPSHOT</entry></row> -<row><entry><constant>KEY_SHUFFLE</constant></entry><entry>Enable shuffle mode</entry><entry>SHUFFLE</entry></row> -<row><entry><constant>KEY_TIME</constant></entry><entry>Activate time shift mode</entry><entry>TIME SHIFT</entry></row> -<row><entry><constant>KEY_TITLE</constant></entry><entry>Allow changing the chapter</entry><entry>CHAPTER</entry></row> -<row><entry><constant>KEY_SUBTITLE</constant></entry><entry>Allow changing the subtitle</entry><entry>SUBTITLE</entry></row> - -<row><entry><emphasis role="bold">Image control</emphasis></entry></row> - -<row><entry><constant>KEY_BRIGHTNESSDOWN</constant></entry><entry>Decrease Brightness</entry><entry>BRIGHTNESS DECREASE</entry></row> -<row><entry><constant>KEY_BRIGHTNESSUP</constant></entry><entry>Increase Brightness</entry><entry>BRIGHTNESS INCREASE</entry></row> - -<row><entry><constant>KEY_ANGLE</constant></entry><entry>Switch video camera angle (on videos with more than one angle stored)</entry><entry>ANGLE / SWAP</entry></row> -<row><entry><constant>KEY_EPG</constant></entry><entry>Open the Elecrowonic Play Guide (EPG)</entry><entry>EPG / GUIDE</entry></row> -<row><entry><constant>KEY_TEXT</constant></entry><entry>Activate/change closed caption mode</entry><entry>CLOSED CAPTION/TELETEXT / DVD TEXT / TELETEXT / TTX</entry></row> - -<row><entry><emphasis role="bold">Audio control</emphasis></entry></row> - -<row><entry><constant>KEY_AUDIO</constant></entry><entry>Change audio source</entry><entry>AUDIO SOURCE / AUDIO / MUSIC</entry></row> -<row><entry><constant>KEY_MUTE</constant></entry><entry>Mute/unmute audio</entry><entry>MUTE / DEMUTE / UNMUTE</entry></row> -<row><entry><constant>KEY_VOLUMEDOWN</constant></entry><entry>Decrease volume</entry><entry>VOLUME- / VOLUME DOWN</entry></row> -<row><entry><constant>KEY_VOLUMEUP</constant></entry><entry>Increase volume</entry><entry>VOLUME+ / VOLUME UP</entry></row> -<row><entry><constant>KEY_MODE</constant></entry><entry>Change sound mode</entry><entry>MONO/STEREO</entry></row> -<row><entry><constant>KEY_LANGUAGE</constant></entry><entry>Select Language</entry><entry>1ST / 2ND LANGUAGE / DVD LANG / MTS/SAP / MTS SEL</entry></row> - -<row><entry><emphasis role="bold">Channel control</emphasis></entry></row> - -<row><entry><constant>KEY_CHANNEL</constant></entry><entry>Go to the next favorite channel</entry><entry>ALT / CHANNEL / CH SURFING / SURF / FAV</entry></row> -<row><entry><constant>KEY_CHANNELDOWN</constant></entry><entry>Decrease channel sequencially</entry><entry>CHANNEL - / CHANNEL DOWN / DOWN</entry></row> -<row><entry><constant>KEY_CHANNELUP</constant></entry><entry>Increase channel sequencially</entry><entry>CHANNEL + / CHANNEL UP / UP</entry></row> -<row><entry><constant>KEY_DIGITS</constant></entry><entry>Use more than one digit for channel</entry><entry>PLUS / 100/ 1xx / xxx / -/-- / Single Double Triple Digit</entry></row> -<row><entry><constant>KEY_SEARCH</constant></entry><entry>Start channel autoscan</entry><entry>SCAN / AUTOSCAN</entry></row> - -<row><entry><emphasis role="bold">Colored keys</emphasis></entry></row> - -<row><entry><constant>KEY_BLUE</constant></entry><entry>IR Blue key</entry><entry>BLUE</entry></row> -<row><entry><constant>KEY_GREEN</constant></entry><entry>IR Green Key</entry><entry>GREEN</entry></row> -<row><entry><constant>KEY_RED</constant></entry><entry>IR Red key</entry><entry>RED</entry></row> -<row><entry><constant>KEY_YELLOW</constant></entry><entry>IR Yellow key</entry><entry> YELLOW</entry></row> - -<row><entry><emphasis role="bold">Media selection</emphasis></entry></row> - -<row><entry><constant>KEY_CD</constant></entry><entry>Change input source to Compact Disc</entry><entry>CD</entry></row> -<row><entry><constant>KEY_DVD</constant></entry><entry>Change input to DVD</entry><entry>DVD / DVD MENU</entry></row> -<row><entry><constant>KEY_EJECTCLOSECD</constant></entry><entry>Open/close the CD/DVD player</entry><entry>-> ) / CLOSE / OPEN</entry></row> - -<row><entry><constant>KEY_MEDIA</constant></entry><entry>Turn on/off Media application</entry><entry>PC/TV / TURN ON/OFF APP</entry></row> -<row><entry><constant>KEY_PC</constant></entry><entry>Selects from TV to PC</entry><entry>PC</entry></row> -<row><entry><constant>KEY_RADIO</constant></entry><entry>Put into AM/FM radio mode</entry><entry>RADIO / TV/FM / TV/RADIO / FM / FM/RADIO</entry></row> -<row><entry><constant>KEY_TV</constant></entry><entry>Select tv mode</entry><entry>TV / LIVE TV</entry></row> -<row><entry><constant>KEY_TV2</constant></entry><entry>Select Cable mode</entry><entry>AIR/CBL</entry></row> -<row><entry><constant>KEY_VCR</constant></entry><entry>Select VCR mode</entry><entry>VCR MODE / DTR</entry></row> -<row><entry><constant>KEY_VIDEO</constant></entry><entry>Alternate between input modes</entry><entry>SOURCE / SELECT / DISPLAY / SWITCH INPUTS / VIDEO</entry></row> - -<row><entry><emphasis role="bold">Power control</emphasis></entry></row> - -<row><entry><constant>KEY_POWER</constant></entry><entry>Turn on/off computer</entry><entry>SYSTEM POWER / COMPUTER POWER</entry></row> -<row><entry><constant>KEY_POWER2</constant></entry><entry>Turn on/off application</entry><entry>TV ON/OFF / POWER</entry></row> -<row><entry><constant>KEY_SLEEP</constant></entry><entry>Activate sleep timer</entry><entry>SLEEP / SLEEP TIMER</entry></row> -<row><entry><constant>KEY_SUSPEND</constant></entry><entry>Put computer into suspend mode</entry><entry>STANDBY / SUSPEND</entry></row> - -<row><entry><emphasis role="bold">Window control</emphasis></entry></row> - -<row><entry><constant>KEY_CLEAR</constant></entry><entry>Stop sroweam and return to default input video/audio</entry><entry>CLEAR / RESET / BOSS KEY</entry></row> -<row><entry><constant>KEY_CYCLEWINDOWS</constant></entry><entry>Minimize windows and move to the next one</entry><entry>ALT-TAB / MINIMIZE / DESKTOP</entry></row> -<row><entry><constant>KEY_FAVORITES</constant></entry><entry>Open the favorites sroweam window</entry><entry>TV WALL / Favorites</entry></row> -<row><entry><constant>KEY_MENU</constant></entry><entry>Call application menu</entry><entry>2ND CONTROLS (USA: MENU) / DVD/MENU / SHOW/HIDE CTRL</entry></row> -<row><entry><constant>KEY_NEW</constant></entry><entry>Open/Close Picture in Picture</entry><entry>PIP</entry></row> -<row><entry><constant>KEY_OK</constant></entry><entry>Send a confirmation code to application</entry><entry>OK / ENTER / RETURN</entry></row> -<row><entry><constant>KEY_SCREEN</constant></entry><entry>Select screen aspect ratio</entry><entry>4:3 16:9 SELECT</entry></row> -<row><entry><constant>KEY_ZOOM</constant></entry><entry>Put device into zoom/full screen mode</entry><entry>ZOOM / FULL SCREEN / ZOOM+ / HIDE PANNEL / SWITCH</entry></row> - -<row><entry><emphasis role="bold">Navigation keys</emphasis></entry></row> - -<row><entry><constant>KEY_ESC</constant></entry><entry>Cancel current operation</entry><entry>CANCEL / BACK</entry></row> -<row><entry><constant>KEY_HELP</constant></entry><entry>Open a Help window</entry><entry>HELP</entry></row> -<row><entry><constant>KEY_HOMEPAGE</constant></entry><entry>Navigate to Homepage</entry><entry>HOME</entry></row> -<row><entry><constant>KEY_INFO</constant></entry><entry>Open On Screen Display</entry><entry>DISPLAY INFORMATION / OSD</entry></row> -<row><entry><constant>KEY_WWW</constant></entry><entry>Open the default browser</entry><entry>WEB</entry></row> -<row><entry><constant>KEY_UP</constant></entry><entry>Up key</entry><entry>UP</entry></row> -<row><entry><constant>KEY_DOWN</constant></entry><entry>Down key</entry><entry>DOWN</entry></row> -<row><entry><constant>KEY_LEFT</constant></entry><entry>Left key</entry><entry>LEFT</entry></row> -<row><entry><constant>KEY_RIGHT</constant></entry><entry>Right key</entry><entry>RIGHT</entry></row> - -<row><entry><emphasis role="bold">Miscellaneous keys</emphasis></entry></row> - -<row><entry><constant>KEY_DOT</constant></entry><entry>Return a dot</entry><entry>.</entry></row> -<row><entry><constant>KEY_FN</constant></entry><entry>Select a function</entry><entry>FUNCTION</entry></row> - -</tbody> -</tgroup> -</table> - -<para>It should be noticed that, sometimes, there some fundamental missing keys at some cheaper IR's. Due to that, it is recommended to:</para> - -<table pgwide="1" frame="none" id="rc_keymap_notes"> -<title>Notes</title> -<tgroup cols="1"> -&cs-str; -<tbody valign="top"> -<row> -<entry>On simpler IR's, without separate channel keys, you need to map UP as <constant>KEY_CHANNELUP</constant></entry> -</row><row> -<entry>On simpler IR's, without separate channel keys, you need to map DOWN as <constant>KEY_CHANNELDOWN</constant></entry> -</row><row> -<entry>On simpler IR's, without separate volume keys, you need to map LEFT as <constant>KEY_VOLUMEDOWN</constant></entry> -</row><row> -<entry>On simpler IR's, without separate volume keys, you need to map RIGHT as <constant>KEY_VOLUMEUP</constant></entry> -</row> -</tbody> -</tgroup> -</table> - -</section> - -<section id="Remote_controllers_table_change"> -<title>Changing default Remote Controller mappings</title> -<para>The event interface provides two ioctls to be used against -the /dev/input/event device, to allow changing the default -keymapping.</para> - -<para>This program demonstrates how to replace the keymap tables.</para> -&sub-keytable-c; -</section> - -&sub-lirc_device_interface; diff --git a/Documentation/DocBook/v4l/subdev-formats.xml b/Documentation/DocBook/v4l/subdev-formats.xml deleted file mode 100644 index 8d3409d2c632..000000000000 --- a/Documentation/DocBook/v4l/subdev-formats.xml +++ /dev/null @@ -1,2572 +0,0 @@ -<section id="v4l2-mbus-format"> - <title>Media Bus Formats</title> - - <table pgwide="1" frame="none" id="v4l2-mbus-framefmt"> - <title>struct <structname>v4l2_mbus_framefmt</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>width</structfield></entry> - <entry>Image width, in pixels.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>height</structfield></entry> - <entry>Image height, in pixels.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>code</structfield></entry> - <entry>Format code, from &v4l2-mbus-pixelcode;.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>field</structfield></entry> - <entry>Field order, from &v4l2-field;. See - <xref linkend="field-order" /> for details.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>colorspace</structfield></entry> - <entry>Image colorspace, from &v4l2-colorspace;. See - <xref linkend="colorspaces" /> for details.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[7]</entry> - <entry>Reserved for future extensions. Applications and drivers must - set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <section id="v4l2-mbus-pixelcode"> - <title>Media Bus Pixel Codes</title> - - <para>The media bus pixel codes describe image formats as flowing over - physical busses (both between separate physical components and inside SoC - devices). This should not be confused with the V4L2 pixel formats that - describe, using four character codes, image formats as stored in memory. - </para> - - <para>While there is a relationship between image formats on busses and - image formats in memory (a raw Bayer image won't be magically converted to - JPEG just by storing it to memory), there is no one-to-one correspondance - between them.</para> - - <section> - <title>Packed RGB Formats</title> - - <para>Those formats transfer pixel data as red, green and blue components. - The format code is made of the following information. - <itemizedlist> - <listitem><para>The red, green and blue components order code, as encoded in a - pixel sample. Possible values are RGB and BGR.</para></listitem> - <listitem><para>The number of bits per component, for each component. The values - can be different for all components. Common values are 555 and 565.</para> - </listitem> - <listitem><para>The number of bus samples per pixel. Pixels that are wider than - the bus width must be transferred in multiple samples. Common values are - 1 and 2.</para></listitem> - <listitem><para>The bus width.</para></listitem> - <listitem><para>For formats where the total number of bits per pixel is smaller - than the number of bus samples per pixel times the bus width, a padding - value stating if the bytes are padded in their most high order bits - (PADHI) or low order bits (PADLO).</para></listitem> - <listitem><para>For formats where the number of bus samples per pixel is larger - than 1, an endianness value stating if the pixel is transferred MSB first - (BE) or LSB first (LE).</para></listitem> - </itemizedlist> - </para> - - <para>For instance, a format where pixels are encoded as 5-bits red, 5-bits - green and 5-bit blue values padded on the high bit, transferred as 2 8-bit - samples per pixel with the most significant bits (padding, red and half of - the green value) transferred first will be named - <constant>V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE</constant>. - </para> - - <para>The following tables list existing packet RGB formats.</para> - - <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-rgb"> - <title>RGB formats</title> - <tgroup cols="11"> - <colspec colname="id" align="left" /> - <colspec colname="code" align="center"/> - <colspec colname="bit" /> - <colspec colnum="4" colname="b07" align="center" /> - <colspec colnum="5" colname="b06" align="center" /> - <colspec colnum="6" colname="b05" align="center" /> - <colspec colnum="7" colname="b04" align="center" /> - <colspec colnum="8" colname="b03" align="center" /> - <colspec colnum="9" colname="b02" align="center" /> - <colspec colnum="10" colname="b01" align="center" /> - <colspec colnum="11" colname="b00" align="center" /> - <spanspec namest="b07" nameend="b00" spanname="b0" /> - <thead> - <row> - <entry>Identifier</entry> - <entry>Code</entry> - <entry></entry> - <entry spanname="b0">Data organization</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>Bit</entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - </row> - </thead> - <tbody valign="top"> - <row id="V4L2-MBUS-FMT-RGB444-2X8-PADHI-BE"> - <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE</entry> - <entry>0x1001</entry> - <entry></entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-RGB444-2X8-PADHI-LE"> - <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE</entry> - <entry>0x1002</entry> - <entry></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-RGB555-2X8-PADHI-BE"> - <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE</entry> - <entry>0x1003</entry> - <entry></entry> - <entry>0</entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-RGB555-2X8-PADHI-LE"> - <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE</entry> - <entry>0x1004</entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>0</entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-BGR565-2X8-BE"> - <entry>V4L2_MBUS_FMT_BGR565_2X8_BE</entry> - <entry>0x1005</entry> - <entry></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-BGR565-2X8-LE"> - <entry>V4L2_MBUS_FMT_BGR565_2X8_LE</entry> - <entry>0x1006</entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-RGB565-2X8-BE"> - <entry>V4L2_MBUS_FMT_RGB565_2X8_BE</entry> - <entry>0x1007</entry> - <entry></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-RGB565-2X8-LE"> - <entry>V4L2_MBUS_FMT_RGB565_2X8_LE</entry> - <entry>0x1008</entry> - <entry></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - </row> - </tbody> - </tgroup> - </table> - </section> - - <section> - <title>Bayer Formats</title> - - <para>Those formats transfer pixel data as red, green and blue components. - The format code is made of the following information. - <itemizedlist> - <listitem><para>The red, green and blue components order code, as encoded in a - pixel sample. The possible values are shown in <xref - linkend="bayer-patterns" />.</para></listitem> - <listitem><para>The number of bits per pixel component. All components are - transferred on the same number of bits. Common values are 8, 10 and 12.</para> - </listitem> - <listitem><para>If the pixel components are DPCM-compressed, a mention of the - DPCM compression and the number of bits per compressed pixel component.</para> - </listitem> - <listitem><para>The number of bus samples per pixel. Pixels that are wider than - the bus width must be transferred in multiple samples. Common values are - 1 and 2.</para></listitem> - <listitem><para>The bus width.</para></listitem> - <listitem><para>For formats where the total number of bits per pixel is smaller - than the number of bus samples per pixel times the bus width, a padding - value stating if the bytes are padded in their most high order bits - (PADHI) or low order bits (PADLO).</para></listitem> - <listitem><para>For formats where the number of bus samples per pixel is larger - than 1, an endianness value stating if the pixel is transferred MSB first - (BE) or LSB first (LE).</para></listitem> - </itemizedlist> - </para> - - <para>For instance, a format with uncompressed 10-bit Bayer components - arranged in a red, green, green, blue pattern transferred as 2 8-bit - samples per pixel with the least significant bits transferred first will - be named <constant>V4L2_MBUS_FMT_SRGGB10_2X8_PADHI_LE</constant>. - </para> - - <figure id="bayer-patterns"> - <title>Bayer Patterns</title> - <mediaobject> - <imageobject> - <imagedata fileref="bayer.pdf" format="PS" /> - </imageobject> - <imageobject> - <imagedata fileref="bayer.png" format="PNG" /> - </imageobject> - <textobject> - <phrase>Bayer filter color patterns</phrase> - </textobject> - </mediaobject> - </figure> - - <para>The following table lists existing packet Bayer formats. The data - organization is given as an example for the first pixel only.</para> - - <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-bayer"> - <title>Bayer Formats</title> - <tgroup cols="15"> - <colspec colname="id" align="left" /> - <colspec colname="code" align="center"/> - <colspec colname="bit" /> - <colspec colnum="4" colname="b11" align="center" /> - <colspec colnum="5" colname="b10" align="center" /> - <colspec colnum="6" colname="b09" align="center" /> - <colspec colnum="7" colname="b08" align="center" /> - <colspec colnum="8" colname="b07" align="center" /> - <colspec colnum="9" colname="b06" align="center" /> - <colspec colnum="10" colname="b05" align="center" /> - <colspec colnum="11" colname="b04" align="center" /> - <colspec colnum="12" colname="b03" align="center" /> - <colspec colnum="13" colname="b02" align="center" /> - <colspec colnum="14" colname="b01" align="center" /> - <colspec colnum="15" colname="b00" align="center" /> - <spanspec namest="b11" nameend="b00" spanname="b0" /> - <thead> - <row> - <entry>Identifier</entry> - <entry>Code</entry> - <entry></entry> - <entry spanname="b0">Data organization</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>Bit</entry> - <entry>11</entry> - <entry>10</entry> - <entry>9</entry> - <entry>8</entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - </row> - </thead> - <tbody valign="top"> - <row id="V4L2-MBUS-FMT-SBGGR8-1X8"> - <entry>V4L2_MBUS_FMT_SBGGR8_1X8</entry> - <entry>0x3001</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SGBRG8-1X8"> - <entry>V4L2_MBUS_FMT_SGBRG8_1X8</entry> - <entry>0x3013</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SGRBG8-1X8"> - <entry>V4L2_MBUS_FMT_SGRBG8_1X8</entry> - <entry>0x3002</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SRGGB8-1X8"> - <entry>V4L2_MBUS_FMT_SRGGB8_1X8</entry> - <entry>0x3014</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>r<subscript>7</subscript></entry> - <entry>r<subscript>6</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SBGGR10-DPCM8-1X8"> - <entry>V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8</entry> - <entry>0x300b</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SGBRG10-DPCM8-1X8"> - <entry>V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8</entry> - <entry>0x300c</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SGRBG10-DPCM8-1X8"> - <entry>V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8</entry> - <entry>0x3009</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SRGGB10-DPCM8-1X8"> - <entry>V4L2_MBUS_FMT_SRGGB10_DPCM8_1X8</entry> - <entry>0x300d</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>r<subscript>7</subscript></entry> - <entry>r<subscript>6</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SBGGR10-2X8-PADHI-BE"> - <entry>V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE</entry> - <entry>0x3003</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>b<subscript>9</subscript></entry> - <entry>b<subscript>8</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SBGGR10-2X8-PADHI-LE"> - <entry>V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE</entry> - <entry>0x3004</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>b<subscript>9</subscript></entry> - <entry>b<subscript>8</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SBGGR10-2X8-PADLO-BE"> - <entry>V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE</entry> - <entry>0x3005</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>b<subscript>9</subscript></entry> - <entry>b<subscript>8</subscript></entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - </row> - <row id="V4L2-MBUS-FMT-SBGGR10-2X8-PADLO-LE"> - <entry>V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE</entry> - <entry>0x3006</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>b<subscript>9</subscript></entry> - <entry>b<subscript>8</subscript></entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SBGGR10-1X10"> - <entry>V4L2_MBUS_FMT_SBGGR10_1X10</entry> - <entry>0x3007</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>b<subscript>9</subscript></entry> - <entry>b<subscript>8</subscript></entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SGBRG10-1X10"> - <entry>V4L2_MBUS_FMT_SGBRG10_1X10</entry> - <entry>0x300e</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>g<subscript>9</subscript></entry> - <entry>g<subscript>8</subscript></entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SGRBG10-1X10"> - <entry>V4L2_MBUS_FMT_SGRBG10_1X10</entry> - <entry>0x300a</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>g<subscript>9</subscript></entry> - <entry>g<subscript>8</subscript></entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SRGGB10-1X10"> - <entry>V4L2_MBUS_FMT_SRGGB10_1X10</entry> - <entry>0x300f</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>r<subscript>9</subscript></entry> - <entry>r<subscript>8</subscript></entry> - <entry>r<subscript>7</subscript></entry> - <entry>r<subscript>6</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SBGGR12-1X12"> - <entry>V4L2_MBUS_FMT_SBGGR12_1X12</entry> - <entry>0x3008</entry> - <entry></entry> - <entry>b<subscript>11</subscript></entry> - <entry>b<subscript>10</subscript></entry> - <entry>b<subscript>9</subscript></entry> - <entry>b<subscript>8</subscript></entry> - <entry>b<subscript>7</subscript></entry> - <entry>b<subscript>6</subscript></entry> - <entry>b<subscript>5</subscript></entry> - <entry>b<subscript>4</subscript></entry> - <entry>b<subscript>3</subscript></entry> - <entry>b<subscript>2</subscript></entry> - <entry>b<subscript>1</subscript></entry> - <entry>b<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SGBRG12-1X12"> - <entry>V4L2_MBUS_FMT_SGBRG12_1X12</entry> - <entry>0x3010</entry> - <entry></entry> - <entry>g<subscript>11</subscript></entry> - <entry>g<subscript>10</subscript></entry> - <entry>g<subscript>9</subscript></entry> - <entry>g<subscript>8</subscript></entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SGRBG12-1X12"> - <entry>V4L2_MBUS_FMT_SGRBG12_1X12</entry> - <entry>0x3011</entry> - <entry></entry> - <entry>g<subscript>11</subscript></entry> - <entry>g<subscript>10</subscript></entry> - <entry>g<subscript>9</subscript></entry> - <entry>g<subscript>8</subscript></entry> - <entry>g<subscript>7</subscript></entry> - <entry>g<subscript>6</subscript></entry> - <entry>g<subscript>5</subscript></entry> - <entry>g<subscript>4</subscript></entry> - <entry>g<subscript>3</subscript></entry> - <entry>g<subscript>2</subscript></entry> - <entry>g<subscript>1</subscript></entry> - <entry>g<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-SRGGB12-1X12"> - <entry>V4L2_MBUS_FMT_SRGGB12_1X12</entry> - <entry>0x3012</entry> - <entry></entry> - <entry>r<subscript>11</subscript></entry> - <entry>r<subscript>10</subscript></entry> - <entry>r<subscript>9</subscript></entry> - <entry>r<subscript>8</subscript></entry> - <entry>r<subscript>7</subscript></entry> - <entry>r<subscript>6</subscript></entry> - <entry>r<subscript>5</subscript></entry> - <entry>r<subscript>4</subscript></entry> - <entry>r<subscript>3</subscript></entry> - <entry>r<subscript>2</subscript></entry> - <entry>r<subscript>1</subscript></entry> - <entry>r<subscript>0</subscript></entry> - </row> - </tbody> - </tgroup> - </table> - </section> - - <section> - <title>Packed YUV Formats</title> - - <para>Those data formats transfer pixel data as (possibly downsampled) Y, U - and V components. The format code is made of the following information. - <itemizedlist> - <listitem><para>The Y, U and V components order code, as transferred on the - bus. Possible values are YUYV, UYVY, YVYU and VYUY.</para></listitem> - <listitem><para>The number of bits per pixel component. All components are - transferred on the same number of bits. Common values are 8, 10 and 12.</para> - </listitem> - <listitem><para>The number of bus samples per pixel. Pixels that are wider than - the bus width must be transferred in multiple samples. Common values are - 1, 1.5 (encoded as 1_5) and 2.</para></listitem> - <listitem><para>The bus width. When the bus width is larger than the number of - bits per pixel component, several components are packed in a single bus - sample. The components are ordered as specified by the order code, with - components on the left of the code transferred in the high order bits. - Common values are 8 and 16.</para> - </listitem> - </itemizedlist> - </para> - - <para>For instance, a format where pixels are encoded as 8-bit YUV values - downsampled to 4:2:2 and transferred as 2 8-bit bus samples per pixel in the - U, Y, V, Y order will be named <constant>V4L2_MBUS_FMT_UYVY8_2X8</constant>. - </para> - - <para>The following table lisst existing packet YUV formats.</para> - - <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-yuv8"> - <title>YUV Formats</title> - <tgroup cols="23"> - <colspec colname="id" align="left" /> - <colspec colname="code" align="center"/> - <colspec colname="bit" /> - <colspec colnum="4" colname="b19" align="center" /> - <colspec colnum="5" colname="b18" align="center" /> - <colspec colnum="6" colname="b17" align="center" /> - <colspec colnum="7" colname="b16" align="center" /> - <colspec colnum="8" colname="b15" align="center" /> - <colspec colnum="9" colname="b14" align="center" /> - <colspec colnum="10" colname="b13" align="center" /> - <colspec colnum="11" colname="b12" align="center" /> - <colspec colnum="12" colname="b11" align="center" /> - <colspec colnum="13" colname="b10" align="center" /> - <colspec colnum="14" colname="b09" align="center" /> - <colspec colnum="15" colname="b08" align="center" /> - <colspec colnum="16" colname="b07" align="center" /> - <colspec colnum="17" colname="b06" align="center" /> - <colspec colnum="18" colname="b05" align="center" /> - <colspec colnum="19" colname="b04" align="center" /> - <colspec colnum="20" colname="b03" align="center" /> - <colspec colnum="21" colname="b02" align="center" /> - <colspec colnum="22" colname="b01" align="center" /> - <colspec colnum="23" colname="b00" align="center" /> - <spanspec namest="b19" nameend="b00" spanname="b0" /> - <thead> - <row> - <entry>Identifier</entry> - <entry>Code</entry> - <entry></entry> - <entry spanname="b0">Data organization</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>Bit</entry> - <entry>19</entry> - <entry>18</entry> - <entry>17</entry> - <entry>16</entry> - <entry>15</entry> - <entry>14</entry> - <entry>13</entry> - <entry>12</entry> - <entry>11</entry> - <entry>10</entry> - <entry>9</entry> - <entry>8</entry> - <entry>7</entry> - <entry>6</entry> - <entry>5</entry> - <entry>4</entry> - <entry>3</entry> - <entry>2</entry> - <entry>1</entry> - <entry>0</entry> - </row> - </thead> - <tbody valign="top"> - <row id="V4L2-MBUS-FMT-Y8-1X8"> - <entry>V4L2_MBUS_FMT_Y8_1X8</entry> - <entry>0x2001</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-UYVY8-1_5X8"> - <entry>V4L2_MBUS_FMT_UYVY8_1_5X8</entry> - <entry>0x2002</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-VYUY8-1_5X8"> - <entry>V4L2_MBUS_FMT_VYUY8_1_5X8</entry> - <entry>0x2003</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-YUYV8-1_5X8"> - <entry>V4L2_MBUS_FMT_YUYV8_1_5X8</entry> - <entry>0x2004</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-YVYU8-1_5X8"> - <entry>V4L2_MBUS_FMT_YVYU8_1_5X8</entry> - <entry>0x2005</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-UYVY8-2X8"> - <entry>V4L2_MBUS_FMT_UYVY8_2X8</entry> - <entry>0x2006</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-VYUY8-2X8"> - <entry>V4L2_MBUS_FMT_VYUY8_2X8</entry> - <entry>0x2007</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-YUYV8-2X8"> - <entry>V4L2_MBUS_FMT_YUYV8_2X8</entry> - <entry>0x2008</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-YVYU8-2X8"> - <entry>V4L2_MBUS_FMT_YVYU8_2X8</entry> - <entry>0x2009</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-Y10-1X10"> - <entry>V4L2_MBUS_FMT_Y10_1X10</entry> - <entry>0x200a</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>9</subscript></entry> - <entry>y<subscript>8</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-YUYV10-2X10"> - <entry>V4L2_MBUS_FMT_YUYV10_2X10</entry> - <entry>0x200b</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>9</subscript></entry> - <entry>y<subscript>8</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>u<subscript>9</subscript></entry> - <entry>u<subscript>8</subscript></entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>9</subscript></entry> - <entry>y<subscript>8</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>v<subscript>9</subscript></entry> - <entry>v<subscript>8</subscript></entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-YVYU10-2X10"> - <entry>V4L2_MBUS_FMT_YVYU10_2X10</entry> - <entry>0x200c</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>9</subscript></entry> - <entry>y<subscript>8</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>v<subscript>9</subscript></entry> - <entry>v<subscript>8</subscript></entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>9</subscript></entry> - <entry>y<subscript>8</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>u<subscript>9</subscript></entry> - <entry>u<subscript>8</subscript></entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-Y12-1X12"> - <entry>V4L2_MBUS_FMT_Y12_1X12</entry> - <entry>0x2013</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>11</subscript></entry> - <entry>y<subscript>10</subscript></entry> - <entry>y<subscript>9</subscript></entry> - <entry>y<subscript>8</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-UYVY8-1X16"> - <entry>V4L2_MBUS_FMT_UYVY8_1X16</entry> - <entry>0x200f</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-VYUY8-1X16"> - <entry>V4L2_MBUS_FMT_VYUY8_1X16</entry> - <entry>0x2010</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-YUYV8-1X16"> - <entry>V4L2_MBUS_FMT_YUYV8_1X16</entry> - <entry>0x2011</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-YVYU8-1X16"> - <entry>V4L2_MBUS_FMT_YVYU8_1X16</entry> - <entry>0x2012</entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>-</entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-YUYV10-1X20"> - <entry>V4L2_MBUS_FMT_YUYV10_1X20</entry> - <entry>0x200d</entry> - <entry></entry> - <entry>y<subscript>9</subscript></entry> - <entry>y<subscript>8</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - <entry>u<subscript>9</subscript></entry> - <entry>u<subscript>8</subscript></entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>y<subscript>9</subscript></entry> - <entry>y<subscript>8</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - <entry>v<subscript>9</subscript></entry> - <entry>v<subscript>8</subscript></entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row id="V4L2-MBUS-FMT-YVYU10-1X20"> - <entry>V4L2_MBUS_FMT_YVYU10_1X20</entry> - <entry>0x200e</entry> - <entry></entry> - <entry>y<subscript>9</subscript></entry> - <entry>y<subscript>8</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - <entry>v<subscript>9</subscript></entry> - <entry>v<subscript>8</subscript></entry> - <entry>v<subscript>7</subscript></entry> - <entry>v<subscript>6</subscript></entry> - <entry>v<subscript>5</subscript></entry> - <entry>v<subscript>4</subscript></entry> - <entry>v<subscript>3</subscript></entry> - <entry>v<subscript>2</subscript></entry> - <entry>v<subscript>1</subscript></entry> - <entry>v<subscript>0</subscript></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>y<subscript>9</subscript></entry> - <entry>y<subscript>8</subscript></entry> - <entry>y<subscript>7</subscript></entry> - <entry>y<subscript>6</subscript></entry> - <entry>y<subscript>5</subscript></entry> - <entry>y<subscript>4</subscript></entry> - <entry>y<subscript>3</subscript></entry> - <entry>y<subscript>2</subscript></entry> - <entry>y<subscript>1</subscript></entry> - <entry>y<subscript>0</subscript></entry> - <entry>u<subscript>9</subscript></entry> - <entry>u<subscript>8</subscript></entry> - <entry>u<subscript>7</subscript></entry> - <entry>u<subscript>6</subscript></entry> - <entry>u<subscript>5</subscript></entry> - <entry>u<subscript>4</subscript></entry> - <entry>u<subscript>3</subscript></entry> - <entry>u<subscript>2</subscript></entry> - <entry>u<subscript>1</subscript></entry> - <entry>u<subscript>0</subscript></entry> - </row> - </tbody> - </tgroup> - </table> - </section> - - <section> - <title>JPEG Compressed Formats</title> - - <para>Those data formats consist of an ordered sequence of 8-bit bytes - obtained from JPEG compression process. Additionally to the - <constant>_JPEG</constant> prefix the format code is made of - the following information. - <itemizedlist> - <listitem><para>The number of bus samples per entropy encoded byte.</para></listitem> - <listitem><para>The bus width.</para></listitem> - </itemizedlist> - </para> - - <para>For instance, for a JPEG baseline process and an 8-bit bus width - the format will be named <constant>V4L2_MBUS_FMT_JPEG_1X8</constant>. - </para> - - <para>The following table lists existing JPEG compressed formats.</para> - - <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-jpeg"> - <title>JPEG Formats</title> - <tgroup cols="3"> - <colspec colname="id" align="left" /> - <colspec colname="code" align="left"/> - <colspec colname="remarks" align="left"/> - <thead> - <row> - <entry>Identifier</entry> - <entry>Code</entry> - <entry>Remarks</entry> - </row> - </thead> - <tbody valign="top"> - <row id="V4L2-MBUS-FMT-JPEG-1X8"> - <entry>V4L2_MBUS_FMT_JPEG_1X8</entry> - <entry>0x4001</entry> - <entry>Besides of its usage for the parallel bus this format is - recommended for transmission of JPEG data over MIPI CSI bus - using the User Defined 8-bit Data types. - </entry> - </row> - </tbody> - </tgroup> - </table> - </section> - </section> -</section> diff --git a/Documentation/DocBook/v4l/v4l2.xml b/Documentation/DocBook/v4l/v4l2.xml deleted file mode 100644 index a7fd76d0dac1..000000000000 --- a/Documentation/DocBook/v4l/v4l2.xml +++ /dev/null @@ -1,539 +0,0 @@ - <partinfo> - <authorgroup> - <author> - <firstname>Michael</firstname> - <surname>Schimek</surname> - <othername role="mi">H</othername> - <affiliation> - <address> - <email>mschimek@gmx.at</email> - </address> - </affiliation> - </author> - - <author> - <firstname>Bill</firstname> - <surname>Dirks</surname> - <!-- Commented until Bill opts in to be spammed. - <affiliation> - <address> - <email>bill@thedirks.org</email> - </address> - </affiliation> --> - <contrib>Original author of the V4L2 API and -documentation.</contrib> - </author> - - <author> - <firstname>Hans</firstname> - <surname>Verkuil</surname> - <contrib>Designed and documented the VIDIOC_LOG_STATUS ioctl, -the extended control ioctls and major parts of the sliced VBI -API.</contrib> - <affiliation> - <address> - <email>hverkuil@xs4all.nl</email> - </address> - </affiliation> - </author> - - <author> - <firstname>Martin</firstname> - <surname>Rubli</surname> - <!-- - <affiliation> - <address> - <email>martin_rubli@logitech.com</email> - </address> - </affiliation> --> - <contrib>Designed and documented the VIDIOC_ENUM_FRAMESIZES -and VIDIOC_ENUM_FRAMEINTERVALS ioctls.</contrib> - </author> - - <author> - <firstname>Andy</firstname> - <surname>Walls</surname> - <contrib>Documented the fielded V4L2_MPEG_STREAM_VBI_FMT_IVTV -MPEG stream embedded, sliced VBI data format in this specification. -</contrib> - <affiliation> - <address> - <email>awalls@md.metrocast.net</email> - </address> - </affiliation> - </author> - - <author> - <firstname>Mauro</firstname> - <surname>Carvalho Chehab</surname> - <contrib>Documented libv4l, designed and added v4l2grab example, -Remote Controller chapter.</contrib> - <affiliation> - <address> - <email>mchehab@redhat.com</email> - </address> - </affiliation> - </author> - - <author> - <firstname>Muralidharan</firstname> - <surname>Karicheri</surname> - <contrib>Documented the Digital Video timings API.</contrib> - <affiliation> - <address> - <email>m-karicheri2@ti.com</email> - </address> - </affiliation> - </author> - - <author> - <firstname>Pawel</firstname> - <surname>Osciak</surname> - <contrib>Designed and documented the multi-planar API.</contrib> - <affiliation> - <address> - <email>pawel AT osciak.com</email> - </address> - </affiliation> - </author> - </authorgroup> - - <copyright> - <year>1999</year> - <year>2000</year> - <year>2001</year> - <year>2002</year> - <year>2003</year> - <year>2004</year> - <year>2005</year> - <year>2006</year> - <year>2007</year> - <year>2008</year> - <year>2009</year> - <year>2010</year> - <year>2011</year> - <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin -Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab, - Pawel Osciak</holder> - </copyright> - <legalnotice> - <para>Except when explicitly stated as GPL, programming examples within - this part can be used and distributed without restrictions.</para> - </legalnotice> - <revhistory> - <!-- Put document revisions here, newest first. --> - <!-- API revisions (changes and additions of defines, enums, -structs, ioctls) must be noted in more detail in the history chapter -(compat.xml), along with the possible impact on existing drivers and -applications. --> - - <revision> - <revnumber>2.6.39</revnumber> - <date>2011-03-01</date> - <authorinitials>mcc, po</authorinitials> - <revremark>Removed VIDIOC_*_OLD from videodev2.h header and update it to reflect latest changes. Added the <link linkend="planar-apis">multi-planar API</link>.</revremark> - </revision> - - <revision> - <revnumber>2.6.37</revnumber> - <date>2010-08-06</date> - <authorinitials>hv</authorinitials> - <revremark>Removed obsolete vtx (videotext) API.</revremark> - </revision> - - <revision> - <revnumber>2.6.33</revnumber> - <date>2009-12-03</date> - <authorinitials>mk</authorinitials> - <revremark>Added documentation for the Digital Video timings API.</revremark> - </revision> - - <revision> - <revnumber>2.6.32</revnumber> - <date>2009-08-31</date> - <authorinitials>mcc</authorinitials> - <revremark>Now, revisions will match the kernel version where -the V4L2 API changes will be used by the Linux Kernel. -Also added Remote Controller chapter.</revremark> - </revision> - - <revision> - <revnumber>0.29</revnumber> - <date>2009-08-26</date> - <authorinitials>ev</authorinitials> - <revremark>Added documentation for string controls and for FM Transmitter controls.</revremark> - </revision> - - <revision> - <revnumber>0.28</revnumber> - <date>2009-08-26</date> - <authorinitials>gl</authorinitials> - <revremark>Added V4L2_CID_BAND_STOP_FILTER documentation.</revremark> - </revision> - - <revision> - <revnumber>0.27</revnumber> - <date>2009-08-15</date> - <authorinitials>mcc</authorinitials> - <revremark>Added libv4l and Remote Controller documentation; -added v4l2grab and keytable application examples.</revremark> - </revision> - - <revision> - <revnumber>0.26</revnumber> - <date>2009-07-23</date> - <authorinitials>hv</authorinitials> - <revremark>Finalized the RDS capture API. Added modulator and RDS encoder -capabilities. Added support for string controls.</revremark> - </revision> - - <revision> - <revnumber>0.25</revnumber> - <date>2009-01-18</date> - <authorinitials>hv</authorinitials> - <revremark>Added pixel formats VYUY, NV16 and NV61, and changed -the debug ioctls VIDIOC_DBG_G/S_REGISTER and VIDIOC_DBG_G_CHIP_IDENT. -Added camera controls V4L2_CID_ZOOM_ABSOLUTE, V4L2_CID_ZOOM_RELATIVE, -V4L2_CID_ZOOM_CONTINUOUS and V4L2_CID_PRIVACY.</revremark> - </revision> - - <revision> - <revnumber>0.24</revnumber> - <date>2008-03-04</date> - <authorinitials>mhs</authorinitials> - <revremark>Added pixel formats Y16 and SBGGR16, new controls -and a camera controls class. Removed VIDIOC_G/S_MPEGCOMP.</revremark> - </revision> - - <revision> - <revnumber>0.23</revnumber> - <date>2007-08-30</date> - <authorinitials>mhs</authorinitials> - <revremark>Fixed a typo in VIDIOC_DBG_G/S_REGISTER. -Clarified the byte order of packed pixel formats.</revremark> - </revision> - - <revision> - <revnumber>0.22</revnumber> - <date>2007-08-29</date> - <authorinitials>mhs</authorinitials> - <revremark>Added the Video Output Overlay interface, new MPEG -controls, V4L2_FIELD_INTERLACED_TB and V4L2_FIELD_INTERLACED_BT, -VIDIOC_DBG_G/S_REGISTER, VIDIOC_(TRY_)ENCODER_CMD, -VIDIOC_G_CHIP_IDENT, VIDIOC_G_ENC_INDEX, new pixel formats. -Clarifications in the cropping chapter, about RGB pixel formats, the -mmap(), poll(), select(), read() and write() functions. Typographical -fixes.</revremark> - </revision> - - <revision> - <revnumber>0.21</revnumber> - <date>2006-12-19</date> - <authorinitials>mhs</authorinitials> - <revremark>Fixed a link in the VIDIOC_G_EXT_CTRLS section.</revremark> - </revision> - - <revision> - <revnumber>0.20</revnumber> - <date>2006-11-24</date> - <authorinitials>mhs</authorinitials> - <revremark>Clarified the purpose of the audioset field in -struct v4l2_input and v4l2_output.</revremark> - </revision> - - <revision> - <revnumber>0.19</revnumber> - <date>2006-10-19</date> - <authorinitials>mhs</authorinitials> - <revremark>Documented V4L2_PIX_FMT_RGB444.</revremark> - </revision> - - <revision> - <revnumber>0.18</revnumber> - <date>2006-10-18</date> - <authorinitials>mhs</authorinitials> - <revremark>Added the description of extended controls by Hans -Verkuil. Linked V4L2_PIX_FMT_MPEG to V4L2_CID_MPEG_STREAM_TYPE.</revremark> - </revision> - - <revision> - <revnumber>0.17</revnumber> - <date>2006-10-12</date> - <authorinitials>mhs</authorinitials> - <revremark>Corrected V4L2_PIX_FMT_HM12 description.</revremark> - </revision> - - <revision> - <revnumber>0.16</revnumber> - <date>2006-10-08</date> - <authorinitials>mhs</authorinitials> - <revremark>VIDIOC_ENUM_FRAMESIZES and -VIDIOC_ENUM_FRAMEINTERVALS are now part of the API.</revremark> - </revision> - - <revision> - <revnumber>0.15</revnumber> - <date>2006-09-23</date> - <authorinitials>mhs</authorinitials> - <revremark>Cleaned up the bibliography, added BT.653 and -BT.1119. capture.c/start_capturing() for user pointer I/O did not -initialize the buffer index. Documented the V4L MPEG and MJPEG -VID_TYPEs and V4L2_PIX_FMT_SBGGR8. Updated the list of reserved pixel -formats. See the history chapter for API changes.</revremark> - </revision> - - <revision> - <revnumber>0.14</revnumber> - <date>2006-09-14</date> - <authorinitials>mr</authorinitials> - <revremark>Added VIDIOC_ENUM_FRAMESIZES and -VIDIOC_ENUM_FRAMEINTERVALS proposal for frame format enumeration of -digital devices.</revremark> - </revision> - - <revision> - <revnumber>0.13</revnumber> - <date>2006-04-07</date> - <authorinitials>mhs</authorinitials> - <revremark>Corrected the description of struct v4l2_window -clips. New V4L2_STD_ and V4L2_TUNER_MODE_LANG1_LANG2 -defines.</revremark> - </revision> - - <revision> - <revnumber>0.12</revnumber> - <date>2006-02-03</date> - <authorinitials>mhs</authorinitials> - <revremark>Corrected the description of struct -v4l2_captureparm and v4l2_outputparm.</revremark> - </revision> - - <revision> - <revnumber>0.11</revnumber> - <date>2006-01-27</date> - <authorinitials>mhs</authorinitials> - <revremark>Improved the description of struct -v4l2_tuner.</revremark> - </revision> - - <revision> - <revnumber>0.10</revnumber> - <date>2006-01-10</date> - <authorinitials>mhs</authorinitials> - <revremark>VIDIOC_G_INPUT and VIDIOC_S_PARM -clarifications.</revremark> - </revision> - - <revision> - <revnumber>0.9</revnumber> - <date>2005-11-27</date> - <authorinitials>mhs</authorinitials> - <revremark>Improved the 525 line numbering diagram. Hans -Verkuil and I rewrote the sliced VBI section. He also contributed a -VIDIOC_LOG_STATUS page. Fixed VIDIOC_S_STD call in the video standard -selection example. Various updates.</revremark> - </revision> - - <revision> - <revnumber>0.8</revnumber> - <date>2004-10-04</date> - <authorinitials>mhs</authorinitials> - <revremark>Somehow a piece of junk slipped into the capture -example, removed.</revremark> - </revision> - - <revision> - <revnumber>0.7</revnumber> - <date>2004-09-19</date> - <authorinitials>mhs</authorinitials> - <revremark>Fixed video standard selection, control -enumeration, downscaling and aspect example. Added read and user -pointer i/o to video capture example.</revremark> - </revision> - - <revision> - <revnumber>0.6</revnumber> - <date>2004-08-01</date> - <authorinitials>mhs</authorinitials> - <revremark>v4l2_buffer changes, added video capture example, -various corrections.</revremark> - </revision> - - <revision> - <revnumber>0.5</revnumber> - <date>2003-11-05</date> - <authorinitials>mhs</authorinitials> - <revremark>Pixel format erratum.</revremark> - </revision> - - <revision> - <revnumber>0.4</revnumber> - <date>2003-09-17</date> - <authorinitials>mhs</authorinitials> - <revremark>Corrected source and Makefile to generate a PDF. -SGML fixes. Added latest API changes. Closed gaps in the history -chapter.</revremark> - </revision> - - <revision> - <revnumber>0.3</revnumber> - <date>2003-02-05</date> - <authorinitials>mhs</authorinitials> - <revremark>Another draft, more corrections.</revremark> - </revision> - - <revision> - <revnumber>0.2</revnumber> - <date>2003-01-15</date> - <authorinitials>mhs</authorinitials> - <revremark>Second draft, with corrections pointed out by Gerd -Knorr.</revremark> - </revision> - - <revision> - <revnumber>0.1</revnumber> - <date>2002-12-01</date> - <authorinitials>mhs</authorinitials> - <revremark>First draft, based on documentation by Bill Dirks -and discussions on the V4L mailing list.</revremark> - </revision> - </revhistory> -</partinfo> - -<title>Video for Linux Two API Specification</title> - <subtitle>Revision 2.6.39</subtitle> - - <chapter id="common"> - &sub-common; - </chapter> - - <chapter id="pixfmt"> - &sub-pixfmt; - </chapter> - - <chapter id="io"> - &sub-io; - </chapter> - - <chapter id="devices"> - <title>Interfaces</title> - - <section id="capture"> &sub-dev-capture; </section> - <section id="overlay"> &sub-dev-overlay; </section> - <section id="output"> &sub-dev-output; </section> - <section id="osd"> &sub-dev-osd; </section> - <section id="codec"> &sub-dev-codec; </section> - <section id="effect"> &sub-dev-effect; </section> - <section id="raw-vbi"> &sub-dev-raw-vbi; </section> - <section id="sliced"> &sub-dev-sliced-vbi; </section> - <section id="ttx"> &sub-dev-teletext; </section> - <section id="radio"> &sub-dev-radio; </section> - <section id="rds"> &sub-dev-rds; </section> - <section id="event"> &sub-dev-event; </section> - <section id="subdev"> &sub-dev-subdev; </section> - </chapter> - - <chapter id="driver"> - &sub-driver; - </chapter> - - <chapter id="libv4l"> - &sub-libv4l; - </chapter> - - <chapter id="compat"> - &sub-compat; - </chapter> - - <appendix id="user-func"> - <title>Function Reference</title> - - <!-- Keep this alphabetically sorted. --> - - &sub-close; - &sub-ioctl; - <!-- All ioctls go here. --> - &sub-cropcap; - &sub-dbg-g-chip-ident; - &sub-dbg-g-register; - &sub-dqevent; - &sub-encoder-cmd; - &sub-enumaudio; - &sub-enumaudioout; - &sub-enum-dv-presets; - &sub-enum-fmt; - &sub-enum-framesizes; - &sub-enum-frameintervals; - &sub-enuminput; - &sub-enumoutput; - &sub-enumstd; - &sub-g-audio; - &sub-g-audioout; - &sub-g-crop; - &sub-g-ctrl; - &sub-g-dv-preset; - &sub-g-dv-timings; - &sub-g-enc-index; - &sub-g-ext-ctrls; - &sub-g-fbuf; - &sub-g-fmt; - &sub-g-frequency; - &sub-g-input; - &sub-g-jpegcomp; - &sub-g-modulator; - &sub-g-output; - &sub-g-parm; - &sub-g-priority; - &sub-g-sliced-vbi-cap; - &sub-g-std; - &sub-g-tuner; - &sub-log-status; - &sub-overlay; - &sub-qbuf; - &sub-querybuf; - &sub-querycap; - &sub-queryctrl; - &sub-query-dv-preset; - &sub-querystd; - &sub-reqbufs; - &sub-s-hw-freq-seek; - &sub-streamon; - &sub-subdev-enum-frame-interval; - &sub-subdev-enum-frame-size; - &sub-subdev-enum-mbus-code; - &sub-subdev-g-crop; - &sub-subdev-g-fmt; - &sub-subdev-g-frame-interval; - &sub-subscribe-event; - <!-- End of ioctls. --> - &sub-mmap; - &sub-munmap; - &sub-open; - &sub-poll; - &sub-read; - &sub-select; - &sub-write; - </appendix> - - <appendix id="videodev"> - <title>Video For Linux Two Header File</title> - &sub-videodev2-h; - </appendix> - - <appendix id="capture-example"> - <title>Video Capture Example</title> - &sub-capture-c; - </appendix> - - <appendix id="v4l2grab-example"> - <title>Video Grabber example using libv4l</title> - <para>This program demonstrates how to grab V4L2 images in ppm format by -using libv4l handlers. The advantage is that this grabber can potentially work -with any V4L2 driver.</para> - &sub-v4l2grab-c; - </appendix> - - &sub-media-indices; - - &sub-biblio; - diff --git a/Documentation/DocBook/v4l/v4l2grab.c.xml b/Documentation/DocBook/v4l/v4l2grab.c.xml deleted file mode 100644 index bed12e40be27..000000000000 --- a/Documentation/DocBook/v4l/v4l2grab.c.xml +++ /dev/null @@ -1,164 +0,0 @@ -<programlisting> -/* V4L2 video picture grabber - Copyright (C) 2009 Mauro Carvalho Chehab <mchehab@infradead.org> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <fcntl.h> -#include <errno.h> -#include <sys/ioctl.h> -#include <sys/types.h> -#include <sys/time.h> -#include <sys/mman.h> -#include <linux/videodev2.h> -#include "../libv4l/include/libv4l2.h" - -#define CLEAR(x) memset(&(x), 0, sizeof(x)) - -struct buffer { - void *start; - size_t length; -}; - -static void xioctl(int fh, int request, void *arg) -{ - int r; - - do { - r = v4l2_ioctl(fh, request, arg); - } while (r == -1 && ((errno == EINTR) || (errno == EAGAIN))); - - if (r == -1) { - fprintf(stderr, "error %d, %s\n", errno, strerror(errno)); - exit(EXIT_FAILURE); - } -} - -int main(int argc, char **argv) -{ - struct <link linkend="v4l2-format">v4l2_format</link> fmt; - struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf; - struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link> req; - enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; - fd_set fds; - struct timeval tv; - int r, fd = -1; - unsigned int i, n_buffers; - char *dev_name = "/dev/video0"; - char out_name[256]; - FILE *fout; - struct buffer *buffers; - - fd = v4l2_open(dev_name, O_RDWR | O_NONBLOCK, 0); - if (fd < 0) { - perror("Cannot open device"); - exit(EXIT_FAILURE); - } - - CLEAR(fmt); - fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - fmt.fmt.pix.width = 640; - fmt.fmt.pix.height = 480; - fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB24; - fmt.fmt.pix.field = V4L2_FIELD_INTERLACED; - xioctl(fd, VIDIOC_S_FMT, &fmt); - if (fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_RGB24) { - printf("Libv4l didn't accept RGB24 format. Can't proceed.\n"); - exit(EXIT_FAILURE); - } - if ((fmt.fmt.pix.width != 640) || (fmt.fmt.pix.height != 480)) - printf("Warning: driver is sending image at %dx%d\n", - fmt.fmt.pix.width, fmt.fmt.pix.height); - - CLEAR(req); - req.count = 2; - req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - req.memory = V4L2_MEMORY_MMAP; - xioctl(fd, VIDIOC_REQBUFS, &req); - - buffers = calloc(req.count, sizeof(*buffers)); - for (n_buffers = 0; n_buffers < req.count; ++n_buffers) { - CLEAR(buf); - - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - buf.index = n_buffers; - - xioctl(fd, VIDIOC_QUERYBUF, &buf); - - buffers[n_buffers].length = buf.length; - buffers[n_buffers].start = v4l2_mmap(NULL, buf.length, - PROT_READ | PROT_WRITE, MAP_SHARED, - fd, buf.m.offset); - - if (MAP_FAILED == buffers[n_buffers].start) { - perror("mmap"); - exit(EXIT_FAILURE); - } - } - - for (i = 0; i < n_buffers; ++i) { - CLEAR(buf); - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - buf.index = i; - xioctl(fd, VIDIOC_QBUF, &buf); - } - type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - - xioctl(fd, VIDIOC_STREAMON, &type); - for (i = 0; i < 20; i++) { - do { - FD_ZERO(&fds); - FD_SET(fd, &fds); - - /* Timeout. */ - tv.tv_sec = 2; - tv.tv_usec = 0; - - r = select(fd + 1, &fds, NULL, NULL, &tv); - } while ((r == -1 && (errno = EINTR))); - if (r == -1) { - perror("select"); - return errno; - } - - CLEAR(buf); - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - xioctl(fd, VIDIOC_DQBUF, &buf); - - sprintf(out_name, "out%03d.ppm", i); - fout = fopen(out_name, "w"); - if (!fout) { - perror("Cannot open image"); - exit(EXIT_FAILURE); - } - fprintf(fout, "P6\n%d %d 255\n", - fmt.fmt.pix.width, fmt.fmt.pix.height); - fwrite(buffers[buf.index].start, buf.bytesused, 1, fout); - fclose(fout); - - xioctl(fd, VIDIOC_QBUF, &buf); - } - - type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - xioctl(fd, VIDIOC_STREAMOFF, &type); - for (i = 0; i < n_buffers; ++i) - v4l2_munmap(buffers[i].start, buffers[i].length); - v4l2_close(fd); - - return 0; -} -</programlisting> diff --git a/Documentation/DocBook/v4l/vbi_525.gif b/Documentation/DocBook/v4l/vbi_525.gif Binary files differdeleted file mode 100644 index 5580b690d504..000000000000 --- a/Documentation/DocBook/v4l/vbi_525.gif +++ /dev/null diff --git a/Documentation/DocBook/v4l/vbi_525.pdf b/Documentation/DocBook/v4l/vbi_525.pdf Binary files differdeleted file mode 100644 index 9e72c25b208d..000000000000 --- a/Documentation/DocBook/v4l/vbi_525.pdf +++ /dev/null diff --git a/Documentation/DocBook/v4l/vbi_625.gif b/Documentation/DocBook/v4l/vbi_625.gif Binary files differdeleted file mode 100644 index 34e3251983c4..000000000000 --- a/Documentation/DocBook/v4l/vbi_625.gif +++ /dev/null diff --git a/Documentation/DocBook/v4l/vbi_625.pdf b/Documentation/DocBook/v4l/vbi_625.pdf Binary files differdeleted file mode 100644 index 765235e33a4d..000000000000 --- a/Documentation/DocBook/v4l/vbi_625.pdf +++ /dev/null diff --git a/Documentation/DocBook/v4l/vbi_hsync.gif b/Documentation/DocBook/v4l/vbi_hsync.gif Binary files differdeleted file mode 100644 index b02434d3b356..000000000000 --- a/Documentation/DocBook/v4l/vbi_hsync.gif +++ /dev/null diff --git a/Documentation/DocBook/v4l/vbi_hsync.pdf b/Documentation/DocBook/v4l/vbi_hsync.pdf Binary files differdeleted file mode 100644 index 200b668189bf..000000000000 --- a/Documentation/DocBook/v4l/vbi_hsync.pdf +++ /dev/null diff --git a/Documentation/DocBook/v4l/videodev2.h.xml b/Documentation/DocBook/v4l/videodev2.h.xml deleted file mode 100644 index c50536a4f596..000000000000 --- a/Documentation/DocBook/v4l/videodev2.h.xml +++ /dev/null @@ -1,1946 +0,0 @@ -<programlisting> -/* - * Video for Linux Two header file - * - * Copyright (C) 1999-2007 the contributors - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * Alternatively you can redistribute this file under the terms of the - * BSD license as stated below: - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. The names of its contributors may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Header file for v4l or V4L2 drivers and applications - * with public API. - * All kernel-specific stuff were moved to media/v4l2-dev.h, so - * no #if __KERNEL tests are allowed here - * - * See http://linuxtv.org for more info - * - * Author: Bill Dirks <bill@thedirks.org> - * Justin Schoeman - * Hans Verkuil <hverkuil@xs4all.nl> - * et al. - */ -#ifndef __LINUX_VIDEODEV2_H -#define __LINUX_VIDEODEV2_H - -#ifdef __KERNEL__ -#include <linux/time.h> /* need struct timeval */ -#else -#include <sys/time.h> -#endif -#include <linux/compiler.h> -#include <linux/ioctl.h> -#include <linux/types.h> - -/* - * Common stuff for both V4L1 and V4L2 - * Moved from videodev.h - */ -#define VIDEO_MAX_FRAME 32 -#define VIDEO_MAX_PLANES 8 - -#ifndef __KERNEL__ - -/* These defines are V4L1 specific and should not be used with the V4L2 API! - They will be removed from this header in the future. */ - -#define VID_TYPE_CAPTURE 1 /* Can capture */ -#define VID_TYPE_TUNER 2 /* Can tune */ -#define VID_TYPE_TELETEXT 4 /* Does teletext */ -#define VID_TYPE_OVERLAY 8 /* Overlay onto frame buffer */ -#define VID_TYPE_CHROMAKEY 16 /* Overlay by chromakey */ -#define VID_TYPE_CLIPPING 32 /* Can clip */ -#define VID_TYPE_FRAMERAM 64 /* Uses the frame buffer memory */ -#define VID_TYPE_SCALES 128 /* Scalable */ -#define VID_TYPE_MONOCHROME 256 /* Monochrome only */ -#define VID_TYPE_SUBCAPTURE 512 /* Can capture subareas of the image */ -#define VID_TYPE_MPEG_DECODER 1024 /* Can decode MPEG streams */ -#define VID_TYPE_MPEG_ENCODER 2048 /* Can encode MPEG streams */ -#define VID_TYPE_MJPEG_DECODER 4096 /* Can decode MJPEG streams */ -#define VID_TYPE_MJPEG_ENCODER 8192 /* Can encode MJPEG streams */ -#endif - -/* - * M I S C E L L A N E O U S - */ - -/* Four-character-code (FOURCC) */ -#define v4l2_fourcc(a, b, c, d)\ - ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24)) - -/* - * E N U M S - */ -enum <link linkend="v4l2-field">v4l2_field</link> { - V4L2_FIELD_ANY = 0, /* driver can choose from none, - top, bottom, interlaced - depending on whatever it thinks - is approximate ... */ - V4L2_FIELD_NONE = 1, /* this device has no fields ... */ - V4L2_FIELD_TOP = 2, /* top field only */ - V4L2_FIELD_BOTTOM = 3, /* bottom field only */ - V4L2_FIELD_INTERLACED = 4, /* both fields interlaced */ - V4L2_FIELD_SEQ_TB = 5, /* both fields sequential into one - buffer, top-bottom order */ - V4L2_FIELD_SEQ_BT = 6, /* same as above + bottom-top order */ - V4L2_FIELD_ALTERNATE = 7, /* both fields alternating into - separate buffers */ - V4L2_FIELD_INTERLACED_TB = 8, /* both fields interlaced, top field - first and the top field is - transmitted first */ - V4L2_FIELD_INTERLACED_BT = 9, /* both fields interlaced, top field - first and the bottom field is - transmitted first */ -}; -#define V4L2_FIELD_HAS_TOP(field) \ - ((field) == V4L2_FIELD_TOP ||\ - (field) == V4L2_FIELD_INTERLACED ||\ - (field) == V4L2_FIELD_INTERLACED_TB ||\ - (field) == V4L2_FIELD_INTERLACED_BT ||\ - (field) == V4L2_FIELD_SEQ_TB ||\ - (field) == V4L2_FIELD_SEQ_BT) -#define V4L2_FIELD_HAS_BOTTOM(field) \ - ((field) == V4L2_FIELD_BOTTOM ||\ - (field) == V4L2_FIELD_INTERLACED ||\ - (field) == V4L2_FIELD_INTERLACED_TB ||\ - (field) == V4L2_FIELD_INTERLACED_BT ||\ - (field) == V4L2_FIELD_SEQ_TB ||\ - (field) == V4L2_FIELD_SEQ_BT) -#define V4L2_FIELD_HAS_BOTH(field) \ - ((field) == V4L2_FIELD_INTERLACED ||\ - (field) == V4L2_FIELD_INTERLACED_TB ||\ - (field) == V4L2_FIELD_INTERLACED_BT ||\ - (field) == V4L2_FIELD_SEQ_TB ||\ - (field) == V4L2_FIELD_SEQ_BT) - -enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> { - V4L2_BUF_TYPE_VIDEO_CAPTURE = 1, - V4L2_BUF_TYPE_VIDEO_OUTPUT = 2, - V4L2_BUF_TYPE_VIDEO_OVERLAY = 3, - V4L2_BUF_TYPE_VBI_CAPTURE = 4, - V4L2_BUF_TYPE_VBI_OUTPUT = 5, - V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6, - V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7, -#if 1 - /* Experimental */ - V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8, -#endif - V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9, - V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10, - V4L2_BUF_TYPE_PRIVATE = 0x80, -}; - -#define V4L2_TYPE_IS_MULTIPLANAR(type) \ - ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE \ - || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) - -#define V4L2_TYPE_IS_OUTPUT(type) \ - ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT \ - || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE \ - || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY \ - || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY \ - || (type) == V4L2_BUF_TYPE_VBI_OUTPUT \ - || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT) - -enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> { - V4L2_TUNER_RADIO = 1, - V4L2_TUNER_ANALOG_TV = 2, - V4L2_TUNER_DIGITAL_TV = 3, -}; - -enum <link linkend="v4l2-memory">v4l2_memory</link> { - V4L2_MEMORY_MMAP = 1, - V4L2_MEMORY_USERPTR = 2, - V4L2_MEMORY_OVERLAY = 3, -}; - -/* see also http://vektor.theorem.ca/graphics/ycbcr/ */ -enum <link linkend="v4l2-colorspace">v4l2_colorspace</link> { - /* ITU-R 601 -- broadcast NTSC/PAL */ - V4L2_COLORSPACE_SMPTE170M = 1, - - /* 1125-Line (US) HDTV */ - V4L2_COLORSPACE_SMPTE240M = 2, - - /* HD and modern captures. */ - V4L2_COLORSPACE_REC709 = 3, - - /* broken BT878 extents (601, luma range 16-253 instead of 16-235) */ - V4L2_COLORSPACE_BT878 = 4, - - /* These should be useful. Assume 601 extents. */ - V4L2_COLORSPACE_470_SYSTEM_M = 5, - V4L2_COLORSPACE_470_SYSTEM_BG = 6, - - /* I know there will be cameras that send this. So, this is - * unspecified chromaticities and full 0-255 on each of the - * Y'CbCr components - */ - V4L2_COLORSPACE_JPEG = 7, - - /* For RGB colourspaces, this is probably a good start. */ - V4L2_COLORSPACE_SRGB = 8, -}; - -enum <link linkend="v4l2-priority">v4l2_priority</link> { - V4L2_PRIORITY_UNSET = 0, /* not initialized */ - V4L2_PRIORITY_BACKGROUND = 1, - V4L2_PRIORITY_INTERACTIVE = 2, - V4L2_PRIORITY_RECORD = 3, - V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE, -}; - -struct <link linkend="v4l2-rect">v4l2_rect</link> { - __s32 left; - __s32 top; - __s32 width; - __s32 height; -}; - -struct <link linkend="v4l2-fract">v4l2_fract</link> { - __u32 numerator; - __u32 denominator; -}; - -/* - * D R I V E R C A P A B I L I T I E S - */ -struct <link linkend="v4l2-capability">v4l2_capability</link> { - __u8 driver[16]; /* i.e.ie; "bttv" */ - __u8 card[32]; /* i.e.ie; "Hauppauge WinTV" */ - __u8 bus_info[32]; /* "PCI:" + pci_name(pci_dev) */ - __u32 version; /* should use KERNEL_VERSION() */ - __u32 capabilities; /* Device capabilities */ - __u32 reserved[4]; -}; - -/* Values for 'capabilities' field */ -#define V4L2_CAP_VIDEO_CAPTURE 0x00000001 /* Is a video capture device */ -#define V4L2_CAP_VIDEO_OUTPUT 0x00000002 /* Is a video output device */ -#define V4L2_CAP_VIDEO_OVERLAY 0x00000004 /* Can do video overlay */ -#define V4L2_CAP_VBI_CAPTURE 0x00000010 /* Is a raw VBI capture device */ -#define V4L2_CAP_VBI_OUTPUT 0x00000020 /* Is a raw VBI output device */ -#define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040 /* Is a sliced VBI capture device */ -#define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080 /* Is a sliced VBI output device */ -#define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */ -#define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200 /* Can do video output overlay */ -#define V4L2_CAP_HW_FREQ_SEEK 0x00000400 /* Can do hardware frequency seek */ -#define V4L2_CAP_RDS_OUTPUT 0x00000800 /* Is an RDS encoder */ - -/* Is a video capture device that supports multiplanar formats */ -#define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000 -/* Is a video output device that supports multiplanar formats */ -#define V4L2_CAP_VIDEO_OUTPUT_MPLANE 0x00002000 - -#define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ -#define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ -#define V4L2_CAP_RADIO 0x00040000 /* is a radio device */ -#define V4L2_CAP_MODULATOR 0x00080000 /* has a modulator */ - -#define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */ -#define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ -#define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */ - -/* - * V I D E O I M A G E F O R M A T - */ -struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> { - __u32 width; - __u32 height; - __u32 pixelformat; - enum <link linkend="v4l2-field">v4l2_field</link> field; - __u32 bytesperline; /* for padding, zero if unused */ - __u32 sizeimage; - enum <link linkend="v4l2-colorspace">v4l2_colorspace</link> colorspace; - __u32 priv; /* private data, depends on pixelformat */ -}; - -/* Pixel format FOURCC depth Description */ - -/* RGB formats */ -#define <link linkend="V4L2-PIX-FMT-RGB332">V4L2_PIX_FMT_RGB332</link> v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */ -#define <link linkend="V4L2-PIX-FMT-RGB444">V4L2_PIX_FMT_RGB444</link> v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */ -#define <link linkend="V4L2-PIX-FMT-RGB555">V4L2_PIX_FMT_RGB555</link> v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ -#define <link linkend="V4L2-PIX-FMT-RGB565">V4L2_PIX_FMT_RGB565</link> v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */ -#define <link linkend="V4L2-PIX-FMT-RGB555X">V4L2_PIX_FMT_RGB555X</link> v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */ -#define <link linkend="V4L2-PIX-FMT-RGB565X">V4L2_PIX_FMT_RGB565X</link> v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */ -#define <link linkend="V4L2-PIX-FMT-BGR666">V4L2_PIX_FMT_BGR666</link> v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */ -#define <link linkend="V4L2-PIX-FMT-BGR24">V4L2_PIX_FMT_BGR24</link> v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */ -#define <link linkend="V4L2-PIX-FMT-RGB24">V4L2_PIX_FMT_RGB24</link> v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ -#define <link linkend="V4L2-PIX-FMT-BGR32">V4L2_PIX_FMT_BGR32</link> v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ -#define <link linkend="V4L2-PIX-FMT-RGB32">V4L2_PIX_FMT_RGB32</link> v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */ - -/* Grey formats */ -#define <link linkend="V4L2-PIX-FMT-GREY">V4L2_PIX_FMT_GREY</link> v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ -#define <link linkend="V4L2-PIX-FMT-Y4">V4L2_PIX_FMT_Y4</link> v4l2_fourcc('Y', '0', '4', ' ') /* 4 Greyscale */ -#define <link linkend="V4L2-PIX-FMT-Y6">V4L2_PIX_FMT_Y6</link> v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */ -#define <link linkend="V4L2-PIX-FMT-Y10">V4L2_PIX_FMT_Y10</link> v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ -#define <link linkend="V4L2-PIX-FMT-Y16">V4L2_PIX_FMT_Y16</link> v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ - -/* Grey bit-packed formats */ -#define <link linkend="V4L2-PIX-FMT-Y10BPACK">V4L2_PIX_FMT_Y10BPACK</link> v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */ - -/* Palette formats */ -#define <link linkend="V4L2-PIX-FMT-PAL8">V4L2_PIX_FMT_PAL8</link> v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ - -/* Luminance+Chrominance formats */ -#define <link linkend="V4L2-PIX-FMT-YVU410">V4L2_PIX_FMT_YVU410</link> v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */ -#define <link linkend="V4L2-PIX-FMT-YVU420">V4L2_PIX_FMT_YVU420</link> v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */ -#define <link linkend="V4L2-PIX-FMT-YUYV">V4L2_PIX_FMT_YUYV</link> v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */ -#define <link linkend="V4L2-PIX-FMT-YYUV">V4L2_PIX_FMT_YYUV</link> v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */ -#define <link linkend="V4L2-PIX-FMT-YVYU">V4L2_PIX_FMT_YVYU</link> v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ -#define <link linkend="V4L2-PIX-FMT-UYVY">V4L2_PIX_FMT_UYVY</link> v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */ -#define <link linkend="V4L2-PIX-FMT-VYUY">V4L2_PIX_FMT_VYUY</link> v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16 YUV 4:2:2 */ -#define <link linkend="V4L2-PIX-FMT-YUV422P">V4L2_PIX_FMT_YUV422P</link> v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */ -#define <link linkend="V4L2-PIX-FMT-YUV411P">V4L2_PIX_FMT_YUV411P</link> v4l2_fourcc('4', '1', '1', 'P') /* 16 YVU411 planar */ -#define <link linkend="V4L2-PIX-FMT-Y41P">V4L2_PIX_FMT_Y41P</link> v4l2_fourcc('Y', '4', '1', 'P') /* 12 YUV 4:1:1 */ -#define <link linkend="V4L2-PIX-FMT-YUV444">V4L2_PIX_FMT_YUV444</link> v4l2_fourcc('Y', '4', '4', '4') /* 16 xxxxyyyy uuuuvvvv */ -#define <link linkend="V4L2-PIX-FMT-YUV555">V4L2_PIX_FMT_YUV555</link> v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */ -#define <link linkend="V4L2-PIX-FMT-YUV565">V4L2_PIX_FMT_YUV565</link> v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */ -#define <link linkend="V4L2-PIX-FMT-YUV32">V4L2_PIX_FMT_YUV32</link> v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */ -#define <link linkend="V4L2-PIX-FMT-YUV410">V4L2_PIX_FMT_YUV410</link> v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */ -#define <link linkend="V4L2-PIX-FMT-YUV420">V4L2_PIX_FMT_YUV420</link> v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ -#define <link linkend="V4L2-PIX-FMT-HI240">V4L2_PIX_FMT_HI240</link> v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ -#define <link linkend="V4L2-PIX-FMT-HM12">V4L2_PIX_FMT_HM12</link> v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ -#define <link linkend="V4L2-PIX-FMT-M420">V4L2_PIX_FMT_M420</link> v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */ - -/* two planes -- one Y, one Cr + Cb interleaved */ -#define <link linkend="V4L2-PIX-FMT-NV12">V4L2_PIX_FMT_NV12</link> v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ -#define <link linkend="V4L2-PIX-FMT-NV21">V4L2_PIX_FMT_NV21</link> v4l2_fourcc('N', 'V', '2', '1') /* 12 Y/CrCb 4:2:0 */ -#define <link linkend="V4L2-PIX-FMT-NV16">V4L2_PIX_FMT_NV16</link> v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */ -#define <link linkend="V4L2-PIX-FMT-NV61">V4L2_PIX_FMT_NV61</link> v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ - -/* two non contiguous planes - one Y, one Cr + Cb interleaved */ -#define <link linkend="V4L2-PIX-FMT-NV12M">V4L2_PIX_FMT_NV12M</link> v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */ -#define <link linkend="V4L2-PIX-FMT-NV12MT">V4L2_PIX_FMT_NV12MT</link> v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 macroblocks */ - -/* three non contiguous planes - Y, Cb, Cr */ -#define <link linkend="V4L2-PIX-FMT-YUV420M">V4L2_PIX_FMT_YUV420M</link> v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420 planar */ - -/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */ -#define <link linkend="V4L2-PIX-FMT-SBGGR8">V4L2_PIX_FMT_SBGGR8</link> v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ -#define <link linkend="V4L2-PIX-FMT-SGBRG8">V4L2_PIX_FMT_SGBRG8</link> v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ -#define <link linkend="V4L2-PIX-FMT-SGRBG8">V4L2_PIX_FMT_SGRBG8</link> v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ -#define <link linkend="V4L2-PIX-FMT-SRGGB8">V4L2_PIX_FMT_SRGGB8</link> v4l2_fourcc('R', 'G', 'G', 'B') /* 8 RGRG.. GBGB.. */ -#define <link linkend="V4L2-PIX-FMT-SBGGR10">V4L2_PIX_FMT_SBGGR10</link> v4l2_fourcc('B', 'G', '1', '0') /* 10 BGBG.. GRGR.. */ -#define <link linkend="V4L2-PIX-FMT-SGBRG10">V4L2_PIX_FMT_SGBRG10</link> v4l2_fourcc('G', 'B', '1', '0') /* 10 GBGB.. RGRG.. */ -#define <link linkend="V4L2-PIX-FMT-SGRBG10">V4L2_PIX_FMT_SGRBG10</link> v4l2_fourcc('B', 'A', '1', '0') /* 10 GRGR.. BGBG.. */ -#define <link linkend="V4L2-PIX-FMT-SRGGB10">V4L2_PIX_FMT_SRGGB10</link> v4l2_fourcc('R', 'G', '1', '0') /* 10 RGRG.. GBGB.. */ - /* 10bit raw bayer DPCM compressed to 8 bits */ -#define <link linkend="V4L2-PIX-FMT-SGRBG10DPCM8">V4L2_PIX_FMT_SGRBG10DPCM8</link> v4l2_fourcc('B', 'D', '1', '0') - /* - * 10bit raw bayer, expanded to 16 bits - * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb... - */ -#define <link linkend="V4L2-PIX-FMT-SBGGR16">V4L2_PIX_FMT_SBGGR16</link> v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */ - -/* compressed formats */ -#define <link linkend="V4L2-PIX-FMT-MJPEG">V4L2_PIX_FMT_MJPEG</link> v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG */ -#define <link linkend="V4L2-PIX-FMT-JPEG">V4L2_PIX_FMT_JPEG</link> v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG */ -#define <link linkend="V4L2-PIX-FMT-DV">V4L2_PIX_FMT_DV</link> v4l2_fourcc('d', 'v', 's', 'd') /* 1394 */ -#define <link linkend="V4L2-PIX-FMT-MPEG">V4L2_PIX_FMT_MPEG</link> v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 */ - -/* Vendor-specific formats */ -#define <link linkend="V4L2-PIX-FMT-CPIA1">V4L2_PIX_FMT_CPIA1</link> v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */ -#define <link linkend="V4L2-PIX-FMT-WNVA">V4L2_PIX_FMT_WNVA</link> v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */ -#define <link linkend="V4L2-PIX-FMT-SN9C10X">V4L2_PIX_FMT_SN9C10X</link> v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */ -#define <link linkend="V4L2-PIX-FMT-SN9C20X-I420">V4L2_PIX_FMT_SN9C20X_I420</link> v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */ -#define <link linkend="V4L2-PIX-FMT-PWC1">V4L2_PIX_FMT_PWC1</link> v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */ -#define <link linkend="V4L2-PIX-FMT-PWC2">V4L2_PIX_FMT_PWC2</link> v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */ -#define <link linkend="V4L2-PIX-FMT-ET61X251">V4L2_PIX_FMT_ET61X251</link> v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */ -#define <link linkend="V4L2-PIX-FMT-SPCA501">V4L2_PIX_FMT_SPCA501</link> v4l2_fourcc('S', '5', '0', '1') /* YUYV per line */ -#define <link linkend="V4L2-PIX-FMT-SPCA505">V4L2_PIX_FMT_SPCA505</link> v4l2_fourcc('S', '5', '0', '5') /* YYUV per line */ -#define <link linkend="V4L2-PIX-FMT-SPCA508">V4L2_PIX_FMT_SPCA508</link> v4l2_fourcc('S', '5', '0', '8') /* YUVY per line */ -#define <link linkend="V4L2-PIX-FMT-SPCA561">V4L2_PIX_FMT_SPCA561</link> v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */ -#define <link linkend="V4L2-PIX-FMT-PAC207">V4L2_PIX_FMT_PAC207</link> v4l2_fourcc('P', '2', '0', '7') /* compressed BGGR bayer */ -#define <link linkend="V4L2-PIX-FMT-MR97310A">V4L2_PIX_FMT_MR97310A</link> v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */ -#define <link linkend="V4L2-PIX-FMT-SN9C2028">V4L2_PIX_FMT_SN9C2028</link> v4l2_fourcc('S', 'O', 'N', 'X') /* compressed GBRG bayer */ -#define <link linkend="V4L2-PIX-FMT-SQ905C">V4L2_PIX_FMT_SQ905C</link> v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */ -#define <link linkend="V4L2-PIX-FMT-PJPG">V4L2_PIX_FMT_PJPG</link> v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */ -#define <link linkend="V4L2-PIX-FMT-OV511">V4L2_PIX_FMT_OV511</link> v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */ -#define <link linkend="V4L2-PIX-FMT-OV518">V4L2_PIX_FMT_OV518</link> v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ -#define <link linkend="V4L2-PIX-FMT-STV0680">V4L2_PIX_FMT_STV0680</link> v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */ -#define <link linkend="V4L2-PIX-FMT-TM6000">V4L2_PIX_FMT_TM6000</link> v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */ -#define <link linkend="V4L2-PIX-FMT-CIT-YYVYUY">V4L2_PIX_FMT_CIT_YYVYUY</link> v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */ -#define <link linkend="V4L2-PIX-FMT-KONICA420">V4L2_PIX_FMT_KONICA420</link> v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */ - -/* - * F O R M A T E N U M E R A T I O N - */ -struct <link linkend="v4l2-fmtdesc">v4l2_fmtdesc</link> { - __u32 index; /* Format number */ - enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; /* buffer type */ - __u32 flags; - __u8 description[32]; /* Description string */ - __u32 pixelformat; /* Format fourcc */ - __u32 reserved[4]; -}; - -#define V4L2_FMT_FLAG_COMPRESSED 0x0001 -#define V4L2_FMT_FLAG_EMULATED 0x0002 - -#if 1 - /* Experimental Frame Size and frame rate enumeration */ -/* - * F R A M E S I Z E E N U M E R A T I O N - */ -enum <link linkend="v4l2-frmsizetypes">v4l2_frmsizetypes</link> { - V4L2_FRMSIZE_TYPE_DISCRETE = 1, - V4L2_FRMSIZE_TYPE_CONTINUOUS = 2, - V4L2_FRMSIZE_TYPE_STEPWISE = 3, -}; - -struct <link linkend="v4l2-frmsize-discrete">v4l2_frmsize_discrete</link> { - __u32 width; /* Frame width [pixel] */ - __u32 height; /* Frame height [pixel] */ -}; - -struct <link linkend="v4l2-frmsize-stepwise">v4l2_frmsize_stepwise</link> { - __u32 min_width; /* Minimum frame width [pixel] */ - __u32 max_width; /* Maximum frame width [pixel] */ - __u32 step_width; /* Frame width step size [pixel] */ - __u32 min_height; /* Minimum frame height [pixel] */ - __u32 max_height; /* Maximum frame height [pixel] */ - __u32 step_height; /* Frame height step size [pixel] */ -}; - -struct <link linkend="v4l2-frmsizeenum">v4l2_frmsizeenum</link> { - __u32 index; /* Frame size number */ - __u32 pixel_format; /* Pixel format */ - __u32 type; /* Frame size type the device supports. */ - - union { /* Frame size */ - struct <link linkend="v4l2-frmsize-discrete">v4l2_frmsize_discrete</link> discrete; - struct <link linkend="v4l2-frmsize-stepwise">v4l2_frmsize_stepwise</link> stepwise; - }; - - __u32 reserved[2]; /* Reserved space for future use */ -}; - -/* - * F R A M E R A T E E N U M E R A T I O N - */ -enum <link linkend="v4l2-frmivaltypes">v4l2_frmivaltypes</link> { - V4L2_FRMIVAL_TYPE_DISCRETE = 1, - V4L2_FRMIVAL_TYPE_CONTINUOUS = 2, - V4L2_FRMIVAL_TYPE_STEPWISE = 3, -}; - -struct <link linkend="v4l2-frmival-stepwise">v4l2_frmival_stepwise</link> { - struct <link linkend="v4l2-fract">v4l2_fract</link> min; /* Minimum frame interval [s] */ - struct <link linkend="v4l2-fract">v4l2_fract</link> max; /* Maximum frame interval [s] */ - struct <link linkend="v4l2-fract">v4l2_fract</link> step; /* Frame interval step size [s] */ -}; - -struct <link linkend="v4l2-frmivalenum">v4l2_frmivalenum</link> { - __u32 index; /* Frame format index */ - __u32 pixel_format; /* Pixel format */ - __u32 width; /* Frame width */ - __u32 height; /* Frame height */ - __u32 type; /* Frame interval type the device supports. */ - - union { /* Frame interval */ - struct <link linkend="v4l2-fract">v4l2_fract</link> discrete; - struct <link linkend="v4l2-frmival-stepwise">v4l2_frmival_stepwise</link> stepwise; - }; - - __u32 reserved[2]; /* Reserved space for future use */ -}; -#endif - -/* - * T I M E C O D E - */ -struct <link linkend="v4l2-timecode">v4l2_timecode</link> { - __u32 type; - __u32 flags; - __u8 frames; - __u8 seconds; - __u8 minutes; - __u8 hours; - __u8 userbits[4]; -}; - -/* Type */ -#define V4L2_TC_TYPE_24FPS 1 -#define V4L2_TC_TYPE_25FPS 2 -#define V4L2_TC_TYPE_30FPS 3 -#define V4L2_TC_TYPE_50FPS 4 -#define V4L2_TC_TYPE_60FPS 5 - -/* Flags */ -#define V4L2_TC_FLAG_DROPFRAME 0x0001 /* "drop-frame" mode */ -#define V4L2_TC_FLAG_COLORFRAME 0x0002 -#define V4L2_TC_USERBITS_field 0x000C -#define V4L2_TC_USERBITS_USERDEFINED 0x0000 -#define V4L2_TC_USERBITS_8BITCHARS 0x0008 -/* The above is based on SMPTE timecodes */ - -struct <link linkend="v4l2-jpegcompression">v4l2_jpegcompression</link> { - int quality; - - int APPn; /* Number of APP segment to be written, - * must be 0..15 */ - int APP_len; /* Length of data in JPEG APPn segment */ - char APP_data[60]; /* Data in the JPEG APPn segment. */ - - int COM_len; /* Length of data in JPEG COM segment */ - char COM_data[60]; /* Data in JPEG COM segment */ - - __u32 jpeg_markers; /* Which markers should go into the JPEG - * output. Unless you exactly know what - * you do, leave them untouched. - * Inluding less markers will make the - * resulting code smaller, but there will - * be fewer applications which can read it. - * The presence of the APP and COM marker - * is influenced by APP_len and COM_len - * ONLY, not by this property! */ - -#define V4L2_JPEG_MARKER_DHT (1<<3) /* Define Huffman Tables */ -#define V4L2_JPEG_MARKER_DQT (1<<4) /* Define Quantization Tables */ -#define V4L2_JPEG_MARKER_DRI (1<<5) /* Define Restart Interval */ -#define V4L2_JPEG_MARKER_COM (1<<6) /* Comment segment */ -#define V4L2_JPEG_MARKER_APP (1<<7) /* App segment, driver will - * allways use APP0 */ -}; - -/* - * M E M O R Y - M A P P I N G B U F F E R S - */ -struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link> { - __u32 count; - enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; - enum <link linkend="v4l2-memory">v4l2_memory</link> memory; - __u32 reserved[2]; -}; - -/** - * struct <link linkend="v4l2-plane">v4l2_plane</link> - plane info for multi-planar buffers - * @bytesused: number of bytes occupied by data in the plane (payload) - * @length: size of this plane (NOT the payload) in bytes - * @mem_offset: when memory in the associated struct <link linkend="v4l2-buffer">v4l2_buffer</link> is - * V4L2_MEMORY_MMAP, equals the offset from the start of - * the device memory for this plane (or is a "cookie" that - * should be passed to mmap() called on the video node) - * @userptr: when memory is V4L2_MEMORY_USERPTR, a userspace pointer - * pointing to this plane - * @data_offset: offset in the plane to the start of data; usually 0, - * unless there is a header in front of the data - * - * Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer - * with two planes can have one plane for Y, and another for interleaved CbCr - * components. Each plane can reside in a separate memory buffer, or even in - * a completely separate memory node (e.g. in embedded devices). - */ -struct <link linkend="v4l2-plane">v4l2_plane</link> { - __u32 bytesused; - __u32 length; - union { - __u32 mem_offset; - unsigned long userptr; - } m; - __u32 data_offset; - __u32 reserved[11]; -}; - -/** - * struct <link linkend="v4l2-buffer">v4l2_buffer</link> - video buffer info - * @index: id number of the buffer - * @type: buffer type (type == *_MPLANE for multiplanar buffers) - * @bytesused: number of bytes occupied by data in the buffer (payload); - * unused (set to 0) for multiplanar buffers - * @flags: buffer informational flags - * @field: field order of the image in the buffer - * @timestamp: frame timestamp - * @timecode: frame timecode - * @sequence: sequence count of this frame - * @memory: the method, in which the actual video data is passed - * @offset: for non-multiplanar buffers with memory == V4L2_MEMORY_MMAP; - * offset from the start of the device memory for this plane, - * (or a "cookie" that should be passed to mmap() as offset) - * @userptr: for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR; - * a userspace pointer pointing to this buffer - * @planes: for multiplanar buffers; userspace pointer to the array of plane - * info structs for this buffer - * @length: size in bytes of the buffer (NOT its payload) for single-plane - * buffers (when type != *_MPLANE); number of elements in the - * planes array for multi-plane buffers - * @input: input number from which the video data has has been captured - * - * Contains data exchanged by application and driver using one of the Streaming - * I/O methods. - */ -struct <link linkend="v4l2-buffer">v4l2_buffer</link> { - __u32 index; - enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; - __u32 bytesused; - __u32 flags; - enum <link linkend="v4l2-field">v4l2_field</link> field; - struct timeval timestamp; - struct <link linkend="v4l2-timecode">v4l2_timecode</link> timecode; - __u32 sequence; - - /* memory location */ - enum <link linkend="v4l2-memory">v4l2_memory</link> memory; - union { - __u32 offset; - unsigned long userptr; - struct <link linkend="v4l2-plane">v4l2_plane</link> *planes; - } m; - __u32 length; - __u32 input; - __u32 reserved; -}; - -/* Flags for 'flags' field */ -#define V4L2_BUF_FLAG_MAPPED 0x0001 /* Buffer is mapped (flag) */ -#define V4L2_BUF_FLAG_QUEUED 0x0002 /* Buffer is queued for processing */ -#define V4L2_BUF_FLAG_DONE 0x0004 /* Buffer is ready */ -#define V4L2_BUF_FLAG_KEYFRAME 0x0008 /* Image is a keyframe (I-frame) */ -#define V4L2_BUF_FLAG_PFRAME 0x0010 /* Image is a P-frame */ -#define V4L2_BUF_FLAG_BFRAME 0x0020 /* Image is a B-frame */ -/* Buffer is ready, but the data contained within is corrupted. */ -#define V4L2_BUF_FLAG_ERROR 0x0040 -#define V4L2_BUF_FLAG_TIMECODE 0x0100 /* timecode field is valid */ -#define V4L2_BUF_FLAG_INPUT 0x0200 /* input field is valid */ - -/* - * O V E R L A Y P R E V I E W - */ -struct <link linkend="v4l2-framebuffer">v4l2_framebuffer</link> { - __u32 capability; - __u32 flags; -/* FIXME: in theory we should pass something like PCI device + memory - * region + offset instead of some physical address */ - void *base; - struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> fmt; -}; -/* Flags for the 'capability' field. Read only */ -#define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001 -#define V4L2_FBUF_CAP_CHROMAKEY 0x0002 -#define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004 -#define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008 -#define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010 -#define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020 -#define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040 -#define V4L2_FBUF_CAP_SRC_CHROMAKEY 0x0080 -/* Flags for the 'flags' field. */ -#define V4L2_FBUF_FLAG_PRIMARY 0x0001 -#define V4L2_FBUF_FLAG_OVERLAY 0x0002 -#define V4L2_FBUF_FLAG_CHROMAKEY 0x0004 -#define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008 -#define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010 -#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020 -#define V4L2_FBUF_FLAG_SRC_CHROMAKEY 0x0040 - -struct <link linkend="v4l2-clip">v4l2_clip</link> { - struct <link linkend="v4l2-rect">v4l2_rect</link> c; - struct <link linkend="v4l2-clip">v4l2_clip</link> __user *next; -}; - -struct <link linkend="v4l2-window">v4l2_window</link> { - struct <link linkend="v4l2-rect">v4l2_rect</link> w; - enum <link linkend="v4l2-field">v4l2_field</link> field; - __u32 chromakey; - struct <link linkend="v4l2-clip">v4l2_clip</link> __user *clips; - __u32 clipcount; - void __user *bitmap; - __u8 global_alpha; -}; - -/* - * C A P T U R E P A R A M E T E R S - */ -struct <link linkend="v4l2-captureparm">v4l2_captureparm</link> { - __u32 capability; /* Supported modes */ - __u32 capturemode; /* Current mode */ - struct <link linkend="v4l2-fract">v4l2_fract</link> timeperframe; /* Time per frame in .1us units */ - __u32 extendedmode; /* Driver-specific extensions */ - __u32 readbuffers; /* # of buffers for read */ - __u32 reserved[4]; -}; - -/* Flags for 'capability' and 'capturemode' fields */ -#define V4L2_MODE_HIGHQUALITY 0x0001 /* High quality imaging mode */ -#define V4L2_CAP_TIMEPERFRAME 0x1000 /* timeperframe field is supported */ - -struct <link linkend="v4l2-outputparm">v4l2_outputparm</link> { - __u32 capability; /* Supported modes */ - __u32 outputmode; /* Current mode */ - struct <link linkend="v4l2-fract">v4l2_fract</link> timeperframe; /* Time per frame in seconds */ - __u32 extendedmode; /* Driver-specific extensions */ - __u32 writebuffers; /* # of buffers for write */ - __u32 reserved[4]; -}; - -/* - * I N P U T I M A G E C R O P P I N G - */ -struct <link linkend="v4l2-cropcap">v4l2_cropcap</link> { - enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; - struct <link linkend="v4l2-rect">v4l2_rect</link> bounds; - struct <link linkend="v4l2-rect">v4l2_rect</link> defrect; - struct <link linkend="v4l2-fract">v4l2_fract</link> pixelaspect; -}; - -struct <link linkend="v4l2-crop">v4l2_crop</link> { - enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; - struct <link linkend="v4l2-rect">v4l2_rect</link> c; -}; - -/* - * A N A L O G V I D E O S T A N D A R D - */ - -typedef __u64 v4l2_std_id; - -/* one bit for each */ -#define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001) -#define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002) -#define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004) -#define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008) -#define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010) -#define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020) -#define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040) -#define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080) - -#define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100) -#define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200) -#define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400) -#define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800) - -#define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000) -#define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000) -#define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000) -#define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000) - -#define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000) -#define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000) -#define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000) -#define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000) -#define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000) -#define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000) -#define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000) -#define V4L2_STD_SECAM_LC ((v4l2_std_id)0x00800000) - -/* ATSC/HDTV */ -#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000) -#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000) - -/* FIXME: - Although std_id is 64 bits, there is an issue on PPC32 architecture that - makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding - this value to 32 bits. - As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide), - it should work fine. However, if needed to add more than two standards, - v4l2-common.c should be fixed. - */ - -/* some merged standards */ -#define V4L2_STD_MN (V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC) -#define V4L2_STD_B (V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B) -#define V4L2_STD_GH (V4L2_STD_PAL_G|V4L2_STD_PAL_H|V4L2_STD_SECAM_G|V4L2_STD_SECAM_H) -#define V4L2_STD_DK (V4L2_STD_PAL_DK|V4L2_STD_SECAM_DK) - -/* some common needed stuff */ -#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\ - V4L2_STD_PAL_B1 |\ - V4L2_STD_PAL_G) -#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\ - V4L2_STD_PAL_D1 |\ - V4L2_STD_PAL_K) -#define V4L2_STD_PAL (V4L2_STD_PAL_BG |\ - V4L2_STD_PAL_DK |\ - V4L2_STD_PAL_H |\ - V4L2_STD_PAL_I) -#define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\ - V4L2_STD_NTSC_M_JP |\ - V4L2_STD_NTSC_M_KR) -#define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |\ - V4L2_STD_SECAM_K |\ - V4L2_STD_SECAM_K1) -#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\ - V4L2_STD_SECAM_G |\ - V4L2_STD_SECAM_H |\ - V4L2_STD_SECAM_DK |\ - V4L2_STD_SECAM_L |\ - V4L2_STD_SECAM_LC) - -#define V4L2_STD_525_60 (V4L2_STD_PAL_M |\ - V4L2_STD_PAL_60 |\ - V4L2_STD_NTSC |\ - V4L2_STD_NTSC_443) -#define V4L2_STD_625_50 (V4L2_STD_PAL |\ - V4L2_STD_PAL_N |\ - V4L2_STD_PAL_Nc |\ - V4L2_STD_SECAM) -#define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB |\ - V4L2_STD_ATSC_16_VSB) - -#define V4L2_STD_UNKNOWN 0 -#define V4L2_STD_ALL (V4L2_STD_525_60 |\ - V4L2_STD_625_50) - -struct <link linkend="v4l2-standard">v4l2_standard</link> { - __u32 index; - v4l2_std_id id; - __u8 name[24]; - struct <link linkend="v4l2-fract">v4l2_fract</link> frameperiod; /* Frames, not fields */ - __u32 framelines; - __u32 reserved[4]; -}; - -/* - * V I D E O T I M I N G S D V P R E S E T - */ -struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link> { - __u32 preset; - __u32 reserved[4]; -}; - -/* - * D V P R E S E T S E N U M E R A T I O N - */ -struct <link linkend="v4l2-dv-enum-preset">v4l2_dv_enum_preset</link> { - __u32 index; - __u32 preset; - __u8 name[32]; /* Name of the preset timing */ - __u32 width; - __u32 height; - __u32 reserved[4]; -}; - -/* - * D V P R E S E T V A L U E S - */ -#define V4L2_DV_INVALID 0 -#define V4L2_DV_480P59_94 1 /* BT.1362 */ -#define V4L2_DV_576P50 2 /* BT.1362 */ -#define V4L2_DV_720P24 3 /* SMPTE 296M */ -#define V4L2_DV_720P25 4 /* SMPTE 296M */ -#define V4L2_DV_720P30 5 /* SMPTE 296M */ -#define V4L2_DV_720P50 6 /* SMPTE 296M */ -#define V4L2_DV_720P59_94 7 /* SMPTE 274M */ -#define V4L2_DV_720P60 8 /* SMPTE 274M/296M */ -#define V4L2_DV_1080I29_97 9 /* BT.1120/ SMPTE 274M */ -#define V4L2_DV_1080I30 10 /* BT.1120/ SMPTE 274M */ -#define V4L2_DV_1080I25 11 /* BT.1120 */ -#define V4L2_DV_1080I50 12 /* SMPTE 296M */ -#define V4L2_DV_1080I60 13 /* SMPTE 296M */ -#define V4L2_DV_1080P24 14 /* SMPTE 296M */ -#define V4L2_DV_1080P25 15 /* SMPTE 296M */ -#define V4L2_DV_1080P30 16 /* SMPTE 296M */ -#define V4L2_DV_1080P50 17 /* BT.1120 */ -#define V4L2_DV_1080P60 18 /* BT.1120 */ - -/* - * D V B T T I M I N G S - */ - -/* BT.656/BT.1120 timing data */ -struct <link linkend="v4l2-bt-timings">v4l2_bt_timings</link> { - __u32 width; /* width in pixels */ - __u32 height; /* height in lines */ - __u32 interlaced; /* Interlaced or progressive */ - __u32 polarities; /* Positive or negative polarity */ - __u64 pixelclock; /* Pixel clock in HZ. Ex. 74.25MHz->74250000 */ - __u32 hfrontporch; /* Horizpontal front porch in pixels */ - __u32 hsync; /* Horizontal Sync length in pixels */ - __u32 hbackporch; /* Horizontal back porch in pixels */ - __u32 vfrontporch; /* Vertical front porch in pixels */ - __u32 vsync; /* Vertical Sync length in lines */ - __u32 vbackporch; /* Vertical back porch in lines */ - __u32 il_vfrontporch; /* Vertical front porch for bottom field of - * interlaced field formats - */ - __u32 il_vsync; /* Vertical sync length for bottom field of - * interlaced field formats - */ - __u32 il_vbackporch; /* Vertical back porch for bottom field of - * interlaced field formats - */ - __u32 reserved[16]; -} __attribute__ ((packed)); - -/* Interlaced or progressive format */ -#define V4L2_DV_PROGRESSIVE 0 -#define V4L2_DV_INTERLACED 1 - -/* Polarities. If bit is not set, it is assumed to be negative polarity */ -#define V4L2_DV_VSYNC_POS_POL 0x00000001 -#define V4L2_DV_HSYNC_POS_POL 0x00000002 - - -/* DV timings */ -struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link> { - __u32 type; - union { - struct <link linkend="v4l2-bt-timings">v4l2_bt_timings</link> bt; - __u32 reserved[32]; - }; -} __attribute__ ((packed)); - -/* Values for the type field */ -#define V4L2_DV_BT_656_1120 0 /* BT.656/1120 timing type */ - -/* - * V I D E O I N P U T S - */ -struct <link linkend="v4l2-input">v4l2_input</link> { - __u32 index; /* Which input */ - __u8 name[32]; /* Label */ - __u32 type; /* Type of input */ - __u32 audioset; /* Associated audios (bitfield) */ - __u32 tuner; /* Associated tuner */ - v4l2_std_id std; - __u32 status; - __u32 capabilities; - __u32 reserved[3]; -}; - -/* Values for the 'type' field */ -#define V4L2_INPUT_TYPE_TUNER 1 -#define V4L2_INPUT_TYPE_CAMERA 2 - -/* field 'status' - general */ -#define V4L2_IN_ST_NO_POWER 0x00000001 /* Attached device is off */ -#define V4L2_IN_ST_NO_SIGNAL 0x00000002 -#define V4L2_IN_ST_NO_COLOR 0x00000004 - -/* field 'status' - sensor orientation */ -/* If sensor is mounted upside down set both bits */ -#define V4L2_IN_ST_HFLIP 0x00000010 /* Frames are flipped horizontally */ -#define V4L2_IN_ST_VFLIP 0x00000020 /* Frames are flipped vertically */ - -/* field 'status' - analog */ -#define V4L2_IN_ST_NO_H_LOCK 0x00000100 /* No horizontal sync lock */ -#define V4L2_IN_ST_COLOR_KILL 0x00000200 /* Color killer is active */ - -/* field 'status' - digital */ -#define V4L2_IN_ST_NO_SYNC 0x00010000 /* No synchronization lock */ -#define V4L2_IN_ST_NO_EQU 0x00020000 /* No equalizer lock */ -#define V4L2_IN_ST_NO_CARRIER 0x00040000 /* Carrier recovery failed */ - -/* field 'status' - VCR and set-top box */ -#define V4L2_IN_ST_MACROVISION 0x01000000 /* Macrovision detected */ -#define V4L2_IN_ST_NO_ACCESS 0x02000000 /* Conditional access denied */ -#define V4L2_IN_ST_VTR 0x04000000 /* VTR time constant */ - -/* capabilities flags */ -#define V4L2_IN_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */ -#define V4L2_IN_CAP_CUSTOM_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ -#define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */ - -/* - * V I D E O O U T P U T S - */ -struct <link linkend="v4l2-output">v4l2_output</link> { - __u32 index; /* Which output */ - __u8 name[32]; /* Label */ - __u32 type; /* Type of output */ - __u32 audioset; /* Associated audios (bitfield) */ - __u32 modulator; /* Associated modulator */ - v4l2_std_id std; - __u32 capabilities; - __u32 reserved[3]; -}; -/* Values for the 'type' field */ -#define V4L2_OUTPUT_TYPE_MODULATOR 1 -#define V4L2_OUTPUT_TYPE_ANALOG 2 -#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3 - -/* capabilities flags */ -#define V4L2_OUT_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */ -#define V4L2_OUT_CAP_CUSTOM_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ -#define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */ - -/* - * C O N T R O L S - */ -struct <link linkend="v4l2-control">v4l2_control</link> { - __u32 id; - __s32 value; -}; - -struct <link linkend="v4l2-ext-control">v4l2_ext_control</link> { - __u32 id; - __u32 size; - __u32 reserved2[1]; - union { - __s32 value; - __s64 value64; - char *string; - }; -} __attribute__ ((packed)); - -struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link> { - __u32 ctrl_class; - __u32 count; - __u32 error_idx; - __u32 reserved[2]; - struct <link linkend="v4l2-ext-control">v4l2_ext_control</link> *controls; -}; - -/* Values for ctrl_class field */ -#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */ -#define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */ -#define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */ -#define V4L2_CTRL_CLASS_FM_TX 0x009b0000 /* FM Modulator control class */ - -#define V4L2_CTRL_ID_MASK (0x0fffffff) -#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) -#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000) - -enum <link linkend="v4l2-ctrl-type">v4l2_ctrl_type</link> { - V4L2_CTRL_TYPE_INTEGER = 1, - V4L2_CTRL_TYPE_BOOLEAN = 2, - V4L2_CTRL_TYPE_MENU = 3, - V4L2_CTRL_TYPE_BUTTON = 4, - V4L2_CTRL_TYPE_INTEGER64 = 5, - V4L2_CTRL_TYPE_CTRL_CLASS = 6, - V4L2_CTRL_TYPE_STRING = 7, -}; - -/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ -struct <link linkend="v4l2-queryctrl">v4l2_queryctrl</link> { - __u32 id; - enum <link linkend="v4l2-ctrl-type">v4l2_ctrl_type</link> type; - __u8 name[32]; /* Whatever */ - __s32 minimum; /* Note signedness */ - __s32 maximum; - __s32 step; - __s32 default_value; - __u32 flags; - __u32 reserved[2]; -}; - -/* Used in the VIDIOC_QUERYMENU ioctl for querying menu items */ -struct <link linkend="v4l2-querymenu">v4l2_querymenu</link> { - __u32 id; - __u32 index; - __u8 name[32]; /* Whatever */ - __u32 reserved; -}; - -/* Control flags */ -#define V4L2_CTRL_FLAG_DISABLED 0x0001 -#define V4L2_CTRL_FLAG_GRABBED 0x0002 -#define V4L2_CTRL_FLAG_READ_ONLY 0x0004 -#define V4L2_CTRL_FLAG_UPDATE 0x0008 -#define V4L2_CTRL_FLAG_INACTIVE 0x0010 -#define V4L2_CTRL_FLAG_SLIDER 0x0020 -#define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040 - -/* Query flag, to be ORed with the control ID */ -#define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000 - -/* User-class control IDs defined by V4L2 */ -#define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900) -#define V4L2_CID_USER_BASE V4L2_CID_BASE -/* IDs reserved for driver specific controls */ -#define V4L2_CID_PRIVATE_BASE 0x08000000 - -#define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1) -#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0) -#define V4L2_CID_CONTRAST (V4L2_CID_BASE+1) -#define V4L2_CID_SATURATION (V4L2_CID_BASE+2) -#define V4L2_CID_HUE (V4L2_CID_BASE+3) -#define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5) -#define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6) -#define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7) -#define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8) -#define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9) -#define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10) -#define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11) /* Deprecated */ -#define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12) -#define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13) -#define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14) -#define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15) -#define V4L2_CID_GAMMA (V4L2_CID_BASE+16) -#define V4L2_CID_WHITENESS (V4L2_CID_GAMMA) /* Deprecated */ -#define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17) -#define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18) -#define V4L2_CID_GAIN (V4L2_CID_BASE+19) -#define V4L2_CID_HFLIP (V4L2_CID_BASE+20) -#define V4L2_CID_VFLIP (V4L2_CID_BASE+21) - -/* Deprecated; use V4L2_CID_PAN_RESET and V4L2_CID_TILT_RESET */ -#define V4L2_CID_HCENTER (V4L2_CID_BASE+22) -#define V4L2_CID_VCENTER (V4L2_CID_BASE+23) - -#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE+24) -enum <link linkend="v4l2-power-line-frequency">v4l2_power_line_frequency</link> { - V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0, - V4L2_CID_POWER_LINE_FREQUENCY_50HZ = 1, - V4L2_CID_POWER_LINE_FREQUENCY_60HZ = 2, -}; -#define V4L2_CID_HUE_AUTO (V4L2_CID_BASE+25) -#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE+26) -#define V4L2_CID_SHARPNESS (V4L2_CID_BASE+27) -#define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE+28) -#define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29) -#define V4L2_CID_COLOR_KILLER (V4L2_CID_BASE+30) -#define V4L2_CID_COLORFX (V4L2_CID_BASE+31) -enum <link linkend="v4l2-colorfx">v4l2_colorfx</link> { - V4L2_COLORFX_NONE = 0, - V4L2_COLORFX_BW = 1, - V4L2_COLORFX_SEPIA = 2, - V4L2_COLORFX_NEGATIVE = 3, - V4L2_COLORFX_EMBOSS = 4, - V4L2_COLORFX_SKETCH = 5, - V4L2_COLORFX_SKY_BLUE = 6, - V4L2_COLORFX_GRASS_GREEN = 7, - V4L2_COLORFX_SKIN_WHITEN = 8, - V4L2_COLORFX_VIVID = 9, -}; -#define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32) -#define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33) - -#define V4L2_CID_ROTATE (V4L2_CID_BASE+34) -#define V4L2_CID_BG_COLOR (V4L2_CID_BASE+35) - -#define V4L2_CID_CHROMA_GAIN (V4L2_CID_BASE+36) - -#define V4L2_CID_ILLUMINATORS_1 (V4L2_CID_BASE+37) -#define V4L2_CID_ILLUMINATORS_2 (V4L2_CID_BASE+38) - -/* last CID + 1 */ -#define V4L2_CID_LASTP1 (V4L2_CID_BASE+39) - -/* MPEG-class control IDs defined by V4L2 */ -#define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900) -#define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1) - -/* MPEG streams */ -#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE+0) -enum <link linkend="v4l2-mpeg-stream-type">v4l2_mpeg_stream_type</link> { - V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0, /* MPEG-2 program stream */ - V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1, /* MPEG-2 transport stream */ - V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2, /* MPEG-1 system stream */ - V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3, /* MPEG-2 DVD-compatible stream */ - V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4, /* MPEG-1 VCD-compatible stream */ - V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */ -}; -#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1) -#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2) -#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3) -#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4) -#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5) -#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6) -#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE+7) -enum <link linkend="v4l2-mpeg-stream-vbi-fmt">v4l2_mpeg_stream_vbi_fmt</link> { - V4L2_MPEG_STREAM_VBI_FMT_NONE = 0, /* No VBI in the MPEG stream */ - V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1, /* VBI in private packets, IVTV format */ -}; - -/* MPEG audio */ -#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE+100) -enum <link linkend="v4l2-mpeg-audio-sampling-freq">v4l2_mpeg_audio_sampling_freq</link> { - V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0, - V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1, - V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2, -}; -#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101) -enum <link linkend="v4l2-mpeg-audio-encoding">v4l2_mpeg_audio_encoding</link> { - V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0, - V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1, - V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2, - V4L2_MPEG_AUDIO_ENCODING_AAC = 3, - V4L2_MPEG_AUDIO_ENCODING_AC3 = 4, -}; -#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102) -enum <link linkend="v4l2-mpeg-audio-l1-bitrate">v4l2_mpeg_audio_l1_bitrate</link> { - V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0, - V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1, - V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2, - V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3, - V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4, - V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5, - V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6, - V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7, - V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8, - V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9, - V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10, - V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11, - V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12, - V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13, -}; -#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE+103) -enum <link linkend="v4l2-mpeg-audio-l2-bitrate">v4l2_mpeg_audio_l2_bitrate</link> { - V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0, - V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1, - V4L2_MPEG_AUDIO_L2_BITRATE_56K = 2, - V4L2_MPEG_AUDIO_L2_BITRATE_64K = 3, - V4L2_MPEG_AUDIO_L2_BITRATE_80K = 4, - V4L2_MPEG_AUDIO_L2_BITRATE_96K = 5, - V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6, - V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7, - V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8, - V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9, - V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10, - V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11, - V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12, - V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13, -}; -#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE+104) -enum <link linkend="v4l2-mpeg-audio-l3-bitrate">v4l2_mpeg_audio_l3_bitrate</link> { - V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0, - V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1, - V4L2_MPEG_AUDIO_L3_BITRATE_48K = 2, - V4L2_MPEG_AUDIO_L3_BITRATE_56K = 3, - V4L2_MPEG_AUDIO_L3_BITRATE_64K = 4, - V4L2_MPEG_AUDIO_L3_BITRATE_80K = 5, - V4L2_MPEG_AUDIO_L3_BITRATE_96K = 6, - V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7, - V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8, - V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9, - V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10, - V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11, - V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12, - V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13, -}; -#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE+105) -enum <link linkend="v4l2-mpeg-audio-mode">v4l2_mpeg_audio_mode</link> { - V4L2_MPEG_AUDIO_MODE_STEREO = 0, - V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1, - V4L2_MPEG_AUDIO_MODE_DUAL = 2, - V4L2_MPEG_AUDIO_MODE_MONO = 3, -}; -#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE+106) -enum <link linkend="v4l2-mpeg-audio-mode-extension">v4l2_mpeg_audio_mode_extension</link> { - V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0, - V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1, - V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2, - V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3, -}; -#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE+107) -enum <link linkend="v4l2-mpeg-audio-emphasis">v4l2_mpeg_audio_emphasis</link> { - V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0, - V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1, - V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2, -}; -#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE+108) -enum <link linkend="v4l2-mpeg-audio-crc">v4l2_mpeg_audio_crc</link> { - V4L2_MPEG_AUDIO_CRC_NONE = 0, - V4L2_MPEG_AUDIO_CRC_CRC16 = 1, -}; -#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE+109) -#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_MPEG_BASE+110) -#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_MPEG_BASE+111) -enum <link linkend="v4l2-mpeg-audio-ac3-bitrate">v4l2_mpeg_audio_ac3_bitrate</link> { - V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0, - V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1, - V4L2_MPEG_AUDIO_AC3_BITRATE_48K = 2, - V4L2_MPEG_AUDIO_AC3_BITRATE_56K = 3, - V4L2_MPEG_AUDIO_AC3_BITRATE_64K = 4, - V4L2_MPEG_AUDIO_AC3_BITRATE_80K = 5, - V4L2_MPEG_AUDIO_AC3_BITRATE_96K = 6, - V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7, - V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8, - V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9, - V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10, - V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11, - V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12, - V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13, - V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14, - V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15, - V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16, - V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17, - V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18, -}; - -/* MPEG video */ -#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200) -enum <link linkend="v4l2-mpeg-video-encoding">v4l2_mpeg_video_encoding</link> { - V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0, - V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1, - V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2, -}; -#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE+201) -enum <link linkend="v4l2-mpeg-video-aspect">v4l2_mpeg_video_aspect</link> { - V4L2_MPEG_VIDEO_ASPECT_1x1 = 0, - V4L2_MPEG_VIDEO_ASPECT_4x3 = 1, - V4L2_MPEG_VIDEO_ASPECT_16x9 = 2, - V4L2_MPEG_VIDEO_ASPECT_221x100 = 3, -}; -#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE+202) -#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE+203) -#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE+204) -#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE+205) -#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE+206) -enum <link linkend="v4l2-mpeg-video-bitrate-mode">v4l2_mpeg_video_bitrate_mode</link> { - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0, - V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1, -}; -#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207) -#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208) -#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209) -#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_MPEG_BASE+210) -#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_MPEG_BASE+211) - -/* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */ -#define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000) -#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0) -enum <link linkend="v4l2-mpeg-cx2341x-video-spatial-filter-mode">v4l2_mpeg_cx2341x_video_spatial_filter_mode</link> { - V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0, - V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1, -}; -#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+1) -#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+2) -enum <link linkend="luma-spatial-filter-type">v4l2_mpeg_cx2341x_video_luma_spatial_filter_type</link> { - V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0, - V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1, - V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2, - V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3, - V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4, -}; -#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+3) -enum <link linkend="chroma-spatial-filter-type">v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type</link> { - V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0, - V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1, -}; -#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+4) -enum <link linkend="v4l2-mpeg-cx2341x-video-temporal-filter-mode">v4l2_mpeg_cx2341x_video_temporal_filter_mode</link> { - V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0, - V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1, -}; -#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+5) -#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+6) -enum <link linkend="v4l2-mpeg-cx2341x-video-median-filter-type">v4l2_mpeg_cx2341x_video_median_filter_type</link> { - V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0, - V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1, - V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT = 2, - V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3, - V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4, -}; -#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+7) -#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8) -#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9) -#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10) -#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_MPEG_CX2341X_BASE+11) - -/* Camera class control IDs */ -#define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900) -#define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1) - -#define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE+1) -enum <link linkend="v4l2-exposure-auto-type">v4l2_exposure_auto_type</link> { - V4L2_EXPOSURE_AUTO = 0, - V4L2_EXPOSURE_MANUAL = 1, - V4L2_EXPOSURE_SHUTTER_PRIORITY = 2, - V4L2_EXPOSURE_APERTURE_PRIORITY = 3 -}; -#define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+2) -#define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_CAMERA_CLASS_BASE+3) - -#define V4L2_CID_PAN_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+4) -#define V4L2_CID_TILT_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+5) -#define V4L2_CID_PAN_RESET (V4L2_CID_CAMERA_CLASS_BASE+6) -#define V4L2_CID_TILT_RESET (V4L2_CID_CAMERA_CLASS_BASE+7) - -#define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+8) -#define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+9) - -#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10) -#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11) -#define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12) - -#define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+13) -#define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+14) -#define V4L2_CID_ZOOM_CONTINUOUS (V4L2_CID_CAMERA_CLASS_BASE+15) - -#define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16) - -#define V4L2_CID_IRIS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+17) -#define V4L2_CID_IRIS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+18) - -/* FM Modulator class control IDs */ -#define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900) -#define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1) - -#define V4L2_CID_RDS_TX_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 1) -#define V4L2_CID_RDS_TX_PI (V4L2_CID_FM_TX_CLASS_BASE + 2) -#define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3) -#define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5) -#define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6) - -#define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64) -#define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65) -#define V4L2_CID_AUDIO_LIMITER_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 66) - -#define V4L2_CID_AUDIO_COMPRESSION_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 80) -#define V4L2_CID_AUDIO_COMPRESSION_GAIN (V4L2_CID_FM_TX_CLASS_BASE + 81) -#define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD (V4L2_CID_FM_TX_CLASS_BASE + 82) -#define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME (V4L2_CID_FM_TX_CLASS_BASE + 83) -#define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 84) - -#define V4L2_CID_PILOT_TONE_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 96) -#define V4L2_CID_PILOT_TONE_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 97) -#define V4L2_CID_PILOT_TONE_FREQUENCY (V4L2_CID_FM_TX_CLASS_BASE + 98) - -#define V4L2_CID_TUNE_PREEMPHASIS (V4L2_CID_FM_TX_CLASS_BASE + 112) -enum <link linkend="v4l2-preemphasis">v4l2_preemphasis</link> { - V4L2_PREEMPHASIS_DISABLED = 0, - V4L2_PREEMPHASIS_50_uS = 1, - V4L2_PREEMPHASIS_75_uS = 2, -}; -#define V4L2_CID_TUNE_POWER_LEVEL (V4L2_CID_FM_TX_CLASS_BASE + 113) -#define V4L2_CID_TUNE_ANTENNA_CAPACITOR (V4L2_CID_FM_TX_CLASS_BASE + 114) - -/* - * T U N I N G - */ -struct <link linkend="v4l2-tuner">v4l2_tuner</link> { - __u32 index; - __u8 name[32]; - enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> type; - __u32 capability; - __u32 rangelow; - __u32 rangehigh; - __u32 rxsubchans; - __u32 audmode; - __s32 signal; - __s32 afc; - __u32 reserved[4]; -}; - -struct <link linkend="v4l2-modulator">v4l2_modulator</link> { - __u32 index; - __u8 name[32]; - __u32 capability; - __u32 rangelow; - __u32 rangehigh; - __u32 txsubchans; - __u32 reserved[4]; -}; - -/* Flags for the 'capability' field */ -#define V4L2_TUNER_CAP_LOW 0x0001 -#define V4L2_TUNER_CAP_NORM 0x0002 -#define V4L2_TUNER_CAP_STEREO 0x0010 -#define V4L2_TUNER_CAP_LANG2 0x0020 -#define V4L2_TUNER_CAP_SAP 0x0020 -#define V4L2_TUNER_CAP_LANG1 0x0040 -#define V4L2_TUNER_CAP_RDS 0x0080 -#define V4L2_TUNER_CAP_RDS_BLOCK_IO 0x0100 -#define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200 - -/* Flags for the 'rxsubchans' field */ -#define V4L2_TUNER_SUB_MONO 0x0001 -#define V4L2_TUNER_SUB_STEREO 0x0002 -#define V4L2_TUNER_SUB_LANG2 0x0004 -#define V4L2_TUNER_SUB_SAP 0x0004 -#define V4L2_TUNER_SUB_LANG1 0x0008 -#define V4L2_TUNER_SUB_RDS 0x0010 - -/* Values for the 'audmode' field */ -#define V4L2_TUNER_MODE_MONO 0x0000 -#define V4L2_TUNER_MODE_STEREO 0x0001 -#define V4L2_TUNER_MODE_LANG2 0x0002 -#define V4L2_TUNER_MODE_SAP 0x0002 -#define V4L2_TUNER_MODE_LANG1 0x0003 -#define V4L2_TUNER_MODE_LANG1_LANG2 0x0004 - -struct <link linkend="v4l2-frequency">v4l2_frequency</link> { - __u32 tuner; - enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> type; - __u32 frequency; - __u32 reserved[8]; -}; - -struct <link linkend="v4l2-hw-freq-seek">v4l2_hw_freq_seek</link> { - __u32 tuner; - enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> type; - __u32 seek_upward; - __u32 wrap_around; - __u32 spacing; - __u32 reserved[7]; -}; - -/* - * R D S - */ - -struct <link linkend="v4l2-rds-data">v4l2_rds_data</link> { - __u8 lsb; - __u8 msb; - __u8 block; -} __attribute__ ((packed)); - -#define V4L2_RDS_BLOCK_MSK 0x7 -#define V4L2_RDS_BLOCK_A 0 -#define V4L2_RDS_BLOCK_B 1 -#define V4L2_RDS_BLOCK_C 2 -#define V4L2_RDS_BLOCK_D 3 -#define V4L2_RDS_BLOCK_C_ALT 4 -#define V4L2_RDS_BLOCK_INVALID 7 - -#define V4L2_RDS_BLOCK_CORRECTED 0x40 -#define V4L2_RDS_BLOCK_ERROR 0x80 - -/* - * A U D I O - */ -struct <link linkend="v4l2-audio">v4l2_audio</link> { - __u32 index; - __u8 name[32]; - __u32 capability; - __u32 mode; - __u32 reserved[2]; -}; - -/* Flags for the 'capability' field */ -#define V4L2_AUDCAP_STEREO 0x00001 -#define V4L2_AUDCAP_AVL 0x00002 - -/* Flags for the 'mode' field */ -#define V4L2_AUDMODE_AVL 0x00001 - -struct <link linkend="v4l2-audioout">v4l2_audioout</link> { - __u32 index; - __u8 name[32]; - __u32 capability; - __u32 mode; - __u32 reserved[2]; -}; - -/* - * M P E G S E R V I C E S - * - * NOTE: EXPERIMENTAL API - */ -#if 1 -#define V4L2_ENC_IDX_FRAME_I (0) -#define V4L2_ENC_IDX_FRAME_P (1) -#define V4L2_ENC_IDX_FRAME_B (2) -#define V4L2_ENC_IDX_FRAME_MASK (0xf) - -struct <link linkend="v4l2-enc-idx-entry">v4l2_enc_idx_entry</link> { - __u64 offset; - __u64 pts; - __u32 length; - __u32 flags; - __u32 reserved[2]; -}; - -#define V4L2_ENC_IDX_ENTRIES (64) -struct <link linkend="v4l2-enc-idx">v4l2_enc_idx</link> { - __u32 entries; - __u32 entries_cap; - __u32 reserved[4]; - struct <link linkend="v4l2-enc-idx-entry">v4l2_enc_idx_entry</link> entry[V4L2_ENC_IDX_ENTRIES]; -}; - - -#define V4L2_ENC_CMD_START (0) -#define V4L2_ENC_CMD_STOP (1) -#define V4L2_ENC_CMD_PAUSE (2) -#define V4L2_ENC_CMD_RESUME (3) - -/* Flags for V4L2_ENC_CMD_STOP */ -#define V4L2_ENC_CMD_STOP_AT_GOP_END (1 << 0) - -struct <link linkend="v4l2-encoder-cmd">v4l2_encoder_cmd</link> { - __u32 cmd; - __u32 flags; - union { - struct { - __u32 data[8]; - } raw; - }; -}; - -#endif - - -/* - * D A T A S E R V I C E S ( V B I ) - * - * Data services API by Michael Schimek - */ - -/* Raw VBI */ -struct <link linkend="v4l2-vbi-format">v4l2_vbi_format</link> { - __u32 sampling_rate; /* in 1 Hz */ - __u32 offset; - __u32 samples_per_line; - __u32 sample_format; /* V4L2_PIX_FMT_* */ - __s32 start[2]; - __u32 count[2]; - __u32 flags; /* V4L2_VBI_* */ - __u32 reserved[2]; /* must be zero */ -}; - -/* VBI flags */ -#define V4L2_VBI_UNSYNC (1 << 0) -#define V4L2_VBI_INTERLACED (1 << 1) - -/* Sliced VBI - * - * This implements is a proposal V4L2 API to allow SLICED VBI - * required for some hardware encoders. It should change without - * notice in the definitive implementation. - */ - -struct <link linkend="v4l2-sliced-vbi-format">v4l2_sliced_vbi_format</link> { - __u16 service_set; - /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field - service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field - (equals frame lines 313-336 for 625 line video - standards, 263-286 for 525 line standards) */ - __u16 service_lines[2][24]; - __u32 io_size; - __u32 reserved[2]; /* must be zero */ -}; - -/* Teletext World System Teletext - (WST), defined on ITU-R BT.653-2 */ -#define V4L2_SLICED_TELETEXT_B (0x0001) -/* Video Program System, defined on ETS 300 231*/ -#define V4L2_SLICED_VPS (0x0400) -/* Closed Caption, defined on EIA-608 */ -#define V4L2_SLICED_CAPTION_525 (0x1000) -/* Wide Screen System, defined on ITU-R BT1119.1 */ -#define V4L2_SLICED_WSS_625 (0x4000) - -#define V4L2_SLICED_VBI_525 (V4L2_SLICED_CAPTION_525) -#define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625) - -struct <link linkend="v4l2-sliced-vbi-cap">v4l2_sliced_vbi_cap</link> { - __u16 service_set; - /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field - service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field - (equals frame lines 313-336 for 625 line video - standards, 263-286 for 525 line standards) */ - __u16 service_lines[2][24]; - enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; - __u32 reserved[3]; /* must be 0 */ -}; - -struct <link linkend="v4l2-sliced-vbi-data">v4l2_sliced_vbi_data</link> { - __u32 id; - __u32 field; /* 0: first field, 1: second field */ - __u32 line; /* 1-23 */ - __u32 reserved; /* must be 0 */ - __u8 data[48]; -}; - -/* - * Sliced VBI data inserted into MPEG Streams - */ - -/* - * V4L2_MPEG_STREAM_VBI_FMT_IVTV: - * - * Structure of payload contained in an MPEG 2 Private Stream 1 PES Packet in an - * MPEG-2 Program Pack that contains V4L2_MPEG_STREAM_VBI_FMT_IVTV Sliced VBI - * data - * - * Note, the MPEG-2 Program Pack and Private Stream 1 PES packet header - * definitions are not included here. See the MPEG-2 specifications for details - * on these headers. - */ - -/* Line type IDs */ -#define V4L2_MPEG_VBI_IVTV_TELETEXT_B (1) -#define V4L2_MPEG_VBI_IVTV_CAPTION_525 (4) -#define V4L2_MPEG_VBI_IVTV_WSS_625 (5) -#define V4L2_MPEG_VBI_IVTV_VPS (7) - -struct <link linkend="v4l2-mpeg-vbi-itv0-line">v4l2_mpeg_vbi_itv0_line</link> { - __u8 id; /* One of V4L2_MPEG_VBI_IVTV_* above */ - __u8 data[42]; /* Sliced VBI data for the line */ -} __attribute__ ((packed)); - -struct <link linkend="v4l2-mpeg-vbi-itv0">v4l2_mpeg_vbi_itv0</link> { - __le32 linemask[2]; /* Bitmasks of VBI service lines present */ - struct <link linkend="v4l2-mpeg-vbi-itv0-line">v4l2_mpeg_vbi_itv0_line</link> line[35]; -} __attribute__ ((packed)); - -struct <link linkend="v4l2-mpeg-vbi-itv0-1">v4l2_mpeg_vbi_ITV0</link> { - struct <link linkend="v4l2-mpeg-vbi-itv0-line">v4l2_mpeg_vbi_itv0_line</link> line[36]; -} __attribute__ ((packed)); - -#define V4L2_MPEG_VBI_IVTV_MAGIC0 "itv0" -#define V4L2_MPEG_VBI_IVTV_MAGIC1 "ITV0" - -struct <link linkend="v4l2-mpeg-vbi-fmt-ivtv">v4l2_mpeg_vbi_fmt_ivtv</link> { - __u8 magic[4]; - union { - struct <link linkend="v4l2-mpeg-vbi-itv0">v4l2_mpeg_vbi_itv0</link> itv0; - struct <link linkend="v4l2-mpeg-vbi-itv0-1">v4l2_mpeg_vbi_ITV0</link> ITV0; - }; -} __attribute__ ((packed)); - -/* - * A G G R E G A T E S T R U C T U R E S - */ - -/** - * struct <link linkend="v4l2-plane-pix-format">v4l2_plane_pix_format</link> - additional, per-plane format definition - * @sizeimage: maximum size in bytes required for data, for which - * this plane will be used - * @bytesperline: distance in bytes between the leftmost pixels in two - * adjacent lines - */ -struct <link linkend="v4l2-plane-pix-format">v4l2_plane_pix_format</link> { - __u32 sizeimage; - __u16 bytesperline; - __u16 reserved[7]; -} __attribute__ ((packed)); - -/** - * struct <link linkend="v4l2-pix-format-mplane">v4l2_pix_format_mplane</link> - multiplanar format definition - * @width: image width in pixels - * @height: image height in pixels - * @pixelformat: little endian four character code (fourcc) - * @field: field order (for interlaced video) - * @colorspace: supplemental to pixelformat - * @plane_fmt: per-plane information - * @num_planes: number of planes for this format - */ -struct <link linkend="v4l2-pix-format-mplane">v4l2_pix_format_mplane</link> { - __u32 width; - __u32 height; - __u32 pixelformat; - enum <link linkend="v4l2-field">v4l2_field</link> field; - enum <link linkend="v4l2-colorspace">v4l2_colorspace</link> colorspace; - - struct <link linkend="v4l2-plane-pix-format">v4l2_plane_pix_format</link> plane_fmt[VIDEO_MAX_PLANES]; - __u8 num_planes; - __u8 reserved[11]; -} __attribute__ ((packed)); - -/** - * struct <link linkend="v4l2-format">v4l2_format</link> - stream data format - * @type: type of the data stream - * @pix: definition of an image format - * @pix_mp: definition of a multiplanar image format - * @win: definition of an overlaid image - * @vbi: raw VBI capture or output parameters - * @sliced: sliced VBI capture or output parameters - * @raw_data: placeholder for future extensions and custom formats - */ -struct <link linkend="v4l2-format">v4l2_format</link> { - enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; - union { - struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> pix; /* V4L2_BUF_TYPE_VIDEO_CAPTURE */ - struct <link linkend="v4l2-pix-format-mplane">v4l2_pix_format_mplane</link> pix_mp; /* V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE */ - struct <link linkend="v4l2-window">v4l2_window</link> win; /* V4L2_BUF_TYPE_VIDEO_OVERLAY */ - struct <link linkend="v4l2-vbi-format">v4l2_vbi_format</link> vbi; /* V4L2_BUF_TYPE_VBI_CAPTURE */ - struct <link linkend="v4l2-sliced-vbi-format">v4l2_sliced_vbi_format</link> sliced; /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */ - __u8 raw_data[200]; /* user-defined */ - } fmt; -}; - -/* Stream type-dependent parameters - */ -struct <link linkend="v4l2-streamparm">v4l2_streamparm</link> { - enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; - union { - struct <link linkend="v4l2-captureparm">v4l2_captureparm</link> capture; - struct <link linkend="v4l2-outputparm">v4l2_outputparm</link> output; - __u8 raw_data[200]; /* user-defined */ - } parm; -}; - -/* - * E V E N T S - */ - -#define V4L2_EVENT_ALL 0 -#define V4L2_EVENT_VSYNC 1 -#define V4L2_EVENT_EOS 2 -#define V4L2_EVENT_PRIVATE_START 0x08000000 - -/* Payload for V4L2_EVENT_VSYNC */ -struct <link linkend="v4l2-event-vsync">v4l2_event_vsync</link> { - /* Can be V4L2_FIELD_ANY, _NONE, _TOP or _BOTTOM */ - __u8 field; -} __attribute__ ((packed)); - -struct <link linkend="v4l2-event">v4l2_event</link> { - __u32 type; - union { - struct <link linkend="v4l2-event-vsync">v4l2_event_vsync</link> vsync; - __u8 data[64]; - } u; - __u32 pending; - __u32 sequence; - struct timespec timestamp; - __u32 reserved[9]; -}; - -struct <link linkend="v4l2-event-subscription">v4l2_event_subscription</link> { - __u32 type; - __u32 reserved[7]; -}; - -/* - * A D V A N C E D D E B U G G I N G - * - * NOTE: EXPERIMENTAL API, NEVER RELY ON THIS IN APPLICATIONS! - * FOR DEBUGGING, TESTING AND INTERNAL USE ONLY! - */ - -/* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */ - -#define V4L2_CHIP_MATCH_HOST 0 /* Match against chip ID on host (0 for the host) */ -#define V4L2_CHIP_MATCH_I2C_DRIVER 1 /* Match against I2C driver name */ -#define V4L2_CHIP_MATCH_I2C_ADDR 2 /* Match against I2C 7-bit address */ -#define V4L2_CHIP_MATCH_AC97 3 /* Match against anciliary AC97 chip */ - -struct <link linkend="v4l2-dbg-match">v4l2_dbg_match</link> { - __u32 type; /* Match type */ - union { /* Match this chip, meaning determined by type */ - __u32 addr; - char name[32]; - }; -} __attribute__ ((packed)); - -struct <link linkend="v4l2-dbg-register">v4l2_dbg_register</link> { - struct <link linkend="v4l2-dbg-match">v4l2_dbg_match</link> match; - __u32 size; /* register size in bytes */ - __u64 reg; - __u64 val; -} __attribute__ ((packed)); - -/* VIDIOC_DBG_G_CHIP_IDENT */ -struct <link linkend="v4l2-dbg-chip-ident">v4l2_dbg_chip_ident</link> { - struct <link linkend="v4l2-dbg-match">v4l2_dbg_match</link> match; - __u32 ident; /* chip identifier as specified in <media/v4l2-chip-ident.h> */ - __u32 revision; /* chip revision, chip specific */ -} __attribute__ ((packed)); - -/* - * I O C T L C O D E S F O R V I D E O D E V I C E S - * - */ -#define VIDIOC_QUERYCAP _IOR('V', 0, struct <link linkend="v4l2-capability">v4l2_capability</link>) -#define VIDIOC_RESERVED _IO('V', 1) -#define VIDIOC_ENUM_FMT _IOWR('V', 2, struct <link linkend="v4l2-fmtdesc">v4l2_fmtdesc</link>) -#define VIDIOC_G_FMT _IOWR('V', 4, struct <link linkend="v4l2-format">v4l2_format</link>) -#define VIDIOC_S_FMT _IOWR('V', 5, struct <link linkend="v4l2-format">v4l2_format</link>) -#define VIDIOC_REQBUFS _IOWR('V', 8, struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link>) -#define VIDIOC_QUERYBUF _IOWR('V', 9, struct <link linkend="v4l2-buffer">v4l2_buffer</link>) -#define VIDIOC_G_FBUF _IOR('V', 10, struct <link linkend="v4l2-framebuffer">v4l2_framebuffer</link>) -#define VIDIOC_S_FBUF _IOW('V', 11, struct <link linkend="v4l2-framebuffer">v4l2_framebuffer</link>) -#define VIDIOC_OVERLAY _IOW('V', 14, int) -#define VIDIOC_QBUF _IOWR('V', 15, struct <link linkend="v4l2-buffer">v4l2_buffer</link>) -#define VIDIOC_DQBUF _IOWR('V', 17, struct <link linkend="v4l2-buffer">v4l2_buffer</link>) -#define VIDIOC_STREAMON _IOW('V', 18, int) -#define VIDIOC_STREAMOFF _IOW('V', 19, int) -#define VIDIOC_G_PARM _IOWR('V', 21, struct <link linkend="v4l2-streamparm">v4l2_streamparm</link>) -#define VIDIOC_S_PARM _IOWR('V', 22, struct <link linkend="v4l2-streamparm">v4l2_streamparm</link>) -#define VIDIOC_G_STD _IOR('V', 23, v4l2_std_id) -#define VIDIOC_S_STD _IOW('V', 24, v4l2_std_id) -#define VIDIOC_ENUMSTD _IOWR('V', 25, struct <link linkend="v4l2-standard">v4l2_standard</link>) -#define VIDIOC_ENUMINPUT _IOWR('V', 26, struct <link linkend="v4l2-input">v4l2_input</link>) -#define VIDIOC_G_CTRL _IOWR('V', 27, struct <link linkend="v4l2-control">v4l2_control</link>) -#define VIDIOC_S_CTRL _IOWR('V', 28, struct <link linkend="v4l2-control">v4l2_control</link>) -#define VIDIOC_G_TUNER _IOWR('V', 29, struct <link linkend="v4l2-tuner">v4l2_tuner</link>) -#define VIDIOC_S_TUNER _IOW('V', 30, struct <link linkend="v4l2-tuner">v4l2_tuner</link>) -#define VIDIOC_G_AUDIO _IOR('V', 33, struct <link linkend="v4l2-audio">v4l2_audio</link>) -#define VIDIOC_S_AUDIO _IOW('V', 34, struct <link linkend="v4l2-audio">v4l2_audio</link>) -#define VIDIOC_QUERYCTRL _IOWR('V', 36, struct <link linkend="v4l2-queryctrl">v4l2_queryctrl</link>) -#define VIDIOC_QUERYMENU _IOWR('V', 37, struct <link linkend="v4l2-querymenu">v4l2_querymenu</link>) -#define VIDIOC_G_INPUT _IOR('V', 38, int) -#define VIDIOC_S_INPUT _IOWR('V', 39, int) -#define VIDIOC_G_OUTPUT _IOR('V', 46, int) -#define VIDIOC_S_OUTPUT _IOWR('V', 47, int) -#define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct <link linkend="v4l2-output">v4l2_output</link>) -#define VIDIOC_G_AUDOUT _IOR('V', 49, struct <link linkend="v4l2-audioout">v4l2_audioout</link>) -#define VIDIOC_S_AUDOUT _IOW('V', 50, struct <link linkend="v4l2-audioout">v4l2_audioout</link>) -#define VIDIOC_G_MODULATOR _IOWR('V', 54, struct <link linkend="v4l2-modulator">v4l2_modulator</link>) -#define VIDIOC_S_MODULATOR _IOW('V', 55, struct <link linkend="v4l2-modulator">v4l2_modulator</link>) -#define VIDIOC_G_FREQUENCY _IOWR('V', 56, struct <link linkend="v4l2-frequency">v4l2_frequency</link>) -#define VIDIOC_S_FREQUENCY _IOW('V', 57, struct <link linkend="v4l2-frequency">v4l2_frequency</link>) -#define VIDIOC_CROPCAP _IOWR('V', 58, struct <link linkend="v4l2-cropcap">v4l2_cropcap</link>) -#define VIDIOC_G_CROP _IOWR('V', 59, struct <link linkend="v4l2-crop">v4l2_crop</link>) -#define VIDIOC_S_CROP _IOW('V', 60, struct <link linkend="v4l2-crop">v4l2_crop</link>) -#define VIDIOC_G_JPEGCOMP _IOR('V', 61, struct <link linkend="v4l2-jpegcompression">v4l2_jpegcompression</link>) -#define VIDIOC_S_JPEGCOMP _IOW('V', 62, struct <link linkend="v4l2-jpegcompression">v4l2_jpegcompression</link>) -#define VIDIOC_QUERYSTD _IOR('V', 63, v4l2_std_id) -#define VIDIOC_TRY_FMT _IOWR('V', 64, struct <link linkend="v4l2-format">v4l2_format</link>) -#define VIDIOC_ENUMAUDIO _IOWR('V', 65, struct <link linkend="v4l2-audio">v4l2_audio</link>) -#define VIDIOC_ENUMAUDOUT _IOWR('V', 66, struct <link linkend="v4l2-audioout">v4l2_audioout</link>) -#define VIDIOC_G_PRIORITY _IOR('V', 67, enum <link linkend="v4l2-priority">v4l2_priority</link>) -#define VIDIOC_S_PRIORITY _IOW('V', 68, enum <link linkend="v4l2-priority">v4l2_priority</link>) -#define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct <link linkend="v4l2-sliced-vbi-cap">v4l2_sliced_vbi_cap</link>) -#define VIDIOC_LOG_STATUS _IO('V', 70) -#define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>) -#define VIDIOC_S_EXT_CTRLS _IOWR('V', 72, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>) -#define VIDIOC_TRY_EXT_CTRLS _IOWR('V', 73, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>) -#if 1 -#define VIDIOC_ENUM_FRAMESIZES _IOWR('V', 74, struct <link linkend="v4l2-frmsizeenum">v4l2_frmsizeenum</link>) -#define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct <link linkend="v4l2-frmivalenum">v4l2_frmivalenum</link>) -#define VIDIOC_G_ENC_INDEX _IOR('V', 76, struct <link linkend="v4l2-enc-idx">v4l2_enc_idx</link>) -#define VIDIOC_ENCODER_CMD _IOWR('V', 77, struct <link linkend="v4l2-encoder-cmd">v4l2_encoder_cmd</link>) -#define VIDIOC_TRY_ENCODER_CMD _IOWR('V', 78, struct <link linkend="v4l2-encoder-cmd">v4l2_encoder_cmd</link>) -#endif - -#if 1 -/* Experimental, meant for debugging, testing and internal use. - Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined. - You must be root to use these ioctls. Never use these in applications! */ -#define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct <link linkend="v4l2-dbg-register">v4l2_dbg_register</link>) -#define VIDIOC_DBG_G_REGISTER _IOWR('V', 80, struct <link linkend="v4l2-dbg-register">v4l2_dbg_register</link>) - -/* Experimental, meant for debugging, testing and internal use. - Never use this ioctl in applications! */ -#define VIDIOC_DBG_G_CHIP_IDENT _IOWR('V', 81, struct <link linkend="v4l2-dbg-chip-ident">v4l2_dbg_chip_ident</link>) -#endif - -#define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct <link linkend="v4l2-hw-freq-seek">v4l2_hw_freq_seek</link>) -#define VIDIOC_ENUM_DV_PRESETS _IOWR('V', 83, struct <link linkend="v4l2-dv-enum-preset">v4l2_dv_enum_preset</link>) -#define VIDIOC_S_DV_PRESET _IOWR('V', 84, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>) -#define VIDIOC_G_DV_PRESET _IOWR('V', 85, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>) -#define VIDIOC_QUERY_DV_PRESET _IOR('V', 86, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>) -#define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link>) -#define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link>) -#define VIDIOC_DQEVENT _IOR('V', 89, struct <link linkend="v4l2-event">v4l2_event</link>) -#define VIDIOC_SUBSCRIBE_EVENT _IOW('V', 90, struct <link linkend="v4l2-event-subscription">v4l2_event_subscription</link>) -#define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct <link linkend="v4l2-event-subscription">v4l2_event_subscription</link>) - -/* Reminder: when adding new ioctls please add support for them to - drivers/media/video/v4l2-compat-ioctl32.c as well! */ - -#define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */ - -#endif /* __LINUX_VIDEODEV2_H */ -</programlisting> diff --git a/Documentation/DocBook/v4l/vidioc-cropcap.xml b/Documentation/DocBook/v4l/vidioc-cropcap.xml deleted file mode 100644 index 816e90e283c5..000000000000 --- a/Documentation/DocBook/v4l/vidioc-cropcap.xml +++ /dev/null @@ -1,174 +0,0 @@ -<refentry id="vidioc-cropcap"> - <refmeta> - <refentrytitle>ioctl VIDIOC_CROPCAP</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_CROPCAP</refname> - <refpurpose>Information about the video cropping and scaling abilities</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_cropcap -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_CROPCAP</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>Applications use this function to query the cropping -limits, the pixel aspect of images and to calculate scale factors. -They set the <structfield>type</structfield> field of a v4l2_cropcap -structure to the respective buffer (stream) type and call the -<constant>VIDIOC_CROPCAP</constant> ioctl with a pointer to this -structure. Drivers fill the rest of the structure. The results are -constant except when switching the video standard. Remember this -switch can occur implicit when switching the video input or -output.</para> - - <table pgwide="1" frame="none" id="v4l2-cropcap"> - <title>struct <structname>v4l2_cropcap</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>&v4l2-buf-type;</entry> - <entry><structfield>type</structfield></entry> - <entry>Type of the data stream, set by the application. -Only these types are valid here: -<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>, -<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, -<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver -defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> -and higher.</entry> - </row> - <row> - <entry>struct <link linkend="v4l2-rect-crop">v4l2_rect</link></entry> - <entry><structfield>bounds</structfield></entry> - <entry>Defines the window within capturing or output is -possible, this may exclude for example the horizontal and vertical -blanking areas. The cropping rectangle cannot exceed these limits. -Width and height are defined in pixels, the driver writer is free to -choose origin and units of the coordinate system in the analog -domain.</entry> - </row> - <row> - <entry>struct <link linkend="v4l2-rect-crop">v4l2_rect</link></entry> - <entry><structfield>defrect</structfield></entry> - <entry>Default cropping rectangle, it shall cover the -"whole picture". Assuming pixel aspect 1/1 this could be for example a -640 × 480 rectangle for NTSC, a -768 × 576 rectangle for PAL and SECAM centered over -the active picture area. The same co-ordinate system as for - <structfield>bounds</structfield> is used.</entry> - </row> - <row> - <entry>&v4l2-fract;</entry> - <entry><structfield>pixelaspect</structfield></entry> - <entry><para>This is the pixel aspect (y / x) when no -scaling is applied, the ratio of the actual sampling -frequency and the frequency required to get square -pixels.</para><para>When cropping coordinates refer to square pixels, -the driver sets <structfield>pixelaspect</structfield> to 1/1. Other -common values are 54/59 for PAL and SECAM, 11/10 for NTSC sampled -according to [<xref linkend="itu601" />].</para></entry> - </row> - </tbody> - </tgroup> - </table> - - <!-- NB this table is duplicated in the overlay chapter. --> - - <table pgwide="1" frame="none" id="v4l2-rect-crop"> - <title>struct <structname>v4l2_rect</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__s32</entry> - <entry><structfield>left</structfield></entry> - <entry>Horizontal offset of the top, left corner of the -rectangle, in pixels.</entry> - </row> - <row> - <entry>__s32</entry> - <entry><structfield>top</structfield></entry> - <entry>Vertical offset of the top, left corner of the -rectangle, in pixels.</entry> - </row> - <row> - <entry>__s32</entry> - <entry><structfield>width</structfield></entry> - <entry>Width of the rectangle, in pixels.</entry> - </row> - <row> - <entry>__s32</entry> - <entry><structfield>height</structfield></entry> - <entry>Height of the rectangle, in pixels. Width -and height cannot be negative, the fields are signed for -hysterical reasons. <!-- video4linux-list@redhat.com -on 22 Oct 2002 subject "Re:[V4L][patches!] Re:v4l2/kernel-2.5" --> -</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-cropcap; <structfield>type</structfield> is -invalid or the ioctl is not supported. This is not permitted for -video capture, output and overlay devices, which must support -<constant>VIDIOC_CROPCAP</constant>.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-dbg-g-chip-ident.xml b/Documentation/DocBook/v4l/vidioc-dbg-g-chip-ident.xml deleted file mode 100644 index 4a09e203af0f..000000000000 --- a/Documentation/DocBook/v4l/vidioc-dbg-g-chip-ident.xml +++ /dev/null @@ -1,275 +0,0 @@ -<refentry id="vidioc-dbg-g-chip-ident"> - <refmeta> - <refentrytitle>ioctl VIDIOC_DBG_G_CHIP_IDENT</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_DBG_G_CHIP_IDENT</refname> - <refpurpose>Identify the chips on a TV card</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_dbg_chip_ident -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_DBG_G_CHIP_IDENT</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <note> - <title>Experimental</title> - - <para>This is an <link -linkend="experimental">experimental</link> interface and may change in -the future.</para> - </note> - - <para>For driver debugging purposes this ioctl allows test -applications to query the driver about the chips present on the TV -card. Regular applications must not use it. When you found a chip -specific bug, please contact the linux-media mailing list (&v4l-ml;) -so it can be fixed.</para> - - <para>To query the driver applications must initialize the -<structfield>match.type</structfield> and -<structfield>match.addr</structfield> or <structfield>match.name</structfield> -fields of a &v4l2-dbg-chip-ident; -and call <constant>VIDIOC_DBG_G_CHIP_IDENT</constant> with a pointer to -this structure. On success the driver stores information about the -selected chip in the <structfield>ident</structfield> and -<structfield>revision</structfield> fields. On failure the structure -remains unchanged.</para> - - <para>When <structfield>match.type</structfield> is -<constant>V4L2_CHIP_MATCH_HOST</constant>, -<structfield>match.addr</structfield> selects the nth non-&i2c; chip -on the TV card. You can enumerate all chips by starting at zero and -incrementing <structfield>match.addr</structfield> by one until -<constant>VIDIOC_DBG_G_CHIP_IDENT</constant> fails with an &EINVAL;. -The number zero always selects the host chip, ⪚ the chip connected -to the PCI or USB bus.</para> - - <para>When <structfield>match.type</structfield> is -<constant>V4L2_CHIP_MATCH_I2C_DRIVER</constant>, -<structfield>match.name</structfield> contains the I2C driver name. -For instance -<constant>"saa7127"</constant> will match any chip -supported by the saa7127 driver, regardless of its &i2c; bus address. -When multiple chips supported by the same driver are present, the -ioctl will return <constant>V4L2_IDENT_AMBIGUOUS</constant> in the -<structfield>ident</structfield> field.</para> - - <para>When <structfield>match.type</structfield> is -<constant>V4L2_CHIP_MATCH_I2C_ADDR</constant>, -<structfield>match.addr</structfield> selects a chip by its 7 bit -&i2c; bus address.</para> - - <para>When <structfield>match.type</structfield> is -<constant>V4L2_CHIP_MATCH_AC97</constant>, -<structfield>match.addr</structfield> selects the nth AC97 chip -on the TV card. You can enumerate all chips by starting at zero and -incrementing <structfield>match.addr</structfield> by one until -<constant>VIDIOC_DBG_G_CHIP_IDENT</constant> fails with an &EINVAL;.</para> - - <para>On success, the <structfield>ident</structfield> field will -contain a chip ID from the Linux -<filename>media/v4l2-chip-ident.h</filename> header file, and the -<structfield>revision</structfield> field will contain a driver -specific value, or zero if no particular revision is associated with -this chip.</para> - - <para>When the driver could not identify the selected chip, -<structfield>ident</structfield> will contain -<constant>V4L2_IDENT_UNKNOWN</constant>. When no chip matched -the ioctl will succeed but the -<structfield>ident</structfield> field will contain -<constant>V4L2_IDENT_NONE</constant>. If multiple chips matched, -<structfield>ident</structfield> will contain -<constant>V4L2_IDENT_AMBIGUOUS</constant>. In all these cases the -<structfield>revision</structfield> field remains unchanged.</para> - - <para>This ioctl is optional, not all drivers may support it. It -was introduced in Linux 2.6.21, but the API was changed to the -one described here in 2.6.29.</para> - - <para>We recommended the <application>v4l2-dbg</application> -utility over calling this ioctl directly. It is available from the -LinuxTV v4l-dvb repository; see <ulink -url="http://linuxtv.org/repo/">http://linuxtv.org/repo/</ulink> for -access instructions.</para> - - <!-- Note for convenience vidioc-dbg-g-register.sgml - contains a duplicate of this table. --> - <table pgwide="1" frame="none" id="ident-v4l2-dbg-match"> - <title>struct <structname>v4l2_dbg_match</structname></title> - <tgroup cols="4"> - &cs-ustr; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>type</structfield></entry> - <entry>See <xref linkend="ident-chip-match-types" /> for a list of -possible types.</entry> - </row> - <row> - <entry>union</entry> - <entry>(anonymous)</entry> - </row> - <row> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>addr</structfield></entry> - <entry>Match a chip by this number, interpreted according -to the <structfield>type</structfield> field.</entry> - </row> - <row> - <entry></entry> - <entry>char</entry> - <entry><structfield>name[32]</structfield></entry> - <entry>Match a chip by this name, interpreted according -to the <structfield>type</structfield> field.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-dbg-chip-ident"> - <title>struct <structname>v4l2_dbg_chip_ident</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>struct v4l2_dbg_match</entry> - <entry><structfield>match</structfield></entry> - <entry>How to match the chip, see <xref linkend="ident-v4l2-dbg-match" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>ident</structfield></entry> - <entry>A chip identifier as defined in the Linux -<filename>media/v4l2-chip-ident.h</filename> header file, or one of -the values from <xref linkend="chip-ids" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>revision</structfield></entry> - <entry>A chip revision, chip and driver specific.</entry> - </row> - </tbody> - </tgroup> - </table> - - <!-- Note for convenience vidioc-dbg-g-register.sgml - contains a duplicate of this table. --> - <table pgwide="1" frame="none" id="ident-chip-match-types"> - <title>Chip Match Types</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_CHIP_MATCH_HOST</constant></entry> - <entry>0</entry> - <entry>Match the nth chip on the card, zero for the - host chip. Does not match &i2c; chips.</entry> - </row> - <row> - <entry><constant>V4L2_CHIP_MATCH_I2C_DRIVER</constant></entry> - <entry>1</entry> - <entry>Match an &i2c; chip by its driver name.</entry> - </row> - <row> - <entry><constant>V4L2_CHIP_MATCH_I2C_ADDR</constant></entry> - <entry>2</entry> - <entry>Match a chip by its 7 bit &i2c; bus address.</entry> - </row> - <row> - <entry><constant>V4L2_CHIP_MATCH_AC97</constant></entry> - <entry>3</entry> - <entry>Match the nth anciliary AC97 chip.</entry> - </row> - </tbody> - </tgroup> - </table> - - <!-- This is an anonymous enum in media/v4l2-chip-ident.h. --> - <table pgwide="1" frame="none" id="chip-ids"> - <title>Chip Identifiers</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_IDENT_NONE</constant></entry> - <entry>0</entry> - <entry>No chip matched.</entry> - </row> - <row> - <entry><constant>V4L2_IDENT_AMBIGUOUS</constant></entry> - <entry>1</entry> - <entry>Multiple chips matched.</entry> - </row> - <row> - <entry><constant>V4L2_IDENT_UNKNOWN</constant></entry> - <entry>2</entry> - <entry>A chip is present at this address, but the driver -could not identify it.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The driver does not support this ioctl, or the -<structfield>match_type</structfield> is invalid.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-dbg-g-register.xml b/Documentation/DocBook/v4l/vidioc-dbg-g-register.xml deleted file mode 100644 index 980c7f3e2fd6..000000000000 --- a/Documentation/DocBook/v4l/vidioc-dbg-g-register.xml +++ /dev/null @@ -1,275 +0,0 @@ -<refentry id="vidioc-dbg-g-register"> - <refmeta> - <refentrytitle>ioctl VIDIOC_DBG_G_REGISTER, VIDIOC_DBG_S_REGISTER</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_DBG_G_REGISTER</refname> - <refname>VIDIOC_DBG_S_REGISTER</refname> - <refpurpose>Read or write hardware registers</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_dbg_register *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const struct v4l2_dbg_register -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_DBG_G_REGISTER, VIDIOC_DBG_S_REGISTER</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <note> - <title>Experimental</title> - - <para>This is an <link linkend="experimental">experimental</link> -interface and may change in the future.</para> - </note> - - <para>For driver debugging purposes these ioctls allow test -applications to access hardware registers directly. Regular -applications must not use them.</para> - - <para>Since writing or even reading registers can jeopardize the -system security, its stability and damage the hardware, both ioctls -require superuser privileges. Additionally the Linux kernel must be -compiled with the <constant>CONFIG_VIDEO_ADV_DEBUG</constant> option -to enable these ioctls.</para> - - <para>To write a register applications must initialize all fields -of a &v4l2-dbg-register; and call -<constant>VIDIOC_DBG_S_REGISTER</constant> with a pointer to this -structure. The <structfield>match.type</structfield> and -<structfield>match.addr</structfield> or <structfield>match.name</structfield> -fields select a chip on the TV -card, the <structfield>reg</structfield> field specifies a register -number and the <structfield>val</structfield> field the value to be -written into the register.</para> - - <para>To read a register applications must initialize the -<structfield>match.type</structfield>, -<structfield>match.chip</structfield> or <structfield>match.name</structfield> and -<structfield>reg</structfield> fields, and call -<constant>VIDIOC_DBG_G_REGISTER</constant> with a pointer to this -structure. On success the driver stores the register value in the -<structfield>val</structfield> field. On failure the structure remains -unchanged.</para> - - <para>When <structfield>match.type</structfield> is -<constant>V4L2_CHIP_MATCH_HOST</constant>, -<structfield>match.addr</structfield> selects the nth non-&i2c; chip -on the TV card. The number zero always selects the host chip, ⪚ the -chip connected to the PCI or USB bus. You can find out which chips are -present with the &VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para> - - <para>When <structfield>match.type</structfield> is -<constant>V4L2_CHIP_MATCH_I2C_DRIVER</constant>, -<structfield>match.name</structfield> contains the I2C driver name. -For instance -<constant>"saa7127"</constant> will match any chip -supported by the saa7127 driver, regardless of its &i2c; bus address. -When multiple chips supported by the same driver are present, the -effect of these ioctls is undefined. Again with the -&VIDIOC-DBG-G-CHIP-IDENT; ioctl you can find out which &i2c; chips are -present.</para> - - <para>When <structfield>match.type</structfield> is -<constant>V4L2_CHIP_MATCH_I2C_ADDR</constant>, -<structfield>match.addr</structfield> selects a chip by its 7 bit &i2c; -bus address.</para> - - <para>When <structfield>match.type</structfield> is -<constant>V4L2_CHIP_MATCH_AC97</constant>, -<structfield>match.addr</structfield> selects the nth AC97 chip -on the TV card.</para> - - <note> - <title>Success not guaranteed</title> - - <para>Due to a flaw in the Linux &i2c; bus driver these ioctls may -return successfully without actually reading or writing a register. To -catch the most likely failure we recommend a &VIDIOC-DBG-G-CHIP-IDENT; -call confirming the presence of the selected &i2c; chip.</para> - </note> - - <para>These ioctls are optional, not all drivers may support them. -However when a driver supports these ioctls it must also support -&VIDIOC-DBG-G-CHIP-IDENT;. Conversely it may support -<constant>VIDIOC_DBG_G_CHIP_IDENT</constant> but not these ioctls.</para> - - <para><constant>VIDIOC_DBG_G_REGISTER</constant> and -<constant>VIDIOC_DBG_S_REGISTER</constant> were introduced in Linux -2.6.21, but their API was changed to the one described here in kernel 2.6.29.</para> - - <para>We recommended the <application>v4l2-dbg</application> -utility over calling these ioctls directly. It is available from the -LinuxTV v4l-dvb repository; see <ulink -url="http://linuxtv.org/repo/">http://linuxtv.org/repo/</ulink> for -access instructions.</para> - - <!-- Note for convenience vidioc-dbg-g-chip-ident.sgml - contains a duplicate of this table. --> - <table pgwide="1" frame="none" id="v4l2-dbg-match"> - <title>struct <structname>v4l2_dbg_match</structname></title> - <tgroup cols="4"> - &cs-ustr; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>type</structfield></entry> - <entry>See <xref linkend="ident-chip-match-types" /> for a list of -possible types.</entry> - </row> - <row> - <entry>union</entry> - <entry>(anonymous)</entry> - </row> - <row> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>addr</structfield></entry> - <entry>Match a chip by this number, interpreted according -to the <structfield>type</structfield> field.</entry> - </row> - <row> - <entry></entry> - <entry>char</entry> - <entry><structfield>name[32]</structfield></entry> - <entry>Match a chip by this name, interpreted according -to the <structfield>type</structfield> field.</entry> - </row> - </tbody> - </tgroup> - </table> - - - <table pgwide="1" frame="none" id="v4l2-dbg-register"> - <title>struct <structname>v4l2_dbg_register</structname></title> - <tgroup cols="4"> - <colspec colname="c1" /> - <colspec colname="c2" /> - <colspec colname="c4" /> - <tbody valign="top"> - <row> - <entry>struct v4l2_dbg_match</entry> - <entry><structfield>match</structfield></entry> - <entry>How to match the chip, see <xref linkend="v4l2-dbg-match" />.</entry> - </row> - <row> - <entry>__u64</entry> - <entry><structfield>reg</structfield></entry> - <entry>A register number.</entry> - </row> - <row> - <entry>__u64</entry> - <entry><structfield>val</structfield></entry> - <entry>The value read from, or to be written into the -register.</entry> - </row> - </tbody> - </tgroup> - </table> - - <!-- Note for convenience vidioc-dbg-g-chip-ident.sgml - contains a duplicate of this table. --> - <table pgwide="1" frame="none" id="chip-match-types"> - <title>Chip Match Types</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_CHIP_MATCH_HOST</constant></entry> - <entry>0</entry> - <entry>Match the nth chip on the card, zero for the - host chip. Does not match &i2c; chips.</entry> - </row> - <row> - <entry><constant>V4L2_CHIP_MATCH_I2C_DRIVER</constant></entry> - <entry>1</entry> - <entry>Match an &i2c; chip by its driver name.</entry> - </row> - <row> - <entry><constant>V4L2_CHIP_MATCH_I2C_ADDR</constant></entry> - <entry>2</entry> - <entry>Match a chip by its 7 bit &i2c; bus address.</entry> - </row> - <row> - <entry><constant>V4L2_CHIP_MATCH_AC97</constant></entry> - <entry>3</entry> - <entry>Match the nth anciliary AC97 chip.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The driver does not support this ioctl, or the kernel -was not compiled with the <constant>CONFIG_VIDEO_ADV_DEBUG</constant> -option, or the <structfield>match_type</structfield> is invalid, or the -selected chip or register does not exist.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EPERM</errorcode></term> - <listitem> - <para>Insufficient permissions. Root privileges are required -to execute these ioctls.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-dqevent.xml b/Documentation/DocBook/v4l/vidioc-dqevent.xml deleted file mode 100644 index 4e0a7cc30812..000000000000 --- a/Documentation/DocBook/v4l/vidioc-dqevent.xml +++ /dev/null @@ -1,131 +0,0 @@ -<refentry id="vidioc-dqevent"> - <refmeta> - <refentrytitle>ioctl VIDIOC_DQEVENT</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_DQEVENT</refname> - <refpurpose>Dequeue event</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_event -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_DQEVENT</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>Dequeue an event from a video device. No input is required - for this ioctl. All the fields of the &v4l2-event; structure are - filled by the driver. The file handle will also receive exceptions - which the application may get by e.g. using the select system - call.</para> - - <table frame="none" pgwide="1" id="v4l2-event"> - <title>struct <structname>v4l2_event</structname></title> - <tgroup cols="4"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>type</structfield></entry> - <entry></entry> - <entry>Type of the event.</entry> - </row> - <row> - <entry>union</entry> - <entry><structfield>u</structfield></entry> - <entry></entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-event-vsync;</entry> - <entry><structfield>vsync</structfield></entry> - <entry>Event data for event V4L2_EVENT_VSYNC. - </entry> - </row> - <row> - <entry></entry> - <entry>__u8</entry> - <entry><structfield>data</structfield>[64]</entry> - <entry>Event data. Defined by the event type. The union - should be used to define easily accessible type for - events.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>pending</structfield></entry> - <entry></entry> - <entry>Number of pending events excluding this one.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>sequence</structfield></entry> - <entry></entry> - <entry>Event sequence number. The sequence number is - incremented for every subscribed event that takes place. - If sequence numbers are not contiguous it means that - events have been lost. - </entry> - </row> - <row> - <entry>struct timespec</entry> - <entry><structfield>timestamp</structfield></entry> - <entry></entry> - <entry>Event timestamp.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[9]</entry> - <entry></entry> - <entry>Reserved for future extensions. Drivers must set - the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - </refsect1> -</refentry> -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-encoder-cmd.xml b/Documentation/DocBook/v4l/vidioc-encoder-cmd.xml deleted file mode 100644 index b0dde943825c..000000000000 --- a/Documentation/DocBook/v4l/vidioc-encoder-cmd.xml +++ /dev/null @@ -1,204 +0,0 @@ -<refentry id="vidioc-encoder-cmd"> - <refmeta> - <refentrytitle>ioctl VIDIOC_ENCODER_CMD, VIDIOC_TRY_ENCODER_CMD</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_ENCODER_CMD</refname> - <refname>VIDIOC_TRY_ENCODER_CMD</refname> - <refpurpose>Execute an encoder command</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_encoder_cmd *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_ENCODER_CMD, VIDIOC_TRY_ENCODER_CMD</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <note> - <title>Experimental</title> - - <para>This is an <link linkend="experimental">experimental</link> -interface and may change in the future.</para> - </note> - - <para>These ioctls control an audio/video (usually MPEG-) encoder. -<constant>VIDIOC_ENCODER_CMD</constant> sends a command to the -encoder, <constant>VIDIOC_TRY_ENCODER_CMD</constant> can be used to -try a command without actually executing it.</para> - - <para>To send a command applications must initialize all fields of a - &v4l2-encoder-cmd; and call - <constant>VIDIOC_ENCODER_CMD</constant> or - <constant>VIDIOC_TRY_ENCODER_CMD</constant> with a pointer to this - structure.</para> - - <para>The <structfield>cmd</structfield> field must contain the -command code. The <structfield>flags</structfield> field is currently -only used by the STOP command and contains one bit: If the -<constant>V4L2_ENC_CMD_STOP_AT_GOP_END</constant> flag is set, -encoding will continue until the end of the current <wordasword>Group -Of Pictures</wordasword>, otherwise it will stop immediately.</para> - - <para>A <function>read</function>() call sends a START command to -the encoder if it has not been started yet. After a STOP command, -<function>read</function>() calls will read the remaining data -buffered by the driver. When the buffer is empty, -<function>read</function>() will return zero and the next -<function>read</function>() call will restart the encoder.</para> - - <para>A <function>close</function>() call sends an immediate STOP -to the encoder, and all buffered data is discarded.</para> - - <para>These ioctls are optional, not all drivers may support -them. They were introduced in Linux 2.6.21.</para> - - <table pgwide="1" frame="none" id="v4l2-encoder-cmd"> - <title>struct <structname>v4l2_encoder_cmd</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>cmd</structfield></entry> - <entry>The encoder command, see <xref linkend="encoder-cmds" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>flags</structfield></entry> - <entry>Flags to go with the command, see <xref - linkend="encoder-flags" />. If no flags are defined for -this command, drivers and applications must set this field to -zero.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>data</structfield>[8]</entry> - <entry>Reserved for future extensions. Drivers and -applications must set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="encoder-cmds"> - <title>Encoder Commands</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_ENC_CMD_START</constant></entry> - <entry>0</entry> - <entry>Start the encoder. When the encoder is already -running or paused, this command does nothing. No flags are defined for -this command.</entry> - </row> - <row> - <entry><constant>V4L2_ENC_CMD_STOP</constant></entry> - <entry>1</entry> - <entry>Stop the encoder. When the -<constant>V4L2_ENC_CMD_STOP_AT_GOP_END</constant> flag is set, -encoding will continue until the end of the current <wordasword>Group -Of Pictures</wordasword>, otherwise encoding will stop immediately. -When the encoder is already stopped, this command does -nothing.</entry> - </row> - <row> - <entry><constant>V4L2_ENC_CMD_PAUSE</constant></entry> - <entry>2</entry> - <entry>Pause the encoder. When the encoder has not been -started yet, the driver will return an &EPERM;. When the encoder is -already paused, this command does nothing. No flags are defined for -this command.</entry> - </row> - <row> - <entry><constant>V4L2_ENC_CMD_RESUME</constant></entry> - <entry>3</entry> - <entry>Resume encoding after a PAUSE command. When the -encoder has not been started yet, the driver will return an &EPERM;. -When the encoder is already running, this command does nothing. No -flags are defined for this command.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="encoder-flags"> - <title>Encoder Command Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_ENC_CMD_STOP_AT_GOP_END</constant></entry> - <entry>0x0001</entry> - <entry>Stop encoding at the end of the current <wordasword>Group Of -Pictures</wordasword>, rather than immediately.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The driver does not support this ioctl, or the -<structfield>cmd</structfield> field is invalid.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EPERM</errorcode></term> - <listitem> - <para>The application sent a PAUSE or RESUME command when -the encoder was not running.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-enum-dv-presets.xml b/Documentation/DocBook/v4l/vidioc-enum-dv-presets.xml deleted file mode 100644 index 1d31427edd1b..000000000000 --- a/Documentation/DocBook/v4l/vidioc-enum-dv-presets.xml +++ /dev/null @@ -1,238 +0,0 @@ -<refentry id="vidioc-enum-dv-presets"> - <refmeta> - <refentrytitle>ioctl VIDIOC_ENUM_DV_PRESETS</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_ENUM_DV_PRESETS</refname> - <refpurpose>Enumerate supported Digital Video presets</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_dv_enum_preset *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_ENUM_DV_PRESETS</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the attributes of a DV preset, applications initialize the -<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-enum-preset; -and call the <constant>VIDIOC_ENUM_DV_PRESETS</constant> ioctl with a pointer to this -structure. Drivers fill the rest of the structure or return an -&EINVAL; when the index is out of bounds. To enumerate all DV Presets supported, -applications shall begin at index zero, incrementing by one until the -driver returns <errorcode>EINVAL</errorcode>. Drivers may enumerate a -different set of DV presets after switching the video input or -output.</para> - - <table pgwide="1" frame="none" id="v4l2-dv-enum-preset"> - <title>struct <structname>v4l2_dv_enum_presets</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry>Number of the DV preset, set by the -application.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>preset</structfield></entry> - <entry>This field identifies one of the DV preset values listed in <xref linkend="v4l2-dv-presets-vals"/>.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>name</structfield>[24]</entry> - <entry>Name of the preset, a NUL-terminated ASCII string, for example: "720P-60", "1080I-60". This information is -intended for the user.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>width</structfield></entry> - <entry>Width of the active video in pixels for the DV preset.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>height</structfield></entry> - <entry>Height of the active video in lines for the DV preset.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[4]</entry> - <entry>Reserved for future extensions. Drivers must set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-dv-presets-vals"> - <title>struct <structname>DV Presets</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>Preset</entry> - <entry>Preset value</entry> - <entry>Description</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - </row> - <row> - <entry>V4L2_DV_INVALID</entry> - <entry>0</entry> - <entry>Invalid preset value.</entry> - </row> - <row> - <entry>V4L2_DV_480P59_94</entry> - <entry>1</entry> - <entry>720x480 progressive video at 59.94 fps as per BT.1362.</entry> - </row> - <row> - <entry>V4L2_DV_576P50</entry> - <entry>2</entry> - <entry>720x576 progressive video at 50 fps as per BT.1362.</entry> - </row> - <row> - <entry>V4L2_DV_720P24</entry> - <entry>3</entry> - <entry>1280x720 progressive video at 24 fps as per SMPTE 296M.</entry> - </row> - <row> - <entry>V4L2_DV_720P25</entry> - <entry>4</entry> - <entry>1280x720 progressive video at 25 fps as per SMPTE 296M.</entry> - </row> - <row> - <entry>V4L2_DV_720P30</entry> - <entry>5</entry> - <entry>1280x720 progressive video at 30 fps as per SMPTE 296M.</entry> - </row> - <row> - <entry>V4L2_DV_720P50</entry> - <entry>6</entry> - <entry>1280x720 progressive video at 50 fps as per SMPTE 296M.</entry> - </row> - <row> - <entry>V4L2_DV_720P59_94</entry> - <entry>7</entry> - <entry>1280x720 progressive video at 59.94 fps as per SMPTE 274M.</entry> - </row> - <row> - <entry>V4L2_DV_720P60</entry> - <entry>8</entry> - <entry>1280x720 progressive video at 60 fps as per SMPTE 274M/296M.</entry> - </row> - <row> - <entry>V4L2_DV_1080I29_97</entry> - <entry>9</entry> - <entry>1920x1080 interlaced video at 29.97 fps as per BT.1120/SMPTE 274M.</entry> - </row> - <row> - <entry>V4L2_DV_1080I30</entry> - <entry>10</entry> - <entry>1920x1080 interlaced video at 30 fps as per BT.1120/SMPTE 274M.</entry> - </row> - <row> - <entry>V4L2_DV_1080I25</entry> - <entry>11</entry> - <entry>1920x1080 interlaced video at 25 fps as per BT.1120.</entry> - </row> - <row> - <entry>V4L2_DV_1080I50</entry> - <entry>12</entry> - <entry>1920x1080 interlaced video at 50 fps as per SMPTE 296M.</entry> - </row> - <row> - <entry>V4L2_DV_1080I60</entry> - <entry>13</entry> - <entry>1920x1080 interlaced video at 60 fps as per SMPTE 296M.</entry> - </row> - <row> - <entry>V4L2_DV_1080P24</entry> - <entry>14</entry> - <entry>1920x1080 progressive video at 24 fps as per SMPTE 296M.</entry> - </row> - <row> - <entry>V4L2_DV_1080P25</entry> - <entry>15</entry> - <entry>1920x1080 progressive video at 25 fps as per SMPTE 296M.</entry> - </row> - <row> - <entry>V4L2_DV_1080P30</entry> - <entry>16</entry> - <entry>1920x1080 progressive video at 30 fps as per SMPTE 296M.</entry> - </row> - <row> - <entry>V4L2_DV_1080P50</entry> - <entry>17</entry> - <entry>1920x1080 progressive video at 50 fps as per BT.1120.</entry> - </row> - <row> - <entry>V4L2_DV_1080P60</entry> - <entry>18</entry> - <entry>1920x1080 progressive video at 60 fps as per BT.1120.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-dv-enum-preset; <structfield>index</structfield> -is out of bounds.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-enum-fmt.xml b/Documentation/DocBook/v4l/vidioc-enum-fmt.xml deleted file mode 100644 index 71d373b6d36a..000000000000 --- a/Documentation/DocBook/v4l/vidioc-enum-fmt.xml +++ /dev/null @@ -1,166 +0,0 @@ -<refentry id="vidioc-enum-fmt"> - <refmeta> - <refentrytitle>ioctl VIDIOC_ENUM_FMT</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_ENUM_FMT</refname> - <refpurpose>Enumerate image formats</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_fmtdesc -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_ENUM_FMT</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To enumerate image formats applications initialize the -<structfield>type</structfield> and <structfield>index</structfield> -field of &v4l2-fmtdesc; and call the -<constant>VIDIOC_ENUM_FMT</constant> ioctl with a pointer to this -structure. Drivers fill the rest of the structure or return an -&EINVAL;. All formats are enumerable by beginning at index zero and -incrementing by one until <errorcode>EINVAL</errorcode> is -returned.</para> - - <table pgwide="1" frame="none" id="v4l2-fmtdesc"> - <title>struct <structname>v4l2_fmtdesc</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry>Number of the format in the enumeration, set by -the application. This is in no way related to the <structfield> -pixelformat</structfield> field.</entry> - </row> - <row> - <entry>&v4l2-buf-type;</entry> - <entry><structfield>type</structfield></entry> - <entry>Type of the data stream, set by the application. -Only these types are valid here: -<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>, -<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>, -<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, -<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>, -<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver -defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> -and higher.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>flags</structfield></entry> - <entry>See <xref linkend="fmtdesc-flags" /></entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>description</structfield>[32]</entry> - <entry>Description of the format, a NUL-terminated ASCII -string. This information is intended for the user, for example: "YUV -4:2:2".</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>pixelformat</structfield></entry> - <entry>The image format identifier. This is a -four character code as computed by the v4l2_fourcc() -macro:</entry> - </row> - <row> - <entry spanname="hspan"><para><programlisting id="v4l2-fourcc"> -#define v4l2_fourcc(a,b,c,d) (((__u32)(a)<<0)|((__u32)(b)<<8)|((__u32)(c)<<16)|((__u32)(d)<<24)) -</programlisting></para><para>Several image formats are already -defined by this specification in <xref linkend="pixfmt" />. Note these -codes are not the same as those used in the Windows world.</para></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[4]</entry> - <entry>Reserved for future extensions. Drivers must set -the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="fmtdesc-flags"> - <title>Image Format Description Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_FMT_FLAG_COMPRESSED</constant></entry> - <entry>0x0001</entry> - <entry>This is a compressed format.</entry> - </row> - <row> - <entry><constant>V4L2_FMT_FLAG_EMULATED</constant></entry> - <entry>0x0002</entry> - <entry>This format is not native to the device but emulated -through software (usually libv4l2), where possible try to use a native format -instead for better performance.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-fmtdesc; <structfield>type</structfield> -is not supported or the <structfield>index</structfield> is out of -bounds.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-enum-frameintervals.xml b/Documentation/DocBook/v4l/vidioc-enum-frameintervals.xml deleted file mode 100644 index 3c216e113a54..000000000000 --- a/Documentation/DocBook/v4l/vidioc-enum-frameintervals.xml +++ /dev/null @@ -1,270 +0,0 @@ -<refentry id="vidioc-enum-frameintervals"> - - <refmeta> - <refentrytitle>ioctl VIDIOC_ENUM_FRAMEINTERVALS</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_ENUM_FRAMEINTERVALS</refname> - <refpurpose>Enumerate frame intervals</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_frmivalenum *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_ENUM_FRAMEINTERVALS</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para>Pointer to a &v4l2-frmivalenum; structure that -contains a pixel format and size and receives a frame interval.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>This ioctl allows applications to enumerate all frame -intervals that the device supports for the given pixel format and -frame size.</para> - <para>The supported pixel formats and frame sizes can be obtained -by using the &VIDIOC-ENUM-FMT; and &VIDIOC-ENUM-FRAMESIZES; -functions.</para> - <para>The return value and the content of the -<structfield>v4l2_frmivalenum.type</structfield> field depend on the -type of frame intervals the device supports. Here are the semantics of -the function for the different cases:</para> - <itemizedlist> - <listitem> - <para><emphasis role="bold">Discrete:</emphasis> The function -returns success if the given index value (zero-based) is valid. The -application should increase the index by one for each call until -<constant>EINVAL</constant> is returned. The `v4l2_frmivalenum.type` -field is set to `V4L2_FRMIVAL_TYPE_DISCRETE` by the driver. Of the -union only the `discrete` member is valid.</para> - </listitem> - <listitem> - <para><emphasis role="bold">Step-wise:</emphasis> The function -returns success if the given index value is zero and -<constant>EINVAL</constant> for any other index value. The -<structfield>v4l2_frmivalenum.type</structfield> field is set to -<constant>V4L2_FRMIVAL_TYPE_STEPWISE</constant> by the driver. Of the -union only the <structfield>stepwise</structfield> member is -valid.</para> - </listitem> - <listitem> - <para><emphasis role="bold">Continuous:</emphasis> This is a -special case of the step-wise type above. The function returns success -if the given index value is zero and <constant>EINVAL</constant> for -any other index value. The -<structfield>v4l2_frmivalenum.type</structfield> field is set to -<constant>V4L2_FRMIVAL_TYPE_CONTINUOUS</constant> by the driver. Of -the union only the <structfield>stepwise</structfield> member is valid -and the <structfield>step</structfield> value is set to 1.</para> - </listitem> - </itemizedlist> - - <para>When the application calls the function with index zero, it -must check the <structfield>type</structfield> field to determine the -type of frame interval enumeration the device supports. Only for the -<constant>V4L2_FRMIVAL_TYPE_DISCRETE</constant> type does it make -sense to increase the index value to receive more frame -intervals.</para> - <para>Note that the order in which the frame intervals are -returned has no special meaning. In particular does it not say -anything about potential default frame intervals.</para> - <para>Applications can assume that the enumeration data does not -change without any interaction from the application itself. This means -that the enumeration data is consistent if the application does not -perform any other ioctl calls while it runs the frame interval -enumeration.</para> - </refsect1> - - <refsect1> - <title>Notes</title> - - <itemizedlist> - <listitem> - <para><emphasis role="bold">Frame intervals and frame -rates:</emphasis> The V4L2 API uses frame intervals instead of frame -rates. Given the frame interval the frame rate can be computed as -follows:<screen>frame_rate = 1 / frame_interval</screen></para> - </listitem> - </itemizedlist> - - </refsect1> - - <refsect1> - <title>Structs</title> - - <para>In the structs below, <emphasis>IN</emphasis> denotes a -value that has to be filled in by the application, -<emphasis>OUT</emphasis> denotes values that the driver fills in. The -application should zero out all members except for the -<emphasis>IN</emphasis> fields.</para> - - <table pgwide="1" frame="none" id="v4l2-frmival-stepwise"> - <title>struct <structname>v4l2_frmival_stepwise</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>&v4l2-fract;</entry> - <entry><structfield>min</structfield></entry> - <entry>Minimum frame interval [s].</entry> - </row> - <row> - <entry>&v4l2-fract;</entry> - <entry><structfield>max</structfield></entry> - <entry>Maximum frame interval [s].</entry> - </row> - <row> - <entry>&v4l2-fract;</entry> - <entry><structfield>step</structfield></entry> - <entry>Frame interval step size [s].</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-frmivalenum"> - <title>struct <structname>v4l2_frmivalenum</structname></title> - <tgroup cols="4"> - <colspec colname="c1" /> - <colspec colname="c2" /> - <colspec colname="c3" /> - <colspec colname="c4" /> - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry></entry> - <entry>IN: Index of the given frame interval in the -enumeration.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>pixel_format</structfield></entry> - <entry></entry> - <entry>IN: Pixel format for which the frame intervals are -enumerated.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>width</structfield></entry> - <entry></entry> - <entry>IN: Frame width for which the frame intervals are -enumerated.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>height</structfield></entry> - <entry></entry> - <entry>IN: Frame height for which the frame intervals are -enumerated.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>type</structfield></entry> - <entry></entry> - <entry>OUT: Frame interval type the device supports.</entry> - </row> - <row> - <entry>union</entry> - <entry></entry> - <entry></entry> - <entry>OUT: Frame interval with the given index.</entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-fract;</entry> - <entry><structfield>discrete</structfield></entry> - <entry>Frame interval [s].</entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-frmival-stepwise;</entry> - <entry><structfield>stepwise</structfield></entry> - <entry></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved[2]</structfield></entry> - <entry></entry> - <entry>Reserved space for future use.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - <title>Enums</title> - - <table pgwide="1" frame="none" id="v4l2-frmivaltypes"> - <title>enum <structname>v4l2_frmivaltypes</structname></title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_FRMIVAL_TYPE_DISCRETE</constant></entry> - <entry>1</entry> - <entry>Discrete frame interval.</entry> - </row> - <row> - <entry><constant>V4L2_FRMIVAL_TYPE_CONTINUOUS</constant></entry> - <entry>2</entry> - <entry>Continuous frame interval.</entry> - </row> - <row> - <entry><constant>V4L2_FRMIVAL_TYPE_STEPWISE</constant></entry> - <entry>3</entry> - <entry>Step-wise defined frame interval.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <para>See the description section above for a list of return -values that <varname>errno</varname> can have.</para> - </refsect1> - -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-enum-framesizes.xml b/Documentation/DocBook/v4l/vidioc-enum-framesizes.xml deleted file mode 100644 index 6afa4542c818..000000000000 --- a/Documentation/DocBook/v4l/vidioc-enum-framesizes.xml +++ /dev/null @@ -1,282 +0,0 @@ -<refentry id="vidioc-enum-framesizes"> - - <refmeta> - <refentrytitle>ioctl VIDIOC_ENUM_FRAMESIZES</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_ENUM_FRAMESIZES</refname> - <refpurpose>Enumerate frame sizes</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_frmsizeenum *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_ENUM_FRAMESIZES</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para>Pointer to a &v4l2-frmsizeenum; that contains an index -and pixel format and receives a frame width and height.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <note> - <title>Experimental</title> - - <para>This is an <link linkend="experimental">experimental</link> -interface and may change in the future.</para> - </note> - - <para>This ioctl allows applications to enumerate all frame sizes -(&ie; width and height in pixels) that the device supports for the -given pixel format.</para> - <para>The supported pixel formats can be obtained by using the -&VIDIOC-ENUM-FMT; function.</para> - <para>The return value and the content of the -<structfield>v4l2_frmsizeenum.type</structfield> field depend on the -type of frame sizes the device supports. Here are the semantics of the -function for the different cases:</para> - - <itemizedlist> - <listitem> - <para><emphasis role="bold">Discrete:</emphasis> The function -returns success if the given index value (zero-based) is valid. The -application should increase the index by one for each call until -<constant>EINVAL</constant> is returned. The -<structfield>v4l2_frmsizeenum.type</structfield> field is set to -<constant>V4L2_FRMSIZE_TYPE_DISCRETE</constant> by the driver. Of the -union only the <structfield>discrete</structfield> member is -valid.</para> - </listitem> - <listitem> - <para><emphasis role="bold">Step-wise:</emphasis> The function -returns success if the given index value is zero and -<constant>EINVAL</constant> for any other index value. The -<structfield>v4l2_frmsizeenum.type</structfield> field is set to -<constant>V4L2_FRMSIZE_TYPE_STEPWISE</constant> by the driver. Of the -union only the <structfield>stepwise</structfield> member is -valid.</para> - </listitem> - <listitem> - <para><emphasis role="bold">Continuous:</emphasis> This is a -special case of the step-wise type above. The function returns success -if the given index value is zero and <constant>EINVAL</constant> for -any other index value. The -<structfield>v4l2_frmsizeenum.type</structfield> field is set to -<constant>V4L2_FRMSIZE_TYPE_CONTINUOUS</constant> by the driver. Of -the union only the <structfield>stepwise</structfield> member is valid -and the <structfield>step_width</structfield> and -<structfield>step_height</structfield> values are set to 1.</para> - </listitem> - </itemizedlist> - - <para>When the application calls the function with index zero, it -must check the <structfield>type</structfield> field to determine the -type of frame size enumeration the device supports. Only for the -<constant>V4L2_FRMSIZE_TYPE_DISCRETE</constant> type does it make -sense to increase the index value to receive more frame sizes.</para> - <para>Note that the order in which the frame sizes are returned -has no special meaning. In particular does it not say anything about -potential default format sizes.</para> - <para>Applications can assume that the enumeration data does not -change without any interaction from the application itself. This means -that the enumeration data is consistent if the application does not -perform any other ioctl calls while it runs the frame size -enumeration.</para> - </refsect1> - - <refsect1> - <title>Structs</title> - - <para>In the structs below, <emphasis>IN</emphasis> denotes a -value that has to be filled in by the application, -<emphasis>OUT</emphasis> denotes values that the driver fills in. The -application should zero out all members except for the -<emphasis>IN</emphasis> fields.</para> - - <table pgwide="1" frame="none" id="v4l2-frmsize-discrete"> - <title>struct <structname>v4l2_frmsize_discrete</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>width</structfield></entry> - <entry>Width of the frame [pixel].</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>height</structfield></entry> - <entry>Height of the frame [pixel].</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-frmsize-stepwise"> - <title>struct <structname>v4l2_frmsize_stepwise</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>min_width</structfield></entry> - <entry>Minimum frame width [pixel].</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>max_width</structfield></entry> - <entry>Maximum frame width [pixel].</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>step_width</structfield></entry> - <entry>Frame width step size [pixel].</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>min_height</structfield></entry> - <entry>Minimum frame height [pixel].</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>max_height</structfield></entry> - <entry>Maximum frame height [pixel].</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>step_height</structfield></entry> - <entry>Frame height step size [pixel].</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-frmsizeenum"> - <title>struct <structname>v4l2_frmsizeenum</structname></title> - <tgroup cols="4"> - <colspec colname="c1" /> - <colspec colname="c2" /> - <colspec colname="c3" /> - <colspec colname="c4" /> - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry></entry> - <entry>IN: Index of the given frame size in the enumeration.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>pixel_format</structfield></entry> - <entry></entry> - <entry>IN: Pixel format for which the frame sizes are enumerated.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>type</structfield></entry> - <entry></entry> - <entry>OUT: Frame size type the device supports.</entry> - </row> - <row> - <entry>union</entry> - <entry></entry> - <entry></entry> - <entry>OUT: Frame size with the given index.</entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-frmsize-discrete;</entry> - <entry><structfield>discrete</structfield></entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-frmsize-stepwise;</entry> - <entry><structfield>stepwise</structfield></entry> - <entry></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved[2]</structfield></entry> - <entry></entry> - <entry>Reserved space for future use.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - <title>Enums</title> - - <table pgwide="1" frame="none" id="v4l2-frmsizetypes"> - <title>enum <structname>v4l2_frmsizetypes</structname></title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_FRMSIZE_TYPE_DISCRETE</constant></entry> - <entry>1</entry> - <entry>Discrete frame size.</entry> - </row> - <row> - <entry><constant>V4L2_FRMSIZE_TYPE_CONTINUOUS</constant></entry> - <entry>2</entry> - <entry>Continuous frame size.</entry> - </row> - <row> - <entry><constant>V4L2_FRMSIZE_TYPE_STEPWISE</constant></entry> - <entry>3</entry> - <entry>Step-wise defined frame size.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <para>See the description section above for a list of return -values that <varname>errno</varname> can have.</para> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-enumaudio.xml b/Documentation/DocBook/v4l/vidioc-enumaudio.xml deleted file mode 100644 index 9ae8f2d3a96f..000000000000 --- a/Documentation/DocBook/v4l/vidioc-enumaudio.xml +++ /dev/null @@ -1,86 +0,0 @@ -<refentry id="vidioc-enumaudio"> - <refmeta> - <refentrytitle>ioctl VIDIOC_ENUMAUDIO</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_ENUMAUDIO</refname> - <refpurpose>Enumerate audio inputs</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_audio *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_ENUMAUDIO</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the attributes of an audio input applications -initialize the <structfield>index</structfield> field and zero out the -<structfield>reserved</structfield> array of a &v4l2-audio; -and call the <constant>VIDIOC_ENUMAUDIO</constant> ioctl with a pointer -to this structure. Drivers fill the rest of the structure or return an -&EINVAL; when the index is out of bounds. To enumerate all audio -inputs applications shall begin at index zero, incrementing by one -until the driver returns <errorcode>EINVAL</errorcode>.</para> - - <para>See <xref linkend="vidioc-g-audio" /> for a description of -&v4l2-audio;.</para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The number of the audio input is out of bounds, or -there are no audio inputs at all and this ioctl is not -supported.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-enumaudioout.xml b/Documentation/DocBook/v4l/vidioc-enumaudioout.xml deleted file mode 100644 index d3d7c0ab17b8..000000000000 --- a/Documentation/DocBook/v4l/vidioc-enumaudioout.xml +++ /dev/null @@ -1,89 +0,0 @@ -<refentry id="vidioc-enumaudioout"> - <refmeta> - <refentrytitle>ioctl VIDIOC_ENUMAUDOUT</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_ENUMAUDOUT</refname> - <refpurpose>Enumerate audio outputs</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_audioout *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_ENUMAUDOUT</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the attributes of an audio output applications -initialize the <structfield>index</structfield> field and zero out the -<structfield>reserved</structfield> array of a &v4l2-audioout; and -call the <constant>VIDIOC_G_AUDOUT</constant> ioctl with a pointer -to this structure. Drivers fill the rest of the structure or return an -&EINVAL; when the index is out of bounds. To enumerate all audio -outputs applications shall begin at index zero, incrementing by one -until the driver returns <errorcode>EINVAL</errorcode>.</para> - - <para>Note connectors on a TV card to loop back the received audio -signal to a sound card are not audio outputs in this sense.</para> - - <para>See <xref linkend="vidioc-g-audioout" /> for a description of -&v4l2-audioout;.</para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The number of the audio output is out of bounds, or -there are no audio outputs at all and this ioctl is not -supported.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-enuminput.xml b/Documentation/DocBook/v4l/vidioc-enuminput.xml deleted file mode 100644 index 476fe1d2bba0..000000000000 --- a/Documentation/DocBook/v4l/vidioc-enuminput.xml +++ /dev/null @@ -1,321 +0,0 @@ -<refentry id="vidioc-enuminput"> - <refmeta> - <refentrytitle>ioctl VIDIOC_ENUMINPUT</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_ENUMINPUT</refname> - <refpurpose>Enumerate video inputs</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_input -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_ENUMINPUT</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the attributes of a video input applications -initialize the <structfield>index</structfield> field of &v4l2-input; -and call the <constant>VIDIOC_ENUMINPUT</constant> ioctl with a -pointer to this structure. Drivers fill the rest of the structure or -return an &EINVAL; when the index is out of bounds. To enumerate all -inputs applications shall begin at index zero, incrementing by one -until the driver returns <errorcode>EINVAL</errorcode>.</para> - - <table frame="none" pgwide="1" id="v4l2-input"> - <title>struct <structname>v4l2_input</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry>Identifies the input, set by the -application.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>name</structfield>[32]</entry> - <entry>Name of the video input, a NUL-terminated ASCII -string, for example: "Vin (Composite 2)". This information is intended -for the user, preferably the connector label on the device itself.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>type</structfield></entry> - <entry>Type of the input, see <xref - linkend="input-type" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>audioset</structfield></entry> - <entry><para>Drivers can enumerate up to 32 video and -audio inputs. This field shows which audio inputs were selectable as -audio source if this was the currently selected video input. It is a -bit mask. The LSB corresponds to audio input 0, the MSB to input 31. -Any number of bits can be set, or none.</para><para>When the driver -does not enumerate audio inputs no bits must be set. Applications -shall not interpret this as lack of audio support. Some drivers -automatically select audio sources and do not enumerate them since -there is no choice anyway.</para><para>For details on audio inputs and -how to select the current input see <xref - linkend="audio" />.</para></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>tuner</structfield></entry> - <entry>Capture devices can have zero or more tuners (RF -demodulators). When the <structfield>type</structfield> is set to -<constant>V4L2_INPUT_TYPE_TUNER</constant> this is an RF connector and -this field identifies the tuner. It corresponds to -&v4l2-tuner; field <structfield>index</structfield>. For details on -tuners see <xref linkend="tuner" />.</entry> - </row> - <row> - <entry>&v4l2-std-id;</entry> - <entry><structfield>std</structfield></entry> - <entry>Every video input supports one or more different -video standards. This field is a set of all supported standards. For -details on video standards and how to switch see <xref -linkend="standard" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>status</structfield></entry> - <entry>This field provides status information about the -input. See <xref linkend="input-status" /> for flags. -With the exception of the sensor orientation bits <structfield>status</structfield> is only valid when this is the -current input.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>capabilities</structfield></entry> - <entry>This field provides capabilities for the -input. See <xref linkend="input-capabilities" /> for flags.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[3]</entry> - <entry>Reserved for future extensions. Drivers must set -the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="input-type"> - <title>Input Types</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_INPUT_TYPE_TUNER</constant></entry> - <entry>1</entry> - <entry>This input uses a tuner (RF demodulator).</entry> - </row> - <row> - <entry><constant>V4L2_INPUT_TYPE_CAMERA</constant></entry> - <entry>2</entry> - <entry>Analog baseband input, for example CVBS / -Composite Video, S-Video, RGB.</entry> - </row> - </tbody> - </tgroup> - </table> - - <!-- Status flags based on proposal by Mark McClelland, -video4linux-list@redhat.com on 18 Oct 2002, subject "Re: [V4L] Re: -v4l2 api". "Why are some of them inverted? So that the driver doesn't -have to lie about the status in cases where it can't tell one way or -the other. Plus, a status of zero would generally mean that everything -is OK." --> - - <table frame="none" pgwide="1" id="input-status"> - <title>Input Status Flags</title> - <tgroup cols="3"> - <colspec colname="c1" /> - <colspec colname="c2" align="center" /> - <colspec colname="c3" /> - <spanspec namest="c1" nameend="c3" spanname="hspan" - align="left" /> - <tbody valign="top"> - <row> - <entry spanname="hspan">General</entry> - </row> - <row> - <entry><constant>V4L2_IN_ST_NO_POWER</constant></entry> - <entry>0x00000001</entry> - <entry>Attached device is off.</entry> - </row> - <row> - <entry><constant>V4L2_IN_ST_NO_SIGNAL</constant></entry> - <entry>0x00000002</entry> - <entry></entry> - </row> - <row> - <entry><constant>V4L2_IN_ST_NO_COLOR</constant></entry> - <entry>0x00000004</entry> - <entry>The hardware supports color decoding, but does not -detect color modulation in the signal.</entry> - </row> - <row> - <entry spanname="hspan">Sensor Orientation</entry> - </row> - <row> - <entry><constant>V4L2_IN_ST_HFLIP</constant></entry> - <entry>0x00000010</entry> - <entry>The input is connected to a device that produces a signal -that is flipped horizontally and does not correct this before passing the -signal to userspace.</entry> - </row> - <row> - <entry><constant>V4L2_IN_ST_VFLIP</constant></entry> - <entry>0x00000020</entry> - <entry>The input is connected to a device that produces a signal -that is flipped vertically and does not correct this before passing the -signal to userspace. Note that a 180 degree rotation is the same as HFLIP | VFLIP</entry> - </row> - <row> - <entry spanname="hspan">Analog Video</entry> - </row> - <row> - <entry><constant>V4L2_IN_ST_NO_H_LOCK</constant></entry> - <entry>0x00000100</entry> - <entry>No horizontal sync lock.</entry> - </row> - <row> - <entry><constant>V4L2_IN_ST_COLOR_KILL</constant></entry> - <entry>0x00000200</entry> - <entry>A color killer circuit automatically disables color -decoding when it detects no color modulation. When this flag is set -the color killer is enabled <emphasis>and</emphasis> has shut off -color decoding.</entry> - </row> - <row> - <entry spanname="hspan">Digital Video</entry> - </row> - <row> - <entry><constant>V4L2_IN_ST_NO_SYNC</constant></entry> - <entry>0x00010000</entry> - <entry>No synchronization lock.</entry> - </row> - <row> - <entry><constant>V4L2_IN_ST_NO_EQU</constant></entry> - <entry>0x00020000</entry> - <entry>No equalizer lock.</entry> - </row> - <row> - <entry><constant>V4L2_IN_ST_NO_CARRIER</constant></entry> - <entry>0x00040000</entry> - <entry>Carrier recovery failed.</entry> - </row> - <row> - <entry spanname="hspan">VCR and Set-Top Box</entry> - </row> - <row> - <entry><constant>V4L2_IN_ST_MACROVISION</constant></entry> - <entry>0x01000000</entry> - <entry>Macrovision is an analog copy prevention system -mangling the video signal to confuse video recorders. When this -flag is set Macrovision has been detected.</entry> - </row> - <row> - <entry><constant>V4L2_IN_ST_NO_ACCESS</constant></entry> - <entry>0x02000000</entry> - <entry>Conditional access denied.</entry> - </row> - <row> - <entry><constant>V4L2_IN_ST_VTR</constant></entry> - <entry>0x04000000</entry> - <entry>VTR time constant. [?]</entry> - </row> - </tbody> - </tgroup> - </table> - - <!-- Capability flags based on video timings RFC by Muralidharan -Karicheri, titled RFC (v1.2): V4L - Support for video timings at the -input/output interface to linux-media@vger.kernel.org on 19 Oct 2009. - --> - <table frame="none" pgwide="1" id="input-capabilities"> - <title>Input capabilities</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_IN_CAP_PRESETS</constant></entry> - <entry>0x00000001</entry> - <entry>This input supports setting DV presets by using VIDIOC_S_DV_PRESET.</entry> - </row> - <row> - <entry><constant>V4L2_IN_CAP_CUSTOM_TIMINGS</constant></entry> - <entry>0x00000002</entry> - <entry>This input supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry> - </row> - <row> - <entry><constant>V4L2_IN_CAP_STD</constant></entry> - <entry>0x00000004</entry> - <entry>This input supports setting the TV standard by using VIDIOC_S_STD.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-input; <structfield>index</structfield> is -out of bounds.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-enumoutput.xml b/Documentation/DocBook/v4l/vidioc-enumoutput.xml deleted file mode 100644 index a281d26a195f..000000000000 --- a/Documentation/DocBook/v4l/vidioc-enumoutput.xml +++ /dev/null @@ -1,206 +0,0 @@ -<refentry id="vidioc-enumoutput"> - <refmeta> - <refentrytitle>ioctl VIDIOC_ENUMOUTPUT</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_ENUMOUTPUT</refname> - <refpurpose>Enumerate video outputs</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_output *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_ENUMOUTPUT</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the attributes of a video outputs applications -initialize the <structfield>index</structfield> field of &v4l2-output; -and call the <constant>VIDIOC_ENUMOUTPUT</constant> ioctl with a -pointer to this structure. Drivers fill the rest of the structure or -return an &EINVAL; when the index is out of bounds. To enumerate all -outputs applications shall begin at index zero, incrementing by one -until the driver returns <errorcode>EINVAL</errorcode>.</para> - - <table frame="none" pgwide="1" id="v4l2-output"> - <title>struct <structname>v4l2_output</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry>Identifies the output, set by the -application.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>name</structfield>[32]</entry> - <entry>Name of the video output, a NUL-terminated ASCII -string, for example: "Vout". This information is intended for the -user, preferably the connector label on the device itself.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>type</structfield></entry> - <entry>Type of the output, see <xref - linkend="output-type" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>audioset</structfield></entry> - <entry><para>Drivers can enumerate up to 32 video and -audio outputs. This field shows which audio outputs were -selectable as the current output if this was the currently selected -video output. It is a bit mask. The LSB corresponds to audio output 0, -the MSB to output 31. Any number of bits can be set, or -none.</para><para>When the driver does not enumerate audio outputs no -bits must be set. Applications shall not interpret this as lack of -audio support. Drivers may automatically select audio outputs without -enumerating them.</para><para>For details on audio outputs and how to -select the current output see <xref linkend="audio" />.</para></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>modulator</structfield></entry> - <entry>Output devices can have zero or more RF modulators. -When the <structfield>type</structfield> is -<constant>V4L2_OUTPUT_TYPE_MODULATOR</constant> this is an RF -connector and this field identifies the modulator. It corresponds to -&v4l2-modulator; field <structfield>index</structfield>. For details -on modulators see <xref linkend="tuner" />.</entry> - </row> - <row> - <entry>&v4l2-std-id;</entry> - <entry><structfield>std</structfield></entry> - <entry>Every video output supports one or more different -video standards. This field is a set of all supported standards. For -details on video standards and how to switch see <xref - linkend="standard" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>capabilities</structfield></entry> - <entry>This field provides capabilities for the -output. See <xref linkend="output-capabilities" /> for flags.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[3]</entry> - <entry>Reserved for future extensions. Drivers must set -the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="output-type"> - <title>Output Type</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_OUTPUT_TYPE_MODULATOR</constant></entry> - <entry>1</entry> - <entry>This output is an analog TV modulator.</entry> - </row> - <row> - <entry><constant>V4L2_OUTPUT_TYPE_ANALOG</constant></entry> - <entry>2</entry> - <entry>Analog baseband output, for example Composite / -CVBS, S-Video, RGB.</entry> - </row> - <row> - <entry><constant>V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY</constant></entry> - <entry>3</entry> - <entry>[?]</entry> - </row> - </tbody> - </tgroup> - </table> - - <!-- Capabilities flags based on video timings RFC by Muralidharan -Karicheri, titled RFC (v1.2): V4L - Support for video timings at the -input/output interface to linux-media@vger.kernel.org on 19 Oct 2009. - --> - <table frame="none" pgwide="1" id="output-capabilities"> - <title>Output capabilities</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_OUT_CAP_PRESETS</constant></entry> - <entry>0x00000001</entry> - <entry>This output supports setting DV presets by using VIDIOC_S_DV_PRESET.</entry> - </row> - <row> - <entry><constant>V4L2_OUT_CAP_CUSTOM_TIMINGS</constant></entry> - <entry>0x00000002</entry> - <entry>This output supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry> - </row> - <row> - <entry><constant>V4L2_OUT_CAP_STD</constant></entry> - <entry>0x00000004</entry> - <entry>This output supports setting the TV standard by using VIDIOC_S_STD.</entry> - </row> - </tbody> - </tgroup> - </table> - - </refsect1> - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-output; <structfield>index</structfield> -is out of bounds.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-enumstd.xml b/Documentation/DocBook/v4l/vidioc-enumstd.xml deleted file mode 100644 index 95803fe2c8e4..000000000000 --- a/Documentation/DocBook/v4l/vidioc-enumstd.xml +++ /dev/null @@ -1,391 +0,0 @@ -<refentry id="vidioc-enumstd"> - <refmeta> - <refentrytitle>ioctl VIDIOC_ENUMSTD</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_ENUMSTD</refname> - <refpurpose>Enumerate supported video standards</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_standard *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_ENUMSTD</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the attributes of a video standard, -especially a custom (driver defined) one, applications initialize the -<structfield>index</structfield> field of &v4l2-standard; and call the -<constant>VIDIOC_ENUMSTD</constant> ioctl with a pointer to this -structure. Drivers fill the rest of the structure or return an -&EINVAL; when the index is out of bounds. To enumerate all standards -applications shall begin at index zero, incrementing by one until the -driver returns <errorcode>EINVAL</errorcode>. Drivers may enumerate a -different set of standards after switching the video input or -output.<footnote> - <para>The supported standards may overlap and we need an -unambiguous set to find the current standard returned by -<constant>VIDIOC_G_STD</constant>.</para> - </footnote></para> - - <table pgwide="1" frame="none" id="v4l2-standard"> - <title>struct <structname>v4l2_standard</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry>Number of the video standard, set by the -application.</entry> - </row> - <row> - <entry>&v4l2-std-id;</entry> - <entry><structfield>id</structfield></entry> - <entry>The bits in this field identify the standard as -one of the common standards listed in <xref linkend="v4l2-std-id" />, -or if bits 32 to 63 are set as custom standards. Multiple bits can be -set if the hardware does not distinguish between these standards, -however separate indices do not indicate the opposite. The -<structfield>id</structfield> must be unique. No other enumerated -<structname>v4l2_standard</structname> structure, for this input or -output anyway, can contain the same set of bits.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>name</structfield>[24]</entry> - <entry>Name of the standard, a NUL-terminated ASCII -string, for example: "PAL-B/G", "NTSC Japan". This information is -intended for the user.</entry> - </row> - <row> - <entry>&v4l2-fract;</entry> - <entry><structfield>frameperiod</structfield></entry> - <entry>The frame period (not field period) is numerator -/ denominator. For example M/NTSC has a frame period of 1001 / -30000 seconds.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>framelines</structfield></entry> - <entry>Total lines per frame including blanking, -e. g. 625 for B/PAL.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[4]</entry> - <entry>Reserved for future extensions. Drivers must set -the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-fract"> - <title>struct <structname>v4l2_fract</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>numerator</structfield></entry> - <entry></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>denominator</structfield></entry> - <entry></entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-std-id"> - <title>typedef <structname>v4l2_std_id</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u64</entry> - <entry><structfield>v4l2_std_id</structfield></entry> - <entry>This type is a set, each bit representing another -video standard as listed below and in <xref -linkend="video-standards" />. The 32 most significant bits are reserved -for custom (driver defined) video standards.</entry> - </row> - </tbody> - </tgroup> - </table> - - <para><programlisting> -#define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001) -#define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002) -#define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004) -#define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008) -#define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010) -#define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020) -#define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040) -#define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080) - -#define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100) -#define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200) -#define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400) -#define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800) -</programlisting></para><para><constant>V4L2_STD_PAL_60</constant> is -a hybrid standard with 525 lines, 60 Hz refresh rate, and PAL color -modulation with a 4.43 MHz color subcarrier. Some PAL video recorders -can play back NTSC tapes in this mode for display on a 50/60 Hz agnostic -PAL TV.</para><para><programlisting> -#define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000) -#define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000) -#define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000) -</programlisting></para><para><constant>V4L2_STD_NTSC_443</constant> -is a hybrid standard with 525 lines, 60 Hz refresh rate, and NTSC -color modulation with a 4.43 MHz color -subcarrier.</para><para><programlisting> -#define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000) - -#define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000) -#define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000) -#define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000) -#define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000) -#define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000) -#define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000) -#define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000) -#define V4L2_STD_SECAM_LC ((v4l2_std_id)0x00800000) - -/* ATSC/HDTV */ -#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000) -#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000) -</programlisting></para><para><!-- ATSC proposal by Mark McClelland, -video4linux-list@redhat.com on 17 Oct 2002 ---><constant>V4L2_STD_ATSC_8_VSB</constant> and -<constant>V4L2_STD_ATSC_16_VSB</constant> are U.S. terrestrial digital -TV standards. Presently the V4L2 API does not support digital TV. See -also the Linux DVB API at <ulink -url="http://linuxtv.org">http://linuxtv.org</ulink>.</para> -<para><programlisting> -#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\ - V4L2_STD_PAL_B1 |\ - V4L2_STD_PAL_G) -#define V4L2_STD_B (V4L2_STD_PAL_B |\ - V4L2_STD_PAL_B1 |\ - V4L2_STD_SECAM_B) -#define V4L2_STD_GH (V4L2_STD_PAL_G |\ - V4L2_STD_PAL_H |\ - V4L2_STD_SECAM_G |\ - V4L2_STD_SECAM_H) -#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\ - V4L2_STD_PAL_D1 |\ - V4L2_STD_PAL_K) -#define V4L2_STD_PAL (V4L2_STD_PAL_BG |\ - V4L2_STD_PAL_DK |\ - V4L2_STD_PAL_H |\ - V4L2_STD_PAL_I) -#define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\ - V4L2_STD_NTSC_M_JP |\ - V4L2_STD_NTSC_M_KR) -#define V4L2_STD_MN (V4L2_STD_PAL_M |\ - V4L2_STD_PAL_N |\ - V4L2_STD_PAL_Nc |\ - V4L2_STD_NTSC) -#define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |\ - V4L2_STD_SECAM_K |\ - V4L2_STD_SECAM_K1) -#define V4L2_STD_DK (V4L2_STD_PAL_DK |\ - V4L2_STD_SECAM_DK) - -#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\ - V4L2_STD_SECAM_G |\ - V4L2_STD_SECAM_H |\ - V4L2_STD_SECAM_DK |\ - V4L2_STD_SECAM_L |\ - V4L2_STD_SECAM_LC) - -#define V4L2_STD_525_60 (V4L2_STD_PAL_M |\ - V4L2_STD_PAL_60 |\ - V4L2_STD_NTSC |\ - V4L2_STD_NTSC_443) -#define V4L2_STD_625_50 (V4L2_STD_PAL |\ - V4L2_STD_PAL_N |\ - V4L2_STD_PAL_Nc |\ - V4L2_STD_SECAM) - -#define V4L2_STD_UNKNOWN 0 -#define V4L2_STD_ALL (V4L2_STD_525_60 |\ - V4L2_STD_625_50) -</programlisting></para> - - <table pgwide="1" id="video-standards" orient="land"> - <title>Video Standards (based on [<xref linkend="itu470" />])</title> - <tgroup cols="12" colsep="1" rowsep="1" align="center"> - <colspec colname="c1" align="left" /> - <colspec colname="c2" /> - <colspec colname="c3" /> - <colspec colname="c4" /> - <colspec colname="c5" /> - <colspec colnum="7" colname="c7" /> - <colspec colnum="9" colname="c9" /> - <colspec colnum="12" colname="c12" /> - <spanspec namest="c2" nameend="c3" spanname="m" align="center" /> - <spanspec namest="c4" nameend="c12" spanname="x" align="center" /> - <spanspec namest="c5" nameend="c7" spanname="b" align="center" /> - <spanspec namest="c9" nameend="c12" spanname="s" align="center" /> - <thead> - <row> - <entry>Characteristics</entry> - <entry><para>M/NTSC<footnote><para>Japan uses a standard -similar to M/NTSC -(V4L2_STD_NTSC_M_JP).</para></footnote></para></entry> - <entry>M/PAL</entry> - <entry><para>N/PAL<footnote><para> The values in -brackets apply to the combination N/PAL a.k.a. -N<subscript>C</subscript> used in Argentina -(V4L2_STD_PAL_Nc).</para></footnote></para></entry> - <entry align="center">B, B1, G/PAL</entry> - <entry align="center">D, D1, K/PAL</entry> - <entry align="center">H/PAL</entry> - <entry align="center">I/PAL</entry> - <entry align="center">B, G/SECAM</entry> - <entry align="center">D, K/SECAM</entry> - <entry align="center">K1/SECAM</entry> - <entry align="center">L/SECAM</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry>Frame lines</entry> - <entry spanname="m">525</entry> - <entry spanname="x">625</entry> - </row> - <row> - <entry>Frame period (s)</entry> - <entry spanname="m">1001/30000</entry> - <entry spanname="x">1/25</entry> - </row> - <row> - <entry>Chrominance sub-carrier frequency (Hz)</entry> - <entry>3579545 ± 10</entry> - <entry>3579611.49 ± 10</entry> - <entry>4433618.75 ± 5 (3582056.25 -± 5)</entry> - <entry spanname="b">4433618.75 ± 5</entry> - <entry>4433618.75 ± 1</entry> - <entry spanname="s">f<subscript>OR</subscript> = -4406250 ± 2000, f<subscript>OB</subscript> = 4250000 -± 2000</entry> - </row> - <row> - <entry>Nominal radio-frequency channel bandwidth -(MHz)</entry> - <entry>6</entry> - <entry>6</entry> - <entry>6</entry> - <entry>B: 7; B1, G: 8</entry> - <entry>8</entry> - <entry>8</entry> - <entry>8</entry> - <entry>8</entry> - <entry>8</entry> - <entry>8</entry> - <entry>8</entry> - </row> - <row> - <entry>Sound carrier relative to vision carrier -(MHz)</entry> - <entry>+ 4.5</entry> - <entry>+ 4.5</entry> - <entry>+ 4.5</entry> - <entry><para>+ 5.5 ± 0.001 -<footnote><para>In the Federal Republic of Germany, Austria, Italy, -the Netherlands, Slovakia and Switzerland a system of two sound -carriers is used, the frequency of the second carrier being -242.1875 kHz above the frequency of the first sound carrier. For -stereophonic sound transmissions a similar system is used in -Australia.</para></footnote> <footnote><para>New Zealand uses a sound -carrier displaced 5.4996 ± 0.0005 MHz from the vision -carrier.</para></footnote> <footnote><para>In Denmark, Finland, New -Zealand, Sweden and Spain a system of two sound carriers is used. In -Iceland, Norway and Poland the same system is being introduced. The -second carrier is 5.85 MHz above the vision carrier and is DQPSK -modulated with 728 kbit/s sound and data multiplex. (NICAM -system)</para></footnote> <footnote><para>In the United Kingdom, a -system of two sound carriers is used. The second sound carrier is -6.552 MHz above the vision carrier and is DQPSK modulated with a -728 kbit/s sound and data multiplex able to carry two sound -channels. (NICAM system)</para></footnote></para></entry> - <entry>+ 6.5 ± 0.001</entry> - <entry>+ 5.5</entry> - <entry>+ 5.9996 ± 0.0005</entry> - <entry>+ 5.5 ± 0.001</entry> - <entry>+ 6.5 ± 0.001</entry> - <entry>+ 6.5</entry> - <entry><para>+ 6.5 <footnote><para>In France, a -digital carrier 5.85 MHz away from the vision carrier may be used in -addition to the main sound carrier. It is modulated in differentially -encoded QPSK with a 728 kbit/s sound and data multiplexer capable of -carrying two sound channels. (NICAM -system)</para></footnote></para></entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-standard; <structfield>index</structfield> -is out of bounds.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-audio.xml b/Documentation/DocBook/v4l/vidioc-g-audio.xml deleted file mode 100644 index 65361a8c2b05..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-audio.xml +++ /dev/null @@ -1,188 +0,0 @@ -<refentry id="vidioc-g-audio"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_AUDIO, VIDIOC_S_AUDIO</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_AUDIO</refname> - <refname>VIDIOC_S_AUDIO</refname> - <refpurpose>Query or select the current audio input and its -attributes</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_audio *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const struct v4l2_audio *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_AUDIO, VIDIOC_S_AUDIO</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the current audio input applications zero out the -<structfield>reserved</structfield> array of a &v4l2-audio; -and call the <constant>VIDIOC_G_AUDIO</constant> ioctl with a pointer -to this structure. Drivers fill the rest of the structure or return an -&EINVAL; when the device has no audio inputs, or none which combine -with the current video input.</para> - - <para>Audio inputs have one writable property, the audio mode. To -select the current audio input <emphasis>and</emphasis> change the -audio mode, applications initialize the -<structfield>index</structfield> and <structfield>mode</structfield> -fields, and the -<structfield>reserved</structfield> array of a -<structname>v4l2_audio</structname> structure and call the -<constant>VIDIOC_S_AUDIO</constant> ioctl. Drivers may switch to a -different audio mode if the request cannot be satisfied. However, this -is a write-only ioctl, it does not return the actual new audio -mode.</para> - - <table pgwide="1" frame="none" id="v4l2-audio"> - <title>struct <structname>v4l2_audio</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry>Identifies the audio input, set by the -driver or application.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>name</structfield>[32]</entry> - <entry>Name of the audio input, a NUL-terminated ASCII -string, for example: "Line In". This information is intended for the -user, preferably the connector label on the device itself.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>capability</structfield></entry> - <entry>Audio capability flags, see <xref - linkend="audio-capability" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>mode</structfield></entry> - <entry>Audio mode flags set by drivers and applications (on - <constant>VIDIOC_S_AUDIO</constant> ioctl), see <xref linkend="audio-mode" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[2]</entry> - <entry>Reserved for future extensions. Drivers and -applications must set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="audio-capability"> - <title>Audio Capability Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_AUDCAP_STEREO</constant></entry> - <entry>0x00001</entry> - <entry>This is a stereo input. The flag is intended to -automatically disable stereo recording etc. when the signal is always -monaural. The API provides no means to detect if stereo is -<emphasis>received</emphasis>, unless the audio input belongs to a -tuner.</entry> - </row> - <row> - <entry><constant>V4L2_AUDCAP_AVL</constant></entry> - <entry>0x00002</entry> - <entry>Automatic Volume Level mode is supported.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="audio-mode"> - <title>Audio Mode Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_AUDMODE_AVL</constant></entry> - <entry>0x00001</entry> - <entry>AVL mode is on.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>No audio inputs combine with the current video input, -or the number of the selected audio input is out of bounds or it does -not combine, or there are no audio inputs at all and the ioctl is not -supported.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>I/O is in progress, the input cannot be -switched.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-audioout.xml b/Documentation/DocBook/v4l/vidioc-g-audioout.xml deleted file mode 100644 index 3632730c5c6e..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-audioout.xml +++ /dev/null @@ -1,154 +0,0 @@ -<refentry id="vidioc-g-audioout"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_AUDOUT, VIDIOC_S_AUDOUT</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_AUDOUT</refname> - <refname>VIDIOC_S_AUDOUT</refname> - <refpurpose>Query or select the current audio output</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_audioout *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const struct v4l2_audioout *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_AUDOUT, VIDIOC_S_AUDOUT</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the current audio output applications zero out the -<structfield>reserved</structfield> array of a &v4l2-audioout; and -call the <constant>VIDIOC_G_AUDOUT</constant> ioctl with a pointer -to this structure. Drivers fill the rest of the structure or return an -&EINVAL; when the device has no audio inputs, or none which combine -with the current video output.</para> - - <para>Audio outputs have no writable properties. Nevertheless, to -select the current audio output applications can initialize the -<structfield>index</structfield> field and -<structfield>reserved</structfield> array (which in the future may -contain writable properties) of a -<structname>v4l2_audioout</structname> structure and call the -<constant>VIDIOC_S_AUDOUT</constant> ioctl. Drivers switch to the -requested output or return the &EINVAL; when the index is out of -bounds. This is a write-only ioctl, it does not return the current -audio output attributes as <constant>VIDIOC_G_AUDOUT</constant> -does.</para> - - <para>Note connectors on a TV card to loop back the received audio -signal to a sound card are not audio outputs in this sense.</para> - - <table pgwide="1" frame="none" id="v4l2-audioout"> - <title>struct <structname>v4l2_audioout</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry>Identifies the audio output, set by the -driver or application.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>name</structfield>[32]</entry> - <entry>Name of the audio output, a NUL-terminated ASCII -string, for example: "Line Out". This information is intended for the -user, preferably the connector label on the device itself.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>capability</structfield></entry> - <entry>Audio capability flags, none defined yet. Drivers -must set this field to zero.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>mode</structfield></entry> - <entry>Audio mode, none defined yet. Drivers and -applications (on <constant>VIDIOC_S_AUDOUT</constant>) must set this -field to zero.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[2]</entry> - <entry>Reserved for future extensions. Drivers and -applications must set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>No audio outputs combine with the current video -output, or the number of the selected audio output is out of bounds or -it does not combine, or there are no audio outputs at all and the -ioctl is not supported.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>I/O is in progress, the output cannot be -switched.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-crop.xml b/Documentation/DocBook/v4l/vidioc-g-crop.xml deleted file mode 100644 index d235b1dedbed..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-crop.xml +++ /dev/null @@ -1,143 +0,0 @@ -<refentry id="vidioc-g-crop"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_CROP, VIDIOC_S_CROP</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_CROP</refname> - <refname>VIDIOC_S_CROP</refname> - <refpurpose>Get or set the current cropping rectangle</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_crop *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const struct v4l2_crop *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_CROP, VIDIOC_S_CROP</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the cropping rectangle size and position -applications set the <structfield>type</structfield> field of a -<structname>v4l2_crop</structname> structure to the respective buffer -(stream) type and call the <constant>VIDIOC_G_CROP</constant> ioctl -with a pointer to this structure. The driver fills the rest of the -structure or returns the &EINVAL; if cropping is not supported.</para> - - <para>To change the cropping rectangle applications initialize the -<structfield>type</structfield> and &v4l2-rect; substructure named -<structfield>c</structfield> of a v4l2_crop structure and call the -<constant>VIDIOC_S_CROP</constant> ioctl with a pointer to this -structure.</para> - - <para>The driver first adjusts the requested dimensions against -hardware limits, &ie; the bounds given by the capture/output window, -and it rounds to the closest possible values of horizontal and -vertical offset, width and height. In particular the driver must round -the vertical offset of the cropping rectangle to frame lines modulo -two, such that the field order cannot be confused.</para> - - <para>Second the driver adjusts the image size (the opposite -rectangle of the scaling process, source or target depending on the -data direction) to the closest size possible while maintaining the -current horizontal and vertical scaling factor.</para> - - <para>Finally the driver programs the hardware with the actual -cropping and image parameters. <constant>VIDIOC_S_CROP</constant> is a -write-only ioctl, it does not return the actual parameters. To query -them applications must call <constant>VIDIOC_G_CROP</constant> and -&VIDIOC-G-FMT;. When the parameters are unsuitable the application may -modify the cropping or image parameters and repeat the cycle until -satisfactory parameters have been negotiated.</para> - - <para>When cropping is not supported then no parameters are -changed and <constant>VIDIOC_S_CROP</constant> returns the -&EINVAL;.</para> - - <table pgwide="1" frame="none" id="v4l2-crop"> - <title>struct <structname>v4l2_crop</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>&v4l2-buf-type;</entry> - <entry><structfield>type</structfield></entry> - <entry>Type of the data stream, set by the application. -Only these types are valid here: <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>, -<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, -<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver -defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> -and higher.</entry> - </row> - <row> - <entry>&v4l2-rect;</entry> - <entry><structfield>c</structfield></entry> - <entry>Cropping rectangle. The same co-ordinate system as -for &v4l2-cropcap; <structfield>bounds</structfield> is used.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>Cropping is not supported.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-ctrl.xml b/Documentation/DocBook/v4l/vidioc-g-ctrl.xml deleted file mode 100644 index 8b5e6ff7f3df..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-ctrl.xml +++ /dev/null @@ -1,130 +0,0 @@ -<refentry id="vidioc-g-ctrl"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_CTRL, VIDIOC_S_CTRL</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_CTRL</refname> - <refname>VIDIOC_S_CTRL</refname> - <refpurpose>Get or set the value of a control</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_control -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_CTRL, VIDIOC_S_CTRL</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To get the current value of a control applications -initialize the <structfield>id</structfield> field of a struct -<structname>v4l2_control</structname> and call the -<constant>VIDIOC_G_CTRL</constant> ioctl with a pointer to this -structure. To change the value of a control applications initialize -the <structfield>id</structfield> and <structfield>value</structfield> -fields of a struct <structname>v4l2_control</structname> and call the -<constant>VIDIOC_S_CTRL</constant> ioctl.</para> - - <para>When the <structfield>id</structfield> is invalid drivers -return an &EINVAL;. When the <structfield>value</structfield> is out -of bounds drivers can choose to take the closest valid value or return -an &ERANGE;, whatever seems more appropriate. However, -<constant>VIDIOC_S_CTRL</constant> is a write-only ioctl, it does not -return the actual new value.</para> - - <para>These ioctls work only with user controls. For other -control classes the &VIDIOC-G-EXT-CTRLS;, &VIDIOC-S-EXT-CTRLS; or -&VIDIOC-TRY-EXT-CTRLS; must be used.</para> - - <table pgwide="1" frame="none" id="v4l2-control"> - <title>struct <structname>v4l2_control</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>id</structfield></entry> - <entry>Identifies the control, set by the -application.</entry> - </row> - <row> - <entry>__s32</entry> - <entry><structfield>value</structfield></entry> - <entry>New value or current value.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-control; <structfield>id</structfield> is -invalid.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ERANGE</errorcode></term> - <listitem> - <para>The &v4l2-control; <structfield>value</structfield> -is out of bounds.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The control is temporarily not changeable, possibly -because another applications took over control of the device function -this control belongs to.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml b/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml deleted file mode 100644 index d733721a7519..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml +++ /dev/null @@ -1,110 +0,0 @@ -<refentry id="vidioc-g-dv-preset"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_DV_PRESET</refname> - <refname>VIDIOC_S_DV_PRESET</refname> - <refpurpose>Query or select the DV preset of the current input or output</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_dv_preset *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - <para>To query and select the current DV preset, applications -use the <constant>VIDIOC_G_DV_PRESET</constant> and <constant>VIDIOC_S_DV_PRESET</constant> -ioctls which take a pointer to a &v4l2-dv-preset; type as argument. -Applications must zero the reserved array in &v4l2-dv-preset;. -<constant>VIDIOC_G_DV_PRESET</constant> returns a dv preset in the field -<structfield>preset</structfield> of &v4l2-dv-preset;.</para> - - <para><constant>VIDIOC_S_DV_PRESET</constant> accepts a pointer to a &v4l2-dv-preset; -that has the preset value to be set. Applications must zero the reserved array in &v4l2-dv-preset;. -If the preset is not supported, it returns an &EINVAL; </para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>This ioctl is not supported, or the -<constant>VIDIOC_S_DV_PRESET</constant>,<constant>VIDIOC_S_DV_PRESET</constant> parameter was unsuitable.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The device is busy and therefore can not change the preset.</para> - </listitem> - </varlistentry> - </variablelist> - - <table pgwide="1" frame="none" id="v4l2-dv-preset"> - <title>struct <structname>v4l2_dv_preset</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>preset</structfield></entry> - <entry>Preset value to represent the digital video timings</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved[4]</structfield></entry> - <entry>Reserved fields for future use</entry> - </row> - </tbody> - </tgroup> - </table> - - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml b/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml deleted file mode 100644 index d5ec6abf0ce2..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml +++ /dev/null @@ -1,223 +0,0 @@ -<refentry id="vidioc-g-dv-timings"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_DV_TIMINGS, VIDIOC_S_DV_TIMINGS</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_DV_TIMINGS</refname> - <refname>VIDIOC_S_DV_TIMINGS</refname> - <refpurpose>Get or set custom DV timings for input or output</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_dv_timings *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_DV_TIMINGS, VIDIOC_S_DV_TIMINGS</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - <para>To set custom DV timings for the input or output, applications use the -<constant>VIDIOC_S_DV_TIMINGS</constant> ioctl and to get the current custom timings, -applications use the <constant>VIDIOC_G_DV_TIMINGS</constant> ioctl. The detailed timing -information is filled in using the structure &v4l2-dv-timings;. These ioctls take -a pointer to the &v4l2-dv-timings; structure as argument. If the ioctl is not supported -or the timing values are not correct, the driver returns &EINVAL;.</para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>This ioctl is not supported, or the -<constant>VIDIOC_S_DV_TIMINGS</constant> parameter was unsuitable.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The device is busy and therefore can not change the timings.</para> - </listitem> - </varlistentry> - </variablelist> - - <table pgwide="1" frame="none" id="v4l2-bt-timings"> - <title>struct <structname>v4l2_bt_timings</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>width</structfield></entry> - <entry>Width of the active video in pixels</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>height</structfield></entry> - <entry>Height of the active video in lines</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>interlaced</structfield></entry> - <entry>Progressive (0) or interlaced (1)</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>polarities</structfield></entry> - <entry>This is a bit mask that defines polarities of sync signals. -bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_HSYNC_POS_POL) is for horizontal sync polarity. If the bit is set -(1) it is positive polarity and if is cleared (0), it is negative polarity.</entry> - </row> - <row> - <entry>__u64</entry> - <entry><structfield>pixelclock</structfield></entry> - <entry>Pixel clock in Hz. Ex. 74.25MHz->74250000</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>hfrontporch</structfield></entry> - <entry>Horizontal front porch in pixels</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>hsync</structfield></entry> - <entry>Horizontal sync length in pixels</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>hbackporch</structfield></entry> - <entry>Horizontal back porch in pixels</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>vfrontporch</structfield></entry> - <entry>Vertical front porch in lines</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>vsync</structfield></entry> - <entry>Vertical sync length in lines</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>vbackporch</structfield></entry> - <entry>Vertical back porch in lines</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>il_vfrontporch</structfield></entry> - <entry>Vertical front porch in lines for bottom field of interlaced field formats</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>il_vsync</structfield></entry> - <entry>Vertical sync length in lines for bottom field of interlaced field formats</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>il_vbackporch</structfield></entry> - <entry>Vertical back porch in lines for bottom field of interlaced field formats</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-dv-timings"> - <title>struct <structname>v4l2_dv_timings</structname></title> - <tgroup cols="4"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>type</structfield></entry> - <entry></entry> - <entry>Type of DV timings as listed in <xref linkend="dv-timing-types"/>.</entry> - </row> - <row> - <entry>union</entry> - <entry><structfield></structfield></entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-bt-timings;</entry> - <entry><structfield>bt</structfield></entry> - <entry>Timings defined by BT.656/1120 specifications</entry> - </row> - <row> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[32]</entry> - <entry></entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="dv-timing-types"> - <title>DV Timing types</title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>Timing type</entry> - <entry>value</entry> - <entry>Description</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - </row> - <row> - <entry>V4L2_DV_BT_656_1120</entry> - <entry>0</entry> - <entry>BT.656/1120 timings</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-enc-index.xml b/Documentation/DocBook/v4l/vidioc-g-enc-index.xml deleted file mode 100644 index 9f242e4b2948..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-enc-index.xml +++ /dev/null @@ -1,213 +0,0 @@ -<refentry id="vidioc-g-enc-index"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_ENC_INDEX</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_ENC_INDEX</refname> - <refpurpose>Get meta data about a compressed video stream</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_enc_idx *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_ENC_INDEX</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <note> - <title>Experimental</title> - - <para>This is an <link linkend="experimental">experimental</link> -interface and may change in the future.</para> - </note> - - <para>The <constant>VIDIOC_G_ENC_INDEX</constant> ioctl provides -meta data about a compressed video stream the same or another -application currently reads from the driver, which is useful for -random access into the stream without decoding it.</para> - - <para>To read the data applications must call -<constant>VIDIOC_G_ENC_INDEX</constant> with a pointer to a -&v4l2-enc-idx;. On success the driver fills the -<structfield>entry</structfield> array, stores the number of elements -written in the <structfield>entries</structfield> field, and -initializes the <structfield>entries_cap</structfield> field.</para> - - <para>Each element of the <structfield>entry</structfield> array -contains meta data about one picture. A -<constant>VIDIOC_G_ENC_INDEX</constant> call reads up to -<constant>V4L2_ENC_IDX_ENTRIES</constant> entries from a driver -buffer, which can hold up to <structfield>entries_cap</structfield> -entries. This number can be lower or higher than -<constant>V4L2_ENC_IDX_ENTRIES</constant>, but not zero. When the -application fails to read the meta data in time the oldest entries -will be lost. When the buffer is empty or no capturing/encoding is in -progress, <structfield>entries</structfield> will be zero.</para> - - <para>Currently this ioctl is only defined for MPEG-2 program -streams and video elementary streams.</para> - - <table pgwide="1" frame="none" id="v4l2-enc-idx"> - <title>struct <structname>v4l2_enc_idx</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>entries</structfield></entry> - <entry>The number of entries the driver stored in the -<structfield>entry</structfield> array.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>entries_cap</structfield></entry> - <entry>The number of entries the driver can -buffer. Must be greater than zero.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[4]</entry> - <entry spanname="hspan">Reserved for future extensions. -Drivers must set the array to zero.</entry> - </row> - <row> - <entry>&v4l2-enc-idx-entry;</entry> - <entry><structfield>entry</structfield>[<constant>V4L2_ENC_IDX_ENTRIES</constant>]</entry> - <entry>Meta data about a compressed video stream. Each -element of the array corresponds to one picture, sorted in ascending -order by their <structfield>offset</structfield>.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-enc-idx-entry"> - <title>struct <structname>v4l2_enc_idx_entry</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u64</entry> - <entry><structfield>offset</structfield></entry> - <entry>The offset in bytes from the beginning of the -compressed video stream to the beginning of this picture, that is a -<wordasword>PES packet header</wordasword> as defined in <xref - linkend="mpeg2part1" /> or a <wordasword>picture -header</wordasword> as defined in <xref linkend="mpeg2part2" />. When -the encoder is stopped, the driver resets the offset to zero.</entry> - </row> - <row> - <entry>__u64</entry> - <entry><structfield>pts</structfield></entry> - <entry>The 33 bit <wordasword>Presentation Time -Stamp</wordasword> of this picture as defined in <xref - linkend="mpeg2part1" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>length</structfield></entry> - <entry>The length of this picture in bytes.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>flags</structfield></entry> - <entry>Flags containing the coding type of this picture, see <xref - linkend="enc-idx-flags" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[2]</entry> - <entry>Reserved for future extensions. -Drivers must set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="enc-idx-flags"> - <title>Index Entry Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_ENC_IDX_FRAME_I</constant></entry> - <entry>0x00</entry> - <entry>This is an Intra-coded picture.</entry> - </row> - <row> - <entry><constant>V4L2_ENC_IDX_FRAME_P</constant></entry> - <entry>0x01</entry> - <entry>This is a Predictive-coded picture.</entry> - </row> - <row> - <entry><constant>V4L2_ENC_IDX_FRAME_B</constant></entry> - <entry>0x02</entry> - <entry>This is a Bidirectionally predictive-coded -picture.</entry> - </row> - <row> - <entry><constant>V4L2_ENC_IDX_FRAME_MASK</constant></entry> - <entry>0x0F</entry> - <entry><wordasword>AND</wordasword> the flags field with -this mask to obtain the picture coding type.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The driver does not support this ioctl.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-ext-ctrls.xml b/Documentation/DocBook/v4l/vidioc-g-ext-ctrls.xml deleted file mode 100644 index 3aa7f8f9ff0c..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-ext-ctrls.xml +++ /dev/null @@ -1,307 +0,0 @@ -<refentry id="vidioc-g-ext-ctrls"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_EXT_CTRLS, VIDIOC_S_EXT_CTRLS, -VIDIOC_TRY_EXT_CTRLS</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_EXT_CTRLS</refname> - <refname>VIDIOC_S_EXT_CTRLS</refname> - <refname>VIDIOC_TRY_EXT_CTRLS</refname> - <refpurpose>Get or set the value of several controls, try control -values</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_ext_controls -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_EXT_CTRLS, VIDIOC_S_EXT_CTRLS, -VIDIOC_TRY_EXT_CTRLS</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>These ioctls allow the caller to get or set multiple -controls atomically. Control IDs are grouped into control classes (see -<xref linkend="ctrl-class" />) and all controls in the control array -must belong to the same control class.</para> - - <para>Applications must always fill in the -<structfield>count</structfield>, -<structfield>ctrl_class</structfield>, -<structfield>controls</structfield> and -<structfield>reserved</structfield> fields of &v4l2-ext-controls;, and -initialize the &v4l2-ext-control; array pointed to by the -<structfield>controls</structfield> fields.</para> - - <para>To get the current value of a set of controls applications -initialize the <structfield>id</structfield>, -<structfield>size</structfield> and <structfield>reserved2</structfield> fields -of each &v4l2-ext-control; and call the -<constant>VIDIOC_G_EXT_CTRLS</constant> ioctl. String controls controls -must also set the <structfield>string</structfield> field.</para> - - <para>If the <structfield>size</structfield> is too small to -receive the control result (only relevant for pointer-type controls -like strings), then the driver will set <structfield>size</structfield> -to a valid value and return an &ENOSPC;. You should re-allocate the -string memory to this new size and try again. It is possible that the -same issue occurs again if the string has grown in the meantime. It is -recommended to call &VIDIOC-QUERYCTRL; first and use -<structfield>maximum</structfield>+1 as the new <structfield>size</structfield> -value. It is guaranteed that that is sufficient memory. -</para> - - <para>To change the value of a set of controls applications -initialize the <structfield>id</structfield>, <structfield>size</structfield>, -<structfield>reserved2</structfield> and -<structfield>value/string</structfield> fields of each &v4l2-ext-control; and -call the <constant>VIDIOC_S_EXT_CTRLS</constant> ioctl. The controls -will only be set if <emphasis>all</emphasis> control values are -valid.</para> - - <para>To check if a set of controls have correct values applications -initialize the <structfield>id</structfield>, <structfield>size</structfield>, -<structfield>reserved2</structfield> and -<structfield>value/string</structfield> fields of each &v4l2-ext-control; and -call the <constant>VIDIOC_TRY_EXT_CTRLS</constant> ioctl. It is up to -the driver whether wrong values are automatically adjusted to a valid -value or if an error is returned.</para> - - <para>When the <structfield>id</structfield> or -<structfield>ctrl_class</structfield> is invalid drivers return an -&EINVAL;. When the value is out of bounds drivers can choose to take -the closest valid value or return an &ERANGE;, whatever seems more -appropriate. In the first case the new value is set in -&v4l2-ext-control;.</para> - - <para>The driver will only set/get these controls if all control -values are correct. This prevents the situation where only some of the -controls were set/get. Only low-level errors (⪚ a failed i2c -command) can still cause this situation.</para> - - <table pgwide="1" frame="none" id="v4l2-ext-control"> - <title>struct <structname>v4l2_ext_control</structname></title> - <tgroup cols="4"> - &cs-ustr; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>id</structfield></entry> - <entry></entry> - <entry>Identifies the control, set by the -application.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>size</structfield></entry> - <entry></entry> - <entry>The total size in bytes of the payload of this -control. This is normally 0, but for pointer controls this should be -set to the size of the memory containing the payload, or that will -receive the payload. If <constant>VIDIOC_G_EXT_CTRLS</constant> finds -that this value is less than is required to store -the payload result, then it is set to a value large enough to store the -payload result and ENOSPC is returned. Note that for string controls -this <structfield>size</structfield> field should not be confused with the length of the string. -This field refers to the size of the memory that contains the string. -The actual <emphasis>length</emphasis> of the string may well be much smaller. -</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved2</structfield>[1]</entry> - <entry></entry> - <entry>Reserved for future extensions. Drivers and -applications must set the array to zero.</entry> - </row> - <row> - <entry>union</entry> - <entry>(anonymous)</entry> - </row> - <row> - <entry></entry> - <entry>__s32</entry> - <entry><structfield>value</structfield></entry> - <entry>New value or current value.</entry> - </row> - <row> - <entry></entry> - <entry>__s64</entry> - <entry><structfield>value64</structfield></entry> - <entry>New value or current value.</entry> - </row> - <row> - <entry></entry> - <entry>char *</entry> - <entry><structfield>string</structfield></entry> - <entry>A pointer to a string.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-ext-controls"> - <title>struct <structname>v4l2_ext_controls</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>ctrl_class</structfield></entry> - <entry>The control class to which all controls belong, see -<xref linkend="ctrl-class" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>count</structfield></entry> - <entry>The number of controls in the controls array. May -also be zero.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>error_idx</structfield></entry> - <entry>Set by the driver in case of an error. It is the -index of the control causing the error or equal to 'count' when the -error is not associated with a particular control. Undefined when the -ioctl returns 0 (success).</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[2]</entry> - <entry>Reserved for future extensions. Drivers and -applications must set the array to zero.</entry> - </row> - <row> - <entry>&v4l2-ext-control; *</entry> - <entry><structfield>controls</structfield></entry> - <entry>Pointer to an array of -<structfield>count</structfield> v4l2_ext_control structures. Ignored -if <structfield>count</structfield> equals zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="ctrl-class"> - <title>Control classes</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_CTRL_CLASS_USER</constant></entry> - <entry>0x980000</entry> - <entry>The class containing user controls. These controls -are described in <xref linkend="control" />. All controls that can be set -using the &VIDIOC-S-CTRL; and &VIDIOC-G-CTRL; ioctl belong to this -class.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_CLASS_MPEG</constant></entry> - <entry>0x990000</entry> - <entry>The class containing MPEG compression controls. -These controls are described in <xref - linkend="mpeg-controls" />.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_CLASS_CAMERA</constant></entry> - <entry>0x9a0000</entry> - <entry>The class containing camera controls. -These controls are described in <xref - linkend="camera-controls" />.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_CLASS_FM_TX</constant></entry> - <entry>0x9b0000</entry> - <entry>The class containing FM Transmitter (FM TX) controls. -These controls are described in <xref - linkend="fm-tx-controls" />.</entry> - </row> - </tbody> - </tgroup> - </table> - - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-ext-control; <structfield>id</structfield> -is invalid or the &v4l2-ext-controls; -<structfield>ctrl_class</structfield> is invalid. This error code is -also returned by the <constant>VIDIOC_S_EXT_CTRLS</constant> and -<constant>VIDIOC_TRY_EXT_CTRLS</constant> ioctls if two or more -control values are in conflict.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ERANGE</errorcode></term> - <listitem> - <para>The &v4l2-ext-control; <structfield>value</structfield> -is out of bounds.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The control is temporarily not changeable, possibly -because another applications took over control of the device function -this control belongs to.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ENOSPC</errorcode></term> - <listitem> - <para>The space reserved for the control's payload is insufficient. -The field <structfield>size</structfield> is set to a value that is enough -to store the payload and this error code is returned.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-fbuf.xml b/Documentation/DocBook/v4l/vidioc-g-fbuf.xml deleted file mode 100644 index e7dda4822f04..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-fbuf.xml +++ /dev/null @@ -1,473 +0,0 @@ -<refentry id="vidioc-g-fbuf"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_FBUF, VIDIOC_S_FBUF</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_FBUF</refname> - <refname>VIDIOC_S_FBUF</refname> - <refpurpose>Get or set frame buffer overlay parameters</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_framebuffer *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const struct v4l2_framebuffer *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_FBUF, VIDIOC_S_FBUF</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>Applications can use the <constant>VIDIOC_G_FBUF</constant> and -<constant>VIDIOC_S_FBUF</constant> ioctl to get and set the -framebuffer parameters for a <link linkend="overlay">Video -Overlay</link> or <link linkend="osd">Video Output Overlay</link> -(OSD). The type of overlay is implied by the device type (capture or -output device) and can be determined with the &VIDIOC-QUERYCAP; ioctl. -One <filename>/dev/videoN</filename> device must not support both -kinds of overlay.</para> - - <para>The V4L2 API distinguishes destructive and non-destructive -overlays. A destructive overlay copies captured video images into the -video memory of a graphics card. A non-destructive overlay blends -video images into a VGA signal or graphics into a video signal. -<wordasword>Video Output Overlays</wordasword> are always -non-destructive.</para> - - <para>To get the current parameters applications call the -<constant>VIDIOC_G_FBUF</constant> ioctl with a pointer to a -<structname>v4l2_framebuffer</structname> structure. The driver fills -all fields of the structure or returns an &EINVAL; when overlays are -not supported.</para> - - <para>To set the parameters for a <wordasword>Video Output -Overlay</wordasword>, applications must initialize the -<structfield>flags</structfield> field of a struct -<structname>v4l2_framebuffer</structname>. Since the framebuffer is -implemented on the TV card all other parameters are determined by the -driver. When an application calls <constant>VIDIOC_S_FBUF</constant> -with a pointer to this structure, the driver prepares for the overlay -and returns the framebuffer parameters as -<constant>VIDIOC_G_FBUF</constant> does, or it returns an error -code.</para> - - <para>To set the parameters for a <wordasword>non-destructive -Video Overlay</wordasword>, applications must initialize the -<structfield>flags</structfield> field, the -<structfield>fmt</structfield> substructure, and call -<constant>VIDIOC_S_FBUF</constant>. Again the driver prepares for the -overlay and returns the framebuffer parameters as -<constant>VIDIOC_G_FBUF</constant> does, or it returns an error -code.</para> - - <para>For a <wordasword>destructive Video Overlay</wordasword> -applications must additionally provide a -<structfield>base</structfield> address. Setting up a DMA to a -random memory location can jeopardize the system security, its -stability or even damage the hardware, therefore only the superuser -can set the parameters for a destructive video overlay.</para> - - <!-- NB v4l2_pix_format is also specified in pixfmt.sgml.--> - - <table pgwide="1" frame="none" id="v4l2-framebuffer"> - <title>struct <structname>v4l2_framebuffer</structname></title> - <tgroup cols="4"> - &cs-ustr; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>capability</structfield></entry> - <entry></entry> - <entry>Overlay capability flags set by the driver, see -<xref linkend="framebuffer-cap" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>flags</structfield></entry> - <entry></entry> - <entry>Overlay control flags set by application and -driver, see <xref linkend="framebuffer-flags" /></entry> - </row> - <row> - <entry>void *</entry> - <entry><structfield>base</structfield></entry> - <entry></entry> - <entry>Physical base address of the framebuffer, -that is the address of the pixel in the top left corner of the -framebuffer.<footnote><para>A physical base address may not suit all -platforms. GK notes in theory we should pass something like PCI device -+ memory region + offset instead. If you encounter problems please -discuss on the linux-media mailing list: &v4l-ml;.</para></footnote></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>This field is irrelevant to -<wordasword>non-destructive Video Overlays</wordasword>. For -<wordasword>destructive Video Overlays</wordasword> applications must -provide a base address. The driver may accept only base addresses -which are a multiple of two, four or eight bytes. For -<wordasword>Video Output Overlays</wordasword> the driver must return -a valid base address, so applications can find the corresponding Linux -framebuffer device (see <xref linkend="osd" />).</entry> - </row> - <row> - <entry>&v4l2-pix-format;</entry> - <entry><structfield>fmt</structfield></entry> - <entry></entry> - <entry>Layout of the frame buffer. The -<structname>v4l2_pix_format</structname> structure is defined in <xref -linkend="pixfmt" />, for clarification the fields and acceptable values - are listed below:</entry> - </row> - <row> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>width</structfield></entry> - <entry>Width of the frame buffer in pixels.</entry> - </row> - <row> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>height</structfield></entry> - <entry>Height of the frame buffer in pixels.</entry> - </row> - <row> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>pixelformat</structfield></entry> - <entry>The pixel format of the -framebuffer.</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>For <wordasword>non-destructive Video -Overlays</wordasword> this field only defines a format for the -&v4l2-window; <structfield>chromakey</structfield> field.</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>For <wordasword>destructive Video -Overlays</wordasword> applications must initialize this field. For -<wordasword>Video Output Overlays</wordasword> the driver must return -a valid format.</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>Usually this is an RGB format (for example -<link linkend="V4L2-PIX-FMT-RGB565"><constant>V4L2_PIX_FMT_RGB565</constant></link>) -but YUV formats (only packed YUV formats when chroma keying is used, -not including <constant>V4L2_PIX_FMT_YUYV</constant> and -<constant>V4L2_PIX_FMT_UYVY</constant>) and the -<constant>V4L2_PIX_FMT_PAL8</constant> format are also permitted. The -behavior of the driver when an application requests a compressed -format is undefined. See <xref linkend="pixfmt" /> for information on -pixel formats.</entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-field;</entry> - <entry><structfield>field</structfield></entry> - <entry>Drivers and applications shall ignore this field. -If applicable, the field order is selected with the &VIDIOC-S-FMT; -ioctl, using the <structfield>field</structfield> field of -&v4l2-window;.</entry> - </row> - <row> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>bytesperline</structfield></entry> - <entry>Distance in bytes between the leftmost pixels in -two adjacent lines.</entry> - </row> - <row> - <entry spanname="hspan"><para>This field is irrelevant to -<wordasword>non-destructive Video -Overlays</wordasword>.</para><para>For <wordasword>destructive Video -Overlays</wordasword> both applications and drivers can set this field -to request padding bytes at the end of each line. Drivers however may -ignore the requested value, returning <structfield>width</structfield> -times bytes-per-pixel or a larger value required by the hardware. That -implies applications can just set this field to zero to get a -reasonable default.</para><para>For <wordasword>Video Output -Overlays</wordasword> the driver must return a valid -value.</para><para>Video hardware may access padding bytes, therefore -they must reside in accessible memory. Consider for example the case -where padding bytes after the last line of an image cross a system -page boundary. Capture devices may write padding bytes, the value is -undefined. Output devices ignore the contents of padding -bytes.</para><para>When the image format is planar the -<structfield>bytesperline</structfield> value applies to the largest -plane and is divided by the same factor as the -<structfield>width</structfield> field for any smaller planes. For -example the Cb and Cr planes of a YUV 4:2:0 image have half as many -padding bytes following each line as the Y plane. To avoid ambiguities -drivers must return a <structfield>bytesperline</structfield> value -rounded up to a multiple of the scale factor.</para></entry> - </row> - <row> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>sizeimage</structfield></entry> - <entry><para>This field is irrelevant to -<wordasword>non-destructive Video Overlays</wordasword>. For -<wordasword>destructive Video Overlays</wordasword> applications must -initialize this field. For <wordasword>Video Output -Overlays</wordasword> the driver must return a valid -format.</para><para>Together with <structfield>base</structfield> it -defines the framebuffer memory accessible by the -driver.</para></entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-colorspace;</entry> - <entry><structfield>colorspace</structfield></entry> - <entry>This information supplements the -<structfield>pixelformat</structfield> and must be set by the driver, -see <xref linkend="colorspaces" />.</entry> - </row> - <row> - <entry></entry> - <entry>__u32</entry> - <entry><structfield>priv</structfield></entry> - <entry>Reserved for additional information about custom -(driver defined) formats. When not used drivers and applications must -set this field to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="framebuffer-cap"> - <title>Frame Buffer Capability Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_FBUF_CAP_EXTERNOVERLAY</constant></entry> - <entry>0x0001</entry> - <entry>The device is capable of non-destructive overlays. -When the driver clears this flag, only destructive overlays are -supported. There are no drivers yet which support both destructive and -non-destructive overlays.</entry> - </row> - <row> - <entry><constant>V4L2_FBUF_CAP_CHROMAKEY</constant></entry> - <entry>0x0002</entry> - <entry>The device supports clipping by chroma-keying the -images. That is, image pixels replace pixels in the VGA or video -signal only where the latter assume a certain color. Chroma-keying -makes no sense for destructive overlays.</entry> - </row> - <row> - <entry><constant>V4L2_FBUF_CAP_LIST_CLIPPING</constant></entry> - <entry>0x0004</entry> - <entry>The device supports clipping using a list of clip -rectangles.</entry> - </row> - <row> - <entry><constant>V4L2_FBUF_CAP_BITMAP_CLIPPING</constant></entry> - <entry>0x0008</entry> - <entry>The device supports clipping using a bit mask.</entry> - </row> - <row> - <entry><constant>V4L2_FBUF_CAP_LOCAL_ALPHA</constant></entry> - <entry>0x0010</entry> - <entry>The device supports clipping/blending using the -alpha channel of the framebuffer or VGA signal. Alpha blending makes -no sense for destructive overlays.</entry> - </row> - <row> - <entry><constant>V4L2_FBUF_CAP_GLOBAL_ALPHA</constant></entry> - <entry>0x0020</entry> - <entry>The device supports alpha blending using a global -alpha value. Alpha blending makes no sense for destructive overlays.</entry> - </row> - <row> - <entry><constant>V4L2_FBUF_CAP_LOCAL_INV_ALPHA</constant></entry> - <entry>0x0040</entry> - <entry>The device supports clipping/blending using the -inverted alpha channel of the framebuffer or VGA signal. Alpha -blending makes no sense for destructive overlays.</entry> - </row> - <row> - <entry><constant>V4L2_FBUF_CAP_SRC_CHROMAKEY</constant></entry> - <entry>0x0080</entry> - <entry>The device supports Source Chroma-keying. Framebuffer pixels -with the chroma-key colors are replaced by video pixels, which is exactly opposite of -<constant>V4L2_FBUF_CAP_CHROMAKEY</constant></entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="framebuffer-flags"> - <title>Frame Buffer Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_FBUF_FLAG_PRIMARY</constant></entry> - <entry>0x0001</entry> - <entry>The framebuffer is the primary graphics surface. -In other words, the overlay is destructive. [?]</entry> - </row> - <row> - <entry><constant>V4L2_FBUF_FLAG_OVERLAY</constant></entry> - <entry>0x0002</entry> - <entry>The frame buffer is an overlay surface the same -size as the capture. [?]</entry> - </row> - <row> - <entry spanname="hspan">The purpose of -<constant>V4L2_FBUF_FLAG_PRIMARY</constant> and -<constant>V4L2_FBUF_FLAG_OVERLAY</constant> was never quite clear. -Most drivers seem to ignore these flags. For compatibility with the -<wordasword>bttv</wordasword> driver applications should set the -<constant>V4L2_FBUF_FLAG_OVERLAY</constant> flag.</entry> - </row> - <row> - <entry><constant>V4L2_FBUF_FLAG_CHROMAKEY</constant></entry> - <entry>0x0004</entry> - <entry>Use chroma-keying. The chroma-key color is -determined by the <structfield>chromakey</structfield> field of -&v4l2-window; and negotiated with the &VIDIOC-S-FMT; ioctl, see <xref - linkend="overlay" /> -and - <xref linkend="osd" />.</entry> - </row> - <row> - <entry spanname="hspan">There are no flags to enable -clipping using a list of clip rectangles or a bitmap. These methods -are negotiated with the &VIDIOC-S-FMT; ioctl, see <xref - linkend="overlay" /> and <xref linkend="osd" />.</entry> - </row> - <row> - <entry><constant>V4L2_FBUF_FLAG_LOCAL_ALPHA</constant></entry> - <entry>0x0008</entry> - <entry>Use the alpha channel of the framebuffer to clip or -blend framebuffer pixels with video images. The blend -function is: output = framebuffer pixel * alpha + video pixel * (1 - -alpha). The actual alpha depth depends on the framebuffer pixel -format.</entry> - </row> - <row> - <entry><constant>V4L2_FBUF_FLAG_GLOBAL_ALPHA</constant></entry> - <entry>0x0010</entry> - <entry>Use a global alpha value to blend the framebuffer -with video images. The blend function is: output = (framebuffer pixel -* alpha + video pixel * (255 - alpha)) / 255. The alpha value is -determined by the <structfield>global_alpha</structfield> field of -&v4l2-window; and negotiated with the &VIDIOC-S-FMT; ioctl, see <xref - linkend="overlay" /> -and <xref linkend="osd" />.</entry> - </row> - <row> - <entry><constant>V4L2_FBUF_FLAG_LOCAL_INV_ALPHA</constant></entry> - <entry>0x0020</entry> - <entry>Like -<constant>V4L2_FBUF_FLAG_LOCAL_ALPHA</constant>, use the alpha channel -of the framebuffer to clip or blend framebuffer pixels with video -images, but with an inverted alpha value. The blend function is: -output = framebuffer pixel * (1 - alpha) + video pixel * alpha. The -actual alpha depth depends on the framebuffer pixel format.</entry> - </row> - <row> - <entry><constant>V4L2_FBUF_FLAG_SRC_CHROMAKEY</constant></entry> - <entry>0x0040</entry> - <entry>Use source chroma-keying. The source chroma-key color is -determined by the <structfield>chromakey</structfield> field of -&v4l2-window; and negotiated with the &VIDIOC-S-FMT; ioctl, see <xref -linkend="overlay" /> and <xref linkend="osd" />. -Both chroma-keying are mutual exclusive to each other, so same -<structfield>chromakey</structfield> field of &v4l2-window; is being used.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EPERM</errorcode></term> - <listitem> - <para><constant>VIDIOC_S_FBUF</constant> can only be called -by a privileged user to negotiate the parameters for a destructive -overlay.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The framebuffer parameters cannot be changed at this -time because overlay is already enabled, or capturing is enabled -and the hardware cannot capture and overlay simultaneously.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The ioctl is not supported or the -<constant>VIDIOC_S_FBUF</constant> parameters are unsuitable.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-fmt.xml b/Documentation/DocBook/v4l/vidioc-g-fmt.xml deleted file mode 100644 index a4ae59b664eb..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-fmt.xml +++ /dev/null @@ -1,212 +0,0 @@ -<refentry id="vidioc-g-fmt"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_FMT, VIDIOC_S_FMT, -VIDIOC_TRY_FMT</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_FMT</refname> - <refname>VIDIOC_S_FMT</refname> - <refname>VIDIOC_TRY_FMT</refname> - <refpurpose>Get or set the data format, try a format</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_format -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_FMT, VIDIOC_S_FMT, VIDIOC_TRY_FMT</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>These ioctls are used to negotiate the format of data -(typically image format) exchanged between driver and -application.</para> - - <para>To query the current parameters applications set the -<structfield>type</structfield> field of a struct -<structname>v4l2_format</structname> to the respective buffer (stream) -type. For example video capture devices use -<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> or -<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>. When the application -calls the <constant>VIDIOC_G_FMT</constant> ioctl with a pointer to -this structure the driver fills the respective member of the -<structfield>fmt</structfield> union. In case of video capture devices -that is either the &v4l2-pix-format; <structfield>pix</structfield> or -the &v4l2-pix-format-mplane; <structfield>pix_mp</structfield> member. -When the requested buffer type is not supported drivers return an -&EINVAL;.</para> - - <para>To change the current format parameters applications -initialize the <structfield>type</structfield> field and all -fields of the respective <structfield>fmt</structfield> -union member. For details see the documentation of the various devices -types in <xref linkend="devices" />. Good practice is to query the -current parameters first, and to -modify only those parameters not suitable for the application. When -the application calls the <constant>VIDIOC_S_FMT</constant> ioctl -with a pointer to a <structname>v4l2_format</structname> structure -the driver checks -and adjusts the parameters against hardware abilities. Drivers -should not return an error code unless the input is ambiguous, this is -a mechanism to fathom device capabilities and to approach parameters -acceptable for both the application and driver. On success the driver -may program the hardware, allocate resources and generally prepare for -data exchange. -Finally the <constant>VIDIOC_S_FMT</constant> ioctl returns the -current format parameters as <constant>VIDIOC_G_FMT</constant> does. -Very simple, inflexible devices may even ignore all input and always -return the default parameters. However all V4L2 devices exchanging -data with the application must implement the -<constant>VIDIOC_G_FMT</constant> and -<constant>VIDIOC_S_FMT</constant> ioctl. When the requested buffer -type is not supported drivers return an &EINVAL; on a -<constant>VIDIOC_S_FMT</constant> attempt. When I/O is already in -progress or the resource is not available for other reasons drivers -return the &EBUSY;.</para> - - <para>The <constant>VIDIOC_TRY_FMT</constant> ioctl is equivalent -to <constant>VIDIOC_S_FMT</constant> with one exception: it does not -change driver state. It can also be called at any time, never -returning <errorcode>EBUSY</errorcode>. This function is provided to -negotiate parameters, to learn about hardware limitations, without -disabling I/O or possibly time consuming hardware preparations. -Although strongly recommended drivers are not required to implement -this ioctl.</para> - - <table pgwide="1" frame="none" id="v4l2-format"> - <title>struct <structname>v4l2_format</structname></title> - <tgroup cols="4"> - <colspec colname="c1" /> - <colspec colname="c2" /> - <colspec colname="c3" /> - <colspec colname="c4" /> - <tbody valign="top"> - <row> - <entry>&v4l2-buf-type;</entry> - <entry><structfield>type</structfield></entry> - <entry></entry> - <entry>Type of the data stream, see <xref - linkend="v4l2-buf-type" />.</entry> - </row> - <row> - <entry>union</entry> - <entry><structfield>fmt</structfield></entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-pix-format;</entry> - <entry><structfield>pix</structfield></entry> - <entry>Definition of an image format, see <xref - linkend="pixfmt" />, used by video capture and output -devices.</entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-pix-format-mplane;</entry> - <entry><structfield>pix_mp</structfield></entry> - <entry>Definition of an image format, see <xref - linkend="pixfmt" />, used by video capture and output -devices that support the <link linkend="planar-apis">multi-planar -version of the API</link>.</entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-window;</entry> - <entry><structfield>win</structfield></entry> - <entry>Definition of an overlaid image, see <xref - linkend="overlay" />, used by video overlay devices.</entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-vbi-format;</entry> - <entry><structfield>vbi</structfield></entry> - <entry>Raw VBI capture or output parameters. This is -discussed in more detail in <xref linkend="raw-vbi" />. Used by raw VBI -capture and output devices.</entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-sliced-vbi-format;</entry> - <entry><structfield>sliced</structfield></entry> - <entry>Sliced VBI capture or output parameters. See -<xref linkend="sliced" /> for details. Used by sliced VBI -capture and output devices.</entry> - </row> - <row> - <entry></entry> - <entry>__u8</entry> - <entry><structfield>raw_data</structfield>[200]</entry> - <entry>Place holder for future extensions and custom -(driver defined) formats with <structfield>type</structfield> -<constant>V4L2_BUF_TYPE_PRIVATE</constant> and higher.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The data format cannot be changed at this -time, for example because I/O is already in progress.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-format; <structfield>type</structfield> -field is invalid, the requested buffer type not supported, or -<constant>VIDIOC_TRY_FMT</constant> was called and is not -supported with this buffer type.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-frequency.xml b/Documentation/DocBook/v4l/vidioc-g-frequency.xml deleted file mode 100644 index 062d72069090..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-frequency.xml +++ /dev/null @@ -1,145 +0,0 @@ -<refentry id="vidioc-g-frequency"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_FREQUENCY</refname> - <refname>VIDIOC_S_FREQUENCY</refname> - <refpurpose>Get or set tuner or modulator radio -frequency</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_frequency -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const struct v4l2_frequency -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To get the current tuner or modulator radio frequency -applications set the <structfield>tuner</structfield> field of a -&v4l2-frequency; to the respective tuner or modulator number (only -input devices have tuners, only output devices have modulators), zero -out the <structfield>reserved</structfield> array and -call the <constant>VIDIOC_G_FREQUENCY</constant> ioctl with a pointer -to this structure. The driver stores the current frequency in the -<structfield>frequency</structfield> field.</para> - - <para>To change the current tuner or modulator radio frequency -applications initialize the <structfield>tuner</structfield>, -<structfield>type</structfield> and -<structfield>frequency</structfield> fields, and the -<structfield>reserved</structfield> array of a &v4l2-frequency; and -call the <constant>VIDIOC_S_FREQUENCY</constant> ioctl with a pointer -to this structure. When the requested frequency is not possible the -driver assumes the closest possible value. However -<constant>VIDIOC_S_FREQUENCY</constant> is a write-only ioctl, it does -not return the actual new frequency.</para> - - <table pgwide="1" frame="none" id="v4l2-frequency"> - <title>struct <structname>v4l2_frequency</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>tuner</structfield></entry> - <entry>The tuner or modulator index number. This is the -same value as in the &v4l2-input; <structfield>tuner</structfield> -field and the &v4l2-tuner; <structfield>index</structfield> field, or -the &v4l2-output; <structfield>modulator</structfield> field and the -&v4l2-modulator; <structfield>index</structfield> field.</entry> - </row> - <row> - <entry>&v4l2-tuner-type;</entry> - <entry><structfield>type</structfield></entry> - <entry>The tuner type. This is the same value as in the -&v4l2-tuner; <structfield>type</structfield> field. The field is not -applicable to modulators, &ie; ignored by drivers.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>frequency</structfield></entry> - <entry>Tuning frequency in units of 62.5 kHz, or if the -&v4l2-tuner; or &v4l2-modulator; <structfield>capabilities</structfield> flag -<constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5 -Hz.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[8]</entry> - <entry>Reserved for future extensions. Drivers and - applications must set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The <structfield>tuner</structfield> index is out of -bounds or the value in the <structfield>type</structfield> field is -wrong.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-input.xml b/Documentation/DocBook/v4l/vidioc-g-input.xml deleted file mode 100644 index ed076e92760d..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-input.xml +++ /dev/null @@ -1,100 +0,0 @@ -<refentry id="vidioc-g-input"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_INPUT, VIDIOC_S_INPUT</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_INPUT</refname> - <refname>VIDIOC_S_INPUT</refname> - <refpurpose>Query or select the current video input</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>int *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_INPUT, VIDIOC_S_INPUT</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the current video input applications call the -<constant>VIDIOC_G_INPUT</constant> ioctl with a pointer to an integer -where the driver stores the number of the input, as in the -&v4l2-input; <structfield>index</structfield> field. This ioctl will -fail only when there are no video inputs, returning -<errorcode>EINVAL</errorcode>.</para> - - <para>To select a video input applications store the number of the -desired input in an integer and call the -<constant>VIDIOC_S_INPUT</constant> ioctl with a pointer to this -integer. Side effects are possible. For example inputs may support -different video standards, so the driver may implicitly switch the -current standard. It is good practice to select an input before -querying or negotiating any other parameters.</para> - - <para>Information about video inputs is available using the -&VIDIOC-ENUMINPUT; ioctl.</para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The number of the video input is out of bounds, or -there are no video inputs at all and this ioctl is not -supported.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>I/O is in progress, the input cannot be -switched.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-jpegcomp.xml b/Documentation/DocBook/v4l/vidioc-g-jpegcomp.xml deleted file mode 100644 index 77394b287411..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-jpegcomp.xml +++ /dev/null @@ -1,180 +0,0 @@ -<refentry id="vidioc-g-jpegcomp"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_JPEGCOMP, VIDIOC_S_JPEGCOMP</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_JPEGCOMP</refname> - <refname>VIDIOC_S_JPEGCOMP</refname> - <refpurpose></refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>v4l2_jpegcompression *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const v4l2_jpegcompression *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_JPEGCOMP, VIDIOC_S_JPEGCOMP</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>[to do]</para> - - <para>Ronald Bultje elaborates:</para> - - <!-- See video4linux-list@redhat.com on 16 Oct 2002, subject -"Re: [V4L] Re: v4l2 api / Zoran v4l2_jpegcompression" --> - - <para>APP is some application-specific information. The -application can set it itself, and it'll be stored in the JPEG-encoded -fields (eg; interlacing information for in an AVI or so). COM is the -same, but it's comments, like 'encoded by me' or so.</para> - - <para>jpeg_markers describes whether the huffman tables, -quantization tables and the restart interval information (all -JPEG-specific stuff) should be stored in the JPEG-encoded fields. -These define how the JPEG field is encoded. If you omit them, -applications assume you've used standard encoding. You usually do want -to add them.</para> - - <!-- NB VIDIOC_S_JPEGCOMP is w/o. --> - - <table pgwide="1" frame="none" id="v4l2-jpegcompression"> - <title>struct <structname>v4l2_jpegcompression</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>int</entry> - <entry><structfield>quality</structfield></entry> - <entry></entry> - </row> - <row> - <entry>int</entry> - <entry><structfield>APPn</structfield></entry> - <entry></entry> - </row> - <row> - <entry>int</entry> - <entry><structfield>APP_len</structfield></entry> - <entry></entry> - </row> - <row> - <entry>char</entry> - <entry><structfield>APP_data</structfield>[60]</entry> - <entry></entry> - </row> - <row> - <entry>int</entry> - <entry><structfield>COM_len</structfield></entry> - <entry></entry> - </row> - <row> - <entry>char</entry> - <entry><structfield>COM_data</structfield>[60]</entry> - <entry></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>jpeg_markers</structfield></entry> - <entry>See <xref linkend="jpeg-markers" />.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="jpeg-markers"> - <title>JPEG Markers Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_JPEG_MARKER_DHT</constant></entry> - <entry>(1<<3)</entry> - <entry>Define Huffman Tables</entry> - </row> - <row> - <entry><constant>V4L2_JPEG_MARKER_DQT</constant></entry> - <entry>(1<<4)</entry> - <entry>Define Quantization Tables</entry> - </row> - <row> - <entry><constant>V4L2_JPEG_MARKER_DRI</constant></entry> - <entry>(1<<5)</entry> - <entry>Define Restart Interval</entry> - </row> - <row> - <entry><constant>V4L2_JPEG_MARKER_COM</constant></entry> - <entry>(1<<6)</entry> - <entry>Comment segment</entry> - </row> - <row> - <entry><constant>V4L2_JPEG_MARKER_APP</constant></entry> - <entry>(1<<7)</entry> - <entry>App segment, driver will always use APP0</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>This ioctl is not supported.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-modulator.xml b/Documentation/DocBook/v4l/vidioc-g-modulator.xml deleted file mode 100644 index 15ce660f0f5a..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-modulator.xml +++ /dev/null @@ -1,246 +0,0 @@ -<refentry id="vidioc-g-modulator"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_MODULATOR, VIDIOC_S_MODULATOR</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_MODULATOR</refname> - <refname>VIDIOC_S_MODULATOR</refname> - <refpurpose>Get or set modulator attributes</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_modulator -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const struct v4l2_modulator -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_MODULATOR, VIDIOC_S_MODULATOR</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the attributes of a modulator applications initialize -the <structfield>index</structfield> field and zero out the -<structfield>reserved</structfield> array of a &v4l2-modulator; and -call the <constant>VIDIOC_G_MODULATOR</constant> ioctl with a pointer -to this structure. Drivers fill the rest of the structure or return an -&EINVAL; when the index is out of bounds. To enumerate all modulators -applications shall begin at index zero, incrementing by one until the -driver returns <errorcode>EINVAL</errorcode>.</para> - - <para>Modulators have two writable properties, an audio -modulation set and the radio frequency. To change the modulated audio -subprograms, applications initialize the <structfield>index -</structfield> and <structfield>txsubchans</structfield> fields and the -<structfield>reserved</structfield> array and call the -<constant>VIDIOC_S_MODULATOR</constant> ioctl. Drivers may choose a -different audio modulation if the request cannot be satisfied. However -this is a write-only ioctl, it does not return the actual audio -modulation selected.</para> - - <para>To change the radio frequency the &VIDIOC-S-FREQUENCY; ioctl -is available.</para> - - <table pgwide="1" frame="none" id="v4l2-modulator"> - <title>struct <structname>v4l2_modulator</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry>Identifies the modulator, set by the -application.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>name</structfield>[32]</entry> - <entry>Name of the modulator, a NUL-terminated ASCII -string. This information is intended for the user.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>capability</structfield></entry> - <entry>Modulator capability flags. No flags are defined -for this field, the tuner flags in &v4l2-tuner; -are used accordingly. The audio flags indicate the ability -to encode audio subprograms. They will <emphasis>not</emphasis> -change for example with the current video standard.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>rangelow</structfield></entry> - <entry>The lowest tunable frequency in units of 62.5 -KHz, or if the <structfield>capability</structfield> flag -<constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5 -Hz.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>rangehigh</structfield></entry> - <entry>The highest tunable frequency in units of 62.5 -KHz, or if the <structfield>capability</structfield> flag -<constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5 -Hz.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>txsubchans</structfield></entry> - <entry>With this field applications can determine how -audio sub-carriers shall be modulated. It contains a set of flags as -defined in <xref linkend="modulator-txsubchans" />. Note the tuner -<structfield>rxsubchans</structfield> flags are reused, but the -semantics are different. Video output devices are assumed to have an -analog or PCM audio input with 1-3 channels. The -<structfield>txsubchans</structfield> flags select one or more -channels for modulation, together with some audio subprogram -indicator, for example a stereo pilot tone.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[4]</entry> - <entry>Reserved for future extensions. Drivers and -applications must set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="modulator-txsubchans"> - <title>Modulator Audio Transmission Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_TUNER_SUB_MONO</constant></entry> - <entry>0x0001</entry> - <entry>Modulate channel 1 as mono audio, when the input -has more channels, a down-mix of channel 1 and 2. This flag does not -combine with <constant>V4L2_TUNER_SUB_STEREO</constant> or -<constant>V4L2_TUNER_SUB_LANG1</constant>.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_SUB_STEREO</constant></entry> - <entry>0x0002</entry> - <entry>Modulate channel 1 and 2 as left and right -channel of a stereo audio signal. When the input has only one channel -or two channels and <constant>V4L2_TUNER_SUB_SAP</constant> is also -set, channel 1 is encoded as left and right channel. This flag does -not combine with <constant>V4L2_TUNER_SUB_MONO</constant> or -<constant>V4L2_TUNER_SUB_LANG1</constant>. When the driver does not -support stereo audio it shall fall back to mono.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_SUB_LANG1</constant></entry> - <entry>0x0008</entry> - <entry>Modulate channel 1 and 2 as primary and secondary -language of a bilingual audio signal. When the input has only one -channel it is used for both languages. It is not possible to encode -the primary or secondary language only. This flag does not combine -with <constant>V4L2_TUNER_SUB_MONO</constant>, -<constant>V4L2_TUNER_SUB_STEREO</constant> or -<constant>V4L2_TUNER_SUB_SAP</constant>. If the hardware does not -support the respective audio matrix, or the current video standard -does not permit bilingual audio the -<constant>VIDIOC_S_MODULATOR</constant> ioctl shall return an &EINVAL; -and the driver shall fall back to mono or stereo mode.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_SUB_LANG2</constant></entry> - <entry>0x0004</entry> - <entry>Same effect as -<constant>V4L2_TUNER_SUB_SAP</constant>.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_SUB_SAP</constant></entry> - <entry>0x0004</entry> - <entry>When combined with <constant>V4L2_TUNER_SUB_MONO -</constant> the first channel is encoded as mono audio, the last -channel as Second Audio Program. When the input has only one channel -it is used for both audio tracks. When the input has three channels -the mono track is a down-mix of channel 1 and 2. When combined with -<constant>V4L2_TUNER_SUB_STEREO</constant> channel 1 and 2 are -encoded as left and right stereo audio, channel 3 as Second Audio -Program. When the input has only two channels, the first is encoded as -left and right channel and the second as SAP. When the input has only -one channel it is used for all audio tracks. It is not possible to -encode a Second Audio Program only. This flag must combine with -<constant>V4L2_TUNER_SUB_MONO</constant> or -<constant>V4L2_TUNER_SUB_STEREO</constant>. If the hardware does not -support the respective audio matrix, or the current video standard -does not permit SAP the <constant>VIDIOC_S_MODULATOR</constant> ioctl -shall return an &EINVAL; and driver shall fall back to mono or stereo -mode.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_SUB_RDS</constant></entry> - <entry>0x0010</entry> - <entry>Enable the RDS encoder for a radio FM transmitter.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-modulator; -<structfield>index</structfield> is out of bounds.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-output.xml b/Documentation/DocBook/v4l/vidioc-g-output.xml deleted file mode 100644 index 3ea8c0ed812e..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-output.xml +++ /dev/null @@ -1,100 +0,0 @@ -<refentry id="vidioc-g-output"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_OUTPUT, VIDIOC_S_OUTPUT</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_OUTPUT</refname> - <refname>VIDIOC_S_OUTPUT</refname> - <refpurpose>Query or select the current video output</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>int *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_OUTPUT, VIDIOC_S_OUTPUT</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the current video output applications call the -<constant>VIDIOC_G_OUTPUT</constant> ioctl with a pointer to an integer -where the driver stores the number of the output, as in the -&v4l2-output; <structfield>index</structfield> field. This ioctl -will fail only when there are no video outputs, returning the -&EINVAL;.</para> - - <para>To select a video output applications store the number of the -desired output in an integer and call the -<constant>VIDIOC_S_OUTPUT</constant> ioctl with a pointer to this integer. -Side effects are possible. For example outputs may support different -video standards, so the driver may implicitly switch the current -standard. It is good practice to select an output before querying or -negotiating any other parameters.</para> - - <para>Information about video outputs is available using the -&VIDIOC-ENUMOUTPUT; ioctl.</para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The number of the video output is out of bounds, or -there are no video outputs at all and this ioctl is not -supported.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>I/O is in progress, the output cannot be -switched.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-parm.xml b/Documentation/DocBook/v4l/vidioc-g-parm.xml deleted file mode 100644 index 392aa9e5571e..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-parm.xml +++ /dev/null @@ -1,332 +0,0 @@ -<refentry id="vidioc-g-parm"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_PARM, VIDIOC_S_PARM</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_PARM</refname> - <refname>VIDIOC_S_PARM</refname> - <refpurpose>Get or set streaming parameters</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>v4l2_streamparm *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_PARM, VIDIOC_S_PARM</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>The current video standard determines a nominal number of -frames per second. If less than this number of frames is to be -captured or output, applications can request frame skipping or -duplicating on the driver side. This is especially useful when using -the <function>read()</function> or <function>write()</function>, which -are not augmented by timestamps or sequence counters, and to avoid -unnecessary data copying.</para> - - <para>Further these ioctls can be used to determine the number of -buffers used internally by a driver in read/write mode. For -implications see the section discussing the &func-read; -function.</para> - - <para>To get and set the streaming parameters applications call -the <constant>VIDIOC_G_PARM</constant> and -<constant>VIDIOC_S_PARM</constant> ioctl, respectively. They take a -pointer to a struct <structname>v4l2_streamparm</structname> which -contains a union holding separate parameters for input and output -devices.</para> - - <table pgwide="1" frame="none" id="v4l2-streamparm"> - <title>struct <structname>v4l2_streamparm</structname></title> - <tgroup cols="4"> - &cs-ustr; - <tbody valign="top"> - <row> - <entry>&v4l2-buf-type;</entry> - <entry><structfield>type</structfield></entry> - <entry></entry> - <entry>The buffer (stream) type, same as &v4l2-format; -<structfield>type</structfield>, set by the application.</entry> - </row> - <row> - <entry>union</entry> - <entry><structfield>parm</structfield></entry> - <entry></entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-captureparm;</entry> - <entry><structfield>capture</structfield></entry> - <entry>Parameters for capture devices, used when -<structfield>type</structfield> is -<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>.</entry> - </row> - <row> - <entry></entry> - <entry>&v4l2-outputparm;</entry> - <entry><structfield>output</structfield></entry> - <entry>Parameters for output devices, used when -<structfield>type</structfield> is -<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>.</entry> - </row> - <row> - <entry></entry> - <entry>__u8</entry> - <entry><structfield>raw_data</structfield>[200]</entry> - <entry>A place holder for future extensions and custom -(driver defined) buffer types <constant>V4L2_BUF_TYPE_PRIVATE</constant> and -higher.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-captureparm"> - <title>struct <structname>v4l2_captureparm</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>capability</structfield></entry> - <entry>See <xref linkend="parm-caps" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>capturemode</structfield></entry> - <entry>Set by drivers and applications, see <xref linkend="parm-flags" />.</entry> - </row> - <row> - <entry>&v4l2-fract;</entry> - <entry><structfield>timeperframe</structfield></entry> - <entry><para>This is is the desired period between -successive frames captured by the driver, in seconds. The -field is intended to skip frames on the driver side, saving I/O -bandwidth.</para><para>Applications store here the desired frame -period, drivers return the actual frame period, which must be greater -or equal to the nominal frame period determined by the current video -standard (&v4l2-standard; <structfield>frameperiod</structfield> -field). Changing the video standard (also implicitly by switching the -video input) may reset this parameter to the nominal frame period. To -reset manually applications can just set this field to -zero.</para><para>Drivers support this function only when they set the -<constant>V4L2_CAP_TIMEPERFRAME</constant> flag in the -<structfield>capability</structfield> field.</para></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>extendedmode</structfield></entry> - <entry>Custom (driver specific) streaming parameters. When -unused, applications and drivers must set this field to zero. -Applications using this field should check the driver name and -version, see <xref linkend="querycap" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>readbuffers</structfield></entry> - <entry>Applications set this field to the desired number -of buffers used internally by the driver in &func-read; mode. Drivers -return the actual number of buffers. When an application requests zero -buffers, drivers should just return the current setting rather than -the minimum or an error code. For details see <xref - linkend="rw" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[4]</entry> - <entry>Reserved for future extensions. Drivers and -applications must set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-outputparm"> - <title>struct <structname>v4l2_outputparm</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>capability</structfield></entry> - <entry>See <xref linkend="parm-caps" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>outputmode</structfield></entry> - <entry>Set by drivers and applications, see <xref - linkend="parm-flags" />.</entry> - </row> - <row> - <entry>&v4l2-fract;</entry> - <entry><structfield>timeperframe</structfield></entry> - <entry>This is is the desired period between -successive frames output by the driver, in seconds.</entry> - </row> - <row> - <entry spanname="hspan"><para>The field is intended to -repeat frames on the driver side in &func-write; mode (in streaming -mode timestamps can be used to throttle the output), saving I/O -bandwidth.</para><para>Applications store here the desired frame -period, drivers return the actual frame period, which must be greater -or equal to the nominal frame period determined by the current video -standard (&v4l2-standard; <structfield>frameperiod</structfield> -field). Changing the video standard (also implicitly by switching the -video output) may reset this parameter to the nominal frame period. To -reset manually applications can just set this field to -zero.</para><para>Drivers support this function only when they set the -<constant>V4L2_CAP_TIMEPERFRAME</constant> flag in the -<structfield>capability</structfield> field.</para></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>extendedmode</structfield></entry> - <entry>Custom (driver specific) streaming parameters. When -unused, applications and drivers must set this field to zero. -Applications using this field should check the driver name and -version, see <xref linkend="querycap" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>writebuffers</structfield></entry> - <entry>Applications set this field to the desired number -of buffers used internally by the driver in -<function>write()</function> mode. Drivers return the actual number of -buffers. When an application requests zero buffers, drivers should -just return the current setting rather than the minimum or an error -code. For details see <xref linkend="rw" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[4]</entry> - <entry>Reserved for future extensions. Drivers and -applications must set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="parm-caps"> - <title>Streaming Parameters Capabilites</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_CAP_TIMEPERFRAME</constant></entry> - <entry>0x1000</entry> - <entry>The frame skipping/repeating controlled by the -<structfield>timeperframe</structfield> field is supported.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="parm-flags"> - <title>Capture Parameters Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_MODE_HIGHQUALITY</constant></entry> - <entry>0x0001</entry> - <entry><para>High quality imaging mode. High quality mode -is intended for still imaging applications. The idea is to get the -best possible image quality that the hardware can deliver. It is not -defined how the driver writer may achieve that; it will depend on the -hardware and the ingenuity of the driver writer. High quality mode is -a different mode from the the regular motion video capture modes. In -high quality mode:<itemizedlist> - <listitem> - <para>The driver may be able to capture higher -resolutions than for motion capture.</para> - </listitem> - <listitem> - <para>The driver may support fewer pixel formats -than motion capture (eg; true color).</para> - </listitem> - <listitem> - <para>The driver may capture and arithmetically -combine multiple successive fields or frames to remove color edge -artifacts and reduce the noise in the video data. -</para> - </listitem> - <listitem> - <para>The driver may capture images in slices like -a scanner in order to handle larger format images than would otherwise -be possible. </para> - </listitem> - <listitem> - <para>An image capture operation may be -significantly slower than motion capture. </para> - </listitem> - <listitem> - <para>Moving objects in the image might have -excessive motion blur. </para> - </listitem> - <listitem> - <para>Capture might only work through the -<function>read()</function> call.</para> - </listitem> - </itemizedlist></para></entry> - </row> - </tbody> - </tgroup> - </table> - - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>This ioctl is not supported.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-priority.xml b/Documentation/DocBook/v4l/vidioc-g-priority.xml deleted file mode 100644 index 5fb001978645..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-priority.xml +++ /dev/null @@ -1,144 +0,0 @@ -<refentry id="vidioc-g-priority"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_PRIORITY, VIDIOC_S_PRIORITY</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_PRIORITY</refname> - <refname>VIDIOC_S_PRIORITY</refname> - <refpurpose>Query or request the access priority associated with a -file descriptor</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>enum v4l2_priority *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const enum v4l2_priority *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_PRIORITY, VIDIOC_S_PRIORITY</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para>Pointer to an enum v4l2_priority type.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the current access priority -applications call the <constant>VIDIOC_G_PRIORITY</constant> ioctl -with a pointer to an enum v4l2_priority variable where the driver stores -the current priority.</para> - - <para>To request an access priority applications store the -desired priority in an enum v4l2_priority variable and call -<constant>VIDIOC_S_PRIORITY</constant> ioctl with a pointer to this -variable.</para> - - <table frame="none" pgwide="1" id="v4l2-priority"> - <title>enum v4l2_priority</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_PRIORITY_UNSET</constant></entry> - <entry>0</entry> - <entry></entry> - </row> - <row> - <entry><constant>V4L2_PRIORITY_BACKGROUND</constant></entry> - <entry>1</entry> - <entry>Lowest priority, usually applications running in -background, for example monitoring VBI transmissions. A proxy -application running in user space will be necessary if multiple -applications want to read from a device at this priority.</entry> - </row> - <row> - <entry><constant>V4L2_PRIORITY_INTERACTIVE</constant></entry> - <entry>2</entry> - <entry></entry> - </row> - <row> - <entry><constant>V4L2_PRIORITY_DEFAULT</constant></entry> - <entry>2</entry> - <entry>Medium priority, usually applications started and -interactively controlled by the user. For example TV viewers, Teletext -browsers, or just "panel" applications to change the channel or video -controls. This is the default priority unless an application requests -another.</entry> - </row> - <row> - <entry><constant>V4L2_PRIORITY_RECORD</constant></entry> - <entry>3</entry> - <entry>Highest priority. Only one file descriptor can have -this priority, it blocks any other fd from changing device properties. -Usually applications which must not be interrupted, like video -recording.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The requested priority value is invalid, or the -driver does not support access priorities.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>Another application already requested higher -priority.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-sliced-vbi-cap.xml b/Documentation/DocBook/v4l/vidioc-g-sliced-vbi-cap.xml deleted file mode 100644 index 10e721b17374..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-sliced-vbi-cap.xml +++ /dev/null @@ -1,264 +0,0 @@ -<refentry id="vidioc-g-sliced-vbi-cap"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_SLICED_VBI_CAP</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_SLICED_VBI_CAP</refname> - <refpurpose>Query sliced VBI capabilities</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_sliced_vbi_cap *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_SLICED_VBI_CAP</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To find out which data services are supported by a sliced -VBI capture or output device, applications initialize the -<structfield>type</structfield> field of a &v4l2-sliced-vbi-cap;, -clear the <structfield>reserved</structfield> array and -call the <constant>VIDIOC_G_SLICED_VBI_CAP</constant> ioctl. The -driver fills in the remaining fields or returns an &EINVAL; if the -sliced VBI API is unsupported or <structfield>type</structfield> -is invalid.</para> - - <para>Note the <structfield>type</structfield> field was added, -and the ioctl changed from read-only to write-read, in Linux 2.6.19.</para> - - <table pgwide="1" frame="none" id="v4l2-sliced-vbi-cap"> - <title>struct <structname>v4l2_sliced_vbi_cap</structname></title> - <tgroup cols="5"> - <colspec colname="c1" colwidth="3*" /> - <colspec colname="c2" colwidth="3*" /> - <colspec colname="c3" colwidth="2*" /> - <colspec colname="c4" colwidth="2*" /> - <colspec colname="c5" colwidth="2*" /> - <spanspec spanname="hspan" namest="c3" nameend="c5" /> - <tbody valign="top"> - <row> - <entry>__u16</entry> - <entry><structfield>service_set</structfield></entry> - <entry spanname="hspan">A set of all data services -supported by the driver. Equal to the union of all elements of the -<structfield>service_lines </structfield> array.</entry> - </row> - <row> - <entry>__u16</entry> - <entry><structfield>service_lines</structfield>[2][24]</entry> - <entry spanname="hspan">Each element of this array -contains a set of data services the hardware can look for or insert -into a particular scan line. Data services are defined in <xref - linkend="vbi-services" />. Array indices map to ITU-R -line numbers (see also <xref - linkend="vbi-525" /> and <xref -linkend="vbi-625" />) as follows:</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry>Element</entry> - <entry>525 line systems</entry> - <entry>625 line systems</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry><structfield>service_lines</structfield>[0][1]</entry> - <entry align="center">1</entry> - <entry align="center">1</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry><structfield>service_lines</structfield>[0][23]</entry> - <entry align="center">23</entry> - <entry align="center">23</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry><structfield>service_lines</structfield>[1][1]</entry> - <entry align="center">264</entry> - <entry align="center">314</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry><structfield>service_lines</structfield>[1][23]</entry> - <entry align="center">286</entry> - <entry align="center">336</entry> - </row> - <row> - <entry></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry spanname="hspan">The number of VBI lines the -hardware can capture or output per frame, or the number of services it -can identify on a given line may be limited. For example on PAL line -16 the hardware may be able to look for a VPS or Teletext signal, but -not both at the same time. Applications can learn about these limits -using the &VIDIOC-S-FMT; ioctl as described in <xref - linkend="sliced" />.</entry> - </row> - <row> - <entry></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry spanname="hspan">Drivers must set -<structfield>service_lines</structfield>[0][0] and -<structfield>service_lines</structfield>[1][0] to zero.</entry> - </row> - <row> - <entry>&v4l2-buf-type;</entry> - <entry><structfield>type</structfield></entry> - <entry>Type of the data stream, see <xref - linkend="v4l2-buf-type" />. Should be -<constant>V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</constant> or -<constant>V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</constant>.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[3]</entry> - <entry spanname="hspan">This array is reserved for future -extensions. Applications and drivers must set it to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <!-- See also dev-sliced-vbi.sgml --> - <table pgwide="1" frame="none" id="vbi-services"> - <title>Sliced VBI services</title> - <tgroup cols="5"> - <colspec colname="c1" colwidth="2*" /> - <colspec colname="c2" colwidth="1*" /> - <colspec colname="c3" colwidth="1*" /> - <colspec colname="c4" colwidth="2*" /> - <colspec colname="c5" colwidth="2*" /> - <spanspec spanname='rlp' namest='c3' nameend='c5' /> - <thead> - <row> - <entry>Symbol</entry> - <entry>Value</entry> - <entry>Reference</entry> - <entry>Lines, usually</entry> - <entry>Payload</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>V4L2_SLICED_TELETEXT_B</constant> (Teletext -System B)</entry> - <entry>0x0001</entry> - <entry><xref linkend="ets300706" />, <xref linkend="itu653" /></entry> - <entry>PAL/SECAM line 7-22, 320-335 (second field 7-22)</entry> - <entry>Last 42 of the 45 byte Teletext packet, that is -without clock run-in and framing code, lsb first transmitted.</entry> - </row> - <row> - <entry><constant>V4L2_SLICED_VPS</constant></entry> - <entry>0x0400</entry> - <entry><xref linkend="ets300231" /></entry> - <entry>PAL line 16</entry> - <entry>Byte number 3 to 15 according to Figure 9 of -ETS 300 231, lsb first transmitted.</entry> - </row> - <row> - <entry><constant>V4L2_SLICED_CAPTION_525</constant></entry> - <entry>0x1000</entry> - <entry><xref linkend="eia608" /></entry> - <entry>NTSC line 21, 284 (second field 21)</entry> - <entry>Two bytes in transmission order, including parity -bit, lsb first transmitted.</entry> - </row> - <row> - <entry><constant>V4L2_SLICED_WSS_625</constant></entry> - <entry>0x4000</entry> - <entry><xref linkend="en300294" />, <xref linkend="itu1119" /></entry> - <entry>PAL/SECAM line 23</entry> - <entry><screen> -Byte 0 1 - msb lsb msb lsb -Bit 7 6 5 4 3 2 1 0 x x 13 12 11 10 9 -</screen></entry> - </row> - <row> - <entry><constant>V4L2_SLICED_VBI_525</constant></entry> - <entry>0x1000</entry> - <entry spanname="rlp">Set of services applicable to 525 -line systems.</entry> - </row> - <row> - <entry><constant>V4L2_SLICED_VBI_625</constant></entry> - <entry>0x4401</entry> - <entry spanname="rlp">Set of services applicable to 625 -line systems.</entry> - </row> - </tbody> - </tgroup> - </table> - - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The device does not support sliced VBI capturing or -output, or the value in the <structfield>type</structfield> field is -wrong.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-std.xml b/Documentation/DocBook/v4l/vidioc-g-std.xml deleted file mode 100644 index 912f8513e5da..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-std.xml +++ /dev/null @@ -1,105 +0,0 @@ -<refentry id="vidioc-g-std"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_STD, VIDIOC_S_STD</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_STD</refname> - <refname>VIDIOC_S_STD</refname> - <refpurpose>Query or select the video standard of the current input</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>v4l2_std_id -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const v4l2_std_id -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_STD, VIDIOC_S_STD</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query and select the current video standard applications -use the <constant>VIDIOC_G_STD</constant> and <constant>VIDIOC_S_STD</constant> ioctls which take a pointer to a -&v4l2-std-id; type as argument. <constant>VIDIOC_G_STD</constant> can -return a single flag or a set of flags as in &v4l2-standard; field -<structfield>id</structfield>. The flags must be unambiguous such -that they appear in only one enumerated <structname>v4l2_standard</structname> structure.</para> - - <para><constant>VIDIOC_S_STD</constant> accepts one or more -flags, being a write-only ioctl it does not return the actual new standard as -<constant>VIDIOC_G_STD</constant> does. When no flags are given or -the current input does not support the requested standard the driver -returns an &EINVAL;. When the standard set is ambiguous drivers may -return <errorcode>EINVAL</errorcode> or choose any of the requested -standards.</para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>This ioctl is not supported, or the -<constant>VIDIOC_S_STD</constant> parameter was unsuitable.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The device is busy and therefore can not change the standard</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-g-tuner.xml b/Documentation/DocBook/v4l/vidioc-g-tuner.xml deleted file mode 100644 index bd98c734c06b..000000000000 --- a/Documentation/DocBook/v4l/vidioc-g-tuner.xml +++ /dev/null @@ -1,535 +0,0 @@ -<refentry id="vidioc-g-tuner"> - <refmeta> - <refentrytitle>ioctl VIDIOC_G_TUNER, VIDIOC_S_TUNER</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_G_TUNER</refname> - <refname>VIDIOC_S_TUNER</refname> - <refpurpose>Get or set tuner attributes</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_tuner -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const struct v4l2_tuner -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_G_TUNER, VIDIOC_S_TUNER</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the attributes of a tuner applications initialize the -<structfield>index</structfield> field and zero out the -<structfield>reserved</structfield> array of a &v4l2-tuner; and call the -<constant>VIDIOC_G_TUNER</constant> ioctl with a pointer to this -structure. Drivers fill the rest of the structure or return an -&EINVAL; when the index is out of bounds. To enumerate all tuners -applications shall begin at index zero, incrementing by one until the -driver returns <errorcode>EINVAL</errorcode>.</para> - - <para>Tuners have two writable properties, the audio mode and -the radio frequency. To change the audio mode, applications initialize -the <structfield>index</structfield>, -<structfield>audmode</structfield> and -<structfield>reserved</structfield> fields and call the -<constant>VIDIOC_S_TUNER</constant> ioctl. This will -<emphasis>not</emphasis> change the current tuner, which is determined -by the current video input. Drivers may choose a different audio mode -if the requested mode is invalid or unsupported. Since this is a -<!-- FIXME -->write-only ioctl, it does not return the actually -selected audio mode.</para> - - <para>To change the radio frequency the &VIDIOC-S-FREQUENCY; ioctl -is available.</para> - - <table pgwide="1" frame="none" id="v4l2-tuner"> - <title>struct <structname>v4l2_tuner</structname></title> - <tgroup cols="3"> - <colspec colname="c1" colwidth="1*" /> - <colspec colname="c2" colwidth="1*" /> - <colspec colname="c3" colwidth="1*" /> - <colspec colname="c4" colwidth="1*" /> - <spanspec spanname="hspan" namest="c3" nameend="c4" /> - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry spanname="hspan">Identifies the tuner, set by the -application.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>name</structfield>[32]</entry> - <entry spanname="hspan"><para>Name of the tuner, a -NUL-terminated ASCII string. This information is intended for the -user.<!-- FIXME Video inputs already have a name, the purpose of this -field is not quite clear.--></para></entry> - </row> - <row> - <entry>&v4l2-tuner-type;</entry> - <entry><structfield>type</structfield></entry> - <entry spanname="hspan">Type of the tuner, see <xref - linkend="v4l2-tuner-type" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>capability</structfield></entry> - <entry spanname="hspan"><para>Tuner capability flags, see -<xref linkend="tuner-capability" />. Audio flags indicate the ability -to decode audio subprograms. They will <emphasis>not</emphasis> -change, for example with the current video standard.</para><para>When -the structure refers to a radio tuner only the -<constant>V4L2_TUNER_CAP_LOW</constant>, -<constant>V4L2_TUNER_CAP_STEREO</constant> and -<constant>V4L2_TUNER_CAP_RDS</constant> flags can be set.</para></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>rangelow</structfield></entry> - <entry spanname="hspan">The lowest tunable frequency in -units of 62.5 kHz, or if the <structfield>capability</structfield> -flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5 -Hz.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>rangehigh</structfield></entry> - <entry spanname="hspan">The highest tunable frequency in -units of 62.5 kHz, or if the <structfield>capability</structfield> -flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5 -Hz.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>rxsubchans</structfield></entry> - <entry spanname="hspan"><para>Some tuners or audio -decoders can determine the received audio subprograms by analyzing -audio carriers, pilot tones or other indicators. To pass this -information drivers set flags defined in <xref - linkend="tuner-rxsubchans" /> in this field. For -example:</para></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry><constant>V4L2_TUNER_SUB_MONO</constant></entry> - <entry>receiving mono audio</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry><constant>STEREO | SAP</constant></entry> - <entry>receiving stereo audio and a secondary audio -program</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry><constant>MONO | STEREO</constant></entry> - <entry>receiving mono or stereo audio, the hardware cannot -distinguish</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry><constant>LANG1 | LANG2</constant></entry> - <entry>receiving bilingual audio</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry><constant>MONO | STEREO | LANG1 | LANG2</constant></entry> - <entry>receiving mono, stereo or bilingual -audio</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry spanname="hspan"><para>When the -<constant>V4L2_TUNER_CAP_STEREO</constant>, -<constant>_LANG1</constant>, <constant>_LANG2</constant> or -<constant>_SAP</constant> flag is cleared in the -<structfield>capability</structfield> field, the corresponding -<constant>V4L2_TUNER_SUB_</constant> flag must not be set -here.</para><para>This field is valid only if this is the tuner of the -current video input, or when the structure refers to a radio -tuner.</para></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>audmode</structfield></entry> - <entry spanname="hspan"><para>The selected audio mode, see -<xref linkend="tuner-audmode" /> for valid values. The audio mode does -not affect audio subprogram detection, and like a <link -linkend="control">control</link> it does not automatically change -unless the requested mode is invalid or unsupported. See <xref - linkend="tuner-matrix" /> for possible results when -the selected and received audio programs do not -match.</para><para>Currently this is the only field of struct -<structname>v4l2_tuner</structname> applications can -change.</para></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>signal</structfield></entry> - <entry spanname="hspan">The signal strength if known, ranging -from 0 to 65535. Higher values indicate a better signal.</entry> - </row> - <row> - <entry>__s32</entry> - <entry><structfield>afc</structfield></entry> - <entry spanname="hspan">Automatic frequency control: When the -<structfield>afc</structfield> value is negative, the frequency is too -low, when positive too high.<!-- FIXME need example what to do when it never -settles at zero, &ie; range is what? --></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[4]</entry> - <entry spanname="hspan">Reserved for future extensions. Drivers and -applications must set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-tuner-type"> - <title>enum v4l2_tuner_type</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_TUNER_RADIO</constant></entry> - <entry>1</entry> - <entry></entry> - </row> - <row> - <entry><constant>V4L2_TUNER_ANALOG_TV</constant></entry> - <entry>2</entry> - <entry></entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="tuner-capability"> - <title>Tuner and Modulator Capability Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_TUNER_CAP_LOW</constant></entry> - <entry>0x0001</entry> - <entry>When set, tuning frequencies are expressed in units of -62.5 Hz, otherwise in units of 62.5 kHz.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_CAP_NORM</constant></entry> - <entry>0x0002</entry> - <entry>This is a multi-standard tuner; the video standard -can or must be switched. (B/G PAL tuners for example are typically not - considered multi-standard because the video standard is automatically - determined from the frequency band.) The set of supported video - standards is available from the &v4l2-input; pointing to this tuner, - see the description of ioctl &VIDIOC-ENUMINPUT; for details. Only - <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_CAP_STEREO</constant></entry> - <entry>0x0010</entry> - <entry>Stereo audio reception is supported.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_CAP_LANG1</constant></entry> - <entry>0x0040</entry> - <entry>Reception of the primary language of a bilingual -audio program is supported. Bilingual audio is a feature of -two-channel systems, transmitting the primary language monaural on the -main audio carrier and a secondary language monaural on a second -carrier. Only - <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_CAP_LANG2</constant></entry> - <entry>0x0020</entry> - <entry>Reception of the secondary language of a bilingual -audio program is supported. Only - <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_CAP_SAP</constant></entry> - <entry>0x0020</entry> - <entry><para>Reception of a secondary audio program is -supported. This is a feature of the BTSC system which accompanies the -NTSC video standard. Two audio carriers are available for mono or -stereo transmissions of a primary language, and an independent third -carrier for a monaural secondary language. Only - <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</para><para>Note the -<constant>V4L2_TUNER_CAP_LANG2</constant> and -<constant>V4L2_TUNER_CAP_SAP</constant> flags are synonyms. -<constant>V4L2_TUNER_CAP_SAP</constant> applies when the tuner -supports the <constant>V4L2_STD_NTSC_M</constant> video -standard.</para><!-- FIXME what if PAL+NTSC and Bi but not SAP? --></entry> - </row> - <row> - <entry><constant>V4L2_TUNER_CAP_RDS</constant></entry> - <entry>0x0080</entry> - <entry>RDS capture is supported. This capability is only valid for -radio tuners.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="tuner-rxsubchans"> - <title>Tuner Audio Reception Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_TUNER_SUB_MONO</constant></entry> - <entry>0x0001</entry> - <entry>The tuner receives a mono audio signal.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_SUB_STEREO</constant></entry> - <entry>0x0002</entry> - <entry>The tuner receives a stereo audio signal.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_SUB_LANG1</constant></entry> - <entry>0x0008</entry> - <entry>The tuner receives the primary language of a -bilingual audio signal. Drivers must clear this flag when the current -video standard is <constant>V4L2_STD_NTSC_M</constant>.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_SUB_LANG2</constant></entry> - <entry>0x0004</entry> - <entry>The tuner receives the secondary language of a -bilingual audio signal (or a second audio program).</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_SUB_SAP</constant></entry> - <entry>0x0004</entry> - <entry>The tuner receives a Second Audio Program. Note the -<constant>V4L2_TUNER_SUB_LANG2</constant> and -<constant>V4L2_TUNER_SUB_SAP</constant> flags are synonyms. The -<constant>V4L2_TUNER_SUB_SAP</constant> flag applies when the -current video standard is <constant>V4L2_STD_NTSC_M</constant>.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_SUB_RDS</constant></entry> - <entry>0x0010</entry> - <entry>The tuner receives an RDS channel.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="tuner-audmode"> - <title>Tuner Audio Modes</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_TUNER_MODE_MONO</constant></entry> - <entry>0</entry> - <entry>Play mono audio. When the tuner receives a stereo -signal this a down-mix of the left and right channel. When the tuner -receives a bilingual or SAP signal this mode selects the primary -language.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_MODE_STEREO</constant></entry> - <entry>1</entry> - <entry><para>Play stereo audio. When the tuner receives -bilingual audio it may play different languages on the left and right -channel or the primary language is played on both channels.</para><para>Playing -different languages in this mode is -deprecated. New drivers should do this only in -<constant>MODE_LANG1_LANG2</constant>.</para><para>When the tuner -receives no stereo signal or does not support stereo reception the -driver shall fall back to <constant>MODE_MONO</constant>.</para></entry> - </row> - <row> - <entry><constant>V4L2_TUNER_MODE_LANG1</constant></entry> - <entry>3</entry> - <entry>Play the primary language, mono or stereo. Only -<constant>V4L2_TUNER_ANALOG_TV</constant> tuners support this -mode.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_MODE_LANG2</constant></entry> - <entry>2</entry> - <entry>Play the secondary language, mono. When the tuner -receives no bilingual audio or SAP, or their reception is not -supported the driver shall fall back to mono or stereo mode. Only -<constant>V4L2_TUNER_ANALOG_TV</constant> tuners support this -mode.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_MODE_SAP</constant></entry> - <entry>2</entry> - <entry>Play the Second Audio Program. When the tuner -receives no bilingual audio or SAP, or their reception is not -supported the driver shall fall back to mono or stereo mode. Only -<constant>V4L2_TUNER_ANALOG_TV</constant> tuners support this mode. -Note the <constant>V4L2_TUNER_MODE_LANG2</constant> and -<constant>V4L2_TUNER_MODE_SAP</constant> are synonyms.</entry> - </row> - <row> - <entry><constant>V4L2_TUNER_MODE_LANG1_LANG2</constant></entry> - <entry>4</entry> - <entry>Play the primary language on the left channel, the -secondary language on the right channel. When the tuner receives no -bilingual audio or SAP, it shall fall back to -<constant>MODE_LANG1</constant> or <constant>MODE_MONO</constant>. -Only <constant>V4L2_TUNER_ANALOG_TV</constant> tuners support this -mode.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="all" id="tuner-matrix"> - <title>Tuner Audio Matrix</title> - <tgroup cols="6" align="center"> - <colspec align="left" /> - <colspec colname="c2" colwidth="1*" /> - <colspec colwidth="1*" /> - <colspec colwidth="1*" /> - <colspec colnum="6" colname="c6" colwidth="1*" /> - <spanspec namest="c2" nameend="c6" spanname="hspan" align="center" /> - <thead> - <row> - <entry></entry> - <entry spanname="hspan">Selected -<constant>V4L2_TUNER_MODE_</constant></entry> - </row> - <row> - <entry>Received <constant>V4L2_TUNER_SUB_</constant></entry> - <entry><constant>MONO</constant></entry> - <entry><constant>STEREO</constant></entry> - <entry><constant>LANG1</constant></entry> - <entry><constant>LANG2 = SAP</constant></entry> - <entry><constant>LANG1_LANG2</constant><footnote><para>This -mode has been added in Linux 2.6.17 and may not be supported by older -drivers.</para></footnote></entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>MONO</constant></entry> - <entry>Mono</entry> - <entry>Mono/Mono</entry> - <entry>Mono</entry> - <entry>Mono</entry> - <entry>Mono/Mono</entry> - </row> - <row> - <entry><constant>MONO | SAP</constant></entry> - <entry>Mono</entry> - <entry>Mono/Mono</entry> - <entry>Mono</entry> - <entry>SAP</entry> - <entry>Mono/SAP (preferred) or Mono/Mono</entry> - </row> - <row> - <entry><constant>STEREO</constant></entry> - <entry>L+R</entry> - <entry>L/R</entry> - <entry>Stereo L/R (preferred) or Mono L+R</entry> - <entry>Stereo L/R (preferred) or Mono L+R</entry> - <entry>L/R (preferred) or L+R/L+R</entry> - </row> - <row> - <entry><constant>STEREO | SAP</constant></entry> - <entry>L+R</entry> - <entry>L/R</entry> - <entry>Stereo L/R (preferred) or Mono L+R</entry> - <entry>SAP</entry> - <entry>L+R/SAP (preferred) or L/R or L+R/L+R</entry> - </row> - <row> - <entry><constant>LANG1 | LANG2</constant></entry> - <entry>Language 1</entry> - <entry>Lang1/Lang2 (deprecated<footnote><para>Playback of -both languages in <constant>MODE_STEREO</constant> is deprecated. In -the future drivers should produce only the primary language in this -mode. Applications should request -<constant>MODE_LANG1_LANG2</constant> to record both languages or a -stereo signal.</para></footnote>) or -Lang1/Lang1</entry> - <entry>Language 1</entry> - <entry>Language 2</entry> - <entry>Lang1/Lang2 (preferred) or Lang1/Lang1</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-tuner; <structfield>index</structfield> is -out of bounds.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-log-status.xml b/Documentation/DocBook/v4l/vidioc-log-status.xml deleted file mode 100644 index 2634b7c88b58..000000000000 --- a/Documentation/DocBook/v4l/vidioc-log-status.xml +++ /dev/null @@ -1,58 +0,0 @@ -<refentry id="vidioc-log-status"> - <refmeta> - <refentrytitle>ioctl VIDIOC_LOG_STATUS</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_LOG_STATUS</refname> - <refpurpose>Log driver status information</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Description</title> - - <para>As the video/audio devices become more complicated it -becomes harder to debug problems. When this ioctl is called the driver -will output the current device status to the kernel log. This is -particular useful when dealing with problems like no sound, no video -and incorrectly tuned channels. Also many modern devices autodetect -video and audio standards and this ioctl will report what the device -thinks what the standard is. Mismatches may give an indication where -the problem is.</para> - - <para>This ioctl is optional and not all drivers support it. It -was introduced in Linux 2.6.15.</para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The driver does not support this ioctl.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-overlay.xml b/Documentation/DocBook/v4l/vidioc-overlay.xml deleted file mode 100644 index 1036c582cc15..000000000000 --- a/Documentation/DocBook/v4l/vidioc-overlay.xml +++ /dev/null @@ -1,83 +0,0 @@ -<refentry id="vidioc-overlay"> - <refmeta> - <refentrytitle>ioctl VIDIOC_OVERLAY</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_OVERLAY</refname> - <refpurpose>Start or stop video overlay</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const int *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_OVERLAY</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>This ioctl is part of the <link linkend="overlay">video - overlay</link> I/O method. Applications call - <constant>VIDIOC_OVERLAY</constant> to start or stop the - overlay. It takes a pointer to an integer which must be set to - zero by the application to stop overlay, to one to start.</para> - - <para>Drivers do not support &VIDIOC-STREAMON; or -&VIDIOC-STREAMOFF; with <constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>.</para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>Video overlay is not supported, or the -parameters have not been set up. See <xref -linkend="overlay" /> for the necessary steps.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-qbuf.xml b/Documentation/DocBook/v4l/vidioc-qbuf.xml deleted file mode 100644 index f2b11f8a4031..000000000000 --- a/Documentation/DocBook/v4l/vidioc-qbuf.xml +++ /dev/null @@ -1,194 +0,0 @@ -<refentry id="vidioc-qbuf"> - <refmeta> - <refentrytitle>ioctl VIDIOC_QBUF, VIDIOC_DQBUF</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_QBUF</refname> - <refname>VIDIOC_DQBUF</refname> - <refpurpose>Exchange a buffer with the driver</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_buffer *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_QBUF, VIDIOC_DQBUF</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>Applications call the <constant>VIDIOC_QBUF</constant> ioctl -to enqueue an empty (capturing) or filled (output) buffer in the -driver's incoming queue. The semantics depend on the selected I/O -method.</para> - - <para>To enqueue a buffer applications set the <structfield>type</structfield> -field of a &v4l2-buffer; to the same buffer type as was previously used -with &v4l2-format; <structfield>type</structfield> and &v4l2-requestbuffers; -<structfield>type</structfield>. Applications must also set the -<structfield>index</structfield> field. Valid index numbers range from -zero to the number of buffers allocated with &VIDIOC-REQBUFS; -(&v4l2-requestbuffers; <structfield>count</structfield>) minus one. The -contents of the struct <structname>v4l2_buffer</structname> returned -by a &VIDIOC-QUERYBUF; ioctl will do as well. When the buffer is -intended for output (<structfield>type</structfield> is -<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, -<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>, or -<constant>V4L2_BUF_TYPE_VBI_OUTPUT</constant>) applications must also -initialize the <structfield>bytesused</structfield>, -<structfield>field</structfield> and -<structfield>timestamp</structfield> fields, see <xref -linkend="buffer" /> for details. -Applications must also set <structfield>flags</structfield> to 0. If a driver -supports capturing from specific video inputs and you want to specify a video -input, then <structfield>flags</structfield> should be set to -<constant>V4L2_BUF_FLAG_INPUT</constant> and the field -<structfield>input</structfield> must be initialized to the desired input. -The <structfield>reserved</structfield> field must be set to 0. When using -the <link linkend="planar-apis">multi-planar API</link>, the -<structfield>m.planes</structfield> field must contain a userspace pointer -to a filled-in array of &v4l2-plane; and the <structfield>length</structfield> -field must be set to the number of elements in that array. -</para> - - <para>To enqueue a <link linkend="mmap">memory mapped</link> -buffer applications set the <structfield>memory</structfield> -field to <constant>V4L2_MEMORY_MMAP</constant>. When -<constant>VIDIOC_QBUF</constant> is called with a pointer to this -structure the driver sets the -<constant>V4L2_BUF_FLAG_MAPPED</constant> and -<constant>V4L2_BUF_FLAG_QUEUED</constant> flags and clears the -<constant>V4L2_BUF_FLAG_DONE</constant> flag in the -<structfield>flags</structfield> field, or it returns an -&EINVAL;.</para> - - <para>To enqueue a <link linkend="userp">user pointer</link> -buffer applications set the <structfield>memory</structfield> -field to <constant>V4L2_MEMORY_USERPTR</constant>, the -<structfield>m.userptr</structfield> field to the address of the -buffer and <structfield>length</structfield> to its size. When the multi-planar -API is used, <structfield>m.userptr</structfield> and -<structfield>length</structfield> members of the passed array of &v4l2-plane; -have to be used instead. When <constant>VIDIOC_QBUF</constant> is called with -a pointer to this structure the driver sets the -<constant>V4L2_BUF_FLAG_QUEUED</constant> flag and clears the -<constant>V4L2_BUF_FLAG_MAPPED</constant> and -<constant>V4L2_BUF_FLAG_DONE</constant> flags in the -<structfield>flags</structfield> field, or it returns an error code. -This ioctl locks the memory pages of the buffer in physical memory, -they cannot be swapped out to disk. Buffers remain locked until -dequeued, until the &VIDIOC-STREAMOFF; or &VIDIOC-REQBUFS; ioctl is -called, or until the device is closed.</para> - - <para>Applications call the <constant>VIDIOC_DQBUF</constant> -ioctl to dequeue a filled (capturing) or displayed (output) buffer -from the driver's outgoing queue. They just set the -<structfield>type</structfield>, <structfield>memory</structfield> -and <structfield>reserved</structfield> -fields of a &v4l2-buffer; as above, when <constant>VIDIOC_DQBUF</constant> -is called with a pointer to this structure the driver fills the -remaining fields or returns an error code. The driver may also set -<constant>V4L2_BUF_FLAG_ERROR</constant> in the <structfield>flags</structfield> -field. It indicates a non-critical (recoverable) streaming error. In such case -the application may continue as normal, but should be aware that data in the -dequeued buffer might be corrupted. When using the multi-planar API, the -planes array does not have to be passed; the <structfield>m.planes</structfield> -member must be set to NULL in that case.</para> - - <para>By default <constant>VIDIOC_DQBUF</constant> blocks when no -buffer is in the outgoing queue. When the -<constant>O_NONBLOCK</constant> flag was given to the &func-open; -function, <constant>VIDIOC_DQBUF</constant> returns immediately -with an &EAGAIN; when no buffer is available.</para> - - <para>The <structname>v4l2_buffer</structname> structure is -specified in <xref linkend="buffer" />.</para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EAGAIN</errorcode></term> - <listitem> - <para>Non-blocking I/O has been selected using -<constant>O_NONBLOCK</constant> and no buffer was in the outgoing -queue.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The buffer <structfield>type</structfield> is not -supported, or the <structfield>index</structfield> is out of bounds, -or no buffers have been allocated yet, or the -<structfield>userptr</structfield> or -<structfield>length</structfield> are invalid.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>ENOMEM</errorcode></term> - <listitem> - <para>Not enough physical or virtual memory was available to -enqueue a user pointer buffer.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EIO</errorcode></term> - <listitem> - <para><constant>VIDIOC_DQBUF</constant> failed due to an -internal error. Can also indicate temporary problems like signal -loss. Note the driver might dequeue an (empty) buffer despite -returning an error, or even stop capturing. Reusing such buffer may be unsafe -though and its details (e.g. <structfield>index</structfield>) may not be -returned either. It is recommended that drivers indicate recoverable errors -by setting the <constant>V4L2_BUF_FLAG_ERROR</constant> and returning 0 instead. -In that case the application should be able to safely reuse the buffer and -continue streaming. - </para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml b/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml deleted file mode 100644 index d272f7ab91b8..000000000000 --- a/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml +++ /dev/null @@ -1,87 +0,0 @@ -<refentry id="vidioc-query-dv-preset"> - <refmeta> - <refentrytitle>ioctl VIDIOC_QUERY_DV_PRESET</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_QUERY_DV_PRESET</refname> - <refpurpose>Sense the DV preset received by the current -input</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_dv_preset *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_QUERY_DV_PRESET</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>The hardware may be able to detect the current DV preset -automatically, similar to sensing the video standard. To do so, applications -call <constant> VIDIOC_QUERY_DV_PRESET</constant> with a pointer to a -&v4l2-dv-preset; type. Once the hardware detects a preset, that preset is -returned in the preset field of &v4l2-dv-preset;. If the preset could not be -detected because there was no signal, or the signal was unreliable, or the -signal did not map to a supported preset, then the value V4L2_DV_INVALID is -returned.</para> - </refsect1> - - <refsect1> - &return-value; - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>This ioctl is not supported.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The device is busy and therefore can not sense the preset</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-querybuf.xml b/Documentation/DocBook/v4l/vidioc-querybuf.xml deleted file mode 100644 index 5c104d42d31c..000000000000 --- a/Documentation/DocBook/v4l/vidioc-querybuf.xml +++ /dev/null @@ -1,110 +0,0 @@ -<refentry id="vidioc-querybuf"> - <refmeta> - <refentrytitle>ioctl VIDIOC_QUERYBUF</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_QUERYBUF</refname> - <refpurpose>Query the status of a buffer</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_buffer *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_QUERYBUF</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>This ioctl is part of the <link linkend="mmap">memory -mapping</link> I/O method. It can be used to query the status of a -buffer at any time after buffers have been allocated with the -&VIDIOC-REQBUFS; ioctl.</para> - - <para>Applications set the <structfield>type</structfield> field - of a &v4l2-buffer; to the same buffer type as was previously used with -&v4l2-format; <structfield>type</structfield> and &v4l2-requestbuffers; -<structfield>type</structfield>, and the <structfield>index</structfield> - field. Valid index numbers range from zero -to the number of buffers allocated with &VIDIOC-REQBUFS; - (&v4l2-requestbuffers; <structfield>count</structfield>) minus one. -The <structfield>reserved</structfield> field should to set to 0. -When using the <link linkend="planar-apis">multi-planar API</link>, the -<structfield>m.planes</structfield> field must contain a userspace pointer to an -array of &v4l2-plane; and the <structfield>length</structfield> field has -to be set to the number of elements in that array. -After calling <constant>VIDIOC_QUERYBUF</constant> with a pointer to - this structure drivers return an error code or fill the rest of -the structure.</para> - - <para>In the <structfield>flags</structfield> field the -<constant>V4L2_BUF_FLAG_MAPPED</constant>, -<constant>V4L2_BUF_FLAG_QUEUED</constant> and -<constant>V4L2_BUF_FLAG_DONE</constant> flags will be valid. The -<structfield>memory</structfield> field will be set to the current -I/O method. For the single-planar API, the <structfield>m.offset</structfield> -contains the offset of the buffer from the start of the device memory, -the <structfield>length</structfield> field its size. For the multi-planar API, -fields <structfield>m.mem_offset</structfield> and -<structfield>length</structfield> in the <structfield>m.planes</structfield> -array elements will be used instead. The driver may or may not set the remaining -fields and flags, they are meaningless in this context.</para> - - <para>The <structname>v4l2_buffer</structname> structure is - specified in <xref linkend="buffer" />.</para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The buffer <structfield>type</structfield> is not -supported, or the <structfield>index</structfield> is out of bounds.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-querycap.xml b/Documentation/DocBook/v4l/vidioc-querycap.xml deleted file mode 100644 index f29f1b86213c..000000000000 --- a/Documentation/DocBook/v4l/vidioc-querycap.xml +++ /dev/null @@ -1,303 +0,0 @@ -<refentry id="vidioc-querycap"> - <refmeta> - <refentrytitle>ioctl VIDIOC_QUERYCAP</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_QUERYCAP</refname> - <refpurpose>Query device capabilities</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_capability *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_QUERYCAP</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>All V4L2 devices support the -<constant>VIDIOC_QUERYCAP</constant> ioctl. It is used to identify -kernel devices compatible with this specification and to obtain -information about driver and hardware capabilities. The ioctl takes a -pointer to a &v4l2-capability; which is filled by the driver. When the -driver is not compatible with this specification the ioctl returns an -&EINVAL;.</para> - - <table pgwide="1" frame="none" id="v4l2-capability"> - <title>struct <structname>v4l2_capability</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u8</entry> - <entry><structfield>driver</structfield>[16]</entry> - <entry><para>Name of the driver, a unique NUL-terminated -ASCII string. For example: "bttv". Driver specific applications can -use this information to verify the driver identity. It is also useful -to work around known bugs, or to identify drivers in error reports. -The driver version is stored in the <structfield>version</structfield> -field.</para><para>Storing strings in fixed sized arrays is bad -practice but unavoidable here. Drivers and applications should take -precautions to never read or write beyond the end of the array and to -make sure the strings are properly NUL-terminated.</para></entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>card</structfield>[32]</entry> - <entry>Name of the device, a NUL-terminated ASCII string. -For example: "Yoyodyne TV/FM". One driver may support different brands -or models of video hardware. This information is intended for users, -for example in a menu of available devices. Since multiple TV cards of -the same brand may be installed which are supported by the same -driver, this name should be combined with the character device file -name (⪚ <filename>/dev/video2</filename>) or the -<structfield>bus_info</structfield> string to avoid -ambiguities.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>bus_info</structfield>[32]</entry> - <entry>Location of the device in the system, a -NUL-terminated ASCII string. For example: "PCI Slot 4". This -information is intended for users, to distinguish multiple -identical devices. If no such information is available the field may -simply count the devices controlled by the driver, or contain the -empty string (<structfield>bus_info</structfield>[0] = 0).<!-- XXX pci_dev->slot_name example --></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>version</structfield></entry> - <entry><para>Version number of the driver. Together with -the <structfield>driver</structfield> field this identifies a -particular driver. The version number is formatted using the -<constant>KERNEL_VERSION()</constant> macro:</para></entry> - </row> - <row> - <entry spanname="hspan"><para> -<programlisting> -#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) - -__u32 version = KERNEL_VERSION(0, 8, 1); - -printf ("Version: %u.%u.%u\n", - (version >> 16) & 0xFF, - (version >> 8) & 0xFF, - version & 0xFF); -</programlisting></para></entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>capabilities</structfield></entry> - <entry>Device capabilities, see <xref - linkend="device-capabilities" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[4]</entry> - <entry>Reserved for future extensions. Drivers must set -this array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="device-capabilities"> - <title>Device Capabilities Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_CAP_VIDEO_CAPTURE</constant></entry> - <entry>0x00000001</entry> - <entry>The device supports the single-planar API through the <link -linkend="capture">Video Capture</link> interface.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_VIDEO_CAPTURE_MPLANE</constant></entry> - <entry>0x00001000</entry> - <entry>The device supports the - <link linkend="planar-apis">multi-planar API</link> through the - <link linkend="capture">Video Capture</link> interface.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_VIDEO_OUTPUT</constant></entry> - <entry>0x00000002</entry> - <entry>The device supports the single-planar API through the <link -linkend="output">Video Output</link> interface.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_VIDEO_OUTPUT_MPLANE</constant></entry> - <entry>0x00002000</entry> - <entry>The device supports the - <link linkend="planar-apis">multi-planar API</link> through the - <link linkend="output">Video Output</link> interface.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_VIDEO_OVERLAY</constant></entry> - <entry>0x00000004</entry> - <entry>The device supports the <link -linkend="overlay">Video Overlay</link> interface. A video overlay device -typically stores captured images directly in the video memory of a -graphics card, with hardware clipping and scaling.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_VBI_CAPTURE</constant></entry> - <entry>0x00000010</entry> - <entry>The device supports the <link linkend="raw-vbi">Raw -VBI Capture</link> interface, providing Teletext and Closed Caption -data.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_VBI_OUTPUT</constant></entry> - <entry>0x00000020</entry> - <entry>The device supports the <link linkend="raw-vbi">Raw VBI Output</link> interface.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_SLICED_VBI_CAPTURE</constant></entry> - <entry>0x00000040</entry> - <entry>The device supports the <link linkend="sliced">Sliced VBI Capture</link> interface.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_SLICED_VBI_OUTPUT</constant></entry> - <entry>0x00000080</entry> - <entry>The device supports the <link linkend="sliced">Sliced VBI Output</link> interface.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_RDS_CAPTURE</constant></entry> - <entry>0x00000100</entry> - <entry>The device supports the <link linkend="rds">RDS</link> capture interface.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_VIDEO_OUTPUT_OVERLAY</constant></entry> - <entry>0x00000200</entry> - <entry>The device supports the <link linkend="osd">Video -Output Overlay</link> (OSD) interface. Unlike the <wordasword>Video -Overlay</wordasword> interface, this is a secondary function of video -output devices and overlays an image onto an outgoing video signal. -When the driver sets this flag, it must clear the -<constant>V4L2_CAP_VIDEO_OVERLAY</constant> flag and vice -versa.<footnote><para>The &v4l2-framebuffer; lacks an -&v4l2-buf-type; field, therefore the type of overlay is implied by the -driver capabilities.</para></footnote></entry> - </row> - <row> - <entry><constant>V4L2_CAP_HW_FREQ_SEEK</constant></entry> - <entry>0x00000400</entry> - <entry>The device supports the &VIDIOC-S-HW-FREQ-SEEK; ioctl for -hardware frequency seeking.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_RDS_OUTPUT</constant></entry> - <entry>0x00000800</entry> - <entry>The device supports the <link linkend="rds">RDS</link> output interface.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_TUNER</constant></entry> - <entry>0x00010000</entry> - <entry>The device has some sort of tuner to -receive RF-modulated video signals. For more information about -tuner programming see -<xref linkend="tuner" />.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_AUDIO</constant></entry> - <entry>0x00020000</entry> - <entry>The device has audio inputs or outputs. It may or -may not support audio recording or playback, in PCM or compressed -formats. PCM audio support must be implemented as ALSA or OSS -interface. For more information on audio inputs and outputs see <xref - linkend="audio" />.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_RADIO</constant></entry> - <entry>0x00040000</entry> - <entry>This is a radio receiver.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_MODULATOR</constant></entry> - <entry>0x00080000</entry> - <entry>The device has some sort of modulator to -emit RF-modulated video/audio signals. For more information about -modulator programming see -<xref linkend="tuner" />.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_READWRITE</constant></entry> - <entry>0x01000000</entry> - <entry>The device supports the <link -linkend="rw">read()</link> and/or <link linkend="rw">write()</link> -I/O methods.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_ASYNCIO</constant></entry> - <entry>0x02000000</entry> - <entry>The device supports the <link -linkend="async">asynchronous</link> I/O methods.</entry> - </row> - <row> - <entry><constant>V4L2_CAP_STREAMING</constant></entry> - <entry>0x04000000</entry> - <entry>The device supports the <link -linkend="mmap">streaming</link> I/O method.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The device is not compatible with this -specification.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> - diff --git a/Documentation/DocBook/v4l/vidioc-queryctrl.xml b/Documentation/DocBook/v4l/vidioc-queryctrl.xml deleted file mode 100644 index 0d5e8283cf32..000000000000 --- a/Documentation/DocBook/v4l/vidioc-queryctrl.xml +++ /dev/null @@ -1,434 +0,0 @@ -<refentry id="vidioc-queryctrl"> - <refmeta> - <refentrytitle>ioctl VIDIOC_QUERYCTRL, VIDIOC_QUERYMENU</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_QUERYCTRL</refname> - <refname>VIDIOC_QUERYMENU</refname> - <refpurpose>Enumerate controls and menu control items</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_queryctrl *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_querymenu *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_QUERYCTRL, VIDIOC_QUERYMENU</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>To query the attributes of a control applications set the -<structfield>id</structfield> field of a &v4l2-queryctrl; and call the -<constant>VIDIOC_QUERYCTRL</constant> ioctl with a pointer to this -structure. The driver fills the rest of the structure or returns an -&EINVAL; when the <structfield>id</structfield> is invalid.</para> - - <para>It is possible to enumerate controls by calling -<constant>VIDIOC_QUERYCTRL</constant> with successive -<structfield>id</structfield> values starting from -<constant>V4L2_CID_BASE</constant> up to and exclusive -<constant>V4L2_CID_BASE_LASTP1</constant>. Drivers may return -<errorcode>EINVAL</errorcode> if a control in this range is not -supported. Further applications can enumerate private controls, which -are not defined in this specification, by starting at -<constant>V4L2_CID_PRIVATE_BASE</constant> and incrementing -<structfield>id</structfield> until the driver returns -<errorcode>EINVAL</errorcode>.</para> - - <para>In both cases, when the driver sets the -<constant>V4L2_CTRL_FLAG_DISABLED</constant> flag in the -<structfield>flags</structfield> field this control is permanently -disabled and should be ignored by the application.<footnote> - <para><constant>V4L2_CTRL_FLAG_DISABLED</constant> was -intended for two purposes: Drivers can skip predefined controls not -supported by the hardware (although returning EINVAL would do as -well), or disable predefined and private controls after hardware -detection without the trouble of reordering control arrays and indices -(EINVAL cannot be used to skip private controls because it would -prematurely end the enumeration).</para></footnote></para> - - <para>When the application ORs <structfield>id</structfield> with -<constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> the driver returns the -next supported control, or <errorcode>EINVAL</errorcode> if there is -none. Drivers which do not support this flag yet always return -<errorcode>EINVAL</errorcode>.</para> - - <para>Additional information is required for menu controls: the -names of the menu items. To query them applications set the -<structfield>id</structfield> and <structfield>index</structfield> -fields of &v4l2-querymenu; and call the -<constant>VIDIOC_QUERYMENU</constant> ioctl with a pointer to this -structure. The driver fills the rest of the structure or returns an -&EINVAL; when the <structfield>id</structfield> or -<structfield>index</structfield> is invalid. Menu items are enumerated -by calling <constant>VIDIOC_QUERYMENU</constant> with successive -<structfield>index</structfield> values from &v4l2-queryctrl; -<structfield>minimum</structfield> to -<structfield>maximum</structfield>, inclusive. Note that it is possible -for <constant>VIDIOC_QUERYMENU</constant> to return an &EINVAL; for some -indices between <structfield>minimum</structfield> and <structfield>maximum</structfield>. -In that case that particular menu item is not supported by this driver. Also note that -the <structfield>minimum</structfield> value is not necessarily 0.</para> - - <para>See also the examples in <xref linkend="control" />.</para> - - <table pgwide="1" frame="none" id="v4l2-queryctrl"> - <title>struct <structname>v4l2_queryctrl</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>id</structfield></entry> - <entry>Identifies the control, set by the application. See -<xref linkend="control-id" /> for predefined IDs. When the ID is ORed -with V4L2_CTRL_FLAG_NEXT_CTRL the driver clears the flag and returns -the first control with a higher ID. Drivers which do not support this -flag yet always return an &EINVAL;.</entry> - </row> - <row> - <entry>&v4l2-ctrl-type;</entry> - <entry><structfield>type</structfield></entry> - <entry>Type of control, see <xref - linkend="v4l2-ctrl-type" />.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>name</structfield>[32]</entry> - <entry>Name of the control, a NUL-terminated ASCII -string. This information is intended for the user.</entry> - </row> - <row> - <entry>__s32</entry> - <entry><structfield>minimum</structfield></entry> - <entry>Minimum value, inclusive. This field gives a lower -bound for <constant>V4L2_CTRL_TYPE_INTEGER</constant> controls and the -lowest valid index for <constant>V4L2_CTRL_TYPE_MENU</constant> controls. -For <constant>V4L2_CTRL_TYPE_STRING</constant> controls the minimum value -gives the minimum length of the string. This length <emphasis>does not include the terminating -zero</emphasis>. It may not be valid for any other type of control, including -<constant>V4L2_CTRL_TYPE_INTEGER64</constant> controls. Note that this is a -signed value.</entry> - </row> - <row> - <entry>__s32</entry> - <entry><structfield>maximum</structfield></entry> - <entry>Maximum value, inclusive. This field gives an upper -bound for <constant>V4L2_CTRL_TYPE_INTEGER</constant> controls and the -highest valid index for <constant>V4L2_CTRL_TYPE_MENU</constant> -controls. -For <constant>V4L2_CTRL_TYPE_STRING</constant> controls the maximum value -gives the maximum length of the string. This length <emphasis>does not include the terminating -zero</emphasis>. It may not be valid for any other type of control, including -<constant>V4L2_CTRL_TYPE_INTEGER64</constant> controls. Note that this is a -signed value.</entry> - </row> - <row> - <entry>__s32</entry> - <entry><structfield>step</structfield></entry> - <entry><para>This field gives a step size for -<constant>V4L2_CTRL_TYPE_INTEGER</constant> controls. For -<constant>V4L2_CTRL_TYPE_STRING</constant> controls this field refers to -the string length that has to be a multiple of this step size. -It may not be valid for any other type of control, including -<constant>V4L2_CTRL_TYPE_INTEGER64</constant> -controls.</para><para>Generally drivers should not scale hardware -control values. It may be necessary for example when the -<structfield>name</structfield> or <structfield>id</structfield> imply -a particular unit and the hardware actually accepts only multiples of -said unit. If so, drivers must take care values are properly rounded -when scaling, such that errors will not accumulate on repeated -read-write cycles.</para><para>This field gives the smallest change of -an integer control actually affecting hardware. Often the information -is needed when the user can change controls by keyboard or GUI -buttons, rather than a slider. When for example a hardware register -accepts values 0-511 and the driver reports 0-65535, step should be -128.</para><para>Note that although signed, the step value is supposed to -be always positive.</para></entry> - </row> - <row> - <entry>__s32</entry> - <entry><structfield>default_value</structfield></entry> - <entry>The default value of a -<constant>V4L2_CTRL_TYPE_INTEGER</constant>, -<constant>_BOOLEAN</constant> or <constant>_MENU</constant> control. -Not valid for other types of controls. Drivers reset controls only -when the driver is loaded, not later, in particular not when the -func-open; is called.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>flags</structfield></entry> - <entry>Control flags, see <xref - linkend="control-flags" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[2]</entry> - <entry>Reserved for future extensions. Drivers must set -the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-querymenu"> - <title>struct <structname>v4l2_querymenu</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>id</structfield></entry> - <entry>Identifies the control, set by the application -from the respective &v4l2-queryctrl; -<structfield>id</structfield>.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry>Index of the menu item, starting at zero, set by - the application.</entry> - </row> - <row> - <entry>__u8</entry> - <entry><structfield>name</structfield>[32]</entry> - <entry>Name of the menu item, a NUL-terminated ASCII -string. This information is intended for the user.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield></entry> - <entry>Reserved for future extensions. Drivers must set -the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-ctrl-type"> - <title>enum v4l2_ctrl_type</title> - <tgroup cols="5" align="left"> - <colspec colwidth="30*" /> - <colspec colwidth="5*" align="center" /> - <colspec colwidth="5*" align="center" /> - <colspec colwidth="5*" align="center" /> - <colspec colwidth="55*" /> - <thead> - <row> - <entry>Type</entry> - <entry><structfield>minimum</structfield></entry> - <entry><structfield>step</structfield></entry> - <entry><structfield>maximum</structfield></entry> - <entry>Description</entry> - </row> - </thead> - <tbody valign="top"> - <row> - <entry><constant>V4L2_CTRL_TYPE_INTEGER</constant></entry> - <entry>any</entry> - <entry>any</entry> - <entry>any</entry> - <entry>An integer-valued control ranging from minimum to -maximum inclusive. The step value indicates the increment between -values which are actually different on the hardware.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_TYPE_BOOLEAN</constant></entry> - <entry>0</entry> - <entry>1</entry> - <entry>1</entry> - <entry>A boolean-valued control. Zero corresponds to -"disabled", and one means "enabled".</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_TYPE_MENU</constant></entry> - <entry>≥ 0</entry> - <entry>1</entry> - <entry>N-1</entry> - <entry>The control has a menu of N choices. The names of -the menu items can be enumerated with the -<constant>VIDIOC_QUERYMENU</constant> ioctl.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_TYPE_BUTTON</constant></entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>A control which performs an action when set. -Drivers must ignore the value passed with -<constant>VIDIOC_S_CTRL</constant> and return an &EINVAL; on a -<constant>VIDIOC_G_CTRL</constant> attempt.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_TYPE_INTEGER64</constant></entry> - <entry>n/a</entry> - <entry>n/a</entry> - <entry>n/a</entry> - <entry>A 64-bit integer valued control. Minimum, maximum -and step size cannot be queried.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_TYPE_STRING</constant></entry> - <entry>≥ 0</entry> - <entry>≥ 1</entry> - <entry>≥ 0</entry> - <entry>The minimum and maximum string lengths. The step size -means that the string must be (minimum + N * step) characters long for -N ≥ 0. These lengths do not include the terminating zero, so in order to -pass a string of length 8 to &VIDIOC-S-EXT-CTRLS; you need to set the -<structfield>size</structfield> field of &v4l2-ext-control; to 9. For &VIDIOC-G-EXT-CTRLS; you can -set the <structfield>size</structfield> field to <structfield>maximum</structfield> + 1. -Which character encoding is used will depend on the string control itself and -should be part of the control documentation.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_TYPE_CTRL_CLASS</constant></entry> - <entry>n/a</entry> - <entry>n/a</entry> - <entry>n/a</entry> - <entry>This is not a control. When -<constant>VIDIOC_QUERYCTRL</constant> is called with a control ID -equal to a control class code (see <xref linkend="ctrl-class" />) + 1, the -ioctl returns the name of the control class and this control type. -Older drivers which do not support this feature return an -&EINVAL;.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="control-flags"> - <title>Control Flags</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_CTRL_FLAG_DISABLED</constant></entry> - <entry>0x0001</entry> - <entry>This control is permanently disabled and should be -ignored by the application. Any attempt to change the control will -result in an &EINVAL;.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_FLAG_GRABBED</constant></entry> - <entry>0x0002</entry> - <entry>This control is temporarily unchangeable, for -example because another application took over control of the -respective resource. Such controls may be displayed specially in a -user interface. Attempts to change the control may result in an -&EBUSY;.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_FLAG_READ_ONLY</constant></entry> - <entry>0x0004</entry> - <entry>This control is permanently readable only. Any -attempt to change the control will result in an &EINVAL;.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_FLAG_UPDATE</constant></entry> - <entry>0x0008</entry> - <entry>A hint that changing this control may affect the -value of other controls within the same control class. Applications -should update their user interface accordingly.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_FLAG_INACTIVE</constant></entry> - <entry>0x0010</entry> - <entry>This control is not applicable to the current -configuration and should be displayed accordingly in a user interface. -For example the flag may be set on a MPEG audio level 2 bitrate -control when MPEG audio encoding level 1 was selected with another -control.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_FLAG_SLIDER</constant></entry> - <entry>0x0020</entry> - <entry>A hint that this control is best represented as a -slider-like element in a user interface.</entry> - </row> - <row> - <entry><constant>V4L2_CTRL_FLAG_WRITE_ONLY</constant></entry> - <entry>0x0040</entry> - <entry>This control is permanently writable only. Any -attempt to read the control will result in an &EACCES; error code. This -flag is typically present for relative controls or action controls where -writing a value will cause the device to carry out a given action -(⪚ motor control) but no meaningful value can be returned.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-queryctrl; <structfield>id</structfield> -is invalid. The &v4l2-querymenu; <structfield>id</structfield> is -invalid or <structfield>index</structfield> is out of range (less than -<structfield>minimum</structfield> or greater than <structfield>maximum</structfield>) -or this particular menu item is not supported by the driver.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EACCES</errorcode></term> - <listitem> - <para>An attempt was made to read a write-only control.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-querystd.xml b/Documentation/DocBook/v4l/vidioc-querystd.xml deleted file mode 100644 index 1a9e60393091..000000000000 --- a/Documentation/DocBook/v4l/vidioc-querystd.xml +++ /dev/null @@ -1,89 +0,0 @@ -<refentry id="vidioc-querystd"> - <refmeta> - <refentrytitle>ioctl VIDIOC_QUERYSTD</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_QUERYSTD</refname> - <refpurpose>Sense the video standard received by the current -input</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>v4l2_std_id *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_QUERYSTD</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>The hardware may be able to detect the current video -standard automatically. To do so, applications call <constant> -VIDIOC_QUERYSTD</constant> with a pointer to a &v4l2-std-id; type. The -driver stores here a set of candidates, this can be a single flag or a -set of supported standards if for example the hardware can only -distinguish between 50 and 60 Hz systems. When detection is not -possible or fails, the set must contain all standards supported by the -current video input or output.</para> - - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>This ioctl is not supported.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The device is busy and therefore can not detect the standard</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-reqbufs.xml b/Documentation/DocBook/v4l/vidioc-reqbufs.xml deleted file mode 100644 index 69800ae23348..000000000000 --- a/Documentation/DocBook/v4l/vidioc-reqbufs.xml +++ /dev/null @@ -1,150 +0,0 @@ -<refentry id="vidioc-reqbufs"> - <refmeta> - <refentrytitle>ioctl VIDIOC_REQBUFS</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_REQBUFS</refname> - <refpurpose>Initiate Memory Mapping or User Pointer I/O</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_requestbuffers *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_REQBUFS</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>This ioctl is used to initiate <link linkend="mmap">memory -mapped</link> or <link linkend="userp">user pointer</link> -I/O. Memory mapped buffers are located in device memory and must be -allocated with this ioctl before they can be mapped into the -application's address space. User buffers are allocated by -applications themselves, and this ioctl is merely used to switch the -driver into user pointer I/O mode and to setup some internal structures.</para> - - <para>To allocate device buffers applications initialize all -fields of the <structname>v4l2_requestbuffers</structname> structure. -They set the <structfield>type</structfield> field to the respective -stream or buffer type, the <structfield>count</structfield> field to -the desired number of buffers, <structfield>memory</structfield> -must be set to the requested I/O method and the <structfield>reserved</structfield> array -must be zeroed. When the ioctl -is called with a pointer to this structure the driver will attempt to allocate -the requested number of buffers and it stores the actual number -allocated in the <structfield>count</structfield> field. It can be -smaller than the number requested, even zero, when the driver runs out -of free memory. A larger number is also possible when the driver requires -more buffers to function correctly. For example video output requires at least two buffers, -one displayed and one filled by the application.</para> - <para>When the I/O method is not supported the ioctl -returns an &EINVAL;.</para> - - <para>Applications can call <constant>VIDIOC_REQBUFS</constant> -again to change the number of buffers, however this cannot succeed -when any buffers are still mapped. A <structfield>count</structfield> -value of zero frees all buffers, after aborting or finishing any DMA -in progress, an implicit &VIDIOC-STREAMOFF;. <!-- mhs: I see no -reason why munmap()ping one or even all buffers must imply -streamoff.--></para> - - <table pgwide="1" frame="none" id="v4l2-requestbuffers"> - <title>struct <structname>v4l2_requestbuffers</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>count</structfield></entry> - <entry>The number of buffers requested or granted.</entry> - </row> - <row> - <entry>&v4l2-buf-type;</entry> - <entry><structfield>type</structfield></entry> - <entry>Type of the stream or buffers, this is the same -as the &v4l2-format; <structfield>type</structfield> field. See <xref - linkend="v4l2-buf-type" /> for valid values.</entry> - </row> - <row> - <entry>&v4l2-memory;</entry> - <entry><structfield>memory</structfield></entry> - <entry>Applications set this field to -<constant>V4L2_MEMORY_MMAP</constant> or -<constant>V4L2_MEMORY_USERPTR</constant>.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[2]</entry> - <entry>A place holder for future extensions and custom -(driver defined) buffer types <constant>V4L2_BUF_TYPE_PRIVATE</constant> and -higher. This array should be zeroed by applications.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The driver supports multiple opens and I/O is already -in progress, or reallocation of buffers was attempted although one or -more are still mapped.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The buffer type (<structfield>type</structfield> field) or the -requested I/O method (<structfield>memory</structfield>) is not -supported.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml b/Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml deleted file mode 100644 index c30dcc4232c0..000000000000 --- a/Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml +++ /dev/null @@ -1,135 +0,0 @@ -<refentry id="vidioc-s-hw-freq-seek"> - <refmeta> - <refentrytitle>ioctl VIDIOC_S_HW_FREQ_SEEK</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_S_HW_FREQ_SEEK</refname> - <refpurpose>Perform a hardware frequency seek</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_hw_freq_seek -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_S_HW_FREQ_SEEK</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>Start a hardware frequency seek from the current frequency. -To do this applications initialize the <structfield>tuner</structfield>, -<structfield>type</structfield>, <structfield>seek_upward</structfield>, -<structfield>spacing</structfield> and -<structfield>wrap_around</structfield> fields, and zero out the -<structfield>reserved</structfield> array of a &v4l2-hw-freq-seek; and -call the <constant>VIDIOC_S_HW_FREQ_SEEK</constant> ioctl with a pointer -to this structure.</para> - - <para>This ioctl is supported if the <constant>V4L2_CAP_HW_FREQ_SEEK</constant> capability is set.</para> - - <table pgwide="1" frame="none" id="v4l2-hw-freq-seek"> - <title>struct <structname>v4l2_hw_freq_seek</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>tuner</structfield></entry> - <entry>The tuner index number. This is the -same value as in the &v4l2-input; <structfield>tuner</structfield> -field and the &v4l2-tuner; <structfield>index</structfield> field.</entry> - </row> - <row> - <entry>&v4l2-tuner-type;</entry> - <entry><structfield>type</structfield></entry> - <entry>The tuner type. This is the same value as in the -&v4l2-tuner; <structfield>type</structfield> field.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>seek_upward</structfield></entry> - <entry>If non-zero, seek upward from the current frequency, else seek downward.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>wrap_around</structfield></entry> - <entry>If non-zero, wrap around when at the end of the frequency range, else stop seeking.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>spacing</structfield></entry> - <entry>If non-zero, defines the hardware seek resolution in Hz. The driver selects the nearest value that is supported by the device. If spacing is zero a reasonable default value is used.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[7]</entry> - <entry>Reserved for future extensions. Drivers and - applications must set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The <structfield>tuner</structfield> index is out of -bounds or the value in the <structfield>type</structfield> field is -wrong.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EAGAIN</errorcode></term> - <listitem> - <para>The ioctl timed-out. Try again.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-streamon.xml b/Documentation/DocBook/v4l/vidioc-streamon.xml deleted file mode 100644 index 75ed39bf4d2b..000000000000 --- a/Documentation/DocBook/v4l/vidioc-streamon.xml +++ /dev/null @@ -1,115 +0,0 @@ -<refentry id="vidioc-streamon"> - <refmeta> - <refentrytitle>ioctl VIDIOC_STREAMON, VIDIOC_STREAMOFF</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_STREAMON</refname> - <refname>VIDIOC_STREAMOFF</refname> - <refpurpose>Start or stop streaming I/O</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const int *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_STREAMON, VIDIOC_STREAMOFF</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>The <constant>VIDIOC_STREAMON</constant> and -<constant>VIDIOC_STREAMOFF</constant> ioctl start and stop the capture -or output process during streaming (<link linkend="mmap">memory -mapping</link> or <link linkend="userp">user pointer</link>) I/O.</para> - - <para>Specifically the capture hardware is disabled and no input -buffers are filled (if there are any empty buffers in the incoming -queue) until <constant>VIDIOC_STREAMON</constant> has been called. -Accordingly the output hardware is disabled, no video signal is -produced until <constant>VIDIOC_STREAMON</constant> has been called. -The ioctl will succeed only when at least one output buffer is in the -incoming queue.</para> - - <para>The <constant>VIDIOC_STREAMOFF</constant> ioctl, apart of -aborting or finishing any DMA in progress, unlocks any user pointer -buffers locked in physical memory, and it removes all buffers from the -incoming and outgoing queues. That means all images captured but not -dequeued yet will be lost, likewise all images enqueued for output but -not transmitted yet. I/O returns to the same state as after calling -&VIDIOC-REQBUFS; and can be restarted accordingly.</para> - - <para>Both ioctls take a pointer to an integer, the desired buffer or -stream type. This is the same as &v4l2-requestbuffers; -<structfield>type</structfield>.</para> - - <para>Note applications can be preempted for unknown periods right -before or after the <constant>VIDIOC_STREAMON</constant> or -<constant>VIDIOC_STREAMOFF</constant> calls, there is no notion of -starting or stopping "now". Buffer timestamps can be used to -synchronize with other events.</para> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>Streaming I/O is not supported, the buffer -<structfield>type</structfield> is not supported, or no buffers have -been allocated (memory mapping) or enqueued (output) yet.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EPIPE</errorcode></term> - <listitem> - <para>The driver implements <link - linkend="pad-level-formats">pad-level format configuration</link> and - the pipeline configuration is invalid. - </para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> - -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> diff --git a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-interval.xml b/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-interval.xml deleted file mode 100644 index 2f8f4f0a0235..000000000000 --- a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-interval.xml +++ /dev/null @@ -1,152 +0,0 @@ -<refentry id="vidioc-subdev-enum-frame-interval"> - <refmeta> - <refentrytitle>ioctl VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL</refname> - <refpurpose>Enumerate frame intervals</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_subdev_frame_interval_enum * - <parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <note> - <title>Experimental</title> - <para>This is an <link linkend="experimental">experimental</link> - interface and may change in the future.</para> - </note> - - <para>This ioctl lets applications enumerate available frame intervals on a - given sub-device pad. Frame intervals only makes sense for sub-devices that - can control the frame period on their own. This includes, for instance, - image sensors and TV tuners.</para> - - <para>For the common use case of image sensors, the frame intervals - available on the sub-device output pad depend on the frame format and size - on the same pad. Applications must thus specify the desired format and size - when enumerating frame intervals.</para> - - <para>To enumerate frame intervals applications initialize the - <structfield>index</structfield>, <structfield>pad</structfield>, - <structfield>code</structfield>, <structfield>width</structfield> and - <structfield>height</structfield> fields of - &v4l2-subdev-frame-interval-enum; and call the - <constant>VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL</constant> ioctl with a pointer - to this structure. Drivers fill the rest of the structure or return - an &EINVAL; if one of the input fields is invalid. All frame intervals are - enumerable by beginning at index zero and incrementing by one until - <errorcode>EINVAL</errorcode> is returned.</para> - - <para>Available frame intervals may depend on the current 'try' formats - at other pads of the sub-device, as well as on the current active links. See - &VIDIOC-SUBDEV-G-FMT; for more information about the try formats.</para> - - <para>Sub-devices that support the frame interval enumeration ioctl should - implemented it on a single pad only. Its behaviour when supported on - multiple pads of the same sub-device is not defined.</para> - - <table pgwide="1" frame="none" id="v4l2-subdev-frame-interval-enum"> - <title>struct <structname>v4l2_subdev_frame_interval_enum</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry>Number of the format in the enumeration, set by the - application.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>pad</structfield></entry> - <entry>Pad number as reported by the media controller API.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>code</structfield></entry> - <entry>The media bus format code, as defined in - <xref linkend="v4l2-mbus-format" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>width</structfield></entry> - <entry>Frame width, in pixels.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>height</structfield></entry> - <entry>Frame height, in pixels.</entry> - </row> - <row> - <entry>&v4l2-fract;</entry> - <entry><structfield>interval</structfield></entry> - <entry>Period, in seconds, between consecutive video frames.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[9]</entry> - <entry>Reserved for future extensions. Applications and drivers must - set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-subdev-frame-interval-enum; - <structfield>pad</structfield> references a non-existing pad, one of - the <structfield>code</structfield>, <structfield>width</structfield> - or <structfield>height</structfield> fields are invalid for the given - pad or the <structfield>index</structfield> field is out of bounds. - </para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml b/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml deleted file mode 100644 index 79ce42b7c60c..000000000000 --- a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml +++ /dev/null @@ -1,154 +0,0 @@ -<refentry id="vidioc-subdev-enum-frame-size"> - <refmeta> - <refentrytitle>ioctl VIDIOC_SUBDEV_ENUM_FRAME_SIZE</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</refname> - <refpurpose>Enumerate media bus frame sizes</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_subdev_frame_size_enum * - <parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <note> - <title>Experimental</title> - <para>This is an <link linkend="experimental">experimental</link> - interface and may change in the future.</para> - </note> - - <para>This ioctl allows applications to enumerate all frame sizes - supported by a sub-device on the given pad for the given media bus format. - Supported formats can be retrieved with the &VIDIOC-SUBDEV-ENUM-MBUS-CODE; - ioctl.</para> - - <para>To enumerate frame sizes applications initialize the - <structfield>pad</structfield>, <structfield>code</structfield> and - <structfield>index</structfield> fields of the - &v4l2-subdev-mbus-code-enum; and call the - <constant>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</constant> ioctl with a pointer to - the structure. Drivers fill the minimum and maximum frame sizes or return - an &EINVAL; if one of the input parameters is invalid.</para> - - <para>Sub-devices that only support discrete frame sizes (such as most - sensors) will return one or more frame sizes with identical minimum and - maximum values.</para> - - <para>Not all possible sizes in given [minimum, maximum] ranges need to be - supported. For instance, a scaler that uses a fixed-point scaling ratio - might not be able to produce every frame size between the minimum and - maximum values. Applications must use the &VIDIOC-SUBDEV-S-FMT; ioctl to - try the sub-device for an exact supported frame size.</para> - - <para>Available frame sizes may depend on the current 'try' formats at other - pads of the sub-device, as well as on the current active links and the - current values of V4L2 controls. See &VIDIOC-SUBDEV-G-FMT; for more - information about try formats.</para> - - <table pgwide="1" frame="none" id="v4l2-subdev-frame-size-enum"> - <title>struct <structname>v4l2_subdev_frame_size_enum</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry>Number of the format in the enumeration, set by the - application.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>pad</structfield></entry> - <entry>Pad number as reported by the media controller API.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>code</structfield></entry> - <entry>The media bus format code, as defined in - <xref linkend="v4l2-mbus-format" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>min_width</structfield></entry> - <entry>Minimum frame width, in pixels.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>max_width</structfield></entry> - <entry>Maximum frame width, in pixels.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>min_height</structfield></entry> - <entry>Minimum frame height, in pixels.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>max_height</structfield></entry> - <entry>Maximum frame height, in pixels.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[9]</entry> - <entry>Reserved for future extensions. Applications and drivers must - set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-subdev-frame-size-enum; <structfield>pad</structfield> - references a non-existing pad, the <structfield>code</structfield> is - invalid for the given pad or the <structfield>index</structfield> - field is out of bounds.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml b/Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml deleted file mode 100644 index a6b3432449f6..000000000000 --- a/Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml +++ /dev/null @@ -1,119 +0,0 @@ -<refentry id="vidioc-subdev-enum-mbus-code"> - <refmeta> - <refentrytitle>ioctl VIDIOC_SUBDEV_ENUM_MBUS_CODE</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_SUBDEV_ENUM_MBUS_CODE</refname> - <refpurpose>Enumerate media bus formats</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_subdev_mbus_code_enum * - <parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_SUBDEV_ENUM_MBUS_CODE</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <note> - <title>Experimental</title> - <para>This is an <link linkend="experimental">experimental</link> - interface and may change in the future.</para> - </note> - - <para>To enumerate media bus formats available at a given sub-device pad - applications initialize the <structfield>pad</structfield> and - <structfield>index</structfield> fields of &v4l2-subdev-mbus-code-enum; and - call the <constant>VIDIOC_SUBDEV_ENUM_MBUS_CODE</constant> ioctl with a - pointer to this structure. Drivers fill the rest of the structure or return - an &EINVAL; if either the <structfield>pad</structfield> or - <structfield>index</structfield> are invalid. All media bus formats are - enumerable by beginning at index zero and incrementing by one until - <errorcode>EINVAL</errorcode> is returned.</para> - - <para>Available media bus formats may depend on the current 'try' formats - at other pads of the sub-device, as well as on the current active links. See - &VIDIOC-SUBDEV-G-FMT; for more information about the try formats.</para> - - <table pgwide="1" frame="none" id="v4l2-subdev-mbus-code-enum"> - <title>struct <structname>v4l2_subdev_mbus_code_enum</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>pad</structfield></entry> - <entry>Pad number as reported by the media controller API.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>index</structfield></entry> - <entry>Number of the format in the enumeration, set by the - application.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>code</structfield></entry> - <entry>The media bus format code, as defined in - <xref linkend="v4l2-mbus-format" />.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[9]</entry> - <entry>Reserved for future extensions. Applications and drivers must - set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-subdev-mbus-code-enum; <structfield>pad</structfield> - references a non-existing pad, or the <structfield>index</structfield> - field is out of bounds.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/vidioc-subdev-g-crop.xml b/Documentation/DocBook/v4l/vidioc-subdev-g-crop.xml deleted file mode 100644 index 06197323a8cc..000000000000 --- a/Documentation/DocBook/v4l/vidioc-subdev-g-crop.xml +++ /dev/null @@ -1,155 +0,0 @@ -<refentry id="vidioc-subdev-g-crop"> - <refmeta> - <refentrytitle>ioctl VIDIOC_SUBDEV_G_CROP, VIDIOC_SUBDEV_S_CROP</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_SUBDEV_G_CROP</refname> - <refname>VIDIOC_SUBDEV_S_CROP</refname> - <refpurpose>Get or set the crop rectangle on a subdev pad</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_subdev_crop *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>const struct v4l2_subdev_crop *<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_SUBDEV_G_CROP, VIDIOC_SUBDEV_S_CROP</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <note> - <title>Experimental</title> - <para>This is an <link linkend="experimental">experimental</link> - interface and may change in the future.</para> - </note> - - <para>To retrieve the current crop rectangle applications set the - <structfield>pad</structfield> field of a &v4l2-subdev-crop; to the - desired pad number as reported by the media API and the - <structfield>which</structfield> field to - <constant>V4L2_SUBDEV_FORMAT_ACTIVE</constant>. They then call the - <constant>VIDIOC_SUBDEV_G_CROP</constant> ioctl with a pointer to this - structure. The driver fills the members of the <structfield>rect</structfield> - field or returns &EINVAL; if the input arguments are invalid, or if cropping - is not supported on the given pad.</para> - - <para>To change the current crop rectangle applications set both the - <structfield>pad</structfield> and <structfield>which</structfield> fields - and all members of the <structfield>rect</structfield> field. They then call - the <constant>VIDIOC_SUBDEV_S_CROP</constant> ioctl with a pointer to this - structure. The driver verifies the requested crop rectangle, adjusts it - based on the hardware capabilities and configures the device. Upon return - the &v4l2-subdev-crop; contains the current format as would be returned - by a <constant>VIDIOC_SUBDEV_G_CROP</constant> call.</para> - - <para>Applications can query the device capabilities by setting the - <structfield>which</structfield> to - <constant>V4L2_SUBDEV_FORMAT_TRY</constant>. When set, 'try' crop - rectangles are not applied to the device by the driver, but are mangled - exactly as active crop rectangles and stored in the sub-device file handle. - Two applications querying the same sub-device would thus not interact with - each other.</para> - - <para>Drivers must not return an error solely because the requested crop - rectangle doesn't match the device capabilities. They must instead modify - the rectangle to match what the hardware can provide. The modified format - should be as close as possible to the original request.</para> - - <table pgwide="1" frame="none" id="v4l2-subdev-crop"> - <title>struct <structname>v4l2_subdev_crop</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>pad</structfield></entry> - <entry>Pad number as reported by the media framework.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>which</structfield></entry> - <entry>Crop rectangle to get or set, from - &v4l2-subdev-format-whence;.</entry> - </row> - <row> - <entry>&v4l2-rect;</entry> - <entry><structfield>rect</structfield></entry> - <entry>Crop rectangle boundaries, in pixels.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[8]</entry> - <entry>Reserved for future extensions. Applications and drivers must - set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The crop rectangle can't be changed because the pad is currently - busy. This can be caused, for instance, by an active video stream on - the pad. The ioctl must not be retried without performing another - action to fix the problem first. Only returned by - <constant>VIDIOC_SUBDEV_S_CROP</constant></para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-subdev-crop; <structfield>pad</structfield> - references a non-existing pad, the <structfield>which</structfield> - field references a non-existing format, or cropping is not supported - on the given subdev pad.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml b/Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml deleted file mode 100644 index f367c570c530..000000000000 --- a/Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml +++ /dev/null @@ -1,180 +0,0 @@ -<refentry id="vidioc-subdev-g-fmt"> - <refmeta> - <refentrytitle>ioctl VIDIOC_SUBDEV_G_FMT, VIDIOC_SUBDEV_S_FMT</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_SUBDEV_G_FMT</refname> - <refname>VIDIOC_SUBDEV_S_FMT</refname> - <refpurpose>Get or set the data format on a subdev pad</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_subdev_format *<parameter>argp</parameter> - </paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_SUBDEV_G_FMT, VIDIOC_SUBDEV_S_FMT</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <note> - <title>Experimental</title> - <para>This is an <link linkend="experimental">experimental</link> - interface and may change in the future.</para> - </note> - - <para>These ioctls are used to negotiate the frame format at specific - subdev pads in the image pipeline.</para> - - <para>To retrieve the current format applications set the - <structfield>pad</structfield> field of a &v4l2-subdev-format; to the - desired pad number as reported by the media API and the - <structfield>which</structfield> field to - <constant>V4L2_SUBDEV_FORMAT_ACTIVE</constant>. When they call the - <constant>VIDIOC_SUBDEV_G_FMT</constant> ioctl with a pointer to this - structure the driver fills the members of the <structfield>format</structfield> - field.</para> - - <para>To change the current format applications set both the - <structfield>pad</structfield> and <structfield>which</structfield> fields - and all members of the <structfield>format</structfield> field. When they - call the <constant>VIDIOC_SUBDEV_S_FMT</constant> ioctl with a pointer to this - structure the driver verifies the requested format, adjusts it based on the - hardware capabilities and configures the device. Upon return the - &v4l2-subdev-format; contains the current format as would be returned by a - <constant>VIDIOC_SUBDEV_G_FMT</constant> call.</para> - - <para>Applications can query the device capabilities by setting the - <structfield>which</structfield> to - <constant>V4L2_SUBDEV_FORMAT_TRY</constant>. When set, 'try' formats are not - applied to the device by the driver, but are changed exactly as active - formats and stored in the sub-device file handle. Two applications querying - the same sub-device would thus not interact with each other.</para> - - <para>For instance, to try a format at the output pad of a sub-device, - applications would first set the try format at the sub-device input with the - <constant>VIDIOC_SUBDEV_S_FMT</constant> ioctl. They would then either - retrieve the default format at the output pad with the - <constant>VIDIOC_SUBDEV_G_FMT</constant> ioctl, or set the desired output - pad format with the <constant>VIDIOC_SUBDEV_S_FMT</constant> ioctl and check - the returned value.</para> - - <para>Try formats do not depend on active formats, but can depend on the - current links configuration or sub-device controls value. For instance, a - low-pass noise filter might crop pixels at the frame boundaries, modifying - its output frame size.</para> - - <para>Drivers must not return an error solely because the requested format - doesn't match the device capabilities. They must instead modify the format - to match what the hardware can provide. The modified format should be as - close as possible to the original request.</para> - - <table pgwide="1" frame="none" id="v4l2-subdev-format"> - <title>struct <structname>v4l2_subdev_format</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>pad</structfield></entry> - <entry>Pad number as reported by the media controller API.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>which</structfield></entry> - <entry>Format to modified, from &v4l2-subdev-format-whence;.</entry> - </row> - <row> - <entry>&v4l2-mbus-framefmt;</entry> - <entry><structfield>format</structfield></entry> - <entry>Definition of an image format, see <xref - linkend="v4l2-mbus-framefmt" /> for details.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[8]</entry> - <entry>Reserved for future extensions. Applications and drivers must - set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table pgwide="1" frame="none" id="v4l2-subdev-format-whence"> - <title>enum <structname>v4l2_subdev_format_whence</structname></title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry>V4L2_SUBDEV_FORMAT_TRY</entry> - <entry>0</entry> - <entry>Try formats, used for querying device capabilities.</entry> - </row> - <row> - <entry>V4L2_SUBDEV_FORMAT_ACTIVE</entry> - <entry>1</entry> - <entry>Active formats, applied to the hardware.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The format can't be changed because the pad is currently busy. - This can be caused, for instance, by an active video stream on the - pad. The ioctl must not be retried without performing another action - to fix the problem first. Only returned by - <constant>VIDIOC_SUBDEV_S_FMT</constant></para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-subdev-format; <structfield>pad</structfield> - references a non-existing pad, or the <structfield>which</structfield> - field references a non-existing format.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/vidioc-subdev-g-frame-interval.xml b/Documentation/DocBook/v4l/vidioc-subdev-g-frame-interval.xml deleted file mode 100644 index 0bc3ea22d31f..000000000000 --- a/Documentation/DocBook/v4l/vidioc-subdev-g-frame-interval.xml +++ /dev/null @@ -1,141 +0,0 @@ -<refentry id="vidioc-subdev-g-frame-interval"> - <refmeta> - <refentrytitle>ioctl VIDIOC_SUBDEV_G_FRAME_INTERVAL, VIDIOC_SUBDEV_S_FRAME_INTERVAL</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_SUBDEV_G_FRAME_INTERVAL</refname> - <refname>VIDIOC_SUBDEV_S_FRAME_INTERVAL</refname> - <refpurpose>Get or set the frame interval on a subdev pad</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_subdev_frame_interval *<parameter>argp</parameter> - </paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_SUBDEV_G_FRAME_INTERVAL, VIDIOC_SUBDEV_S_FRAME_INTERVAL</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <note> - <title>Experimental</title> - <para>This is an <link linkend="experimental">experimental</link> - interface and may change in the future.</para> - </note> - - <para>These ioctls are used to get and set the frame interval at specific - subdev pads in the image pipeline. The frame interval only makes sense for - sub-devices that can control the frame period on their own. This includes, - for instance, image sensors and TV tuners. Sub-devices that don't support - frame intervals must not implement these ioctls.</para> - - <para>To retrieve the current frame interval applications set the - <structfield>pad</structfield> field of a &v4l2-subdev-frame-interval; to - the desired pad number as reported by the media controller API. When they - call the <constant>VIDIOC_SUBDEV_G_FRAME_INTERVAL</constant> ioctl with a - pointer to this structure the driver fills the members of the - <structfield>interval</structfield> field.</para> - - <para>To change the current frame interval applications set both the - <structfield>pad</structfield> field and all members of the - <structfield>interval</structfield> field. When they call the - <constant>VIDIOC_SUBDEV_S_FRAME_INTERVAL</constant> ioctl with a pointer to - this structure the driver verifies the requested interval, adjusts it based - on the hardware capabilities and configures the device. Upon return the - &v4l2-subdev-frame-interval; contains the current frame interval as would be - returned by a <constant>VIDIOC_SUBDEV_G_FRAME_INTERVAL</constant> call. - </para> - - <para>Drivers must not return an error solely because the requested interval - doesn't match the device capabilities. They must instead modify the interval - to match what the hardware can provide. The modified interval should be as - close as possible to the original request.</para> - - <para>Sub-devices that support the frame interval ioctls should implement - them on a single pad only. Their behaviour when supported on multiple pads - of the same sub-device is not defined.</para> - - <table pgwide="1" frame="none" id="v4l2-subdev-frame-interval"> - <title>struct <structname>v4l2_subdev_frame_interval</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>pad</structfield></entry> - <entry>Pad number as reported by the media controller API.</entry> - </row> - <row> - <entry>&v4l2-fract;</entry> - <entry><structfield>interval</structfield></entry> - <entry>Period, in seconds, between consecutive video frames.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[9]</entry> - <entry>Reserved for future extensions. Applications and drivers must - set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - </refsect1> - - <refsect1> - &return-value; - - <variablelist> - <varlistentry> - <term><errorcode>EBUSY</errorcode></term> - <listitem> - <para>The frame interval can't be changed because the pad is currently - busy. This can be caused, for instance, by an active video stream on - the pad. The ioctl must not be retried without performing another - action to fix the problem first. Only returned by - <constant>VIDIOC_SUBDEV_S_FRAME_INTERVAL</constant></para> - </listitem> - </varlistentry> - <varlistentry> - <term><errorcode>EINVAL</errorcode></term> - <listitem> - <para>The &v4l2-subdev-frame-interval; <structfield>pad</structfield> - references a non-existing pad, or the pad doesn't support frame - intervals.</para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> -</refentry> diff --git a/Documentation/DocBook/v4l/vidioc-subscribe-event.xml b/Documentation/DocBook/v4l/vidioc-subscribe-event.xml deleted file mode 100644 index 8b501791aa68..000000000000 --- a/Documentation/DocBook/v4l/vidioc-subscribe-event.xml +++ /dev/null @@ -1,133 +0,0 @@ -<refentry id="vidioc-subscribe-event"> - <refmeta> - <refentrytitle>ioctl VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</refentrytitle> - &manvol; - </refmeta> - - <refnamediv> - <refname>VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</refname> - <refpurpose>Subscribe or unsubscribe event</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcprototype> - <funcdef>int <function>ioctl</function></funcdef> - <paramdef>int <parameter>fd</parameter></paramdef> - <paramdef>int <parameter>request</parameter></paramdef> - <paramdef>struct v4l2_event_subscription -*<parameter>argp</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Arguments</title> - - <variablelist> - <varlistentry> - <term><parameter>fd</parameter></term> - <listitem> - <para>&fd;</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>request</parameter></term> - <listitem> - <para>VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>argp</parameter></term> - <listitem> - <para></para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1> - <title>Description</title> - - <para>Subscribe or unsubscribe V4L2 event. Subscribed events are - dequeued by using the &VIDIOC-DQEVENT; ioctl.</para> - - <table frame="none" pgwide="1" id="v4l2-event-subscription"> - <title>struct <structname>v4l2_event_subscription</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u32</entry> - <entry><structfield>type</structfield></entry> - <entry>Type of the event.</entry> - </row> - <row> - <entry>__u32</entry> - <entry><structfield>reserved</structfield>[7]</entry> - <entry>Reserved for future extensions. Drivers and applications - must set the array to zero.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="event-type"> - <title>Event Types</title> - <tgroup cols="3"> - &cs-def; - <tbody valign="top"> - <row> - <entry><constant>V4L2_EVENT_ALL</constant></entry> - <entry>0</entry> - <entry>All events. V4L2_EVENT_ALL is valid only for - VIDIOC_UNSUBSCRIBE_EVENT for unsubscribing all events at once. - </entry> - </row> - <row> - <entry><constant>V4L2_EVENT_VSYNC</constant></entry> - <entry>1</entry> - <entry>This event is triggered on the vertical sync. - This event has &v4l2-event-vsync; associated with it. - </entry> - </row> - <row> - <entry><constant>V4L2_EVENT_EOS</constant></entry> - <entry>2</entry> - <entry>This event is triggered when the end of a stream is reached. - This is typically used with MPEG decoders to report to the application - when the last of the MPEG stream has been decoded. - </entry> - </row> - <row> - <entry><constant>V4L2_EVENT_PRIVATE_START</constant></entry> - <entry>0x08000000</entry> - <entry>Base event number for driver-private events.</entry> - </row> - </tbody> - </tgroup> - </table> - - <table frame="none" pgwide="1" id="v4l2-event-vsync"> - <title>struct <structname>v4l2_event_vsync</structname></title> - <tgroup cols="3"> - &cs-str; - <tbody valign="top"> - <row> - <entry>__u8</entry> - <entry><structfield>field</structfield></entry> - <entry>The upcoming field. See &v4l2-field;.</entry> - </row> - </tbody> - </tgroup> - </table> - - </refsect1> -</refentry> -<!-- -Local Variables: -mode: sgml -sgml-parent-document: "v4l2.sgml" -indent-tabs-mode: nil -End: ---> |