mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-29 13:11:06 +00:00
v4l2: Sync headers to current media_stage
commit d78b9d6671decdaedb539635b1d0a34f8f5934f8 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3447>
This commit is contained in:
parent
ba6800ce23
commit
aea74db1a2
7 changed files with 2099 additions and 189 deletions
|
@ -140,8 +140,8 @@ struct media_device_info {
|
||||||
#define MEDIA_ENT_F_DV_ENCODER (MEDIA_ENT_F_BASE + 0x6002)
|
#define MEDIA_ENT_F_DV_ENCODER (MEDIA_ENT_F_BASE + 0x6002)
|
||||||
|
|
||||||
/* Entity flags */
|
/* Entity flags */
|
||||||
#define MEDIA_ENT_FL_DEFAULT (1 << 0)
|
#define MEDIA_ENT_FL_DEFAULT (1U << 0)
|
||||||
#define MEDIA_ENT_FL_CONNECTOR (1 << 1)
|
#define MEDIA_ENT_FL_CONNECTOR (1U << 1)
|
||||||
|
|
||||||
/* OR with the entity id value to find the next entity */
|
/* OR with the entity id value to find the next entity */
|
||||||
#define MEDIA_ENT_ID_FLAG_NEXT (1U << 31)
|
#define MEDIA_ENT_ID_FLAG_NEXT (1U << 31)
|
||||||
|
@ -203,9 +203,9 @@ struct media_entity_desc {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MEDIA_PAD_FL_SINK (1 << 0)
|
#define MEDIA_PAD_FL_SINK (1U << 0)
|
||||||
#define MEDIA_PAD_FL_SOURCE (1 << 1)
|
#define MEDIA_PAD_FL_SOURCE (1U << 1)
|
||||||
#define MEDIA_PAD_FL_MUST_CONNECT (1 << 2)
|
#define MEDIA_PAD_FL_MUST_CONNECT (1U << 2)
|
||||||
|
|
||||||
struct media_pad_desc {
|
struct media_pad_desc {
|
||||||
__u32 entity; /* entity ID */
|
__u32 entity; /* entity ID */
|
||||||
|
@ -214,13 +214,14 @@ struct media_pad_desc {
|
||||||
__u32 reserved[2];
|
__u32 reserved[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MEDIA_LNK_FL_ENABLED (1 << 0)
|
#define MEDIA_LNK_FL_ENABLED (1U << 0)
|
||||||
#define MEDIA_LNK_FL_IMMUTABLE (1 << 1)
|
#define MEDIA_LNK_FL_IMMUTABLE (1U << 1)
|
||||||
#define MEDIA_LNK_FL_DYNAMIC (1 << 2)
|
#define MEDIA_LNK_FL_DYNAMIC (1U << 2)
|
||||||
|
|
||||||
#define MEDIA_LNK_FL_LINK_TYPE (0xf << 28)
|
#define MEDIA_LNK_FL_LINK_TYPE (0xf << 28)
|
||||||
# define MEDIA_LNK_FL_DATA_LINK (0 << 28)
|
# define MEDIA_LNK_FL_DATA_LINK (0U << 28)
|
||||||
# define MEDIA_LNK_FL_INTERFACE_LINK (1 << 28)
|
# define MEDIA_LNK_FL_INTERFACE_LINK (1U << 28)
|
||||||
|
# define MEDIA_LNK_FL_ANCILLARY_LINK (2U << 28)
|
||||||
|
|
||||||
struct media_link_desc {
|
struct media_link_desc {
|
||||||
struct media_pad_desc source;
|
struct media_pad_desc source;
|
||||||
|
@ -275,7 +276,7 @@ struct media_links_enum {
|
||||||
* struct media_device_info.
|
* struct media_device_info.
|
||||||
*/
|
*/
|
||||||
#define MEDIA_V2_ENTITY_HAS_FLAGS(media_version) \
|
#define MEDIA_V2_ENTITY_HAS_FLAGS(media_version) \
|
||||||
((media_version) >= ((4 << 16) | (19 << 8) | 0))
|
((media_version) >= ((4U << 16) | (19U << 8) | 0U))
|
||||||
|
|
||||||
struct media_v2_entity {
|
struct media_v2_entity {
|
||||||
__u32 id;
|
__u32 id;
|
||||||
|
@ -310,7 +311,7 @@ struct media_v2_interface {
|
||||||
* struct media_device_info.
|
* struct media_device_info.
|
||||||
*/
|
*/
|
||||||
#define MEDIA_V2_PAD_HAS_INDEX(media_version) \
|
#define MEDIA_V2_PAD_HAS_INDEX(media_version) \
|
||||||
((media_version) >= ((4 << 16) | (19 << 8) | 0))
|
((media_version) >= ((4U << 16) | (19U << 8) | 0U))
|
||||||
|
|
||||||
struct media_v2_pad {
|
struct media_v2_pad {
|
||||||
__u32 id;
|
__u32 id;
|
||||||
|
@ -413,7 +414,7 @@ struct media_v2_topology {
|
||||||
#define MEDIA_INTF_T_ALSA_TIMER (MEDIA_INTF_T_ALSA_BASE + 7)
|
#define MEDIA_INTF_T_ALSA_TIMER (MEDIA_INTF_T_ALSA_BASE + 7)
|
||||||
|
|
||||||
/* Obsolete symbol for media_version, no longer used in the kernel */
|
/* Obsolete symbol for media_version, no longer used in the kernel */
|
||||||
#define MEDIA_API_VERSION ((0 << 16) | (1 << 8) | 0)
|
#define MEDIA_API_VERSION ((0U << 16) | (1U << 8) | 0U)
|
||||||
|
|
||||||
|
|
||||||
#endif /* __LINUX_MEDIA_H */
|
#endif /* __LINUX_MEDIA_H */
|
||||||
|
|
|
@ -10,45 +10,6 @@
|
||||||
*
|
*
|
||||||
* Copyright (C) 2012 Nokia Corporation
|
* Copyright (C) 2012 Nokia Corporation
|
||||||
* Contact: Sakari Ailus <sakari.ailus@iki.fi>
|
* Contact: Sakari Ailus <sakari.ailus@iki.fi>
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __V4L2_COMMON__
|
#ifndef __V4L2_COMMON__
|
||||||
|
|
|
@ -4,44 +4,6 @@
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2012 the contributors
|
* Copyright (C) 1999-2012 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.
|
|
||||||
*
|
|
||||||
* The contents of this header was split off from videodev2.h. All control
|
* The contents of this header was split off from videodev2.h. All control
|
||||||
* definitions should be added to this header, which is included by
|
* definitions should be added to this header, which is included by
|
||||||
* videodev2.h.
|
* videodev2.h.
|
||||||
|
@ -152,8 +114,10 @@ enum v4l2_colorfx {
|
||||||
|
|
||||||
/* USER-class private control IDs */
|
/* USER-class private control IDs */
|
||||||
|
|
||||||
/* The base for the meye driver controls. See linux/meye.h for the list
|
/*
|
||||||
* of controls. We reserve 16 controls for this driver. */
|
* The base for the meye driver controls. This driver was removed, but
|
||||||
|
* we keep this define in case any software still uses it.
|
||||||
|
*/
|
||||||
#define V4L2_CID_USER_MEYE_BASE (V4L2_CID_USER_BASE + 0x1000)
|
#define V4L2_CID_USER_MEYE_BASE (V4L2_CID_USER_BASE + 0x1000)
|
||||||
|
|
||||||
/* The base for the bttv driver controls.
|
/* The base for the bttv driver controls.
|
||||||
|
@ -224,6 +188,18 @@ enum v4l2_colorfx {
|
||||||
*/
|
*/
|
||||||
#define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
|
#define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The base for DW100 driver controls.
|
||||||
|
* We reserve 16 controls for this driver.
|
||||||
|
*/
|
||||||
|
#define V4L2_CID_USER_DW100_BASE (V4L2_CID_USER_BASE + 0x1190)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The base for Aspeed driver controls.
|
||||||
|
* We reserve 16 controls for this driver.
|
||||||
|
*/
|
||||||
|
#define V4L2_CID_USER_ASPEED_BASE (V4L2_CID_USER_BASE + 0x11a0)
|
||||||
|
|
||||||
/* MPEG-class control IDs */
|
/* MPEG-class control IDs */
|
||||||
/* The MPEG controls are applicable to all codec controls
|
/* The MPEG controls are applicable to all codec controls
|
||||||
* and the 'MPEG' part of the define is historical */
|
* and the 'MPEG' part of the define is historical */
|
||||||
|
@ -823,6 +799,88 @@ enum v4l2_mpeg_video_frame_skip_mode {
|
||||||
#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY (V4L2_CID_CODEC_BASE + 653)
|
#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY (V4L2_CID_CODEC_BASE + 653)
|
||||||
#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE (V4L2_CID_CODEC_BASE + 654)
|
#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE (V4L2_CID_CODEC_BASE + 654)
|
||||||
|
|
||||||
|
#define V4L2_CID_MPEG_VIDEO_AV1_PROFILE (V4L2_CID_CODEC_BASE + 655)
|
||||||
|
/**
|
||||||
|
* enum v4l2_mpeg_video_av1_profile - AV1 profiles
|
||||||
|
*
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN: compliant decoders must be able to decode
|
||||||
|
* streams with seq_profile equal to 0.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_PROFILE_HIGH: compliant decoders must be able to decode
|
||||||
|
* streams with seq_profile equal less than or equal to 1.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_PROFILE_PROFESSIONAL: compliant decoders must be able to
|
||||||
|
* decode streams with seq_profile less than or equal to 2.
|
||||||
|
*
|
||||||
|
* Conveys the highest profile a decoder can work with.
|
||||||
|
*/
|
||||||
|
enum v4l2_mpeg_video_av1_profile {
|
||||||
|
V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN = 0,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_PROFILE_HIGH = 1,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_PROFILE_PROFESSIONAL = 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_CID_MPEG_VIDEO_AV1_LEVEL (V4L2_CID_CODEC_BASE + 656)
|
||||||
|
/**
|
||||||
|
* enum v4l2_mpeg_video_av1_level - AV1 levels
|
||||||
|
*
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_2_0: Level 2.0.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_2_1: Level 2.1.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_2_2: Level 2.2.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_2_3: Level 2.3.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_3_0: Level 3.0.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_3_1: Level 3.1.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_3_2: Level 3.2.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_3_3: Level 3.3.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_4_0: Level 4.0.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_4_1: Level 4.1.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_4_2: Level 4.2.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_4_3: Level 4.3.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_5_0: Level 5.0.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_5_1: Level 5.1.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_5_2: Level 5.2.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_5_3: Level 5.3.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_6_0: Level 6.0.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_6_1: Level 6.1.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_6_2: Level 6.2.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_6_3: Level 6.3.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_7_0: Level 7.0.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_7_1: Level 7.1.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_7_2: Level 7.2.
|
||||||
|
* @V4L2_MPEG_VIDEO_AV1_LEVEL_7_3: Level 7.3.
|
||||||
|
*
|
||||||
|
* Conveys the highest level a decoder can work with.
|
||||||
|
*/
|
||||||
|
enum v4l2_mpeg_video_av1_level {
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_2_0 = 0,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_2_1 = 1,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_2_2 = 2,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_2_3 = 3,
|
||||||
|
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_3_0 = 4,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_3_1 = 5,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_3_2 = 6,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_3_3 = 7,
|
||||||
|
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_4_0 = 8,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_4_1 = 9,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_4_2 = 10,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_4_3 = 11,
|
||||||
|
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_5_0 = 12,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_5_1 = 13,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_5_2 = 14,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_5_3 = 15,
|
||||||
|
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_6_0 = 16,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_6_1 = 17,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_6_2 = 18,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_6_3 = 19,
|
||||||
|
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_7_0 = 20,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_7_1 = 21,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_7_2 = 22,
|
||||||
|
V4L2_MPEG_VIDEO_AV1_LEVEL_7_3 = 23
|
||||||
|
};
|
||||||
|
|
||||||
/* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
|
/* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
|
||||||
#define V4L2_CID_CODEC_CX2341X_BASE (V4L2_CTRL_CLASS_CODEC | 0x1000)
|
#define V4L2_CID_CODEC_CX2341X_BASE (V4L2_CTRL_CLASS_CODEC | 0x1000)
|
||||||
#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_CODEC_CX2341X_BASE+0)
|
#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_CODEC_CX2341X_BASE+0)
|
||||||
|
@ -1010,6 +1068,8 @@ enum v4l2_auto_focus_range {
|
||||||
|
|
||||||
#define V4L2_CID_CAMERA_SENSOR_ROTATION (V4L2_CID_CAMERA_CLASS_BASE+35)
|
#define V4L2_CID_CAMERA_SENSOR_ROTATION (V4L2_CID_CAMERA_CLASS_BASE+35)
|
||||||
|
|
||||||
|
#define V4L2_CID_HDR_SENSOR_MODE (V4L2_CID_CAMERA_CLASS_BASE+36)
|
||||||
|
|
||||||
/* FM Modulator class control IDs */
|
/* FM Modulator class control IDs */
|
||||||
|
|
||||||
#define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
|
#define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
|
||||||
|
@ -1727,7 +1787,7 @@ struct v4l2_vp8_segment {
|
||||||
* @sharpness_level: matches sharpness_level syntax element.
|
* @sharpness_level: matches sharpness_level syntax element.
|
||||||
* @level: matches loop_filter_level syntax element.
|
* @level: matches loop_filter_level syntax element.
|
||||||
* @padding: padding field. Should be zeroed by applications.
|
* @padding: padding field. Should be zeroed by applications.
|
||||||
* @flags: see V4L2_VP8_LF_FLAG_{}.
|
* @flags: see V4L2_VP8_LF_{}.
|
||||||
*
|
*
|
||||||
* This structure contains loop filter related parameters.
|
* This structure contains loop filter related parameters.
|
||||||
* See the 'mb_lf_adjustments()' part of the frame header syntax,
|
* See the 'mb_lf_adjustments()' part of the frame header syntax,
|
||||||
|
@ -2402,10 +2462,9 @@ struct v4l2_ctrl_hevc_slice_params {
|
||||||
* @poc_st_curr_after: provides the index of the short term after references
|
* @poc_st_curr_after: provides the index of the short term after references
|
||||||
* in DPB array
|
* in DPB array
|
||||||
* @poc_lt_curr: provides the index of the long term references in DPB array
|
* @poc_lt_curr: provides the index of the long term references in DPB array
|
||||||
* @num_delta_pocs_of_ref_rps_idx: same as the derived value
|
* @num_delta_pocs_of_ref_rps_idx: same as the derived value NumDeltaPocs[RefRpsIdx],
|
||||||
* NumDeltaPocs[RefRpsIdx], can be used to parse
|
* can be used to parse the RPS data in slice headers
|
||||||
* the RPS data in slice headers instead of
|
* instead of skipping it with @short_term_ref_pic_set_size.
|
||||||
* skipping it with @short_term_ref_pic_set_size
|
|
||||||
* @reserved: padding field. Should be zeroed by applications.
|
* @reserved: padding field. Should be zeroed by applications.
|
||||||
* @dpb: the decoded picture buffer, for meta-data about reference frames
|
* @dpb: the decoded picture buffer, for meta-data about reference frames
|
||||||
* @flags: see V4L2_HEVC_DECODE_PARAM_FLAG_{}
|
* @flags: see V4L2_HEVC_DECODE_PARAM_FLAG_{}
|
||||||
|
@ -2776,6 +2835,645 @@ struct v4l2_ctrl_vp9_compressed_hdr {
|
||||||
struct v4l2_vp9_mv_probs mv;
|
struct v4l2_vp9_mv_probs mv;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Stateless AV1 controls */
|
||||||
|
|
||||||
|
#define V4L2_AV1_TOTAL_REFS_PER_FRAME 8
|
||||||
|
#define V4L2_AV1_CDEF_MAX 8
|
||||||
|
#define V4L2_AV1_NUM_PLANES_MAX 3 /* 1 if monochrome, 3 otherwise */
|
||||||
|
#define V4L2_AV1_MAX_SEGMENTS 8
|
||||||
|
#define V4L2_AV1_MAX_OPERATING_POINTS (1 << 5) /* 5 bits to encode */
|
||||||
|
#define V4L2_AV1_REFS_PER_FRAME 7
|
||||||
|
#define V4L2_AV1_MAX_NUM_Y_POINTS (1 << 4) /* 4 bits to encode */
|
||||||
|
#define V4L2_AV1_MAX_NUM_CB_POINTS (1 << 4) /* 4 bits to encode */
|
||||||
|
#define V4L2_AV1_MAX_NUM_CR_POINTS (1 << 4) /* 4 bits to encode */
|
||||||
|
#define V4L2_AV1_AR_COEFFS_SIZE 25 /* (2 * 3 * (3 + 1)) + 1 */
|
||||||
|
#define V4L2_AV1_MAX_NUM_PLANES 3
|
||||||
|
#define V4L2_AV1_MAX_TILE_COLS 64
|
||||||
|
#define V4L2_AV1_MAX_TILE_ROWS 64
|
||||||
|
#define V4L2_AV1_MAX_TILE_COUNT 512
|
||||||
|
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_STILL_PICTURE 0x00000001
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_USE_128X128_SUPERBLOCK 0x00000002
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_ENABLE_FILTER_INTRA 0x00000004
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_ENABLE_INTRA_EDGE_FILTER 0x00000008
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_ENABLE_INTERINTRA_COMPOUND 0x00000010
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_ENABLE_MASKED_COMPOUND 0x00000020
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_ENABLE_WARPED_MOTION 0x00000040
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_ENABLE_DUAL_FILTER 0x00000080
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_ENABLE_ORDER_HINT 0x00000100
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_ENABLE_JNT_COMP 0x00000200
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_ENABLE_REF_FRAME_MVS 0x00000400
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_ENABLE_SUPERRES 0x00000800
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_ENABLE_CDEF 0x00001000
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_ENABLE_RESTORATION 0x00002000
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_MONO_CHROME 0x00004000
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_COLOR_RANGE 0x00008000
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_SUBSAMPLING_X 0x00010000
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_SUBSAMPLING_Y 0x00020000
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_FILM_GRAIN_PARAMS_PRESENT 0x00040000
|
||||||
|
#define V4L2_AV1_SEQUENCE_FLAG_SEPARATE_UV_DELTA_Q 0x00080000
|
||||||
|
|
||||||
|
#define V4L2_CID_STATELESS_AV1_SEQUENCE (V4L2_CID_CODEC_STATELESS_BASE + 500)
|
||||||
|
/**
|
||||||
|
* struct v4l2_ctrl_av1_sequence - AV1 Sequence
|
||||||
|
*
|
||||||
|
* Represents an AV1 Sequence OBU. See section 5.5 "Sequence header OBU syntax"
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* @flags: See V4L2_AV1_SEQUENCE_FLAG_{}.
|
||||||
|
* @seq_profile: specifies the features that can be used in the coded video
|
||||||
|
* sequence.
|
||||||
|
* @order_hint_bits: specifies the number of bits used for the order_hint field
|
||||||
|
* at each frame.
|
||||||
|
* @bit_depth: the bitdepth to use for the sequence as described in section
|
||||||
|
* 5.5.2 "Color config syntax".
|
||||||
|
* @reserved: padding field. Should be zeroed by applications.
|
||||||
|
* @max_frame_width_minus_1: specifies the maximum frame width minus 1 for the
|
||||||
|
* frames represented by this sequence header.
|
||||||
|
* @max_frame_height_minus_1: specifies the maximum frame height minus 1 for the
|
||||||
|
* frames represented by this sequence header.
|
||||||
|
*/
|
||||||
|
struct v4l2_ctrl_av1_sequence {
|
||||||
|
__u32 flags;
|
||||||
|
__u8 seq_profile;
|
||||||
|
__u8 order_hint_bits;
|
||||||
|
__u8 bit_depth;
|
||||||
|
__u8 reserved;
|
||||||
|
__u16 max_frame_width_minus_1;
|
||||||
|
__u16 max_frame_height_minus_1;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_CID_STATELESS_AV1_TILE_GROUP_ENTRY (V4L2_CID_CODEC_STATELESS_BASE + 501)
|
||||||
|
/**
|
||||||
|
* struct v4l2_ctrl_av1_tile_group_entry - AV1 Tile Group entry
|
||||||
|
*
|
||||||
|
* Represents a single AV1 tile inside an AV1 Tile Group. Note that MiRowStart,
|
||||||
|
* MiRowEnd, MiColStart and MiColEnd can be retrieved from struct
|
||||||
|
* v4l2_av1_tile_info in struct v4l2_ctrl_av1_frame using tile_row and
|
||||||
|
* tile_col. See section 6.10.1 "General tile group OBU semantics" for more
|
||||||
|
* details.
|
||||||
|
*
|
||||||
|
* @tile_offset: offset from the OBU data, i.e. where the coded tile data
|
||||||
|
* actually starts.
|
||||||
|
* @tile_size: specifies the size in bytes of the coded tile. Equivalent to
|
||||||
|
* "TileSize" in the AV1 Specification.
|
||||||
|
* @tile_row: specifies the row of the current tile. Equivalent to "TileRow" in
|
||||||
|
* the AV1 Specification.
|
||||||
|
* @tile_col: specifies the col of the current tile. Equivalent to "TileCol" in
|
||||||
|
* the AV1 Specification.
|
||||||
|
*/
|
||||||
|
struct v4l2_ctrl_av1_tile_group_entry {
|
||||||
|
__u32 tile_offset;
|
||||||
|
__u32 tile_size;
|
||||||
|
__u32 tile_row;
|
||||||
|
__u32 tile_col;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum v4l2_av1_warp_model - AV1 Warp Model as described in section 3
|
||||||
|
* "Symbols and abbreviated terms" of the AV1 Specification.
|
||||||
|
*
|
||||||
|
* @V4L2_AV1_WARP_MODEL_IDENTITY: Warp model is just an identity transform.
|
||||||
|
* @V4L2_AV1_WARP_MODEL_TRANSLATION: Warp model is a pure translation.
|
||||||
|
* @V4L2_AV1_WARP_MODEL_ROTZOOM: Warp model is a rotation + symmetric zoom +
|
||||||
|
* translation.
|
||||||
|
* @V4L2_AV1_WARP_MODEL_AFFINE: Warp model is a general affine transform.
|
||||||
|
*/
|
||||||
|
enum v4l2_av1_warp_model {
|
||||||
|
V4L2_AV1_WARP_MODEL_IDENTITY = 0,
|
||||||
|
V4L2_AV1_WARP_MODEL_TRANSLATION = 1,
|
||||||
|
V4L2_AV1_WARP_MODEL_ROTZOOM = 2,
|
||||||
|
V4L2_AV1_WARP_MODEL_AFFINE = 3,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum v4l2_av1_reference_frame - AV1 reference frames
|
||||||
|
*
|
||||||
|
* @V4L2_AV1_REF_INTRA_FRAME: Intra Frame Reference
|
||||||
|
* @V4L2_AV1_REF_LAST_FRAME: Last Reference Frame
|
||||||
|
* @V4L2_AV1_REF_LAST2_FRAME: Last2 Reference Frame
|
||||||
|
* @V4L2_AV1_REF_LAST3_FRAME: Last3 Reference Frame
|
||||||
|
* @V4L2_AV1_REF_GOLDEN_FRAME: Golden Reference Frame
|
||||||
|
* @V4L2_AV1_REF_BWDREF_FRAME: BWD Reference Frame
|
||||||
|
* @V4L2_AV1_REF_ALTREF2_FRAME: Alternative2 Reference Frame
|
||||||
|
* @V4L2_AV1_REF_ALTREF_FRAME: Alternative Reference Frame
|
||||||
|
*/
|
||||||
|
enum v4l2_av1_reference_frame {
|
||||||
|
V4L2_AV1_REF_INTRA_FRAME = 0,
|
||||||
|
V4L2_AV1_REF_LAST_FRAME = 1,
|
||||||
|
V4L2_AV1_REF_LAST2_FRAME = 2,
|
||||||
|
V4L2_AV1_REF_LAST3_FRAME = 3,
|
||||||
|
V4L2_AV1_REF_GOLDEN_FRAME = 4,
|
||||||
|
V4L2_AV1_REF_BWDREF_FRAME = 5,
|
||||||
|
V4L2_AV1_REF_ALTREF2_FRAME = 6,
|
||||||
|
V4L2_AV1_REF_ALTREF_FRAME = 7,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_AV1_GLOBAL_MOTION_IS_INVALID(ref) (1 << (ref))
|
||||||
|
|
||||||
|
#define V4L2_AV1_GLOBAL_MOTION_FLAG_IS_GLOBAL 0x1
|
||||||
|
#define V4L2_AV1_GLOBAL_MOTION_FLAG_IS_ROT_ZOOM 0x2
|
||||||
|
#define V4L2_AV1_GLOBAL_MOTION_FLAG_IS_TRANSLATION 0x4
|
||||||
|
/**
|
||||||
|
* struct v4l2_av1_global_motion - AV1 Global Motion parameters as described in
|
||||||
|
* section 6.8.17 "Global motion params semantics" of the AV1 specification.
|
||||||
|
*
|
||||||
|
* @flags: A bitfield containing the flags per reference frame. See
|
||||||
|
* V4L2_AV1_GLOBAL_MOTION_FLAG_{}
|
||||||
|
* @type: The type of global motion transform used.
|
||||||
|
* @params: this field has the same meaning as "gm_params" in the AV1
|
||||||
|
* specification.
|
||||||
|
* @invalid: bitfield indicating whether the global motion params are invalid
|
||||||
|
* for a given reference frame. See section 7.11.3.6 Setup shear process and
|
||||||
|
* the variable "warpValid". Use V4L2_AV1_GLOBAL_MOTION_IS_INVALID(ref) to
|
||||||
|
* create a suitable mask.
|
||||||
|
* @reserved: padding field. Should be zeroed by applications.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct v4l2_av1_global_motion {
|
||||||
|
__u8 flags[V4L2_AV1_TOTAL_REFS_PER_FRAME];
|
||||||
|
enum v4l2_av1_warp_model type[V4L2_AV1_TOTAL_REFS_PER_FRAME];
|
||||||
|
__s32 params[V4L2_AV1_TOTAL_REFS_PER_FRAME][6];
|
||||||
|
__u8 invalid;
|
||||||
|
__u8 reserved[3];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum v4l2_av1_frame_restoration_type - AV1 Frame Restoration Type
|
||||||
|
* @V4L2_AV1_FRAME_RESTORE_NONE: no filtering is applied.
|
||||||
|
* @V4L2_AV1_FRAME_RESTORE_WIENER: Wiener filter process is invoked.
|
||||||
|
* @V4L2_AV1_FRAME_RESTORE_SGRPROJ: self guided filter process is invoked.
|
||||||
|
* @V4L2_AV1_FRAME_RESTORE_SWITCHABLE: restoration filter is swichtable.
|
||||||
|
*/
|
||||||
|
enum v4l2_av1_frame_restoration_type {
|
||||||
|
V4L2_AV1_FRAME_RESTORE_NONE = 0,
|
||||||
|
V4L2_AV1_FRAME_RESTORE_WIENER = 1,
|
||||||
|
V4L2_AV1_FRAME_RESTORE_SGRPROJ = 2,
|
||||||
|
V4L2_AV1_FRAME_RESTORE_SWITCHABLE = 3,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_AV1_LOOP_RESTORATION_FLAG_USES_LR 0x1
|
||||||
|
#define V4L2_AV1_LOOP_RESTORATION_FLAG_USES_CHROMA_LR 0x2
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct v4l2_av1_loop_restoration - AV1 Loop Restauration as described in
|
||||||
|
* section 6.10.15 "Loop restoration params semantics" of the AV1 specification.
|
||||||
|
*
|
||||||
|
* @flags: See V4L2_AV1_LOOP_RESTORATION_FLAG_{}.
|
||||||
|
* @lr_unit_shift: specifies if the luma restoration size should be halved.
|
||||||
|
* @lr_uv_shift: specifies if the chroma size should be half the luma size.
|
||||||
|
* @reserved: padding field. Should be zeroed by applications.
|
||||||
|
* @frame_restoration_type: specifies the type of restoration used for each
|
||||||
|
* plane. See enum v4l2_av1_frame_restoration_type.
|
||||||
|
* @loop_restoration_size: specifies the size of loop restoration units in units
|
||||||
|
* of samples in the current plane.
|
||||||
|
*/
|
||||||
|
struct v4l2_av1_loop_restoration {
|
||||||
|
__u8 flags;
|
||||||
|
__u8 lr_unit_shift;
|
||||||
|
__u8 lr_uv_shift;
|
||||||
|
__u8 reserved;
|
||||||
|
enum v4l2_av1_frame_restoration_type frame_restoration_type[V4L2_AV1_NUM_PLANES_MAX];
|
||||||
|
__u32 loop_restoration_size[V4L2_AV1_MAX_NUM_PLANES];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct v4l2_av1_cdef - AV1 CDEF params semantics as described in section
|
||||||
|
* 6.10.14 "CDEF params semantics" of the AV1 specification
|
||||||
|
*
|
||||||
|
* @damping_minus_3: controls the amount of damping in the deringing filter.
|
||||||
|
* @bits: specifies the number of bits needed to specify which CDEF filter to
|
||||||
|
* apply.
|
||||||
|
* @y_pri_strength: specifies the strength of the primary filter.
|
||||||
|
* @y_sec_strength: specifies the strength of the secondary filter.
|
||||||
|
* @uv_pri_strength: specifies the strength of the primary filter.
|
||||||
|
* @uv_sec_strength: specifies the strength of the secondary filter.
|
||||||
|
*/
|
||||||
|
struct v4l2_av1_cdef {
|
||||||
|
__u8 damping_minus_3;
|
||||||
|
__u8 bits;
|
||||||
|
__u8 y_pri_strength[V4L2_AV1_CDEF_MAX];
|
||||||
|
__u8 y_sec_strength[V4L2_AV1_CDEF_MAX];
|
||||||
|
__u8 uv_pri_strength[V4L2_AV1_CDEF_MAX];
|
||||||
|
__u8 uv_sec_strength[V4L2_AV1_CDEF_MAX];
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_AV1_SEGMENTATION_FLAG_ENABLED 0x1
|
||||||
|
#define V4L2_AV1_SEGMENTATION_FLAG_UPDATE_MAP 0x2
|
||||||
|
#define V4L2_AV1_SEGMENTATION_FLAG_TEMPORAL_UPDATE 0x4
|
||||||
|
#define V4L2_AV1_SEGMENTATION_FLAG_UPDATE_DATA 0x8
|
||||||
|
#define V4L2_AV1_SEGMENTATION_FLAG_SEG_ID_PRE_SKIP 0x10
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum v4l2_av1_segment_feature - AV1 segment features as described in section
|
||||||
|
* 3 "Symbols and abbreviated terms" of the AV1 specification.
|
||||||
|
*
|
||||||
|
* @V4L2_AV1_SEG_LVL_ALT_Q: Index for quantizer segment feature.
|
||||||
|
* @V4L2_AV1_SEG_LVL_ALT_LF_Y_V: Index for vertical luma loop filter segment
|
||||||
|
* feature.
|
||||||
|
* @V4L2_AV1_SEG_LVL_REF_FRAME: Index for reference frame segment feature.
|
||||||
|
* @V4L2_AV1_SEG_LVL_REF_SKIP: Index for skip segment feature.
|
||||||
|
* @V4L2_AV1_SEG_LVL_REF_GLOBALMV: Index for global mv feature.
|
||||||
|
* @V4L2_AV1_SEG_LVL_MAX: Number of segment features.
|
||||||
|
*/
|
||||||
|
enum v4l2_av1_segment_feature {
|
||||||
|
V4L2_AV1_SEG_LVL_ALT_Q = 0,
|
||||||
|
V4L2_AV1_SEG_LVL_ALT_LF_Y_V = 1,
|
||||||
|
V4L2_AV1_SEG_LVL_REF_FRAME = 5,
|
||||||
|
V4L2_AV1_SEG_LVL_REF_SKIP = 6,
|
||||||
|
V4L2_AV1_SEG_LVL_REF_GLOBALMV = 7,
|
||||||
|
V4L2_AV1_SEG_LVL_MAX = 8
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_AV1_SEGMENT_FEATURE_ENABLED(id) (1 << (id))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct v4l2_av1_segmentation - AV1 Segmentation params as defined in section
|
||||||
|
* 6.8.13 "Segmentation params semantics" of the AV1 specification.
|
||||||
|
*
|
||||||
|
* @flags: see V4L2_AV1_SEGMENTATION_FLAG_{}.
|
||||||
|
* @last_active_seg_id: indicates the highest numbered segment id that has some
|
||||||
|
* enabled feature. This is used when decoding the segment id to only decode
|
||||||
|
* choices corresponding to used segments.
|
||||||
|
* @feature_enabled: bitmask defining which features are enabled in each
|
||||||
|
* segment. Use V4L2_AV1_SEGMENT_FEATURE_ENABLED to build a suitable mask.
|
||||||
|
* @feature_data: data attached to each feature. Data entry is only valid if the
|
||||||
|
* feature is enabled
|
||||||
|
*/
|
||||||
|
struct v4l2_av1_segmentation {
|
||||||
|
__u8 flags;
|
||||||
|
__u8 last_active_seg_id;
|
||||||
|
__u8 feature_enabled[V4L2_AV1_MAX_SEGMENTS];
|
||||||
|
__s16 feature_data[V4L2_AV1_MAX_SEGMENTS][V4L2_AV1_SEG_LVL_MAX];
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_AV1_LOOP_FILTER_FLAG_DELTA_ENABLED 0x1
|
||||||
|
#define V4L2_AV1_LOOP_FILTER_FLAG_DELTA_UPDATE 0x2
|
||||||
|
#define V4L2_AV1_LOOP_FILTER_FLAG_DELTA_LF_PRESENT 0x4
|
||||||
|
#define V4L2_AV1_LOOP_FILTER_FLAG_DELTA_LF_MULTI 0x8
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct v4l2_av1_loop_filter - AV1 Loop filter params as defined in section
|
||||||
|
* 6.8.10 "Loop filter semantics" and 6.8.16 "Loop filter delta parameters
|
||||||
|
* semantics" of the AV1 specification.
|
||||||
|
*
|
||||||
|
* @flags: see V4L2_AV1_LOOP_FILTER_FLAG_{}
|
||||||
|
* @level: an array containing loop filter strength values. Different loop
|
||||||
|
* filter strength values from the array are used depending on the image plane
|
||||||
|
* being filtered, and the edge direction (vertical or horizontal) being
|
||||||
|
* filtered.
|
||||||
|
* @sharpness: indicates the sharpness level. The loop_filter_level and
|
||||||
|
* loop_filter_sharpness together determine when a block edge is filtered, and
|
||||||
|
* by how much the filtering can change the sample values. The loop filter
|
||||||
|
* process is described in section 7.14 of the AV1 specification.
|
||||||
|
* @ref_deltas: contains the adjustment needed for the filter level based on the
|
||||||
|
* chosen reference frame. If this syntax element is not present, it maintains
|
||||||
|
* its previous value.
|
||||||
|
* @mode_deltas: contains the adjustment needed for the filter level based on
|
||||||
|
* the chosen mode. If this syntax element is not present, it maintains its
|
||||||
|
* previous value.
|
||||||
|
* @delta_lf_res: specifies the left shift which should be applied to decoded
|
||||||
|
* loop filter delta values.
|
||||||
|
*/
|
||||||
|
struct v4l2_av1_loop_filter {
|
||||||
|
__u8 flags;
|
||||||
|
__u8 level[4];
|
||||||
|
__u8 sharpness;
|
||||||
|
__s8 ref_deltas[V4L2_AV1_TOTAL_REFS_PER_FRAME];
|
||||||
|
__s8 mode_deltas[2];
|
||||||
|
__u8 delta_lf_res;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_AV1_QUANTIZATION_FLAG_DIFF_UV_DELTA 0x1
|
||||||
|
#define V4L2_AV1_QUANTIZATION_FLAG_USING_QMATRIX 0x2
|
||||||
|
#define V4L2_AV1_QUANTIZATION_FLAG_DELTA_Q_PRESENT 0x4
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct v4l2_av1_quantization - AV1 Quantization params as defined in section
|
||||||
|
* 6.8.11 "Quantization params semantics" of the AV1 specification.
|
||||||
|
*
|
||||||
|
* @flags: see V4L2_AV1_QUANTIZATION_FLAG_{}
|
||||||
|
* @base_q_idx: indicates the base frame qindex. This is used for Y AC
|
||||||
|
* coefficients and as the base value for the other quantizers.
|
||||||
|
* @delta_q_y_dc: indicates the Y DC quantizer relative to base_q_idx.
|
||||||
|
* @delta_q_u_dc: indicates the U DC quantizer relative to base_q_idx.
|
||||||
|
* @delta_q_u_ac: indicates the U AC quantizer relative to base_q_idx.
|
||||||
|
* @delta_q_v_dc: indicates the V DC quantizer relative to base_q_idx.
|
||||||
|
* @delta_q_v_ac: indicates the V AC quantizer relative to base_q_idx.
|
||||||
|
* @qm_y: specifies the level in the quantizer matrix that should be used for
|
||||||
|
* luma plane decoding.
|
||||||
|
* @qm_u: specifies the level in the quantizer matrix that should be used for
|
||||||
|
* chroma U plane decoding.
|
||||||
|
* @qm_v: specifies the level in the quantizer matrix that should be used for
|
||||||
|
* chroma V plane decoding.
|
||||||
|
* @delta_q_res: specifies the left shift which should be applied to decoded
|
||||||
|
* quantizer index delta values.
|
||||||
|
*/
|
||||||
|
struct v4l2_av1_quantization {
|
||||||
|
__u8 flags;
|
||||||
|
__u8 base_q_idx;
|
||||||
|
__s8 delta_q_y_dc;
|
||||||
|
__s8 delta_q_u_dc;
|
||||||
|
__s8 delta_q_u_ac;
|
||||||
|
__s8 delta_q_v_dc;
|
||||||
|
__s8 delta_q_v_ac;
|
||||||
|
__u8 qm_y;
|
||||||
|
__u8 qm_u;
|
||||||
|
__u8 qm_v;
|
||||||
|
__u8 delta_q_res;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_AV1_TILE_INFO_FLAG_UNIFORM_TILE_SPACING 0x1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct v4l2_av1_tile_info - AV1 Tile info as defined in section 6.8.14 "Tile
|
||||||
|
* info semantics" of the AV1 specification.
|
||||||
|
*
|
||||||
|
* @flags: see V4L2_AV1_TILE_INFO_FLAG_{}
|
||||||
|
* @context_update_tile_id: specifies which tile to use for the CDF update.
|
||||||
|
* @tile_rows: specifies the number of tiles down the frame.
|
||||||
|
* @tile_cols: specifies the number of tiles across the frame.
|
||||||
|
* @mi_col_starts: an array specifying the start column (in units of 4x4 luma
|
||||||
|
* samples) for each tile across the image.
|
||||||
|
* @mi_row_starts: an array specifying the start row (in units of 4x4 luma
|
||||||
|
* samples) for each tile down the image.
|
||||||
|
* @width_in_sbs_minus_1: specifies the width of a tile minus 1 in units of
|
||||||
|
* superblocks.
|
||||||
|
* @height_in_sbs_minus_1: specifies the height of a tile minus 1 in units of
|
||||||
|
* superblocks.
|
||||||
|
* @tile_size_bytes: specifies the number of bytes needed to code each tile
|
||||||
|
* size.
|
||||||
|
* @reserved: padding field. Should be zeroed by applications.
|
||||||
|
*/
|
||||||
|
struct v4l2_av1_tile_info {
|
||||||
|
__u8 flags;
|
||||||
|
__u8 context_update_tile_id;
|
||||||
|
__u8 tile_cols;
|
||||||
|
__u8 tile_rows;
|
||||||
|
__u32 mi_col_starts[V4L2_AV1_MAX_TILE_COLS + 1];
|
||||||
|
__u32 mi_row_starts[V4L2_AV1_MAX_TILE_ROWS + 1];
|
||||||
|
__u32 width_in_sbs_minus_1[V4L2_AV1_MAX_TILE_COLS];
|
||||||
|
__u32 height_in_sbs_minus_1[V4L2_AV1_MAX_TILE_ROWS];
|
||||||
|
__u8 tile_size_bytes;
|
||||||
|
__u8 reserved[3];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum v4l2_av1_frame_type - AV1 Frame Type
|
||||||
|
*
|
||||||
|
* @V4L2_AV1_KEY_FRAME: Key frame
|
||||||
|
* @V4L2_AV1_INTER_FRAME: Inter frame
|
||||||
|
* @V4L2_AV1_INTRA_ONLY_FRAME: Intra-only frame
|
||||||
|
* @V4L2_AV1_SWITCH_FRAME: Switch frame
|
||||||
|
*/
|
||||||
|
enum v4l2_av1_frame_type {
|
||||||
|
V4L2_AV1_KEY_FRAME = 0,
|
||||||
|
V4L2_AV1_INTER_FRAME = 1,
|
||||||
|
V4L2_AV1_INTRA_ONLY_FRAME = 2,
|
||||||
|
V4L2_AV1_SWITCH_FRAME = 3
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum v4l2_av1_interpolation_filter - AV1 interpolation filter types
|
||||||
|
*
|
||||||
|
* @V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP: eight tap filter
|
||||||
|
* @V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH: eight tap smooth filter
|
||||||
|
* @V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP: eight tap sharp filter
|
||||||
|
* @V4L2_AV1_INTERPOLATION_FILTER_BILINEAR: bilinear filter
|
||||||
|
* @V4L2_AV1_INTERPOLATION_FILTER_SWITCHABLE: filter selection is signaled at
|
||||||
|
* the block level
|
||||||
|
*
|
||||||
|
* See section 6.8.9 "Interpolation filter semantics" of the AV1 specification
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
enum v4l2_av1_interpolation_filter {
|
||||||
|
V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0,
|
||||||
|
V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1,
|
||||||
|
V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2,
|
||||||
|
V4L2_AV1_INTERPOLATION_FILTER_BILINEAR = 3,
|
||||||
|
V4L2_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum v4l2_av1_tx_mode - AV1 Tx mode as described in section 6.8.21 "TX mode
|
||||||
|
* semantics" of the AV1 specification.
|
||||||
|
* @V4L2_AV1_TX_MODE_ONLY_4X4: the inverse transform will use only 4x4
|
||||||
|
* transforms
|
||||||
|
* @V4L2_AV1_TX_MODE_LARGEST: the inverse transform will use the largest
|
||||||
|
* transform size that fits inside the block
|
||||||
|
* @V4L2_AV1_TX_MODE_SELECT: the choice of transform size is specified
|
||||||
|
* explicitly for each block.
|
||||||
|
*/
|
||||||
|
enum v4l2_av1_tx_mode {
|
||||||
|
V4L2_AV1_TX_MODE_ONLY_4X4 = 0,
|
||||||
|
V4L2_AV1_TX_MODE_LARGEST = 1,
|
||||||
|
V4L2_AV1_TX_MODE_SELECT = 2
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_SHOW_FRAME 0x00000001
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_SHOWABLE_FRAME 0x00000002
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_ERROR_RESILIENT_MODE 0x00000004
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_DISABLE_CDF_UPDATE 0x00000008
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_ALLOW_SCREEN_CONTENT_TOOLS 0x00000010
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_FORCE_INTEGER_MV 0x00000020
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_ALLOW_INTRABC 0x00000040
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_USE_SUPERRES 0x00000080
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_ALLOW_HIGH_PRECISION_MV 0x00000100
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_IS_MOTION_MODE_SWITCHABLE 0x00000200
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_USE_REF_FRAME_MVS 0x00000400
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_DISABLE_FRAME_END_UPDATE_CDF 0x00000800
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_ALLOW_WARPED_MOTION 0x00001000
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_REFERENCE_SELECT 0x00002000
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_REDUCED_TX_SET 0x00004000
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_SKIP_MODE_ALLOWED 0x00008000
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_SKIP_MODE_PRESENT 0x00010000
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_FRAME_SIZE_OVERRIDE 0x00020000
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_BUFFER_REMOVAL_TIME_PRESENT 0x00040000
|
||||||
|
#define V4L2_AV1_FRAME_FLAG_FRAME_REFS_SHORT_SIGNALING 0x00080000
|
||||||
|
|
||||||
|
#define V4L2_CID_STATELESS_AV1_FRAME (V4L2_CID_CODEC_STATELESS_BASE + 502)
|
||||||
|
/**
|
||||||
|
* struct v4l2_ctrl_av1_frame - Represents an AV1 Frame Header OBU.
|
||||||
|
*
|
||||||
|
* @tile_info: tile info
|
||||||
|
* @quantization: quantization params
|
||||||
|
* @segmentation: segmentation params
|
||||||
|
* @superres_denom: the denominator for the upscaling ratio.
|
||||||
|
* @loop_filter: loop filter params
|
||||||
|
* @cdef: cdef params
|
||||||
|
* @skip_mode_frame: specifies the frames to use for compound prediction when
|
||||||
|
* skip_mode is equal to 1.
|
||||||
|
* @primary_ref_frame: specifies which reference frame contains the CDF values
|
||||||
|
* and other state that should be loaded at the start of the frame.
|
||||||
|
* @loop_restoration: loop restoration params
|
||||||
|
* @global_motion: global motion params
|
||||||
|
* @flags: see V4L2_AV1_FRAME_FLAG_{}
|
||||||
|
* @frame_type: specifies the AV1 frame type
|
||||||
|
* @order_hint: specifies OrderHintBits least significant bits of the expected
|
||||||
|
* output order for this frame.
|
||||||
|
* @upscaled_width: the upscaled width.
|
||||||
|
* @interpolation_filter: specifies the filter selection used for performing
|
||||||
|
* inter prediction.
|
||||||
|
* @tx_mode: specifies how the transform size is determined.
|
||||||
|
* @frame_width_minus_1: add 1 to get the frame's width.
|
||||||
|
* @frame_height_minus_1: add 1 to get the frame's height
|
||||||
|
* @render_width_minus_1: add 1 to get the render width of the frame in luma
|
||||||
|
* samples.
|
||||||
|
* @render_height_minus_1: add 1 to get the render height of the frame in luma
|
||||||
|
* samples.
|
||||||
|
* @current_frame_id: specifies the frame id number for the current frame. Frame
|
||||||
|
* id numbers are additional information that do not affect the decoding
|
||||||
|
* process, but provide decoders with a way of detecting missing reference
|
||||||
|
* frames so that appropriate action can be taken.
|
||||||
|
* @buffer_removal_time: specifies the frame removal time in units of DecCT clock
|
||||||
|
* ticks counted from the removal time of the last random access point for
|
||||||
|
* operating point opNum.
|
||||||
|
* @reserved: padding field. Should be zeroed by applications.
|
||||||
|
* @order_hints: specifies the expected output order hint for each reference
|
||||||
|
* frame. This field corresponds to the OrderHints variable from the
|
||||||
|
* specification (section 5.9.2 "Uncompressed header syntax"). As such, this is
|
||||||
|
* only used for non-intra frames and ignored otherwise. order_hints[0] is
|
||||||
|
* always ignored.
|
||||||
|
* @reference_frame_ts: the V4L2 timestamp of the reference frame slots.
|
||||||
|
* @ref_frame_idx: used to index into @reference_frame_ts when decoding
|
||||||
|
* inter-frames. The meaning of this array is the same as in the specification.
|
||||||
|
* The timestamp refers to the timestamp field in struct v4l2_buffer. Use
|
||||||
|
* v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
|
||||||
|
* @refresh_frame_flags: contains a bitmask that specifies which reference frame
|
||||||
|
* slots will be updated with the current frame after it is decoded.
|
||||||
|
*/
|
||||||
|
struct v4l2_ctrl_av1_frame {
|
||||||
|
struct v4l2_av1_tile_info tile_info;
|
||||||
|
struct v4l2_av1_quantization quantization;
|
||||||
|
__u8 superres_denom;
|
||||||
|
struct v4l2_av1_segmentation segmentation;
|
||||||
|
struct v4l2_av1_loop_filter loop_filter;
|
||||||
|
struct v4l2_av1_cdef cdef;
|
||||||
|
__u8 skip_mode_frame[2];
|
||||||
|
__u8 primary_ref_frame;
|
||||||
|
struct v4l2_av1_loop_restoration loop_restoration;
|
||||||
|
struct v4l2_av1_global_motion global_motion;
|
||||||
|
__u32 flags;
|
||||||
|
enum v4l2_av1_frame_type frame_type;
|
||||||
|
__u32 order_hint;
|
||||||
|
__u32 upscaled_width;
|
||||||
|
enum v4l2_av1_interpolation_filter interpolation_filter;
|
||||||
|
enum v4l2_av1_tx_mode tx_mode;
|
||||||
|
__u32 frame_width_minus_1;
|
||||||
|
__u32 frame_height_minus_1;
|
||||||
|
__u16 render_width_minus_1;
|
||||||
|
__u16 render_height_minus_1;
|
||||||
|
|
||||||
|
__u32 current_frame_id;
|
||||||
|
__u32 buffer_removal_time[V4L2_AV1_MAX_OPERATING_POINTS];
|
||||||
|
__u8 reserved[4];
|
||||||
|
__u32 order_hints[V4L2_AV1_TOTAL_REFS_PER_FRAME];
|
||||||
|
__u64 reference_frame_ts[V4L2_AV1_TOTAL_REFS_PER_FRAME];
|
||||||
|
__s8 ref_frame_idx[V4L2_AV1_REFS_PER_FRAME];
|
||||||
|
__u8 refresh_frame_flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_AV1_FILM_GRAIN_FLAG_APPLY_GRAIN 0x1
|
||||||
|
#define V4L2_AV1_FILM_GRAIN_FLAG_UPDATE_GRAIN 0x2
|
||||||
|
#define V4L2_AV1_FILM_GRAIN_FLAG_CHROMA_SCALING_FROM_LUMA 0x4
|
||||||
|
#define V4L2_AV1_FILM_GRAIN_FLAG_OVERLAP 0x8
|
||||||
|
#define V4L2_AV1_FILM_GRAIN_FLAG_CLIP_TO_RESTRICTED_RANGE 0x10
|
||||||
|
|
||||||
|
#define V4L2_CID_STATELESS_AV1_FILM_GRAIN (V4L2_CID_CODEC_STATELESS_BASE + 505)
|
||||||
|
/**
|
||||||
|
* struct v4l2_ctrl_av1_film_grain - AV1 Film Grain parameters.
|
||||||
|
*
|
||||||
|
* Film grain parameters as specified by section 6.8.20 of the AV1 Specification.
|
||||||
|
*
|
||||||
|
* @flags: see V4L2_AV1_FILM_GRAIN_{}.
|
||||||
|
* @cr_mult: represents a multiplier for the cr component used in derivation of
|
||||||
|
* the input index to the cr component scaling function.
|
||||||
|
* @grain_seed: specifies the starting value for the pseudo-random numbers used
|
||||||
|
* during film grain synthesis.
|
||||||
|
* @film_grain_params_ref_idx: indicates which reference frame contains the
|
||||||
|
* film grain parameters to be used for this frame.
|
||||||
|
* @num_y_points: specifies the number of points for the piece-wise linear
|
||||||
|
* scaling function of the luma component.
|
||||||
|
* @point_y_value: represents the x (luma value) coordinate for the i-th point
|
||||||
|
* of the piecewise linear scaling function for luma component. The values are
|
||||||
|
* signaled on the scale of 0..255. In case of 10 bit video, these values
|
||||||
|
* correspond to luma values divided by 4. In case of 12 bit video, these values
|
||||||
|
* correspond to luma values divided by 16.
|
||||||
|
* @point_y_scaling: represents the scaling (output) value for the i-th point
|
||||||
|
* of the piecewise linear scaling function for luma component.
|
||||||
|
* @num_cb_points: specifies the number of points for the piece-wise linear
|
||||||
|
* scaling function of the cb component.
|
||||||
|
* @point_cb_value: represents the x coordinate for the i-th point of the
|
||||||
|
* piece-wise linear scaling function for cb component. The values are signaled
|
||||||
|
* on the scale of 0..255.
|
||||||
|
* @point_cb_scaling: represents the scaling (output) value for the i-th point
|
||||||
|
* of the piecewise linear scaling function for cb component.
|
||||||
|
* @num_cr_points: specifies represents the number of points for the piece-wise
|
||||||
|
* linear scaling function of the cr component.
|
||||||
|
* @point_cr_value: represents the x coordinate for the i-th point of the
|
||||||
|
* piece-wise linear scaling function for cr component. The values are signaled
|
||||||
|
* on the scale of 0..255.
|
||||||
|
* @point_cr_scaling: represents the scaling (output) value for the i-th point
|
||||||
|
* of the piecewise linear scaling function for cr component.
|
||||||
|
* @grain_scaling_minus_8: represents the shift – 8 applied to the values of the
|
||||||
|
* chroma component. The grain_scaling_minus_8 can take values of 0..3 and
|
||||||
|
* determines the range and quantization step of the standard deviation of film
|
||||||
|
* grain.
|
||||||
|
* @ar_coeff_lag: specifies the number of auto-regressive coefficients for luma
|
||||||
|
* and chroma.
|
||||||
|
* @ar_coeffs_y_plus_128: specifies auto-regressive coefficients used for the Y
|
||||||
|
* plane.
|
||||||
|
* @ar_coeffs_cb_plus_128: specifies auto-regressive coefficients used for the U
|
||||||
|
* plane.
|
||||||
|
* @ar_coeffs_cr_plus_128: specifies auto-regressive coefficients used for the V
|
||||||
|
* plane.
|
||||||
|
* @ar_coeff_shift_minus_6: specifies the range of the auto-regressive
|
||||||
|
* coefficients. Values of 0, 1, 2, and 3 correspond to the ranges for
|
||||||
|
* auto-regressive coefficients of [-2, 2), [-1, 1), [-0.5, 0.5) and [-0.25,
|
||||||
|
* 0.25) respectively.
|
||||||
|
* @grain_scale_shift: specifies how much the Gaussian random numbers should be
|
||||||
|
* scaled down during the grain synthesis process.
|
||||||
|
* @cb_mult: represents a multiplier for the cb component used in derivation of
|
||||||
|
* the input index to the cb component scaling function.
|
||||||
|
* @cb_luma_mult: represents a multiplier for the average luma component used in
|
||||||
|
* derivation of the input index to the cb component scaling function.
|
||||||
|
* @cr_luma_mult: represents a multiplier for the average luma component used in
|
||||||
|
* derivation of the input index to the cr component scaling function.
|
||||||
|
* @cb_offset: represents an offset used in derivation of the input index to the
|
||||||
|
* cb component scaling function.
|
||||||
|
* @cr_offset: represents an offset used in derivation of the input index to the
|
||||||
|
* cr component scaling function.
|
||||||
|
* @reserved: padding field. Should be zeroed by applications.
|
||||||
|
*/
|
||||||
|
struct v4l2_ctrl_av1_film_grain {
|
||||||
|
__u8 flags;
|
||||||
|
__u8 cr_mult;
|
||||||
|
__u16 grain_seed;
|
||||||
|
__u8 film_grain_params_ref_idx;
|
||||||
|
__u8 num_y_points;
|
||||||
|
__u8 point_y_value[V4L2_AV1_MAX_NUM_Y_POINTS];
|
||||||
|
__u8 point_y_scaling[V4L2_AV1_MAX_NUM_Y_POINTS];
|
||||||
|
__u8 num_cb_points;
|
||||||
|
__u8 point_cb_value[V4L2_AV1_MAX_NUM_CB_POINTS];
|
||||||
|
__u8 point_cb_scaling[V4L2_AV1_MAX_NUM_CB_POINTS];
|
||||||
|
__u8 num_cr_points;
|
||||||
|
__u8 point_cr_value[V4L2_AV1_MAX_NUM_CR_POINTS];
|
||||||
|
__u8 point_cr_scaling[V4L2_AV1_MAX_NUM_CR_POINTS];
|
||||||
|
__u8 grain_scaling_minus_8;
|
||||||
|
__u8 ar_coeff_lag;
|
||||||
|
__u8 ar_coeffs_y_plus_128[V4L2_AV1_AR_COEFFS_SIZE];
|
||||||
|
__u8 ar_coeffs_cb_plus_128[V4L2_AV1_AR_COEFFS_SIZE];
|
||||||
|
__u8 ar_coeffs_cr_plus_128[V4L2_AV1_AR_COEFFS_SIZE];
|
||||||
|
__u8 ar_coeff_shift_minus_6;
|
||||||
|
__u8 grain_scale_shift;
|
||||||
|
__u8 cb_mult;
|
||||||
|
__u8 cb_luma_mult;
|
||||||
|
__u8 cr_luma_mult;
|
||||||
|
__u16 cb_offset;
|
||||||
|
__u16 cr_offset;
|
||||||
|
__u8 reserved[4];
|
||||||
|
};
|
||||||
|
|
||||||
/* MPEG-compression definitions kept for backwards compatibility */
|
/* MPEG-compression definitions kept for backwards compatibility */
|
||||||
#define V4L2_CTRL_CLASS_MPEG V4L2_CTRL_CLASS_CODEC
|
#define V4L2_CTRL_CLASS_MPEG V4L2_CTRL_CLASS_CODEC
|
||||||
#define V4L2_CID_MPEG_CLASS V4L2_CID_CODEC_CLASS
|
#define V4L2_CID_MPEG_CLASS V4L2_CID_CODEC_CLASS
|
||||||
|
|
|
@ -243,6 +243,7 @@ enum v4l2_colorspace {
|
||||||
|
|
||||||
/* DCI-P3 colorspace, used by cinema projectors */
|
/* DCI-P3 colorspace, used by cinema projectors */
|
||||||
V4L2_COLORSPACE_DCI_P3 = 12,
|
V4L2_COLORSPACE_DCI_P3 = 12,
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -474,7 +475,6 @@ struct v4l2_capability {
|
||||||
#define V4L2_CAP_META_CAPTURE 0x00800000 /* Is a metadata capture device */
|
#define V4L2_CAP_META_CAPTURE 0x00800000 /* Is a metadata capture device */
|
||||||
|
|
||||||
#define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */
|
#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 */
|
#define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */
|
||||||
#define V4L2_CAP_META_OUTPUT 0x08000000 /* Is a metadata output device */
|
#define V4L2_CAP_META_OUTPUT 0x08000000 /* Is a metadata output device */
|
||||||
|
|
||||||
|
@ -549,6 +549,13 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_RGBX32 v4l2_fourcc('X', 'B', '2', '4') /* 32 RGBX-8-8-8-8 */
|
#define V4L2_PIX_FMT_RGBX32 v4l2_fourcc('X', 'B', '2', '4') /* 32 RGBX-8-8-8-8 */
|
||||||
#define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */
|
#define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */
|
||||||
#define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */
|
#define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */
|
||||||
|
#define V4L2_PIX_FMT_RGBX1010102 v4l2_fourcc('R', 'X', '3', '0') /* 32 RGBX-10-10-10-2 */
|
||||||
|
#define V4L2_PIX_FMT_RGBA1010102 v4l2_fourcc('R', 'A', '3', '0') /* 32 RGBA-10-10-10-2 */
|
||||||
|
#define V4L2_PIX_FMT_ARGB2101010 v4l2_fourcc('A', 'R', '3', '0') /* 32 ARGB-2-10-10-10 */
|
||||||
|
|
||||||
|
/* RGB formats (6 or 8 bytes per pixel) */
|
||||||
|
#define V4L2_PIX_FMT_BGR48_12 v4l2_fourcc('B', '3', '1', '2') /* 48 BGR 12-bit per component */
|
||||||
|
#define V4L2_PIX_FMT_ABGR64_12 v4l2_fourcc('B', '4', '1', '2') /* 64 BGRA 12-bit per component */
|
||||||
|
|
||||||
/* Grey formats */
|
/* Grey formats */
|
||||||
#define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */
|
#define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */
|
||||||
|
@ -556,6 +563,7 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */
|
#define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */
|
||||||
#define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */
|
#define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */
|
||||||
#define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */
|
#define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */
|
||||||
|
#define V4L2_PIX_FMT_Y012 v4l2_fourcc('Y', '0', '1', '2') /* 12 Greyscale */
|
||||||
#define V4L2_PIX_FMT_Y14 v4l2_fourcc('Y', '1', '4', ' ') /* 14 Greyscale */
|
#define V4L2_PIX_FMT_Y14 v4l2_fourcc('Y', '1', '4', ' ') /* 14 Greyscale */
|
||||||
#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */
|
#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */
|
||||||
#define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */
|
#define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */
|
||||||
|
@ -563,6 +571,7 @@ struct v4l2_pix_format {
|
||||||
/* Grey bit-packed formats */
|
/* Grey bit-packed formats */
|
||||||
#define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */
|
#define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */
|
||||||
#define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P') /* 10 Greyscale, MIPI RAW10 packed */
|
#define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P') /* 10 Greyscale, MIPI RAW10 packed */
|
||||||
|
#define V4L2_PIX_FMT_IPU3_Y10 v4l2_fourcc('i', 'p', '3', 'y') /* IPU3 packed 10-bit greyscale */
|
||||||
|
|
||||||
/* Palette formats */
|
/* Palette formats */
|
||||||
#define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */
|
#define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */
|
||||||
|
@ -586,7 +595,18 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */
|
#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */
|
||||||
#define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A') /* 32 VUYA-8-8-8-8 */
|
#define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A') /* 32 VUYA-8-8-8-8 */
|
||||||
#define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X') /* 32 VUYX-8-8-8-8 */
|
#define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X') /* 32 VUYX-8-8-8-8 */
|
||||||
|
#define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A') /* 32 YUVA-8-8-8-8 */
|
||||||
|
#define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X') /* 32 YUVX-8-8-8-8 */
|
||||||
#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */
|
#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */
|
||||||
|
#define V4L2_PIX_FMT_YUV48_12 v4l2_fourcc('Y', '3', '1', '2') /* 48 YUV 4:4:4 12-bit per component */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* YCbCr packed format. For each Y2xx format, xx bits of valid data occupy the MSBs
|
||||||
|
* of the 16 bit components, and 16-xx bits of zero padding occupy the LSBs.
|
||||||
|
*/
|
||||||
|
#define V4L2_PIX_FMT_Y210 v4l2_fourcc('Y', '2', '1', '0') /* 32 YUYV 4:2:2 */
|
||||||
|
#define V4L2_PIX_FMT_Y212 v4l2_fourcc('Y', '2', '1', '2') /* 32 YUYV 4:2:2 */
|
||||||
|
#define V4L2_PIX_FMT_Y216 v4l2_fourcc('Y', '2', '1', '6') /* 32 YUYV 4:2:2 */
|
||||||
|
|
||||||
/* two planes -- one Y, one Cr + Cb interleaved */
|
/* two planes -- one Y, one Cr + Cb interleaved */
|
||||||
#define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
#define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
||||||
|
@ -596,12 +616,14 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
|
#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
|
||||||
#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
|
#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
|
||||||
#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0') /* 24 Y/CbCr 4:2:0 10-bit per component */
|
#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0') /* 24 Y/CbCr 4:2:0 10-bit per component */
|
||||||
|
#define V4L2_PIX_FMT_P012 v4l2_fourcc('P', '0', '1', '2') /* 24 Y/CbCr 4:2:0 12-bit per component */
|
||||||
|
|
||||||
/* two non contiguous planes - one Y, one Cr + Cb interleaved */
|
/* two non contiguous planes - one Y, one Cr + Cb interleaved */
|
||||||
#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
||||||
#define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */
|
#define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */
|
||||||
#define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */
|
#define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */
|
||||||
#define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
#define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
||||||
|
#define V4L2_PIX_FMT_P012M v4l2_fourcc('P', 'M', '1', '2') /* 24 Y/CbCr 4:2:0 12-bit per component */
|
||||||
|
|
||||||
/* three planes - Y Cb, Cr */
|
/* three planes - Y Cb, Cr */
|
||||||
#define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */
|
#define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */
|
||||||
|
@ -623,10 +645,16 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 4x4 tiles */
|
#define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 4x4 tiles */
|
||||||
#define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */
|
#define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */
|
||||||
#define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 32x32 tiles */
|
#define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 32x32 tiles */
|
||||||
|
#define V4L2_PIX_FMT_NV15_4L4 v4l2_fourcc('V', 'T', '1', '5') /* 15 Y/CbCr 4:2:0 10-bit 4x4 tiles */
|
||||||
|
#define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0') /* 12 Y/CbCr 4:2:0 10-bit 4x4 macroblocks */
|
||||||
|
#define V4L2_PIX_FMT_NV12_8L128 v4l2_fourcc('A', 'T', '1', '2') /* Y/CbCr 4:2:0 8x128 tiles */
|
||||||
|
#define V4L2_PIX_FMT_NV12_10BE_8L128 v4l2_fourcc_be('A', 'X', '1', '2') /* Y/CbCr 4:2:0 10-bit 8x128 tiles */
|
||||||
|
|
||||||
/* Tiled YUV formats, non contiguous planes */
|
/* Tiled YUV formats, non contiguous planes */
|
||||||
#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 tiles */
|
#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 tiles */
|
||||||
#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */
|
#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */
|
||||||
|
#define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2') /* Y/CbCr 4:2:0 8x128 tiles */
|
||||||
|
#define V4L2_PIX_FMT_NV12M_10BE_8L128 v4l2_fourcc_be('N', 'T', '1', '2') /* Y/CbCr 4:2:0 10-bit 8x128 tiles */
|
||||||
|
|
||||||
/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
|
/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
|
||||||
#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */
|
#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */
|
||||||
|
@ -704,6 +732,10 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */
|
#define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */
|
||||||
#define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */
|
#define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */
|
||||||
#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */
|
#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */
|
||||||
|
#define V4L2_PIX_FMT_AV1_FRAME v4l2_fourcc('A', 'V', '1', 'F') /* AV1 parsed frame */
|
||||||
|
#define V4L2_PIX_FMT_SPK v4l2_fourcc('S', 'P', 'K', '0') /* Sorenson Spark */
|
||||||
|
#define V4L2_PIX_FMT_RV30 v4l2_fourcc('R', 'V', '3', '0') /* RealVideo 8 */
|
||||||
|
#define V4L2_PIX_FMT_RV40 v4l2_fourcc('R', 'V', '4', '0') /* RealVideo 9 & 10 */
|
||||||
|
|
||||||
/* Vendor-specific formats */
|
/* Vendor-specific formats */
|
||||||
#define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
|
#define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
|
||||||
|
@ -740,8 +772,11 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */
|
#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */
|
||||||
#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */
|
#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */
|
||||||
#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */
|
#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */
|
||||||
|
#define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C') /* Qualcomm 8-bit compressed */
|
||||||
|
#define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C') /* Qualcomm 10-bit compressed */
|
||||||
|
#define V4L2_PIX_FMT_AJPG v4l2_fourcc('A', 'J', 'P', 'G') /* Aspeed JPEG */
|
||||||
|
|
||||||
/* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */
|
/* 10bit raw packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */
|
||||||
#define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */
|
#define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */
|
||||||
#define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g') /* IPU3 packed 10-bit GBRG bayer */
|
#define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g') /* IPU3 packed 10-bit GBRG bayer */
|
||||||
#define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G') /* IPU3 packed 10-bit GRBG bayer */
|
#define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G') /* IPU3 packed 10-bit GRBG bayer */
|
||||||
|
@ -1543,7 +1578,8 @@ struct v4l2_bt_timings {
|
||||||
((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
|
((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
|
||||||
#define V4L2_DV_BT_BLANKING_HEIGHT(bt) \
|
#define V4L2_DV_BT_BLANKING_HEIGHT(bt) \
|
||||||
((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \
|
((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \
|
||||||
(bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
|
((bt)->interlaced ? \
|
||||||
|
((bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) : 0))
|
||||||
#define V4L2_DV_BT_FRAME_HEIGHT(bt) \
|
#define V4L2_DV_BT_FRAME_HEIGHT(bt) \
|
||||||
((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
|
((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
|
||||||
|
|
||||||
|
@ -1634,7 +1670,7 @@ struct v4l2_input {
|
||||||
__u8 name[32]; /* Label */
|
__u8 name[32]; /* Label */
|
||||||
__u32 type; /* Type of input */
|
__u32 type; /* Type of input */
|
||||||
__u32 audioset; /* Associated audios (bitfield) */
|
__u32 audioset; /* Associated audios (bitfield) */
|
||||||
__u32 tuner; /* enum v4l2_tuner_type */
|
__u32 tuner; /* Tuner index */
|
||||||
v4l2_std_id std;
|
v4l2_std_id std;
|
||||||
__u32 status;
|
__u32 status;
|
||||||
__u32 capabilities;
|
__u32 capabilities;
|
||||||
|
@ -1721,6 +1757,8 @@ struct v4l2_ext_control {
|
||||||
__u8 *p_u8;
|
__u8 *p_u8;
|
||||||
__u16 *p_u16;
|
__u16 *p_u16;
|
||||||
__u32 *p_u32;
|
__u32 *p_u32;
|
||||||
|
__s32 *p_s32;
|
||||||
|
__s64 *p_s64;
|
||||||
struct v4l2_area *p_area;
|
struct v4l2_area *p_area;
|
||||||
struct v4l2_ctrl_h264_sps *p_h264_sps;
|
struct v4l2_ctrl_h264_sps *p_h264_sps;
|
||||||
struct v4l2_ctrl_h264_pps *p_h264_pps;
|
struct v4l2_ctrl_h264_pps *p_h264_pps;
|
||||||
|
@ -1740,6 +1778,10 @@ struct v4l2_ext_control {
|
||||||
struct v4l2_ctrl_hevc_slice_params *p_hevc_slice_params;
|
struct v4l2_ctrl_hevc_slice_params *p_hevc_slice_params;
|
||||||
struct v4l2_ctrl_hevc_scaling_matrix *p_hevc_scaling_matrix;
|
struct v4l2_ctrl_hevc_scaling_matrix *p_hevc_scaling_matrix;
|
||||||
struct v4l2_ctrl_hevc_decode_params *p_hevc_decode_params;
|
struct v4l2_ctrl_hevc_decode_params *p_hevc_decode_params;
|
||||||
|
struct v4l2_ctrl_av1_sequence *p_av1_sequence;
|
||||||
|
struct v4l2_ctrl_av1_tile_group_entry *p_av1_tile_group_entry;
|
||||||
|
struct v4l2_ctrl_av1_frame *p_av1_frame;
|
||||||
|
struct v4l2_ctrl_av1_film_grain *p_av1_film_grain;
|
||||||
void *ptr;
|
void *ptr;
|
||||||
};
|
};
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
@ -1757,9 +1799,7 @@ struct v4l2_ext_controls {
|
||||||
};
|
};
|
||||||
|
|
||||||
#define V4L2_CTRL_ID_MASK (0x0fffffff)
|
#define V4L2_CTRL_ID_MASK (0x0fffffff)
|
||||||
#ifndef __KERNEL__
|
|
||||||
#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
|
#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
|
||||||
#endif
|
|
||||||
#define V4L2_CTRL_ID2WHICH(id) ((id) & 0x0fff0000UL)
|
#define V4L2_CTRL_ID2WHICH(id) ((id) & 0x0fff0000UL)
|
||||||
#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
|
#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
|
||||||
#define V4L2_CTRL_MAX_DIMS (4)
|
#define V4L2_CTRL_MAX_DIMS (4)
|
||||||
|
@ -1811,6 +1851,11 @@ enum v4l2_ctrl_type {
|
||||||
V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
|
V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
|
||||||
V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
|
V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
|
||||||
V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
|
V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
|
||||||
|
|
||||||
|
V4L2_CTRL_TYPE_AV1_SEQUENCE = 0x280,
|
||||||
|
V4L2_CTRL_TYPE_AV1_TILE_GROUP_ENTRY = 0x281,
|
||||||
|
V4L2_CTRL_TYPE_AV1_FRAME = 0x282,
|
||||||
|
V4L2_CTRL_TYPE_AV1_FILM_GRAIN = 0x283,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
|
/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
|
||||||
|
@ -2374,6 +2419,7 @@ struct v4l2_event_vsync {
|
||||||
#define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
|
#define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
|
||||||
#define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
|
#define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
|
||||||
#define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
|
#define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
|
||||||
|
#define V4L2_EVENT_CTRL_CH_DIMENSIONS (1 << 3)
|
||||||
|
|
||||||
struct v4l2_event_ctrl {
|
struct v4l2_event_ctrl {
|
||||||
__u32 changes;
|
__u32 changes;
|
||||||
|
@ -2616,5 +2662,10 @@ struct v4l2_create_buffers {
|
||||||
/* Deprecated definitions kept for backwards compatibility */
|
/* Deprecated definitions kept for backwards compatibility */
|
||||||
#define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
|
#define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
|
||||||
#define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
|
#define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
|
||||||
|
/*
|
||||||
|
* This capability was never implemented, anyone using this cap should drop it
|
||||||
|
* from their code.
|
||||||
|
*/
|
||||||
|
#define V4L2_CAP_ASYNCIO 0x02000000
|
||||||
|
|
||||||
#endif /* __LINUX_VIDEODEV2_H */
|
#endif /* __LINUX_VIDEODEV2_H */
|
||||||
|
|
|
@ -10,45 +10,6 @@
|
||||||
*
|
*
|
||||||
* Copyright (C) 2012 Nokia Corporation
|
* Copyright (C) 2012 Nokia Corporation
|
||||||
* Contact: Sakari Ailus <sakari.ailus@iki.fi>
|
* Contact: Sakari Ailus <sakari.ailus@iki.fi>
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __V4L2_COMMON__
|
#ifndef __V4L2_COMMON__
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -243,6 +243,7 @@ enum v4l2_colorspace {
|
||||||
|
|
||||||
/* DCI-P3 colorspace, used by cinema projectors */
|
/* DCI-P3 colorspace, used by cinema projectors */
|
||||||
V4L2_COLORSPACE_DCI_P3 = 12,
|
V4L2_COLORSPACE_DCI_P3 = 12,
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -474,7 +475,6 @@ struct v4l2_capability {
|
||||||
#define V4L2_CAP_META_CAPTURE 0x00800000 /* Is a metadata capture device */
|
#define V4L2_CAP_META_CAPTURE 0x00800000 /* Is a metadata capture device */
|
||||||
|
|
||||||
#define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */
|
#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 */
|
#define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */
|
||||||
#define V4L2_CAP_META_OUTPUT 0x08000000 /* Is a metadata output device */
|
#define V4L2_CAP_META_OUTPUT 0x08000000 /* Is a metadata output device */
|
||||||
|
|
||||||
|
@ -549,6 +549,13 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_RGBX32 v4l2_fourcc('X', 'B', '2', '4') /* 32 RGBX-8-8-8-8 */
|
#define V4L2_PIX_FMT_RGBX32 v4l2_fourcc('X', 'B', '2', '4') /* 32 RGBX-8-8-8-8 */
|
||||||
#define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */
|
#define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */
|
||||||
#define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */
|
#define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */
|
||||||
|
#define V4L2_PIX_FMT_RGBX1010102 v4l2_fourcc('R', 'X', '3', '0') /* 32 RGBX-10-10-10-2 */
|
||||||
|
#define V4L2_PIX_FMT_RGBA1010102 v4l2_fourcc('R', 'A', '3', '0') /* 32 RGBA-10-10-10-2 */
|
||||||
|
#define V4L2_PIX_FMT_ARGB2101010 v4l2_fourcc('A', 'R', '3', '0') /* 32 ARGB-2-10-10-10 */
|
||||||
|
|
||||||
|
/* RGB formats (6 or 8 bytes per pixel) */
|
||||||
|
#define V4L2_PIX_FMT_BGR48_12 v4l2_fourcc('B', '3', '1', '2') /* 48 BGR 12-bit per component */
|
||||||
|
#define V4L2_PIX_FMT_ABGR64_12 v4l2_fourcc('B', '4', '1', '2') /* 64 BGRA 12-bit per component */
|
||||||
|
|
||||||
/* Grey formats */
|
/* Grey formats */
|
||||||
#define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */
|
#define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */
|
||||||
|
@ -556,6 +563,7 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */
|
#define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */
|
||||||
#define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */
|
#define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */
|
||||||
#define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */
|
#define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */
|
||||||
|
#define V4L2_PIX_FMT_Y012 v4l2_fourcc('Y', '0', '1', '2') /* 12 Greyscale */
|
||||||
#define V4L2_PIX_FMT_Y14 v4l2_fourcc('Y', '1', '4', ' ') /* 14 Greyscale */
|
#define V4L2_PIX_FMT_Y14 v4l2_fourcc('Y', '1', '4', ' ') /* 14 Greyscale */
|
||||||
#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */
|
#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */
|
||||||
#define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */
|
#define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */
|
||||||
|
@ -563,6 +571,7 @@ struct v4l2_pix_format {
|
||||||
/* Grey bit-packed formats */
|
/* Grey bit-packed formats */
|
||||||
#define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */
|
#define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */
|
||||||
#define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P') /* 10 Greyscale, MIPI RAW10 packed */
|
#define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P') /* 10 Greyscale, MIPI RAW10 packed */
|
||||||
|
#define V4L2_PIX_FMT_IPU3_Y10 v4l2_fourcc('i', 'p', '3', 'y') /* IPU3 packed 10-bit greyscale */
|
||||||
|
|
||||||
/* Palette formats */
|
/* Palette formats */
|
||||||
#define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */
|
#define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */
|
||||||
|
@ -586,7 +595,18 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */
|
#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */
|
||||||
#define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A') /* 32 VUYA-8-8-8-8 */
|
#define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A') /* 32 VUYA-8-8-8-8 */
|
||||||
#define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X') /* 32 VUYX-8-8-8-8 */
|
#define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X') /* 32 VUYX-8-8-8-8 */
|
||||||
|
#define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A') /* 32 YUVA-8-8-8-8 */
|
||||||
|
#define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X') /* 32 YUVX-8-8-8-8 */
|
||||||
#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */
|
#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */
|
||||||
|
#define V4L2_PIX_FMT_YUV48_12 v4l2_fourcc('Y', '3', '1', '2') /* 48 YUV 4:4:4 12-bit per component */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* YCbCr packed format. For each Y2xx format, xx bits of valid data occupy the MSBs
|
||||||
|
* of the 16 bit components, and 16-xx bits of zero padding occupy the LSBs.
|
||||||
|
*/
|
||||||
|
#define V4L2_PIX_FMT_Y210 v4l2_fourcc('Y', '2', '1', '0') /* 32 YUYV 4:2:2 */
|
||||||
|
#define V4L2_PIX_FMT_Y212 v4l2_fourcc('Y', '2', '1', '2') /* 32 YUYV 4:2:2 */
|
||||||
|
#define V4L2_PIX_FMT_Y216 v4l2_fourcc('Y', '2', '1', '6') /* 32 YUYV 4:2:2 */
|
||||||
|
|
||||||
/* two planes -- one Y, one Cr + Cb interleaved */
|
/* two planes -- one Y, one Cr + Cb interleaved */
|
||||||
#define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
#define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
||||||
|
@ -595,12 +615,15 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
||||||
#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
|
#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
|
||||||
#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
|
#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
|
||||||
|
#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0') /* 24 Y/CbCr 4:2:0 10-bit per component */
|
||||||
|
#define V4L2_PIX_FMT_P012 v4l2_fourcc('P', '0', '1', '2') /* 24 Y/CbCr 4:2:0 12-bit per component */
|
||||||
|
|
||||||
/* two non contiguous planes - one Y, one Cr + Cb interleaved */
|
/* two non contiguous planes - one Y, one Cr + Cb interleaved */
|
||||||
#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
||||||
#define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */
|
#define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */
|
||||||
#define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */
|
#define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */
|
||||||
#define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
#define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
||||||
|
#define V4L2_PIX_FMT_P012M v4l2_fourcc('P', 'M', '1', '2') /* 24 Y/CbCr 4:2:0 12-bit per component */
|
||||||
|
|
||||||
/* three planes - Y Cb, Cr */
|
/* three planes - Y Cb, Cr */
|
||||||
#define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */
|
#define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */
|
||||||
|
@ -622,6 +645,10 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 4x4 tiles */
|
#define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 4x4 tiles */
|
||||||
#define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */
|
#define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */
|
||||||
#define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 32x32 tiles */
|
#define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 32x32 tiles */
|
||||||
|
#define V4L2_PIX_FMT_NV15_4L4 v4l2_fourcc('V', 'T', '1', '5') /* 15 Y/CbCr 4:2:0 10-bit 4x4 tiles */
|
||||||
|
#define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0') /* 12 Y/CbCr 4:2:0 10-bit 4x4 macroblocks */
|
||||||
|
#define V4L2_PIX_FMT_NV12_8L128 v4l2_fourcc('A', 'T', '1', '2') /* Y/CbCr 4:2:0 8x128 tiles */
|
||||||
|
#define V4L2_PIX_FMT_NV12_10BE_8L128 v4l2_fourcc_be('A', 'X', '1', '2') /* Y/CbCr 4:2:0 10-bit 8x128 tiles */
|
||||||
|
|
||||||
/* Tiled YUV formats, non contiguous planes */
|
/* Tiled YUV formats, non contiguous planes */
|
||||||
#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 tiles */
|
#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 tiles */
|
||||||
|
@ -704,6 +731,11 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */
|
#define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */
|
||||||
#define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */
|
#define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */
|
||||||
#define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */
|
#define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */
|
||||||
|
#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */
|
||||||
|
#define V4L2_PIX_FMT_AV1_FRAME v4l2_fourcc('A', 'V', '1', 'F') /* AV1 parsed frame */
|
||||||
|
#define V4L2_PIX_FMT_SPK v4l2_fourcc('S', 'P', 'K', '0') /* Sorenson Spark */
|
||||||
|
#define V4L2_PIX_FMT_RV30 v4l2_fourcc('R', 'V', '3', '0') /* RealVideo 8 */
|
||||||
|
#define V4L2_PIX_FMT_RV40 v4l2_fourcc('R', 'V', '4', '0') /* RealVideo 9 & 10 */
|
||||||
|
|
||||||
/* Vendor-specific formats */
|
/* Vendor-specific formats */
|
||||||
#define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
|
#define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
|
||||||
|
@ -740,8 +772,11 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */
|
#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */
|
||||||
#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */
|
#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */
|
||||||
#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */
|
#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */
|
||||||
|
#define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C') /* Qualcomm 8-bit compressed */
|
||||||
|
#define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C') /* Qualcomm 10-bit compressed */
|
||||||
|
#define V4L2_PIX_FMT_AJPG v4l2_fourcc('A', 'J', 'P', 'G') /* Aspeed JPEG */
|
||||||
|
|
||||||
/* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */
|
/* 10bit raw packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */
|
||||||
#define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */
|
#define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */
|
||||||
#define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g') /* IPU3 packed 10-bit GBRG bayer */
|
#define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g') /* IPU3 packed 10-bit GBRG bayer */
|
||||||
#define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G') /* IPU3 packed 10-bit GRBG bayer */
|
#define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G') /* IPU3 packed 10-bit GRBG bayer */
|
||||||
|
@ -1543,7 +1578,8 @@ struct v4l2_bt_timings {
|
||||||
((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
|
((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
|
||||||
#define V4L2_DV_BT_BLANKING_HEIGHT(bt) \
|
#define V4L2_DV_BT_BLANKING_HEIGHT(bt) \
|
||||||
((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \
|
((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \
|
||||||
(bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
|
((bt)->interlaced ? \
|
||||||
|
((bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) : 0))
|
||||||
#define V4L2_DV_BT_FRAME_HEIGHT(bt) \
|
#define V4L2_DV_BT_FRAME_HEIGHT(bt) \
|
||||||
((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
|
((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
|
||||||
|
|
||||||
|
@ -1634,7 +1670,7 @@ struct v4l2_input {
|
||||||
__u8 name[32]; /* Label */
|
__u8 name[32]; /* Label */
|
||||||
__u32 type; /* Type of input */
|
__u32 type; /* Type of input */
|
||||||
__u32 audioset; /* Associated audios (bitfield) */
|
__u32 audioset; /* Associated audios (bitfield) */
|
||||||
__u32 tuner; /* enum v4l2_tuner_type */
|
__u32 tuner; /* Tuner index */
|
||||||
v4l2_std_id std;
|
v4l2_std_id std;
|
||||||
__u32 status;
|
__u32 status;
|
||||||
__u32 capabilities;
|
__u32 capabilities;
|
||||||
|
@ -1721,6 +1757,8 @@ struct v4l2_ext_control {
|
||||||
__u8 *p_u8;
|
__u8 *p_u8;
|
||||||
__u16 *p_u16;
|
__u16 *p_u16;
|
||||||
__u32 *p_u32;
|
__u32 *p_u32;
|
||||||
|
__s32 *p_s32;
|
||||||
|
__s64 *p_s64;
|
||||||
struct v4l2_area *p_area;
|
struct v4l2_area *p_area;
|
||||||
struct v4l2_ctrl_h264_sps *p_h264_sps;
|
struct v4l2_ctrl_h264_sps *p_h264_sps;
|
||||||
struct v4l2_ctrl_h264_pps *p_h264_pps;
|
struct v4l2_ctrl_h264_pps *p_h264_pps;
|
||||||
|
@ -1735,6 +1773,15 @@ struct v4l2_ext_control {
|
||||||
struct v4l2_ctrl_mpeg2_quantisation *p_mpeg2_quantisation;
|
struct v4l2_ctrl_mpeg2_quantisation *p_mpeg2_quantisation;
|
||||||
struct v4l2_ctrl_vp9_compressed_hdr *p_vp9_compressed_hdr_probs;
|
struct v4l2_ctrl_vp9_compressed_hdr *p_vp9_compressed_hdr_probs;
|
||||||
struct v4l2_ctrl_vp9_frame *p_vp9_frame;
|
struct v4l2_ctrl_vp9_frame *p_vp9_frame;
|
||||||
|
struct v4l2_ctrl_hevc_sps *p_hevc_sps;
|
||||||
|
struct v4l2_ctrl_hevc_pps *p_hevc_pps;
|
||||||
|
struct v4l2_ctrl_hevc_slice_params *p_hevc_slice_params;
|
||||||
|
struct v4l2_ctrl_hevc_scaling_matrix *p_hevc_scaling_matrix;
|
||||||
|
struct v4l2_ctrl_hevc_decode_params *p_hevc_decode_params;
|
||||||
|
struct v4l2_ctrl_av1_sequence *p_av1_sequence;
|
||||||
|
struct v4l2_ctrl_av1_tile_group_entry *p_av1_tile_group_entry;
|
||||||
|
struct v4l2_ctrl_av1_frame *p_av1_frame;
|
||||||
|
struct v4l2_ctrl_av1_film_grain *p_av1_film_grain;
|
||||||
void *ptr;
|
void *ptr;
|
||||||
};
|
};
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
@ -1752,9 +1799,7 @@ struct v4l2_ext_controls {
|
||||||
};
|
};
|
||||||
|
|
||||||
#define V4L2_CTRL_ID_MASK (0x0fffffff)
|
#define V4L2_CTRL_ID_MASK (0x0fffffff)
|
||||||
#ifndef __KERNEL__
|
|
||||||
#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
|
#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
|
||||||
#endif
|
|
||||||
#define V4L2_CTRL_ID2WHICH(id) ((id) & 0x0fff0000UL)
|
#define V4L2_CTRL_ID2WHICH(id) ((id) & 0x0fff0000UL)
|
||||||
#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
|
#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
|
||||||
#define V4L2_CTRL_MAX_DIMS (4)
|
#define V4L2_CTRL_MAX_DIMS (4)
|
||||||
|
@ -1800,6 +1845,17 @@ enum v4l2_ctrl_type {
|
||||||
|
|
||||||
V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260,
|
V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260,
|
||||||
V4L2_CTRL_TYPE_VP9_FRAME = 0x0261,
|
V4L2_CTRL_TYPE_VP9_FRAME = 0x0261,
|
||||||
|
|
||||||
|
V4L2_CTRL_TYPE_HEVC_SPS = 0x0270,
|
||||||
|
V4L2_CTRL_TYPE_HEVC_PPS = 0x0271,
|
||||||
|
V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
|
||||||
|
V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
|
||||||
|
V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
|
||||||
|
|
||||||
|
V4L2_CTRL_TYPE_AV1_SEQUENCE = 0x280,
|
||||||
|
V4L2_CTRL_TYPE_AV1_TILE_GROUP_ENTRY = 0x281,
|
||||||
|
V4L2_CTRL_TYPE_AV1_FRAME = 0x282,
|
||||||
|
V4L2_CTRL_TYPE_AV1_FILM_GRAIN = 0x283,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
|
/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
|
||||||
|
@ -1855,6 +1911,7 @@ struct v4l2_querymenu {
|
||||||
#define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
|
#define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
|
||||||
#define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
|
#define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
|
||||||
#define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
|
#define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
|
||||||
|
#define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800
|
||||||
|
|
||||||
/* Query flags, to be ORed with the control ID */
|
/* Query flags, to be ORed with the control ID */
|
||||||
#define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
|
#define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
|
||||||
|
@ -2362,6 +2419,7 @@ struct v4l2_event_vsync {
|
||||||
#define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
|
#define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
|
||||||
#define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
|
#define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
|
||||||
#define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
|
#define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
|
||||||
|
#define V4L2_EVENT_CTRL_CH_DIMENSIONS (1 << 3)
|
||||||
|
|
||||||
struct v4l2_event_ctrl {
|
struct v4l2_event_ctrl {
|
||||||
__u32 changes;
|
__u32 changes;
|
||||||
|
@ -2604,5 +2662,10 @@ struct v4l2_create_buffers {
|
||||||
/* Deprecated definitions kept for backwards compatibility */
|
/* Deprecated definitions kept for backwards compatibility */
|
||||||
#define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
|
#define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
|
||||||
#define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
|
#define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
|
||||||
|
/*
|
||||||
|
* This capability was never implemented, anyone using this cap should drop it
|
||||||
|
* from their code.
|
||||||
|
*/
|
||||||
|
#define V4L2_CAP_ASYNCIO 0x02000000
|
||||||
|
|
||||||
#endif /* __LINUX_VIDEODEV2_H */
|
#endif /* __LINUX_VIDEODEV2_H */
|
||||||
|
|
Loading…
Reference in a new issue