mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
media: uapi: Add controls for NPCM video driver
Create controls for Nuvoton NPCM video driver to support setting capture mode of Video Capture/Differentiation (VCD) engine and getting the count of HEXTILE rectangles that is compressed by Encoding Compression Engine (ECE). Signed-off-by: Marvin Lin <milkfafa@gmail.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
2817154cd1
commit
1568583b39
@ -37,6 +37,7 @@ For more details see the file COPYING in the source distribution of Linux.
|
||||
dw100
|
||||
imx-uapi
|
||||
max2175
|
||||
npcm-video
|
||||
omap3isp-uapi
|
||||
st-vgxy61
|
||||
uvcvideo
|
||||
|
66
Documentation/userspace-api/media/drivers/npcm-video.rst
Normal file
66
Documentation/userspace-api/media/drivers/npcm-video.rst
Normal file
@ -0,0 +1,66 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
.. include:: <isonum.txt>
|
||||
|
||||
NPCM video driver
|
||||
=================
|
||||
|
||||
This driver is used to control the Video Capture/Differentiation (VCD) engine
|
||||
and Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs. The VCD can
|
||||
capture a frame from digital video input and compare two frames in memory, and
|
||||
the ECE can compress the frame data into HEXTILE format.
|
||||
|
||||
Driver-specific Controls
|
||||
------------------------
|
||||
|
||||
V4L2_CID_NPCM_CAPTURE_MODE
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The VCD engine supports two modes:
|
||||
|
||||
- COMPLETE mode:
|
||||
|
||||
Capture the next complete frame into memory.
|
||||
|
||||
- DIFF mode:
|
||||
|
||||
Compare the incoming frame with the frame stored in memory, and updates the
|
||||
differentiated frame in memory.
|
||||
|
||||
Application can use ``V4L2_CID_NPCM_CAPTURE_MODE`` control to set the VCD mode
|
||||
with different control values (enum v4l2_npcm_capture_mode):
|
||||
|
||||
- ``V4L2_NPCM_CAPTURE_MODE_COMPLETE``: will set VCD to COMPLETE mode.
|
||||
- ``V4L2_NPCM_CAPTURE_MODE_DIFF``: will set VCD to DIFF mode.
|
||||
|
||||
V4L2_CID_NPCM_RECT_COUNT
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If using V4L2_PIX_FMT_HEXTILE format, VCD will capture frame data and then ECE
|
||||
will compress the data into HEXTILE rectangles and store them in V4L2 video
|
||||
buffer with the layout defined in Remote Framebuffer Protocol:
|
||||
::
|
||||
|
||||
(RFC 6143, https://www.rfc-editor.org/rfc/rfc6143.html#section-7.6.1)
|
||||
|
||||
+--------------+--------------+-------------------+
|
||||
| No. of bytes | Type [Value] | Description |
|
||||
+--------------+--------------+-------------------+
|
||||
| 2 | U16 | x-position |
|
||||
| 2 | U16 | y-position |
|
||||
| 2 | U16 | width |
|
||||
| 2 | U16 | height |
|
||||
| 4 | S32 | encoding-type (5) |
|
||||
+--------------+--------------+-------------------+
|
||||
| HEXTILE rectangle data |
|
||||
+-------------------------------------------------+
|
||||
|
||||
Application can get the video buffer through VIDIOC_DQBUF, and followed by
|
||||
calling ``V4L2_CID_NPCM_RECT_COUNT`` control to get the number of HEXTILE
|
||||
rectangles in this buffer.
|
||||
|
||||
References
|
||||
----------
|
||||
include/uapi/linux/npcm-video.h
|
||||
|
||||
**Copyright** |copy| 2022 Nuvoton Technologies
|
41
include/uapi/linux/npcm-video.h
Normal file
41
include/uapi/linux/npcm-video.h
Normal file
@ -0,0 +1,41 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Controls header for NPCM video driver
|
||||
*
|
||||
* Copyright (C) 2022 Nuvoton Technologies
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_NPCM_VIDEO_H
|
||||
#define _UAPI_LINUX_NPCM_VIDEO_H
|
||||
|
||||
#include <linux/v4l2-controls.h>
|
||||
|
||||
/*
|
||||
* Check Documentation/userspace-api/media/drivers/npcm-video.rst for control
|
||||
* details.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This control is meant to set the mode of NPCM Video Capture/Differentiation
|
||||
* (VCD) engine.
|
||||
*
|
||||
* The VCD engine supports two modes:
|
||||
* COMPLETE - Capture the next complete frame into memory.
|
||||
* DIFF - Compare the incoming frame with the frame stored in memory, and
|
||||
* updates the differentiated frame in memory.
|
||||
*/
|
||||
#define V4L2_CID_NPCM_CAPTURE_MODE (V4L2_CID_USER_NPCM_BASE + 0)
|
||||
|
||||
enum v4l2_npcm_capture_mode {
|
||||
V4L2_NPCM_CAPTURE_MODE_COMPLETE = 0, /* COMPLETE mode */
|
||||
V4L2_NPCM_CAPTURE_MODE_DIFF = 1, /* DIFF mode */
|
||||
};
|
||||
|
||||
/*
|
||||
* This control is meant to get the count of compressed HEXTILE rectangles which
|
||||
* is relevant to the number of differentiated frames if VCD is in DIFF mode.
|
||||
* And the count will always be 1 if VCD is in COMPLETE mode.
|
||||
*/
|
||||
#define V4L2_CID_NPCM_RECT_COUNT (V4L2_CID_USER_NPCM_BASE + 1)
|
||||
|
||||
#endif /* _UAPI_LINUX_NPCM_VIDEO_H */
|
Loading…
Reference in New Issue
Block a user