Lines Matching +full:video +full:- +full:interface
1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
4 .. _diff-v4l:
10 The Video For Linux API was first introduced in Linux 2.1 to unify and
21 for V4L2 video capture, overlay, radio and raw vbi capture devices did
23 and below in :ref:`v4l-dev`.
25 The teletext devices (minor range 192-223) have been removed in V4L2 and
35 .. _v4l-dev:
37 .. flat-table:: V4L Device Types, Names and Numbers
38 :header-rows: 1
39 :stub-columns: 0
41 * - Device Type
42 - File Name
43 - Minor Numbers
44 * - Video capture and overlay
45 - ``/dev/video`` and ``/dev/bttv0``\ [#f1]_, ``/dev/video0`` to
47 - 0-63
48 * - Radio receiver
49 - ``/dev/radio``\ [#f2]_, ``/dev/radio0`` to ``/dev/radio63``
50 - 64-127
51 * - Raw VBI capture
52 - ``/dev/vbi``, ``/dev/vbi0`` to ``/dev/vbi31``
53 - 224-255
70 device types like this, better think of basic video input, video output
71 and radio devices supporting a set of related functions like video
72 capturing, video overlay and VBI capturing. See :ref:`open` for an
79 .. flat-table::
80 :header-rows: 1
81 :stub-columns: 0
83 * - ``struct video_capability`` ``type``
84 - struct :c:type:`v4l2_capability`
86 - Purpose
87 * - ``VID_TYPE_CAPTURE``
88 - ``V4L2_CAP_VIDEO_CAPTURE``
89 - The :ref:`video capture <capture>` interface is supported.
90 * - ``VID_TYPE_TUNER``
91 - ``V4L2_CAP_TUNER``
92 - The device has a :ref:`tuner or modulator <tuner>`.
93 * - ``VID_TYPE_TELETEXT``
94 - ``V4L2_CAP_VBI_CAPTURE``
95 - The :ref:`raw VBI capture <raw-vbi>` interface is supported.
96 * - ``VID_TYPE_OVERLAY``
97 - ``V4L2_CAP_VIDEO_OVERLAY``
98 - The :ref:`video overlay <overlay>` interface is supported.
99 * - ``VID_TYPE_CHROMAKEY``
100 - ``V4L2_FBUF_CAP_CHROMAKEY`` in field ``capability`` of struct
102 - Whether chromakey overlay is supported. For more information on
104 * - ``VID_TYPE_CLIPPING``
105 - ``V4L2_FBUF_CAP_LIST_CLIPPING`` and
108 - Whether clipping the overlaid image is supported, see
110 * - ``VID_TYPE_FRAMERAM``
111 - ``V4L2_FBUF_CAP_EXTERNOVERLAY`` *not set* in field ``capability``
113 - Whether overlay overwrites frame buffer memory, see
115 * - ``VID_TYPE_SCALES``
116 - ``-``
117 - This flag indicates if the hardware can scale images. The V4L2 API
123 * - ``VID_TYPE_MONOCHROME``
124 - ``-``
125 - Applications can enumerate the supported image formats with the
129 * - ``VID_TYPE_SUBCAPTURE``
130 - ``-``
131 - Applications can call the :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>`
136 * - ``VID_TYPE_MPEG_DECODER``
137 - ``-``
138 - Applications can enumerate the supported image formats with the
141 * - ``VID_TYPE_MPEG_ENCODER``
142 - ``-``
143 - See above.
144 * - ``VID_TYPE_MJPEG_DECODER``
145 - ``-``
146 - See above.
147 * - ``VID_TYPE_MJPEG_ENCODER``
148 - ``-``
149 - See above.
161 current video standard, cropping and scaling limitations.
163 Video Sources
167 ``video_channel`` to enumerate the video inputs of a V4L
172 :c:type:`v4l2_input` as discussed in :ref:`video`.
175 video input types were renamed as follows:
178 .. flat-table::
179 :header-rows: 1
180 :stub-columns: 0
182 * - struct ``video_channel`` ``type``
183 - struct :c:type:`v4l2_input` ``type``
184 * - ``VIDEO_TYPE_TV``
185 - ``V4L2_INPUT_TYPE_TUNER``
186 * - ``VIDEO_TYPE_CAMERA``
187 - ``V4L2_INPUT_TYPE_CAMERA``
190 input, V4L2 assumes each video input is connected to at most one tuner.
197 The redundant ``VIDEO_VC_TUNER`` flag was dropped. Video inputs
201 ``audioset`` field represents one audio input this video input combines
205 The ``norm`` field describing the supported video standards was replaced
210 video standards, see :ref:`standard` for more information.
226 flags indicating the supported video standards were dropped. This
229 ``VIDEO_TUNER_NORM`` flag indicating whether the video standard can be
230 switched. The ``mode`` field to select a different video standard was
236 Japan with numbers 3-6 (sic).
255 .. _v4l-image-properties:
268 .. flat-table::
269 :header-rows: 1
270 :stub-columns: 0
272 * - struct ``video_picture``
273 - V4L2 Control ID
274 * - ``brightness``
275 - ``V4L2_CID_BRIGHTNESS``
276 * - ``hue``
277 - ``V4L2_CID_HUE``
278 * - ``colour``
279 - ``V4L2_CID_SATURATION``
280 * - ``contrast``
281 - ``V4L2_CID_CONTRAST``
282 * - ``whiteness``
283 - ``V4L2_CID_WHITENESS``
291 The ``depth`` (average number of bits per pixel) of a video image is
298 .. flat-table::
299 :header-rows: 1
300 :stub-columns: 0
302 * - struct ``video_picture`` ``palette``
303 - struct :c:type:`v4l2_pix_format` ``pixfmt``
304 * - ``VIDEO_PALETTE_GREY``
305 - :ref:`V4L2_PIX_FMT_GREY <V4L2-PIX-FMT-GREY>`
306 * - ``VIDEO_PALETTE_HI240``
307 - :ref:`V4L2_PIX_FMT_HI240 <pixfmt-reserved>` [#f3]_
308 * - ``VIDEO_PALETTE_RGB565``
309 - :ref:`V4L2_PIX_FMT_RGB565 <pixfmt-rgb>`
310 * - ``VIDEO_PALETTE_RGB555``
311 - :ref:`V4L2_PIX_FMT_RGB555 <pixfmt-rgb>`
312 * - ``VIDEO_PALETTE_RGB24``
313 - :ref:`V4L2_PIX_FMT_BGR24 <pixfmt-rgb>`
314 * - ``VIDEO_PALETTE_RGB32``
315 - :ref:`V4L2_PIX_FMT_BGR32 <pixfmt-rgb>` [#f4]_
316 * - ``VIDEO_PALETTE_YUV422``
317 - :ref:`V4L2_PIX_FMT_YUYV <V4L2-PIX-FMT-YUYV>`
318 * - ``VIDEO_PALETTE_YUYV``\ [#f5]_
319 - :ref:`V4L2_PIX_FMT_YUYV <V4L2-PIX-FMT-YUYV>`
320 * - ``VIDEO_PALETTE_UYVY``
321 - :ref:`V4L2_PIX_FMT_UYVY <V4L2-PIX-FMT-UYVY>`
322 * - ``VIDEO_PALETTE_YUV420``
323 - None
324 * - ``VIDEO_PALETTE_YUV411``
325 - :ref:`V4L2_PIX_FMT_Y41P <V4L2-PIX-FMT-Y41P>` [#f6]_
326 * - ``VIDEO_PALETTE_RAW``
327 - None [#f7]_
328 * - ``VIDEO_PALETTE_YUV422P``
329 - :ref:`V4L2_PIX_FMT_YUV422P <V4L2-PIX-FMT-YUV422P>`
330 * - ``VIDEO_PALETTE_YUV411P``
331 - :ref:`V4L2_PIX_FMT_YUV411P <V4L2-PIX-FMT-YUV411P>` [#f8]_
332 * - ``VIDEO_PALETTE_YUV420P``
333 - :ref:`V4L2_PIX_FMT_YVU420 <V4L2-PIX-FMT-YVU420>`
334 * - ``VIDEO_PALETTE_YUV410P``
335 - :ref:`V4L2_PIX_FMT_YVU410 <V4L2-PIX-FMT-YVU410>`
373 .. flat-table::
374 :header-rows: 1
375 :stub-columns: 0
377 * - struct ``video_audio``
378 - V4L2 Control ID
379 * - ``volume``
380 - ``V4L2_CID_AUDIO_VOLUME``
381 * - ``bass``
382 - ``V4L2_CID_AUDIO_BASS``
383 * - ``treble``
384 - ``V4L2_CID_AUDIO_TREBLE``
385 * - ``balance``
386 - ``V4L2_CID_AUDIO_BALANCE``
410 a flag to indicate non-destructive overlays instead of a ``NULL``
414 field was replaced by ``pixelformat``. See :ref:`pixfmt-rgb` for a
418 uses the general-purpose data format negotiation ioctls
441 to ``VIDEO_CLIP_BITMAP`` (-1) requests bitmap clipping, using a fixed
479 -------------------------------
491 ``VIDIOCSWIN`` ioctls. V4L2 uses the general-purpose data format
498 For more information about the V4L2 read interface see :ref:`rw`.
501 ------------------------------
504 memory, or more often just buffers allocated in DMA-able system memory,
510 .. flat-table::
511 :header-rows: 1
512 :stub-columns: 0
514 * - V4L
515 - V4L2
516 * -
517 - The image format must be selected before buffers are allocated,
521 * - Applications cannot change the number of buffers. The it is built
524 - The :ref:`VIDIOC_REQBUFS` ioctl allocates the
527 * - Drivers map all buffers as one contiguous range of memory. The
532 - Buffers are individually mapped. The offset and size of each
535 * - The ``VIDIOCMCAPTURE`` ioctl prepares a buffer for capturing. It
538 video signal had been detected. When the driver supports more than
544 - Drivers maintain an incoming and outgoing queue.
558 For a more in-depth discussion of memory mapping and examples, see
564 Originally the V4L API did not specify a raw VBI capture interface, only
566 driver supporting this interface was the BTTV driver, de-facto defining
567 the V4L VBI interface. Reading from the device yields a raw VBI image
571 .. flat-table::
572 :header-rows: 1
573 :stub-columns: 0
575 * - struct :c:type:`v4l2_vbi_format`
576 - V4L, BTTV driver
577 * - sampling_rate
578 - 28636363 Hz NTSC (or any other 525-line standard); 35468950 Hz PAL
579 and SECAM (625-line standards)
580 * - offset
581 - ?
582 * - samples_per_line
583 - 2048
584 * - sample_format
585 - V4L2_PIX_FMT_GREY. The last four bytes (a machine endianness
587 * - start[]
588 - 10, 273 NTSC; 22, 335 PAL and SECAM
589 * - count[]
590 - 16, 16 [#f9]_
591 * - flags
592 - 0
598 interface specified in :ref:`raw-vbi`.
615 find the VBI device associated with a video capture device (or vice
620 microcode programming. A new interface for MPEG compression and playback
621 devices is documented in :ref:`extended-controls`.
624 According to Documentation/admin-guide/devices.rst these should be symbolic links
625 to ``/dev/video0``. Note the original bttv interface is not
629 According to ``Documentation/admin-guide/devices.rst`` a symbolic link to
637 Presumably all V4L RGB formats are little-endian, although some
639 defines little-endian, big-endian and red/blue swapped variants. For
640 details see :ref:`pixfmt-rgb`.