xref: /linux/Documentation/userspace-api/media/drivers/npcm-video.rst (revision 0ea5c948cb64bab5bc7a5516774eb8536f05aa0d)
1.. SPDX-License-Identifier: GPL-2.0
2
3.. include:: <isonum.txt>
4
5NPCM video driver
6=================
7
8This driver is used to control the Video Capture/Differentiation (VCD) engine
9and Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs. The VCD can
10capture a frame from digital video input and compare two frames in memory, and
11the ECE can compress the frame data into HEXTILE format.
12
13Driver-specific Controls
14------------------------
15
16V4L2_CID_NPCM_CAPTURE_MODE
17~~~~~~~~~~~~~~~~~~~~~~~~~~
18
19The VCD engine supports two modes:
20
21- COMPLETE mode:
22
23  Capture the next complete frame into memory.
24
25- DIFF mode:
26
27  Compare the incoming frame with the frame stored in memory, and updates the
28  differentiated frame in memory.
29
30Application can use ``V4L2_CID_NPCM_CAPTURE_MODE`` control to set the VCD mode
31with different control values (enum v4l2_npcm_capture_mode):
32
33- ``V4L2_NPCM_CAPTURE_MODE_COMPLETE``: will set VCD to COMPLETE mode.
34- ``V4L2_NPCM_CAPTURE_MODE_DIFF``: will set VCD to DIFF mode.
35
36V4L2_CID_NPCM_RECT_COUNT
37~~~~~~~~~~~~~~~~~~~~~~~~
38
39If using V4L2_PIX_FMT_HEXTILE format, VCD will capture frame data and then ECE
40will compress the data into HEXTILE rectangles and store them in V4L2 video
41buffer with the layout defined in Remote Framebuffer Protocol:
42::
43
44           (RFC 6143, https://www.rfc-editor.org/rfc/rfc6143.html#section-7.6.1)
45
46           +--------------+--------------+-------------------+
47           | No. of bytes | Type [Value] | Description       |
48           +--------------+--------------+-------------------+
49           | 2            | U16          | x-position        |
50           | 2            | U16          | y-position        |
51           | 2            | U16          | width             |
52           | 2            | U16          | height            |
53           | 4            | S32          | encoding-type (5) |
54           +--------------+--------------+-------------------+
55           |             HEXTILE rectangle data              |
56           +-------------------------------------------------+
57
58Application can get the video buffer through VIDIOC_DQBUF, and followed by
59calling ``V4L2_CID_NPCM_RECT_COUNT`` control to get the number of HEXTILE
60rectangles in this buffer.
61
62References
63----------
64include/uapi/linux/npcm-video.h
65
66**Copyright** |copy| 2022 Nuvoton Technologies
67