1.16. 无状态编解码器控制参考

无状态编解码器控制类旨在支持无状态解码器和编码器(即硬件加速器)。

这些驱动程序通常由内存到内存无状态视频解码器接口支持,并处理已解析的像素格式,例如 V4L2_PIX_FMT_H264_SLICE。

1.16.1. 无状态编解码器控制 ID

V4L2_CID_CODEC_STATELESS_CLASS (class)

无状态编解码器类描述符。

V4L2_CID_STATELESS_H264_SPS (struct)

指定关联的 H264 切片数据的序列参数集(从码流中提取)。这包括配置 H264 无状态硬件解码流水线的必要参数。码流参数根据ITU-T Rec. H.264 规范(2017 年 4 月版),第 7.4.2.1.1 节 “序列参数集数据语义”定义。有关更多文档,请参阅上述规范,除非有明确的注释另行说明。

type v4l2_ctrl_h264_sps
struct v4l2_ctrl_h264_sps

__u8

profile_idc

__u8

constraint_set_flags

参见序列参数集约束集标志

__u8

level_idc

__u8

seq_parameter_set_id

__u8

chroma_format_idc

__u8

bit_depth_luma_minus8

__u8

bit_depth_chroma_minus8

__u8

log2_max_frame_num_minus4

__u8

pic_order_cnt_type

__u8

log2_max_pic_order_cnt_lsb_minus4

__u8

max_num_ref_frames

__u8

num_ref_frames_in_pic_order_cnt_cycle

__s32

offset_for_ref_frame[255]

__s32

offset_for_non_ref_pic

__s32

offset_for_top_to_bottom_field

__u16

pic_width_in_mbs_minus1

__u16

pic_height_in_map_units_minus1

__u32

flags

参见序列参数集标志

序列 参数 约束 标志

V4L2_H264_SPS_CONSTRAINT_SET0_FLAG

0x00000001

V4L2_H264_SPS_CONSTRAINT_SET1_FLAG

0x00000002

V4L2_H264_SPS_CONSTRAINT_SET2_FLAG

0x00000004

V4L2_H264_SPS_CONSTRAINT_SET3_FLAG

0x00000008

V4L2_H264_SPS_CONSTRAINT_SET4_FLAG

0x00000010

V4L2_H264_SPS_CONSTRAINT_SET5_FLAG

0x00000020

序列 参数 标志

V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE

0x00000001

V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS

0x00000002

V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO

0x00000004

V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED

0x00000008

V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY

0x00000010

V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD

0x00000020

V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE

0x00000040

V4L2_CID_STATELESS_H264_PPS (struct)

指定关联的 H264 切片数据的图片参数集(从码流中提取)。这包括配置 H264 无状态硬件解码流水线的必要参数。码流参数根据ITU-T Rec. H.264 规范(2017 年 4 月版),第 7.4.2.2 节 “图片参数集 RBSP 语义”定义。有关更多文档,请参阅上述规范,除非有明确的注释另行说明。

type v4l2_ctrl_h264_pps
struct v4l2_ctrl_h264_pps

__u8

pic_parameter_set_id

__u8

seq_parameter_set_id

__u8

num_slice_groups_minus1

__u8

num_ref_idx_l0_default_active_minus1

__u8

num_ref_idx_l1_default_active_minus1

__u8

weighted_bipred_idc

__s8

pic_init_qp_minus26

__s8

pic_init_qs_minus26

__s8

chroma_qp_index_offset

__s8

second_chroma_qp_index_offset

__u16

flags

参见图片参数集标志

图片 参数 标志

V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE

0x0001

V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT

0x0002

V4L2_H264_PPS_FLAG_WEIGHTED_PRED

0x0004

V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT

0x0008

V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED

0x0010

V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT

0x0020

V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE

0x0040

V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT

0x0080

V4L2_CID_STATELESS_H264_SCALING_MATRIX必须用于此图片。

V4L2_CID_STATELESS_H264_SCALING_MATRIX (struct)

指定关联的 H264 切片数据的缩放矩阵(从码流中提取)。码流参数根据ITU-T Rec. H.264 规范(2017 年 4 月版),第 7.4.2.1.1.1 节 “缩放列表语义”定义。有关更多文档,请参阅上述规范,除非有明确的注释另行说明。

type v4l2_ctrl_h264_scaling_matrix
struct v4l2_ctrl_h264_scaling_matrix

__u8

scaling_list_4x4[6][16]

应用逆扫描过程后的缩放矩阵。预期列表顺序为 Intra Y、Intra Cb、Intra Cr、Inter Y、Inter Cb、Inter Cr。每个缩放列表中的值都应按栅格扫描顺序排列。

__u8

scaling_list_8x8[6][64]

应用逆扫描过程后的缩放矩阵。预期列表顺序为 Intra Y、Inter Y、Intra Cb、Inter Cb、Intra Cr、Inter Cr。每个缩放列表中的值都应按栅格扫描顺序排列。

V4L2_CID_STATELESS_H264_SLICE_PARAMS (struct)

指定关联的 H264 切片数据的切片参数(从码流中提取)。这包括配置 H264 无状态硬件解码流水线的必要参数。码流参数根据ITU-T Rec. H.264 规范(2017 年 4 月版),第 7.4.3 节 “切片头语义”定义。有关更多文档,请参阅上述规范,除非有明确的注释另行说明。

type v4l2_ctrl_h264_slice_params
struct v4l2_ctrl_h264_slice_params

__u32

header_bit_size

从该切片的开头到 slice_data() 的位偏移量。

__u32

first_mb_in_slice

__u8

slice_type

__u8

colour_plane_id

__u8

redundant_pic_cnt

__u8

cabac_init_idc

__s8

slice_qp_delta

__s8

slice_qs_delta

__u8

disable_deblocking_filter_idc

__s8

slice_alpha_c0_offset_div2

__s8

slice_beta_offset_div2

__u8

num_ref_idx_l0_active_minus1

如果未设置 num_ref_idx_active_override_flag,则此字段必须设置为 num_ref_idx_l0_default_active_minus1 的值

__u8

num_ref_idx_l1_active_minus1

如果未设置 num_ref_idx_active_override_flag,则此字段必须设置为 num_ref_idx_l1_default_active_minus1 的值

__u8

reserved

应用程序和驱动程序必须将此设置为零。

struct v4l2_h264_reference

ref_pic_list0[32]

应用每切片修改后的参考图片列表

struct v4l2_h264_reference

ref_pic_list1[32]

应用每切片修改后的参考图片列表

__u32

flags

参见切片参数标志

切片 参数 标志

V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED

0x00000001

V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH

0x00000002

V4L2_CID_STATELESS_H264_PRED_WEIGHTS (struct)

根据ITU-T Rec. H.264 规范(2017 年 4 月版),第 7.4.3.2 节 “预测权重表语义”定义的预测权重表。预测权重表必须由应用程序在 7.3.3 节 “切片头语法”中解释的条件下传递。

type v4l2_ctrl_h264_pred_weights
struct v4l2_ctrl_h264_pred_weights

__u16

luma_log2_weight_denom

__u16

chroma_log2_weight_denom

struct v4l2_h264_weight_factors

weight_factors[2]

索引 0 处的权重因子是参考列表 0 的权重因子,索引 1 处的权重因子是参考列表 1 的权重因子。

type v4l2_h264_weight_factors
struct v4l2_h264_weight_factors

__s16

luma_weight[32]

__s16

luma_offset[32]

__s16

chroma_weight[32][2]

__s16

chroma_offset[32][2]

图片 参考

type v4l2_h264_reference
struct v4l2_h264_reference

__u8

fields

指定如何引用图片。参见参考字段

__u8

index

索引到v4l2_ctrl_h264_decode_params.dpb 数组中。

参考 字段

V4L2_H264_TOP_FIELD_REF

0x1

场对中的顶部场用于短期参考。

V4L2_H264_BOTTOM_FIELD_REF

0x2

场对中的底部场用于短期参考。

V4L2_H264_FRAME_REF

0x3

帧(或顶部/底部场,如果它是场对)用于短期参考。

V4L2_CID_STATELESS_H264_DECODE_PARAMS (struct)

指定关联的 H264 切片数据的解码参数(从码流中提取)。这包括配置 H264 无状态硬件解码流水线的必要参数。码流参数根据ITU-T Rec. H.264 规范(2017 年 4 月版)定义。有关更多文档,请参阅上述规范,除非有明确的注释另行说明。

type v4l2_ctrl_h264_decode_params
struct v4l2_ctrl_h264_decode_params

struct v4l2_h264_dpb_entry

dpb[16]

__u16

nal_ref_idc

来自 NAL 单元头的 NAL 参考 ID 值

__u16

frame_num

__s32

top_field_order_cnt

编码顶部场的图片顺序计数

__s32

bottom_field_order_cnt

编码底部场的图片顺序计数

__u16

idr_pic_id

__u16

pic_order_cnt_lsb

__s32

delta_pic_order_cnt_bottom

__s32

delta_pic_order_cnt0

__s32

delta_pic_order_cnt1

__u32

dec_ref_pic_marking_bit_size

dec_ref_pic_marking() 语法元素的大小(以位为单位)。

__u32

pic_order_cnt_bit_size

图片顺序计数相关语法元素的组合大小(以位为单位):pic_order_cnt_lsb、delta_pic_order_cnt_bottom、delta_pic_order_cnt0 和 delta_pic_order_cnt1。

__u32

slice_group_change_cycle

__u32

reserved

应用程序和驱动程序必须将此设置为零。

__u32

flags

参见解码参数标志

解码 参数 标志

V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC

0x00000001

该图片是 IDR 图片

V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC

0x00000002

V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD

0x00000004

V4L2_H264_DECODE_PARAM_FLAG_PFRAME

0x00000008

V4L2_H264_DECODE_PARAM_FLAG_BFRAME

0x00000010

type v4l2_h264_dpb_entry
struct v4l2_h264_dpb_entry

__u64

reference_ts

用作参考的 V4L2 捕获缓冲区的时间戳,与 B 编码帧和 P 编码帧一起使用。时间戳指的是 struct v4l2_buffer 中的 timestamp 字段。使用 v4l2_timeval_to_ns() 函数将 struct v4l2_buffer 中的 struct timeval 转换为 __u64。

__u32

pic_num

对于短期参考,这必须与派生值 PicNum (8-28) 匹配,对于长期参考,这必须与派生值 LongTermPicNum (8-29) 匹配。当解码帧(而不是场)时,pic_num 与 FrameNumWrap 相同。

__u16

frame_num

对于短期参考,这必须与切片头语法中的 frame_num 值匹配(如果需要,驱动程序将包装该值)。对于长期参考,这必须设置为 dec_ref_pic_marking() 语法中描述的 long_term_frame_idx 的值。

__u8

fields

指定如何引用 DPB 条目。参见参考字段

__u8

reserved[5]

应用程序和驱动程序必须将此设置为零。

__s32

top_field_order_cnt

__s32

bottom_field_order_cnt

__u32

flags

参见DPB 条目标志

DPB 条目 标志

V4L2_H264_DPB_ENTRY_FLAG_VALID

0x00000001

DPB 条目有效(非空)并且应考虑。

V4L2_H264_DPB_ENTRY_FLAG_ACTIVE

0x00000002

DPB 条目用于参考。

V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM

0x00000004

DPB 条目用于长期参考。

V4L2_H264_DPB_ENTRY_FLAG_FIELD

0x00000008

DPB 条目是单个场或互补场对。

V4L2_CID_STATELESS_H264_DECODE_MODE (enum)

指定要使用的解码模式。目前公开基于切片和基于帧的解码,但以后可能会添加新模式。此控制用作 V4L2_PIX_FMT_H264_SLICE 像素格式的修饰符。支持 V4L2_PIX_FMT_H264_SLICE 的应用程序需要设置此控制以指定缓冲区预期的解码模式。驱动程序可能会公开单个或多个解码模式,具体取决于它们可以支持的内容。

type v4l2_stateless_h264_decode_mode

V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED

0

解码以切片粒度完成。OUTPUT 缓冲区必须包含单个切片。选择此模式时,应设置 V4L2_CID_STATELESS_H264_SLICE_PARAMS 控制。当多个切片组成一个帧时,需要使用 V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF 标志。

V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED

1

解码以帧粒度完成。OUTPUT 缓冲区必须包含解码帧所需的所有切片。OUTPUT 缓冲区还必须包含两个场。此模式将由硬件解析切片头部的设备支持。选择此模式时,不应设置 V4L2_CID_STATELESS_H264_SLICE_PARAMS 控制。

V4L2_CID_STATELESS_H264_START_CODE (enum)

指定每个切片预期的 H264 切片起始码。此控制用作 V4L2_PIX_FMT_H264_SLICE 像素格式的修饰符。支持 V4L2_PIX_FMT_H264_SLICE 的应用程序需要设置此控制以指定缓冲区预期的起始码。驱动程序可能会公开单个或多个起始码,具体取决于它们可以支持的内容。

type v4l2_stateless_h264_start_code

V4L2_STATELESS_H264_START_CODE_NONE

0

选择此值指定 H264 切片在没有任何起始码的情况下传递给驱动程序。码流数据应根据ITU-T Rec. H.264 规范(2017 年 4 月版) 7.3.1 NAL 单元语法,因此在需要时包含仿真防止字节。

V4L2_STATELESS_H264_START_CODE_ANNEX_B

1

选择此值指定 H264 切片预计以 Annex B 起始码作为前缀。根据ITU-T Rec. H.264 规范(2017 年 4 月版),有效的起始码可以是 3 字节 0x000001 或 4 字节 0x00000001。

V4L2_CID_STATELESS_FWHT_PARAMS (struct)

指定关联的 FWHT 数据的 FWHT(快速沃尔什哈达玛变换)参数(从码流中提取)。这包括配置 FWHT 无状态硬件解码流水线的必要参数。此编解码器特定于 vicodec 测试驱动程序。

type v4l2_ctrl_fwht_params
struct v4l2_ctrl_fwht_params

__u64

backward_ref_ts

用作后向参考的 V4L2 捕获缓冲区的时间戳,与 P 编码帧一起使用。时间戳指的是 struct v4l2_buffer 中的 timestamp 字段。使用 v4l2_timeval_to_ns() 函数将 struct v4l2_buffer 中的 struct timeval 转换为 __u64。

__u32

version

编解码器的版本。设置为 V4L2_FWHT_VERSION

__u32

width

帧的宽度。

__u32

height

帧的高度。

__u32

flags

帧的标志,参见FWHT 标志

__u32

colorspace

帧的色彩空间,来自 enum v4l2_colorspace

__u32

xfer_func

传递函数,来自 enum v4l2_xfer_func

__u32

ycbcr_enc

Y’CbCr 编码,来自 enum v4l2_ycbcr_encoding

__u32

quantization

量化范围,来自 enum v4l2_quantization

1.16.2. FWHT 标志

V4L2_FWHT_FL_IS_INTERLACED

0x00000001

如果这是隔行扫描格式,则设置。

V4L2_FWHT_FL_IS_BOTTOM_FIRST

0x00000002

如果这是底部优先 (NTSC) 隔行扫描格式,则设置。

V4L2_FWHT_FL_IS_ALTERNATE

0x00000004

如果每个“帧”仅包含一个场,则设置。

V4L2_FWHT_FL_IS_BOTTOM_FIELD

0x00000008

如果设置了 V4L2_FWHT_FL_IS_ALTERNATE,则如果此“帧”是底部场,则设置此标志,否则它是顶部场。

V4L2_FWHT_FL_LUMA_IS_UNCOMPRESSED

0x00000010

如果 Y’(亮度)平面未压缩,则设置。

V4L2_FWHT_FL_CB_IS_UNCOMPRESSED

0x00000020

如果 Cb 平面未压缩,则设置。

V4L2_FWHT_FL_CR_IS_UNCOMPRESSED

0x00000040

如果 Cr 平面未压缩,则设置。

V4L2_FWHT_FL_CHROMA_FULL_HEIGHT

0x00000080

如果色度平面与亮度平面具有相同的高度,则设置此标志,否则色度平面是亮度平面高度的一半。

V4L2_FWHT_FL_CHROMA_FULL_WIDTH

0x00000100

如果色度平面与亮度平面具有相同的宽度,则设置此标志,否则色度平面是亮度平面宽度的一半。

V4L2_FWHT_FL_ALPHA_IS_UNCOMPRESSED

0x00000200

如果 alpha 平面未压缩,则设置。

V4L2_FWHT_FL_I_FRAME

0x00000400

如果这是 I 帧,则设置。

V4L2_FWHT_FL_COMPONENTS_NUM_MSK

0x00070000

颜色分量数减一。

V4L2_FWHT_FL_PIXENC_MSK

0x00180000

像素编码的掩码。

V4L2_FWHT_FL_PIXENC_YUV

0x00080000

如果像素编码是 YUV,则设置。

V4L2_FWHT_FL_PIXENC_RGB

0x00100000

如果像素编码是 RGB,则设置。

V4L2_FWHT_FL_PIXENC_HSV

0x00180000

如果像素编码是 HSV,则设置。

V4L2_CID_STATELESS_VP8_FRAME (struct)

指定关联的 VP8 解析帧数据的帧参数。这包括配置 VP8 无状态硬件解码流水线的必要参数。码流参数根据VP8定义。

type v4l2_ctrl_vp8_frame
struct v4l2_ctrl_vp8_frame

struct v4l2_vp8_segment

segment

带有基于段的调整元数据的结构。

struct v4l2_vp8_loop_filter

lf

带有环路滤波器级别调整元数据的结构。

struct v4l2_vp8_quantization

quant

带有 VP8 解量化索引元数据的结构。

struct v4l2_vp8_entropy

entropy

带有 VP8 熵编码器概率元数据的结构。

struct v4l2_vp8_entropy_coder_state

coder_state

带有 VP8 熵编码器状态的结构。

__u16

width

width

__u16

height

帧的宽度。必须为所有帧设置。

__u8

height

帧的高度。必须为所有帧设置。

__u8

horizontal_scale

水平缩放因子。

__u8

version

vertical_scale

__u8

垂直缩放因子。

version

__u8

码流版本。

prob_skip_false

__u8

指示宏块未跳过的概率。

prob_intra

__u8

指示宏块是内部预测的概率。

prob_last

__u8

指示最后一个参考帧用于帧间预测的概率

prob_gf

__u32

指示黄金参考帧用于帧间预测的概率

num_dct_parts

__u32

DCT 系数分区的数量。必须是以下之一:1、2、4 或 8。

first_part_size

__u32

第一个分区的大小,即控制分区。

first_part_header_bits

__u64

第一个分区头部部分的大小(以位为单位)。

dct_part_sizes[8]

__u64

DCT 系数大小。

dct_part_sizes[8]

__u64

last_frame_ts

用作最后一个参考帧的 V4L2 捕获缓冲区的时间戳,与帧间编码帧一起使用。时间戳指的是 struct v4l2_buffer 中的 timestamp 字段。使用 v4l2_timeval_to_ns() 函数将 struct v4l2_buffer 中的 struct timeval 转换为 __u64。

__u64

flags

golden_frame_ts

alt_frame_ts

用作备用参考帧的 V4L2 捕获缓冲区的时间戳,与帧间编码帧一起使用。时间戳指的是 struct v4l2_buffer 中的 timestamp 字段。使用 v4l2_timeval_to_ns() 函数将 struct v4l2_buffer 中的 struct timeval 转换为 __u64。

flags

参见帧标志

标志

V4L2_VP8_FRAME_FLAG_KEY_FRAME

0x01

指示帧是否为关键帧。

V4L2_VP8_FRAME_FLAG_EXPERIMENTAL

0x02

实验性码流。

V4L2_VP8_FRAME_FLAG_SHOW_FRAME

0x04

显示帧标志,指示帧是否用于显示。

V4L2_VP8_FRAME_FLAG_MB_NO_SKIP_COEFF

0x08

启用/禁用跳过没有非零系数的宏块。

V4L2_VP8_FRAME_FLAG_SIGN_BIAS_GOLDEN

0x10

引用黄金帧时运动矢量的符号。
V4L2_VP8_FRAME_FLAG_SIGN_BIAS_ALT

__u8

0x20

引用备用帧时运动矢量的符号。

__u8

type v4l2_vp8_entropy_coder_state

struct v4l2_vp8_entropy_coder_state

__u8

range

“Range”的编码器状态值

__u8

value

应用程序和驱动程序必须将此设置为零。

“Value”的编码器状态值
bit_count

__s8

剩余位数。

padding

__s8

type v4l2_vp8_segment

struct v4l2_vp8_segment

__u8

quant_update[4]

有符号量化器值更新。

__u8

value

应用程序和驱动程序必须将此设置为零。

__u32

flags

请参阅 分段标志

分段 标志

V4L2_VP8_SEGMENT_FLAG_ENABLED

flags

启用/禁用基于分段的调整。

V4L2_VP8_SEGMENT_FLAG_UPDATE_MAP

V4L2_VP8_FRAME_FLAG_KEY_FRAME

指示宏块分段映射是否在此帧中更新。

V4L2_VP8_SEGMENT_FLAG_UPDATE_FEATURE_DATA

V4L2_VP8_FRAME_FLAG_EXPERIMENTAL

指示分段特征数据是否在此帧中更新。

V4L2_VP8_SEGMENT_FLAG_DELTA_VALUE_MODE

V4L2_VP8_FRAME_FLAG_SHOW_FRAME

如果设置,则分段特征数据模式为增量值。 如果清除,则为绝对值。

type v4l2_vp8_loop_filter
结构体 v4l2_vp8_loop_filter

__s8

ref_frm_delta[4]

参考调整(有符号)增量值。

__s8

mb_mode_delta[4]

宏块预测模式调整(有符号)增量值。

__u8

sharpness_level

锐度级别

__u8

level

滤波器级别

__u16

value

应用程序和驱动程序必须将此设置为零。

__u32

flags

请参阅 环路滤波器标志

环路 滤波器 标志

V4L2_VP8_LF_ADJ_ENABLE

flags

启用/禁用宏块级别环路滤波器调整。

V4L2_VP8_LF_DELTA_UPDATE

V4L2_VP8_FRAME_FLAG_KEY_FRAME

指示是否更新调整中使用的增量值。

V4L2_VP8_LF_FILTER_TYPE_SIMPLE

V4L2_VP8_FRAME_FLAG_EXPERIMENTAL

如果设置,则指示滤波器类型为简单类型。 如果清除,则滤波器类型为正常类型。

type v4l2_vp8_quantization
结构体 v4l2_vp8_quantization

__u8

y_ac_qi

亮度 AC 系数表索引。

__s8

y_dc_delta

亮度 DC 增量值。

__s8

y2_dc_delta

Y2 块 DC 增量值。

__s8

y2_ac_delta

Y2 块 AC 增量值。

__s8

uv_dc_delta

色度 DC 增量值。

__s8

uv_ac_delta

色度 AC 增量值。

__u16

value

应用程序和驱动程序必须将此设置为零。

type v4l2_vp8_entropy
结构体 v4l2_vp8_entropy

__u8

coeff_probs[4][8][3][11]

系数更新概率。

__u8

y_mode_probs[4]

亮度模式更新概率。

__u8

uv_mode_probs[3]

色度模式更新概率。

__u8

mv_probs[2][19]

MV 解码更新概率。

__u8

padding[3]

应用程序和驱动程序必须将此设置为零。

V4L2_CID_STATELESS_MPEG2_SEQUENCE (结构体)

指定与相关 MPEG-2 切片数据对应的序列参数(从比特流中提取)。 这包括与 ISO 13818-2 指定的比特流的序列头和序列扩展部分中的语法元素匹配的字段。

type v4l2_ctrl_mpeg2_sequence
结构体 v4l2_ctrl_mpeg2_sequence

__u16

horizontal_size

帧的亮度分量的可显示部分的宽度。

__u16

vertical_size

帧的亮度分量的可显示部分的高度。

__u32

vbv_buffer_size

用于计算视频缓冲验证器所需的尺寸,定义为(以位为单位):16 * 1024 * vbv_buffer_size。

__u16

profile_and_level_indication

从比特流中提取的当前配置文件和级别指示。

__u8

chroma_format

色度子采样格式(1:4:2:0,2:4:2:2,3:4:4:4)。

__u8

flags

请参阅 MPEG-2 序列标志

MPEG-2 序列 标志

V4L2_MPEG2_SEQ_FLAG_PROGRESSIVE

flags

指示序列的所有帧都是逐行扫描而不是隔行扫描。

V4L2_CID_STATELESS_MPEG2_PICTURE (结构体)

指定与相关 MPEG-2 切片数据对应的图片参数(从比特流中提取)。 这包括与 ISO 13818-2 指定的比特流的图片头和图片编码扩展部分中的语法元素匹配的字段。

type v4l2_ctrl_mpeg2_picture
结构体 v4l2_ctrl_mpeg2_picture

__u64

backward_ref_ts

用作后向参考的 V4L2 捕获缓冲区的时间戳,用于 B 编码帧和 P 编码帧。 时间戳是指结构体 v4l2_buffer 中的 timestamp 字段。 使用 v4l2_timeval_to_ns() 函数将结构体 v4l2_buffer 中的结构体 timeval 转换为 __u64。

__u64

forward_ref_ts

用作前向参考的 V4L2 捕获缓冲区的时间戳,用于 B 编码帧。 时间戳是指结构体 v4l2_buffer 中的 timestamp 字段。 使用 v4l2_timeval_to_ns() 函数将结构体 v4l2_buffer 中的结构体 timeval 转换为 __u64。

__u32

flags

请参阅 MPEG-2 图片标志

__u8

f_code[2][2]

运动矢量代码。

__u8

picture_coding_type

当前切片覆盖的帧的图片编码类型(V4L2_MPEG2_PIC_CODING_TYPE_I、V4L2_MPEG2_PIC_CODING_TYPE_P 或 V4L2_MPEG2_PIC_CODING_TYPE_B)。

__u8

picture_structure

图片结构(1:隔行扫描顶场,2:隔行扫描底场,3:逐行扫描帧)。

__u8

intra_dc_precision

离散余弦变换的精度(0:8 位精度,1:9 位精度,2:10 位精度,3:11 位精度)。

__u8

reserved[5]

应用程序和驱动程序必须将此设置为零。

MPEG-2 图片 标志

V4L2_MPEG2_PIC_FLAG_TOP_FIELD_FIRST

0x00000001

如果设置并且它是隔行扫描流,则首先输出顶场。

V4L2_MPEG2_PIC_FLAG_FRAME_PRED_DCT

0x00000002

如果设置,则仅使用帧 DCT 和帧预测。

V4L2_MPEG2_PIC_FLAG_CONCEALMENT_MV

0x00000004

如果设置,则为内部宏块编码运动矢量。

V4L2_MPEG2_PIC_FLAG_Q_SCALE_TYPE

0x00000008

此标志影响反量化过程。

V4L2_MPEG2_PIC_FLAG_INTRA_VLC

0x00000010

此标志影响变换系数数据的解码。

V4L2_MPEG2_PIC_FLAG_ALT_SCAN

0x00000020

此标志影响变换系数数据的解码。

V4L2_MPEG2_PIC_FLAG_REPEAT_FIRST

0x00000040

此标志影响逐行扫描帧的解码过程。

V4L2_MPEG2_PIC_FLAG_PROGRESSIVE

0x00000080

指示当前帧是否为逐行扫描。

V4L2_CID_STATELESS_MPEG2_QUANTISATION (结构体)

指定与相关 MPEG-2 切片数据对应的量化矩阵(按 Z 字形扫描顺序排列)。 此控件由内核初始化为矩阵默认值。 如果比特流传输用户定义的量化矩阵加载,则应用程序应使用此控件。 如果需要重置量化矩阵(例如,在序列头中),则应用程序还应设置控件以加载默认值。 此过程由规范的第 6.3.7 节“量化矩阵扩展”指定。

type v4l2_ctrl_mpeg2_quantisation
结构体 v4l2_ctrl_mpeg2_quantisation

__u8

intra_quantiser_matrix[64]

按 Z 字形扫描顺序排列的内部编码帧的量化矩阵系数。 它与亮度和色度分量相关,尽管它可以被非 4:2:0 YUV 格式的色度特定矩阵取代。

__u8

non_intra_quantiser_matrix[64]

按 Z 字形扫描顺序排列的非内部编码帧的量化矩阵系数。 它与亮度和色度分量相关,尽管它可以被非 4:2:0 YUV 格式的色度特定矩阵取代。

__u8

chroma_intra_quantiser_matrix[64]

按 Z 字形扫描顺序排列的内部编码帧的色度分量的量化矩阵系数。 仅与非 4:2:0 YUV 格式相关。

__u8

chroma_non_intra_quantiser_matrix[64]

按 Z 字形扫描顺序排列的非内部编码帧的色度分量的量化矩阵系数。 仅与非 4:2:0 YUV 格式相关。

V4L2_CID_STATELESS_VP9_COMPRESSED_HDR (结构体)

存储从当前压缩帧头解析的 VP9 概率更新。 数组元素中的零值表示不更新相关概率。 运动矢量相关的更新包含新值或零。 所有其他更新都包含使用 inv_map_table[] 转换的值(请参阅 VP9 中的 6.3.5)。

type v4l2_ctrl_vp9_compressed_hdr
结构体 v4l2_ctrl_vp9_compressed_hdr

__u8

tx_mode

指定 TX 模式。 有关更多详细信息,请参阅 TX 模式

__u8

tx8[2][1]

TX 8x8 概率增量。

__u8

tx16[2][2]

TX 16x16 概率增量。

__u8

tx32[2][3]

TX 32x32 概率增量。

__u8

coef[4][2][2][6][6][3]

系数概率增量。

__u8

skip[3]

跳过概率增量。

__u8

inter_mode[7][3]

帧间预测模式概率增量。

__u8

interp_filter[4][2]

插值滤波器概率增量。

__u8

is_inter[4]

是帧间块概率增量。

__u8

comp_mode[5]

复合预测模式概率增量。

__u8

single_ref[5][2]

单参考概率增量。

__u8

comp_ref[5]

复合参考概率增量。

__u8

y_mode[4][9]

Y 预测模式概率增量。

__u8

uv_mode[10][9]

UV 预测模式概率增量。

__u8

partition[16][3]

分区概率增量。

__u8

mv.joint[3]

运动矢量联合概率增量。

__u8

mv.sign[2]

运动矢量符号概率增量。

__u8

mv.classes[2][10]

运动矢量类概率增量。

__u8

mv.class0_bit[2]

运动矢量 class0 位概率增量。

__u8

mv.bits[2][10]

运动矢量位概率增量。

__u8

mv.class0_fr[2][2][3]

运动矢量 class0 分数位概率增量。

__u8

mv.fr[2][3]

运动矢量分数位概率增量。

__u8

mv.class0_hp[2]

运动矢量 class0 高精度分数位概率增量。

__u8

mv.hp[2]

运动矢量高精度分数位概率增量。

TX 模式

V4L2_VP9_TX_MODE_ONLY_4X4

0

变换大小为 4x4。

V4L2_VP9_TX_MODE_ALLOW_8X8

1

变换大小最大可为 8x8。

V4L2_VP9_TX_MODE_ALLOW_16X16

2

变换大小最大可为 16x16。

V4L2_VP9_TX_MODE_ALLOW_32X32

3

变换大小最大可为 32x32。

V4L2_VP9_TX_MODE_SELECT

4

比特流包含每个块的变换大小。

有关更多详细信息,请参阅 VP9 规范的“7.3.1 Tx 模式语义”部分。

V4L2_CID_STATELESS_VP9_FRAME (结构体)

指定与相关 VP9 帧解码请求对应的帧参数。 这包括为 VP9 配置无状态硬件解码管道所需的参数。 比特流参数根据 VP9 定义。

type v4l2_ctrl_vp9_frame
结构体 v4l2_ctrl_vp9_frame

结构体 v4l2_vp9_loop_filter

lf

环路滤波器参数。 有关更多详细信息,请参阅结构体 v4l2_vp9_loop_filter

结构体 v4l2_vp9_quantization

quant

量化参数。 有关更多详细信息,请参阅 v4l2_vp9_quantization

结构体 v4l2_vp9_segmentation

seg

分段参数。 有关更多详细信息,请参阅 v4l2_vp9_segmentation

__u32

flags

V4L2_VP9_FRAME_FLAG_* 标志的组合。 请参阅 帧标志

__u16

compressed_header_size

压缩标头大小(以字节为单位)。

__u16

uncompressed_header_size

未压缩标头大小(以字节为单位)。

__u16

frame_width_minus_1

加 1 以获取以像素表示的帧宽度。 请参阅 VP9 中的 7.2.3 节。

__u16

frame_height_minus_1

加 1 以获取以像素表示的帧高度。 请参阅 VP9 中的 7.2.3 节。

__u16

render_width_minus_1

加 1 以获取预期渲染宽度(以像素表示)。 这不会在解码过程中使用,但可能被 HW 缩放器用于准备好扫描输出的帧。 请参阅 VP9 中的 7.2.4 节。

__u16

render_height_minus_1

加 1 以获取预期渲染高度(以像素表示)。 这不会在解码过程中使用,但可能被 HW 缩放器用于准备好扫描输出的帧。 请参阅 VP9 中的 7.2.4 节。

__u64

第一个分区头部部分的大小(以位为单位)。

“last”参考缓冲区时间戳。 时间戳是指结构体 v4l2_buffer 中的 timestamp 字段。 使用 v4l2_timeval_to_ns() 函数将结构体 v4l2_buffer 中的结构体 timeval 转换为 __u64。

__u64

DCT 系数大小。

“golden”参考缓冲区时间戳。 时间戳是指结构体 v4l2_buffer 中的 timestamp 字段。 使用 v4l2_timeval_to_ns() 函数将结构体 v4l2_buffer 中的结构体 timeval 转换为 __u64。

__u64

last_frame_ts

“alt”参考缓冲区时间戳。 时间戳是指结构体 v4l2_buffer 中的 timestamp 字段。 使用 v4l2_timeval_to_ns() 函数将结构体 v4l2_buffer 中的结构体 timeval 转换为 __u64。

__u8

ref_frame_sign_bias

一个位字段,用于指定是否为给定的参考帧设置了符号偏差。 有关更多详细信息,请参阅 参考帧符号偏差

__u8

reset_frame_context

指定是否应将帧上下文重置为默认值。 有关更多详细信息,请参阅 重置帧上下文

__u8

frame_context_idx

应使用/更新的帧上下文。

__u8

profile

VP9 配置文件。 可以是 0、1、2 或 3。

__u8

bit_depth

组件深度(以位为单位)。 可以是 8、10 或 12。 请注意,并非所有配置文件都支持 10 位和/或 12 位深度。

__u8

interpolation_filter

指定用于执行帧间预测的滤波器选择。 有关更多详细信息,请参阅 插值滤波器

__u8

tile_cols_log2

指定每个图块宽度的以 2 为底的对数(其中宽度以 8x8 块为单位测量)。 应小于或等于 6。

__u8

tile_rows_log2

指定每个图块高度的以 2 为底的对数(其中高度以 8x8 块为单位测量)。

__u8

reference_mode

指定要使用的帧间预测类型。 有关更多详细信息,请参阅 参考模式。 请注意,这是作为压缩标头解析过程的一部分派生的,因此应该属于 :c:type: v4l2_ctrl_vp9_compressed_hdr 可选控件。 如果驱动程序不需要压缩标头,则将此值设置为零是安全的。

__u8

reserved[7]

应用程序和驱动程序必须将此设置为零。

alt_frame_ts

V4L2_VP9_FRAME_FLAG_KEY_FRAME

0x001

该帧是关键帧。

V4L2_VP9_FRAME_FLAG_SHOW_FRAME

0x002

应显示该帧。

V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT

0x004

解码应具有错误恢复能力。

V4L2_VP9_FRAME_FLAG_INTRA_ONLY

0x008

该帧不引用其他帧。

V4L2_VP9_FRAME_FLAG_ALLOW_HIGH_PREC_MV

0x010

该帧可以使用高精度运动矢量。

V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX

0x020

应在解码后更新帧上下文。

V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE

0x040

使用并行解码。

V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING

0x080

启用垂直子采样。

V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING

0x100

启用水平子采样。

V4L2_VP9_FRAME_FLAG_COLOR_RANGE_FULL_SWING

0x200

使用完整 UV 范围。

参考 符号 偏差

V4L2_VP9_SIGN_BIAS_LAST

0x1

为上一个参考帧设置符号偏差。

V4L2_VP9_SIGN_BIAS_GOLDEN

0x2

为黄金参考帧设置符号偏差。

V4L2_VP9_SIGN_BIAS_ALT

0x2

为备用参考帧设置符号偏差。

重置 上下文

V4L2_VP9_RESET_FRAME_CTX_NONE

0

不重置任何帧上下文。

V4L2_VP9_RESET_FRAME_CTX_SPEC

1

重置 v4l2_ctrl_vp9_frame.frame_context_idx 指向的帧上下文。

V4L2_VP9_RESET_FRAME_CTX_ALL

2

重置所有帧上下文。

有关更多详细信息,请参阅 VP9 规范的“7.2 未压缩标头语义”部分。

插值 滤波器

V4L2_VP9_INTERP_FILTER_EIGHTTAP

0

八抽头滤波器。

V4L2_VP9_INTERP_FILTER_EIGHTTAP_SMOOTH

1

八抽头平滑滤波器。

V4L2_VP9_INTERP_FILTER_EIGHTTAP_SHARP

2

八抽头锐化滤波器。

V4L2_VP9_INTERP_FILTER_BILINEAR

3

双线性滤波器。

V4L2_VP9_INTERP_FILTER_SWITCHABLE

4

滤波器选择在块级别进行信号通知。

有关更多详细信息,请参阅 VP9 规范的“7.2.7 插值滤波器语义”部分。

参考 模式

V4L2_VP9_REFERENCE_MODE_SINGLE_REFERENCE

0

指示所有帧间块仅使用单个参考帧来生成运动补偿预测。

V4L2_VP9_REFERENCE_MODE_COMPOUND_REFERENCE

1

要求所有帧间块都使用复合模式。 不允许单参考帧预测。

V4L2_VP9_REFERENCE_MODE_SELECT

2

允许每个单独的帧间块在单预测模式和复合预测模式之间进行选择。

有关更多详细信息,请参阅 VP9 规范的“7.3.6 帧参考模式语义”部分。

type v4l2_vp9_segmentation

编码量化参数。 有关更多详细信息,请参阅 VP9 规范的“7.2.10 分段参数语法”部分。

结构体 v4l2_vp9_segmentation

__u8

feature_data[8][4]

附加到每个特征的数据。 仅当启用该特征时,数据条目才有效。 应该使用段号作为第一维 (0..7) 以及 V4L2_VP9_SEG_* 之一作为第二维来索引数组。 请参阅 段特征 ID

__u8

feature_enabled[8]

定义在每个段中启用哪些特征的位掩码。 每个段的值都是 V4L2_VP9_SEGMENT_FEATURE_ENABLED(id) 值的组合,其中 id 是 V4L2_VP9_SEG_* 之一。 请参阅 段特征 ID

__u8

tree_probs[7]

指定在解码段 ID 时要使用的概率值。 有关更多详细信息,请参阅 VP9 的“5.15 分段映射”部分。

__u8

pred_probs[3]

指定在解码预测段 ID 时要使用的概率值。 有关更多详细信息,请参阅 VP9 的“6.4.14 获取段 ID 语法”部分。

__u8

flags

V4L2_VP9_SEGMENTATION_FLAG_* 标志的组合。 请参阅 分段标志

__u8

reserved[5]

应用程序和驱动程序必须将此设置为零。

特征 ID

V4L2_VP9_SEG_LVL_ALT_Q

0

量化器段特征。

V4L2_VP9_SEG_LVL_ALT_L

1

环路滤波器段特征。

V4L2_VP9_SEG_LVL_REF_FRAME

2

参考帧段特征。

V4L2_VP9_SEG_LVL_SKIP

3

跳过段特征。

V4L2_VP9_SEG_LVL_MAX

4

段特征的数量。

分段 标志

V4L2_VP9_SEGMENTATION_FLAG_ENABLED

flags

指示此帧是否使用分段工具。

V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP

V4L2_VP8_FRAME_FLAG_KEY_FRAME

指示应在此帧的解码期间更新分段映射。

V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE

V4L2_VP8_FRAME_FLAG_EXPERIMENTAL

指示对分段映射的更新是相对于现有分段映射进行编码的。

V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA

V4L2_VP8_FRAME_FLAG_SHOW_FRAME

指示即将为每个段指定新参数。

V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE

V4L2_VP8_FRAME_FLAG_MB_NO_SKIP_COEFF

指示分段参数表示要使用的实际值。

type v4l2_vp9_quantization

编码量化参数。 有关更多详细信息,请参阅 VP9 规范的“7.2.9 量化参数语法”部分。

结构体 v4l2_vp9_quantization

__u8

base_q_idx

指示基本帧 qindex。

__s8

delta_q_y_dc

指示相对于 base_q_idx 的 Y DC 量化器。

__s8

delta_q_uv_dc

指示相对于 base_q_idx 的 UV DC 量化器。

__s8

delta_q_uv_ac

指示相对于 base_q_idx 的 UV AC 量化器。

__u8

reserved[4]

应用程序和驱动程序必须将此设置为零。

type v4l2_vp9_loop_filter

此结构体包含所有环路滤波器相关参数。 有关更多详细信息,请参阅 VP9 规范的“7.2.8 环路滤波器语义”部分。

结构体 v4l2_vp9_loop_filter

__s8

ref_deltas[4]

包含基于所选参考帧对滤波器级别所需的调整。

__s8

mode_deltas[2]

包含基于所选模式对滤波器级别所需的调整。

__u8

level

指示环路滤波器强度。

__u8

sharpness

指示清晰度级别。

__u8

flags

V4L2_VP9_LOOP_FILTER_FLAG_* 标志的组合。 请参阅 环路滤波器标志

__u8

reserved[7]

应用程序和驱动程序必须将此设置为零。

环路 滤波器 标志

V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED

0x1

设置后,滤波器级别取决于用于预测块的模式和参考帧。

V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE

0x2

设置后,比特流包含其他语法元素,这些元素指定要更新哪些模式和参考帧增量。

V4L2_CID_STATELESS_HEVC_SPS (结构体)

指定与相关 HEVC 切片数据对应的序列参数集字段(从比特流中提取)。 这些比特流参数根据 ITU H.265/HEVC 定义。 它们在规范的第 7.4.3.2 节“序列参数集 RBSP 语义”中描述。

type v4l2_ctrl_hevc_sps
结构体 v4l2_ctrl_hevc_sps

__u8

video_parameter_set_id

指定活动 VPS 的 vps_video_parameter_set_id 的值,如 H.265 规范的“7.4.3.2.1 常规序列参数集 RBSP 语义”部分中所述。

__u8

seq_parameter_set_id

提供 SPS 的标识符,以便其他语法元素参考,如 H.265 规范的“7.4.3.2.1 常规序列参数集 RBSP 语义”部分中所述。

__u16

pic_width_in_luma_samples

指定每个解码图片以亮度样本为单位的宽度。

__u16

pic_height_in_luma_samples

指定每个解码图片以亮度样本为单位的高度。

__u8

bit_depth_luma_minus8

此值加 8 指定亮度阵列样本的位深度。

__u8

bit_depth_chroma_minus8

此值加 8 指定色度阵列样本的位深度。

__u8

log2_max_pic_order_cnt_lsb_minus4

指定变量 MaxPicOrderCntLsb 的值。

__u8

sps_max_dec_pic_buffering_minus1

此值加 1 指定编码视频序列 (CVS) 解码图片缓冲区的最大所需大小。

__u8

sps_max_num_reorder_pics

指示允许的最大图片数量。

__u8

sps_max_latency_increase_plus1

用于指示 MaxLatencyPictures,它指示输出顺序中可以在任何图片之前并且在解码顺序中跟随该图片的最大图片数量。

__u8

log2_min_luma_coding_block_size_minus3

此值加 3 指定最小亮度编码块大小。

__u8

log2_diff_max_min_luma_coding_block_size

指定最大和最小亮度编码块大小之间的差异。

__u8

log2_min_luma_transform_block_size_minus2

此值加 2 指定最小亮度变换块大小。

__u8

log2_diff_max_min_luma_transform_block_size

指定最大和最小亮度变换块大小之间的差异。

__u8

max_transform_hierarchy_depth_inter

指定以帧间预测模式编码的编码单元的变换单元的最大层次深度。

__u8

max_transform_hierarchy_depth_intra

指定以帧内预测模式编码的编码单元的变换单元的最大层次深度。

__u8

pcm_sample_bit_depth_luma_minus1

此值加 1 指定用于表示亮度分量的每个 PCM 样本值的位数。

__u8

pcm_sample_bit_depth_chroma_minus1

指定用于表示色度分量的每个 PCM 样本值的位数。

__u8

log2_min_pcm_luma_coding_block_size_minus3

加 3 指定了编码块的最小尺寸。

__u8

log2_diff_max_min_pcm_luma_coding_block_size

指定了编码块的最大尺寸和最小尺寸之间的差值。

__u8

num_short_term_ref_pic_sets

指定了 SPS 中包含的 st_ref_pic_set() 语法结构的数目。

__u8

num_long_term_ref_pics_sps

指定了 SPS 中指定的候选长期参考图片的数目。

__u8

chroma_format_idc

指定了色度采样。

__u8

sps_max_sub_layers_minus1

此值加 1 指定了时间子层的最大数目。

__u64

flags

参见 序列参数集标志

序列 参数 标志

V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE

0x00000001

V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED

0x00000002

V4L2_HEVC_SPS_FLAG_AMP_ENABLED

0x00000004

V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET

0x00000008

V4L2_HEVC_SPS_FLAG_PCM_ENABLED

0x00000010

V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED

0x00000020

V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT

0x00000040

V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED

0x00000080

V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED

0x00000100

V4L2_CID_STATELESS_HEVC_PPS (struct)

指定了关联的 HEVC 片数据(从比特流中提取)的图像参数集字段。这些比特流参数根据 ITU H.265/HEVC 定义。它们在规范的第 7.4.3.3 节“图像参数集 RBSP 语义”中描述。

type v4l2_ctrl_hevc_pps
struct v4l2_ctrl_hevc_pps

__u8

pic_parameter_set_id

标识了 PPS 以供其他语法元素参考。

__u8

num_extra_slice_header_bits

指定了片头 RBSP 中存在的额外片头比特数,这些片头用于引用 PPS 的编码图像。

__u8

num_ref_idx_l0_default_active_minus1

此值加 1 指定了 num_ref_idx_l0_active_minus1 的推断值。

__u8

num_ref_idx_l1_default_active_minus1

此值加 1 指定了 num_ref_idx_l1_active_minus1 的推断值。

__s8

init_qp_minus26

此值加 26 指定了引用 PPS 的每个片的 SliceQp Y 的初始值。

__u8

diff_cu_qp_delta_depth

指定了亮度编码树块大小与传达 cu_qp_delta_abs 和 cu_qp_delta_sign_flag 的编码单元的最小亮度编码块大小之间的差值。

__s8

pps_cb_qp_offset

指定了亮度量化参数 Cb 的偏移量。

__s8

pps_cr_qp_offset

指定了亮度量化参数 Cr 的偏移量。

__u8

num_tile_columns_minus1

此值加 1 指定了划分图像的瓦片列数。

__u8

num_tile_rows_minus1

此值加 1 指定了划分图像的瓦片行数。

__u8

column_width_minus1[20]

此值加 1 指定了第 i 个瓦片列的宽度,以编码树块为单位。

__u8

row_height_minus1[22]

此值加 1 指定了第 i 个瓦片行的高度,以编码树块为单位。

__s8

pps_beta_offset_div2

指定了除以 2 的 beta 默认去块参数偏移量。

__s8

pps_tc_offset_div2

指定了除以 2 的 tC 默认去块参数偏移量。

__u8

log2_parallel_merge_level_minus2

此值加 2 指定了变量 Log2ParMrgLevel 的值。

__u8

padding[4]

应用程序和驱动程序必须将此设置为零。

__u64

flags

参见 图像参数集标志

图片 参数 标志

V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED

0x00000001

V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT

0x00000002

V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED

0x00000004

V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT

0x00000008

V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED

0x00000010

V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED

0x00000020

V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED

0x00000040

V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT

0x00000080

V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED

0x00000100

V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED

0x00000200

V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED

0x00000400

V4L2_HEVC_PPS_FLAG_TILES_ENABLED

0x00000800

V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED

0x00001000

V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED

0x00002000

V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED

0x00004000

V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED

0x00008000

V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER

0x00010000

V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT

0x00020000

V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT

0x00040000

V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT

0x00080000

指定了 PPS 中是否存在去块滤波器控制语法元素

V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING

0x00100000

指定了瓦片列边界以及瓦片行边界在图像上均匀分布

V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (struct)

指定了各种片特定的参数,特别是来自比特流的 NAL 单元头、通用片分段头和加权预测参数部分。这些比特流参数根据 ITU H.265/HEVC 定义。它们在规范的第 7.4.7 节“通用片分段头语义”中描述。此控件是一个动态大小的一维数组,使用时必须设置 V4L2_CTRL_FLAG_DYNAMIC_ARRAY 标志。

type v4l2_ctrl_hevc_slice_params
struct v4l2_ctrl_hevc_slice_params

__u32

bit_size

当前片数据的大小(以比特为单位)。

__u32

data_byte_offset

当前片数据中视频数据的偏移量(以字节为单位)。

__u32

num_entry_point_offsets

指定了片头中入口点偏移语法元素的数目。当驱动程序支持时,必须设置 V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS

__u8

nal_unit_type

指定了片的编码类型(B、P 或 I)。

__u8

nuh_temporal_id_plus1

减 1 指定了 NAL 单元的时间标识符。

__u8

slice_type

(V4L2_HEVC_SLICE_TYPE_I、V4L2_HEVC_SLICE_TYPE_P 或 V4L2_HEVC_SLICE_TYPE_B)。

__u8

colour_plane_id

指定了与当前片关联的颜色平面。

__s32

slice_pic_order_cnt

指定了图像顺序计数。

__u8

num_ref_idx_l0_active_minus1

此值加 1 指定了参考图像列表 0 的最大参考索引,该索引可用于解码片。

__u8

num_ref_idx_l1_active_minus1

此值加 1 指定了参考图像列表 1 的最大参考索引,该索引可用于解码片。

__u8

collocated_ref_idx

指定了用于时间运动矢量预测的并置图像的参考索引。

__u8

five_minus_max_num_merge_cand

指定了片中支持的最大合并运动矢量预测候选数目减 5。

__s8

slice_qp_delta

指定了用于片中编码块的 QpY 的初始值。

__s8

slice_cb_qp_offset

指定了要添加到 pps_cb_qp_offset 值中的差值。

__s8

slice_cr_qp_offset

指定了要添加到 pps_cr_qp_offset 值中的差值。

__s8

slice_act_y_qp_offset

指定了第 8.6.2 节中导出的亮度量化参数 qP 的偏移量

__s8

slice_act_cb_qp_offset

指定了第 8.6.2 节中导出的 cb 量化参数 qP 的偏移量

__s8

slice_act_cr_qp_offset

指定了第 8.6.2 节中导出的 cr 量化参数 qP 的偏移量

__s8

slice_beta_offset_div2

指定了除以 2 的 beta 去块参数偏移量。

__s8

slice_tc_offset_div2

指定了除以 2 的 tC 去块参数偏移量。

__u8

pic_struct

指示图像应显示为帧还是一个或多个场。

__u32

slice_segment_addr

指定了片分段中第一个编码树块的地址。

__u8

ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

作为 DPB 中索引的 L0 参考元素的列表。

__u8

ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

作为 DPB 中索引的 L1 参考元素的列表。

__u16

short_term_ref_pic_set_size

指定了规范中描述为 st_ref_pic_set() 的短期参考图像集的大小(以比特为单位),包含在片头或 SPS 中(第 7.3.6.1 节)。

__u16

long_term_ref_pic_set_size

指定了包含在片头或 SPS 中的长期参考图像集的大小(以比特为单位)。它是规范第 7.3.6.1 节中条件块 if(long_term_ref_pics_present_flag) 中的比特数。

__u8

value

应用程序和驱动程序必须将此设置为零。

struct v4l2_hevc_pred_weight_table

pred_weight_table

帧间预测的预测权重系数。

__u64

flags

参见 片参数标志

参数 标志

V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA

0x00000001

V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA

0x00000002

V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED

0x00000004

V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO

0x00000008

V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT

0x00000010

V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0

0x00000020

V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV

0x00000040

V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED

0x00000080

V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED

0x00000100

V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT

0x00000200

V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (integer)

指定了以字节为单位的入口点偏移量。此控件是一个动态大小的数组。入口点偏移量的数目由 elems 字段报告。此比特流参数根据 ITU H.265/HEVC 定义。它们在规范的第 7.4.7.1 节“通用片分段头语义”中描述。当在一个请求中提交多个片时,此数组的长度必须是请求中所有片的 num_entry_point_offsets 的总和。

V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (struct)

指定了用于变换系数缩放过程的 HEVC 缩放矩阵参数。这些矩阵和参数根据 ITU H.265/HEVC 定义。它们在规范的第 7.4.5 节“缩放列表数据语义”中描述。

type v4l2_ctrl_hevc_scaling_matrix
struct v4l2_ctrl_hevc_scaling_matrix

__u8

scaling_list_4x4[6][16]

缩放列表用于变换系数的缩放过程。每个缩放列表上的值都按光栅扫描顺序排列。

__u8

scaling_list_8x8[6][64]

缩放列表用于变换系数的缩放过程。每个缩放列表上的值都按光栅扫描顺序排列。

__u8

scaling_list_16x16[6][64]

缩放列表用于变换系数的缩放过程。每个缩放列表上的值都按光栅扫描顺序排列。

__u8

scaling_list_32x32[2][64]

缩放列表用于变换系数的缩放过程。每个缩放列表上的值都按光栅扫描顺序排列。

__u8

scaling_list_dc_coef_16x16[6]

缩放列表用于变换系数的缩放过程。每个缩放列表上的值都按光栅扫描顺序排列。

__u8

scaling_list_dc_coef_32x32[2]

缩放列表用于变换系数的缩放过程。每个缩放列表上的值都按光栅扫描顺序排列。

type v4l2_hevc_dpb_entry
struct v4l2_hevc_dpb_entry

__u64

timestamp

用作参考的 V4L2 捕获缓冲区的时间戳,与 B 编码帧和 P 编码帧一起使用。时间戳指的是 struct v4l2_buffer 中的 timestamp 字段。使用 v4l2_timeval_to_ns() 函数将 struct v4l2_buffer 中的 struct timeval 转换为 __u64。

__u8

flags

参考帧的长期标志 (V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE)。该标志的设置如 ITU HEVC 规范第“8.3.2 参考图像集解码过程”一章中所述。

__u8

field_pic

参考是场图像还是帧。参见 HEVC dpb 场图像标志

__s32

pic_order_cnt_val

当前图像的图像顺序计数。

__u8

padding[2]

应用程序和驱动程序必须将此设置为零。

HEVC dpb 图像 标志

V4L2_HEVC_SEI_PIC_STRUCT_FRAME

0

(逐行)帧

V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD

1

顶场

V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD

2

底场

V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM

3

顶场、底场,按该顺序排列

V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP

4

底场、顶场,按该顺序排列

V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP

5

顶场、底场、顶场重复,按该顺序排列

V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM

6

底场、顶场、底场重复,按该顺序排列

V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING

7

帧加倍

V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING

8

帧三倍化

V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM

9

顶场与输出顺序中的前一个底场配对

V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP

10

底场与输出顺序中的前一个顶场配对

V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM

11

顶场与输出顺序中的下一个底场配对

V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP

12

底场与输出顺序中的下一个顶场配对

type v4l2_hevc_pred_weight_table
struct v4l2_hevc_pred_weight_table

__s8

delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

应用于列表 0 的亮度预测值的加权因子的差。

__s8

luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

应用于列表 0 的亮度预测值的附加偏移量。

__s8

delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]

应用于列表 0 的色度预测值的加权因子的差。

__s8

chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]

应用于列表 0 的色度预测值的附加偏移量的差。

__s8

delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

应用于列表 1 的亮度预测值的加权因子的差。

__s8

luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

应用于列表 1 的亮度预测值的附加偏移量。

__s8

delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]

应用于列表 1 的色度预测值的加权因子的差。

__s8

chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]

应用于列表 1 的色度预测值的附加偏移量的差。

__u8

luma_log2_weight_denom

所有亮度加权因子的分母的以 2 为底的对数。

__s8

delta_chroma_log2_weight_denom

所有色度加权因子的分母的以 2 为底的对数的差。

__u8

padding[6]

应用程序和驱动程序必须将此设置为零。

V4L2_CID_STATELESS_HEVC_DECODE_MODE (enum)

指定要使用的解码模式。当前公开基于片的解码和基于帧的解码,但稍后可能会添加新模式。此控件用作 V4L2_PIX_FMT_HEVC_SLICE 像素格式的修饰符。支持 V4L2_PIX_FMT_HEVC_SLICE 的应用程序需要设置此控件,以便指定缓冲区的预期解码模式。驱动程序可以公开单个或多个解码模式,具体取决于它们可以支持的模式。

type v4l2_stateless_hevc_decode_mode

V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED

0

解码以片粒度完成。OUTPUT 缓冲区必须包含单个片。

V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED

1

解码以帧粒度完成。OUTPUT 缓冲区必须包含解码帧所需的所有片。

V4L2_CID_STATELESS_HEVC_START_CODE (enum)

指定每个片预期的 HEVC 片起始码。此控件用作 V4L2_PIX_FMT_HEVC_SLICE 像素格式的修饰符。支持 V4L2_PIX_FMT_HEVC_SLICE 的应用程序需要设置此控件,以便指定缓冲区的预期起始码。驱动程序可以公开单个或多个起始码,具体取决于它们可以支持的起始码。

type v4l2_stateless_hevc_start_code

V4L2_STATELESS_HEVC_START_CODE_NONE

0

选择此值指定 HEVC 片传递给驱动程序时没有任何起始码。比特流数据应符合 ITU H.265/HEVC 7.3.1.1 通用 NAL 单元语法,因此在需要时包含仿真防止字节。

V4L2_STATELESS_HEVC_START_CODE_ANNEX_B

1

选择此值指定 HEVC 片预期以 Annex B 起始码作为前缀。根据 ITU H.265/HEVC,有效的起始码可以是 3 字节 0x000001 或 4 字节 0x00000001。

V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID (integer)

指定 NAL 单元的优先级标识符,该标识符将应用于基本层。默认情况下,此值对于基本层设置为 0,下一层将分配优先级 ID 为 1、2、3,依此类推。视频编码器无法决定要应用于层的优先级 ID,因此这必须来自客户端。这适用于 H264,有效范围为 0 到 63。源 Rec. ITU-T H.264 (06/2019);G.7.4.1.1、G.8.8.1。

V4L2_CID_MPEG_VIDEO_LTR_COUNT (integer)

指定编码器在任何给定时间可以保留的长期参考 (LTR) 帧的最大数目。这适用于 H264 和 HEVC 编码器。

V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX (integer)

设置此控件后,下一个排队的帧将被标记为长期参考 (LTR) 帧,并给定此 LTR 索引,其范围从 0 到 LTR_COUNT-1。这适用于 H264 和 HEVC 编码器。源 Rec. ITU-T H.264 (06/2019);表 7.9

V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (bitmask)

指定用于编码在此控件设置后排队的下一个帧的长期参考 (LTR) 帧。这提供了一个比特掩码,其中包含比特 [0, LTR_COUNT-1]。这适用于 H264 和 HEVC 编码器。

V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (struct)

指定各种解码参数,特别是所有列表(短、长、之前、当前、之后)的参考图像顺序计数 (POC) 以及每个列表的条目数。这些参数根据 ITU H.265/HEVC 定义。它们在规范的第 8.3 节“片解码过程”中描述。

type v4l2_ctrl_hevc_decode_params
struct v4l2_ctrl_hevc_decode_params

__s32

pic_order_cnt_val

规范第 8.3.1 节“图像顺序计数的解码过程”中描述的 PicOrderCntVal。

__u16

short_term_ref_pic_set_size

指定了片头或 SPS 中包含的第一个片中描述为 st_ref_pic_set() 的短期参考图像集的大小(以比特为单位)(规范第 7.3.6.1 节)。

__u16

long_term_ref_pic_set_size

指定了包含在片头或 SPS 中的第一个片中的长期参考图像集的大小(以比特为单位)。它是规范第 7.3.6.1 节中条件块 if(long_term_ref_pics_present_flag) 中的比特数。

__u8

num_active_dpb_entries

dpb 中的条目数。

__u8

num_poc_st_curr_before

当前帧之前的短期集中的参考图像数。

__u8

num_poc_st_curr_after

当前帧之后的短期集中的参考图像数。

__u8

num_poc_lt_curr

长期集中的参考图像数。

__u8

poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

规范第 8.3.2 节“参考图像集解码过程”中描述的 PocStCurrBefore:提供 DPB 数组中短期之前参考的索引。

__u8

poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

规范第 8.3.2 节“参考图像集解码过程”中描述的 PocStCurrAfter:提供 DPB 数组中短期之后参考的索引。

__u8

poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

规范第 8.3.2 节“参考图像集解码过程”中描述的 PocLtCurr:提供 DPB 数组中长期参考的索引。

__u8

num_delta_pocs_of_ref_rps_idx

当片头中的 short_term_ref_pic_set_sps_flag 等于 0 时,它与派生值 NumDeltaPocs[RefRpsIdx] 相同。它可用于解析片头中的 RPS 数据,而不是使用 @short_term_ref_pic_set_size 跳过它。当片头中的 short_term_ref_pic_set_sps_flag 的值等于 1 时,num_delta_pocs_of_ref_rps_idx 应设置为 0。

struct v4l2_hevc_dpb_entry

dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

解码图像缓冲区,用于参考帧的元数据。

__u64

flags

参见 解码参数标志

解码 参数 标志

V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC

0x00000001

V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC

0x00000002

V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR

0x00000004

V4L2_CID_STATELESS_AV1_SEQUENCE (struct)

表示 AV1 序列 OBU(开放比特流单元)。有关更多详细信息,请参见 AV1 中的 5.5 节“序列头 OBU 语法”。

type v4l2_ctrl_av1_sequence
struct v4l2_ctrl_av1_sequence

__u32

flags

参见 AV1 序列标志

__u8

seq_profile

指定了编码视频序列中可以使用的功能。

__u8

order_hint_bits

指定了每个帧的 order_hint 字段使用的比特数。

__u8

bit_depth

用于序列的比特深度,如 AV1 中的 5.5.2 节“颜色配置语法”中所述。

__u8

reserved

应用程序和驱动程序必须将此设置为零。

__u16

max_frame_width_minus_1

指定了此序列头表示的帧的最大帧宽减 1。

__u16

max_frame_height_minus_1

指定了此序列头表示的帧的最大帧高减 1。

AV1 序列 标志

V4L2_AV1_SEQUENCE_FLAG_STILL_PICTURE

0x00000001

如果设置,则指定编码视频序列仅包含一个编码帧。如果未设置,则指定编码视频序列包含一个或多个编码帧。

V4L2_AV1_SEQUENCE_FLAG_USE_128X128_SUPERBLOCK

0x00000002

如果设置,则指示超块包含 128x128 亮度样本。当等于 0 时,指示超块包含 64x64 亮度样本。包含的色度样本数取决于 subsampling_x 和 subsampling_y。

V4L2_AV1_SEQUENCE_FLAG_ENABLE_FILTER_INTRA

0x00000004

如果设置,则指定可以存在 use_filter_intra 语法元素。如果未设置,则指定将不存在 use_filter_intra 语法元素。

V4L2_AV1_SEQUENCE_FLAG_ENABLE_INTRA_EDGE_FILTER

0x00000008

指定是否应启用帧内边缘过滤过程。

V4L2_AV1_SEQUENCE_FLAG_ENABLE_INTERINTRA_COMPOUND

0x00000010

如果设置,则指定帧间块的模式信息可能包含语法元素 interintra。如果未设置,则指定语法元素 interintra 将不存在。

V4L2_AV1_SEQUENCE_FLAG_ENABLE_MASKED_COMPOUND

0x00000020

如果设置,则指定帧间块的模式信息可能包含语法元素 compound_type。如果未设置,则指定语法元素 compound_type 将不存在。

V4L2_AV1_SEQUENCE_FLAG_ENABLE_WARPED_MOTION

0x00000040

如果设置,则指示 allow_warped_motion 语法元素可能存在。如果未设置,则指示 allow_warped_motion 语法元素将不存在。

V4L2_AV1_SEQUENCE_FLAG_ENABLE_DUAL_FILTER

0x00000080

如果设置,则指示帧间预测滤波器类型可以在水平方向和垂直方向上独立指定。如果标志等于 0,则只能指定一种滤波器类型,然后将其用于两个方向。

V4L2_AV1_SEQUENCE_FLAG_ENABLE_ORDER_HINT

0x00000100

如果设置,则指示可以基于顺序提示的值使用工具。如果未设置,则指示基于顺序提示的工具被禁用。

V4L2_AV1_SEQUENCE_FLAG_ENABLE_JNT_COMP

0x00000200

如果设置,则指示距离权重过程可以用于帧间预测。

V4L2_AV1_SEQUENCE_FLAG_ENABLE_REF_FRAME_MVS

0x00000400

如果设置,则指示 use_ref_frame_mvs 语法元素可能存在。如果未设置,则指示 use_ref_frame_mvs 语法元素将不存在。

V4L2_AV1_SEQUENCE_FLAG_ENABLE_SUPERRES

0x00000800

如果设置,则指定 use_superres 语法元素将存在于未压缩的头中。如果未设置,则指定 use_superres 语法元素将不存在(而是在未压缩的头中将 use_superres 设置为 0 而不读取)。

V4L2_AV1_SEQUENCE_FLAG_ENABLE_CDEF

0x00001000

如果设置,则指定可以启用 cdef 过滤。如果未设置,则指定 cdef 过滤被禁用。

V4L2_AV1_SEQUENCE_FLAG_ENABLE_RESTORATION

0x00002000

如果设置,则指定可以启用循环恢复过滤。如果未设置,则指定循环恢复过滤被禁用。

V4L2_AV1_SEQUENCE_FLAG_MONO_CHROME

0x00004000

如果设置,则指示视频不包含 U 和 V 颜色平面。如果未设置,则指示视频包含 Y、U 和 V 颜色平面。

V4L2_AV1_SEQUENCE_FLAG_COLOR_RANGE

0x00008000

如果设置,则表示全范围表示,即“全范围量化”。如果未设置,则表示工作室范围表示,即“有限范围量化”。

V4L2_AV1_SEQUENCE_FLAG_SUBSAMPLING_X

0x00010000

指定色度子采样格式。

V4L2_AV1_SEQUENCE_FLAG_SUBSAMPLING_Y

0x00020000

指定色度子采样格式。

V4L2_AV1_SEQUENCE_FLAG_FILM_GRAIN_PARAMS_PRESENT

0x00040000

指定影片纹理参数是否存在于编码视频序列中。

V4L2_AV1_SEQUENCE_FLAG_SEPARATE_UV_DELTA_Q

0x00080000

如果设置,则指示 U 和 V 平面可能具有单独的增量量化值。如果未设置,则指示 U 和 V 平面将共享相同的增量量化值。

V4L2_CID_STATELESS_AV1_TILE_GROUP_ENTRY (struct)

表示 AV1 图块组中的单个 AV1 图块。请注意,可以使用 struct v4l2_ctrl_av1_frame 中的 tile_row 和 tile_col 从 struct v4l2_av1_tile_info 中检索 MiRowStart、MiRowEnd、MiColStart 和 MiColEnd。有关更多详细信息,请参见 AV1 中的 6.10.1 节“通用图块组 OBU 语义”。

type v4l2_ctrl_av1_tile_group_entry
struct v4l2_ctrl_av1_tile_group_entry

__u32

tile_offset

来自 OBU 数据的偏移量,即编码图块数据实际开始的位置。

__u32

tile_size

指定了编码图块的大小(以字节为单位)。等效于 AV1 中的“TileSize”。

__u32

tile_row

指定了当前图块的行。等效于 AV1 中的“TileRow”。

__u32

tile_col

指定了当前图块的列。等效于 AV1 中的“TileColumn”。

type v4l2_av1_warp_model

AV1 变形模型,如 AV1 的第 3 节“符号和缩写术语”中所述。

V4L2_AV1_WARP_MODEL_IDENTITY

0

变形模型只是一个恒等变换。

V4L2_AV1_WARP_MODEL_TRANSLATION

1

变形模型是一个纯粹的平移。

V4L2_AV1_WARP_MODEL_ROTZOOM

2

变形模型是一个旋转 + 对称缩放 + 平移。

V4L2_AV1_WARP_MODEL_AFFINE

3

变形模型是一个通用的仿射变换。

type v4l2_av1_reference_frame

AV1 参考帧,如 AV1 的 6.10.24 节“参考帧语义”中所述。

V4L2_AV1_REF_INTRA_FRAME

0

帧内参考帧。

V4L2_AV1_REF_LAST_FRAME

1

Last 帧参考。

V4L2_AV1_REF_LAST2_FRAME

2

Last2 帧参考。

V4L2_AV1_REF_LAST3_FRAME

3

Last3 帧参考。

V4L2_AV1_REF_GOLDEN_FRAME

4

Golden 帧参考。

V4L2_AV1_REF_BWDREF_FRAME

5

BWD 帧参考。

V4L2_AV1_REF_ALTREF2_FRAME

6

ALTREF2 帧参考。

V4L2_AV1_REF_ALTREF_FRAME

7

ALTREF 帧参考。

type v4l2_av1_global_motion

AV1 全局运动参数,如 AV1 的 6.8.17 节“全局运动参数语义”中所述。

struct v4l2_av1_global_motion

__u8

flags[V4L2_AV1_TOTAL_REFS_PER_FRAME]

一个位域,包含每个参考帧的标志。有关更多详细信息,请参见 AV1 全局运动标志

enum v4l2_av1_warp_model

type[V4L2_AV1_TOTAL_REFS_PER_FRAME]

使用的全局运动变换类型。

__s32

params[V4L2_AV1_TOTAL_REFS_PER_FRAME][6]

此字段的含义与 AV1 中的“gm_params”相同。

__u8

invalid

位域,指示给定参考帧的全局运动参数是否无效。 请参见 7.11.3.6 节设置剪切过程和变量“warpValid”。 使用 V4L2_AV1_GLOBAL_MOTION_IS_INVALID(ref) 创建合适的掩码。

__u8

reserved[3]

应用程序和驱动程序必须将此设置为零。

AV1 全局 运动 标志

V4L2_AV1_GLOBAL_MOTION_FLAG_IS_GLOBAL

0x00000001

指定特定参考帧是否存在全局运动参数。

V4L2_AV1_GLOBAL_MOTION_FLAG_IS_ROT_ZOOM

0x00000002

指定特定参考帧是否使用旋转和缩放全局运动。

V4L2_AV1_GLOBAL_MOTION_FLAG_IS_TRANSLATION

0x00000004

指定特定参考帧是否使用平移全局运动

type v4l2_av1_frame_restoration_type

AV1 帧恢复类型。

V4L2_AV1_FRAME_RESTORE_NONE

0

不应用任何过滤。

V4L2_AV1_FRAME_RESTORE_WIENER

1

调用 Wiener 滤波器过程。

V4L2_AV1_FRAME_RESTORE_SGRPROJ

2

调用自引导滤波器过程。

V4L2_AV1_FRAME_RESTORE_SWITCHABLE

3

恢复滤波器是可切换的。

type v4l2_av1_loop_restoration

AV1 环路恢复,如 AV1 的 6.10.15 节“环路恢复参数语义”中所述。

struct v4l2_av1_loop_restoration

__u8

flags

参见 AV1 环路恢复标志

__u8

lr_unit_shift

指定亮度恢复大小是否应减半。

__u8

lr_uv_shift

指定色度大小是否应为亮度大小的一半。

__u8

reserved

应用程序和驱动程序必须将此设置为零。

v4l2_av1_frame_restoration_type

frame_restoration_type[V4L2_AV1_NUM_PLANES_MAX]

指定用于每个平面的恢复类型。

__u8

loop_restoration_size[V4L2_AV1_MAX_NUM_PLANES]

指定当前平面中以样本为单位的环路恢复单元的大小。

AV1 环路 恢复 标志

V4L2_AV1_LOOP_RESTORATION_FLAG_USES_LR

0x00000001

保留与 AV1 中 UsesLr 相同的含义。

V4L2_AV1_LOOP_RESTORATION_FLAG_USES_CHROMA_LR

0x00000002

保留与 AV1 中 UsesChromaLr 相同的含义。

type v4l2_av1_cdef

AV1 CDEF 参数语义,如 AV1 的 6.10.14 节“CDEF 参数语义”中所述。

struct v4l2_av1_cdef

__u8

damping_minus_3

控制去环滤波器的阻尼量。

__u8

bits

指定需要多少位才能指定要应用的 CDEF 滤波器。

__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]

指定辅助滤波器的强度。

type v4l2_av1_segment_feature

AV1 段特征,如 AV1 的第 3 节“符号和缩写词”中所述。

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

全局 mv 特征的索引。

V4L2_AV1_SEG_LVL_MAX

8

段特征的数量。

type v4l2_av1_segmentation

AV1 分割参数,如 AV1 的 6.8.13 节“分割参数语义”中所定义。

struct v4l2_av1_segmentation

__u8

flags

参见 AV1 分割标志

__u8

last_active_seg_id

指示具有某些启用特征的最高编号的段 ID。 在解码段 ID 时,这用于仅解码与使用段对应的选项。

__u8

feature_enabled[V4L2_AV1_MAX_SEGMENTS]

位掩码,定义在每个段中启用哪些特征。 使用 V4L2_AV1_SEGMENT_FEATURE_ENABLED 构建合适的掩码。

__u16

feature_data[V4L2_AV1_MAX_SEGMENTS][V4L2_AV1_SEG_LVL_MAX]

附加到每个特征的数据。 仅当启用该特征时,数据条目才有效。

AV1 分割 标志

V4L2_AV1_SEGMENTATION_FLAG_ENABLED

0x00000001

如果设置,指示此帧使用分割工具。 如果未设置,指示该帧不使用分割。

V4L2_AV1_SEGMENTATION_FLAG_UPDATE_MAP

0x00000002

如果设置,指示在解码此帧期间更新分割图。 如果未设置,指示使用上一帧的分割图。

V4L2_AV1_SEGMENTATION_FLAG_TEMPORAL_UPDATE

0x00000004

如果设置,指示对分割图的更新是相对于现有分割图进行编码的。 如果未设置,指示新的分割图是在没有参考现有分割图的情况下进行编码的。

V4L2_AV1_SEGMENTATION_FLAG_UPDATE_DATA

0x00000008

如果设置,指示对分割图的更新是相对于现有分割图进行编码的。 如果未设置,指示新的分割图是在没有参考现有分割图的情况下进行编码的。

V4L2_AV1_SEGMENTATION_FLAG_SEG_ID_PRE_SKIP

0x00000010

如果设置,指示将在跳过语法元素之前读取段 ID。 如果未设置,指示将首先读取跳过语法元素。

type v4l2_av1_loop_filter

AV1 环路滤波器参数,如 AV1 的 6.8.10 节“环路滤波器语义”中所定义。

struct v4l2_av1_loop_filter

__u8

flags

有关更多详细信息,请参见 AV1 环路滤波器标志

__u8

level[4]

一个数组,包含环路滤波器强度值。 来自数组的不同环路滤波器强度值取决于要过滤的图像平面和要过滤的边缘方向(垂直或水平)而使用。

__u8

sharpness

指示清晰度级别。 loop_filter_level 和 loop_filter_sharpness 一起确定何时过滤块边缘,以及过滤可以改变样本值的程度。 环路滤波器过程在 AV1 的 7.14 节中描述。

__u8

ref_deltas[V4L2_AV1_TOTAL_REFS_PER_FRAME]

包含基于所选参考帧对滤波器级别所需的调整。 如果不存在此语法元素,它将保持其先前的值。

__u8

mode_deltas[2]

包含基于所选模式对滤波器级别所需的调整。 如果不存在此语法元素,它将保持其先前的值。

__u8

delta_lf_res

指定应应用于解码环路滤波器增量值的左移。

AV1 环路 滤波器 标志

V4L2_AV1_LOOP_FILTER_FLAG_DELTA_ENABLED

0x00000001

如果设置,表示滤波器级别取决于用于预测块的模式和参考帧。 如果未设置,表示滤波器级别不取决于模式和参考帧。

V4L2_AV1_LOOP_FILTER_FLAG_DELTA_UPDATE

0x00000002

如果设置,表示存在额外的语法元素,用于指定要更新哪些模式和参考帧增量。 如果未设置,表示不存在这些语法元素。

V4L2_AV1_LOOP_FILTER_FLAG_DELTA_LF_PRESENT

0x00000004

指定是否存在环路滤波器增量值

V4L2_AV1_LOOP_FILTER_FLAG_DELTA_LF_MULTI

0x00000008

等于 1 的值指定为水平亮度边缘、垂直亮度边缘、U 边缘和 V 边缘发送单独的环路滤波器增量。 等于 0 的 delta_lf_multi 值指定对所有边缘使用相同的环路滤波器增量。

type v4l2_av1_quantization

AV1 量化参数,如 AV1 的 6.8.11 节“量化参数语义”中所定义。

struct v4l2_av1_quantization

__u8

flags

有关更多详细信息,请参见 AV1 环路滤波器标志

__u8

base_q_idx

指示基本帧 qindex。 这用于 Y AC 系数,并用作其他量化器的基本值。

__u8

delta_q_y_dc

指示相对于 base_q_idx 的 Y DC 量化器。

__u8

delta_q_u_dc

指示相对于 base_q_idx 的 U DC 量化器。

__u8

delta_q_u_ac

指示相对于 base_q_idx 的 U AC 量化器。

__u8

delta_q_v_dc

指示相对于 base_q_idx 的 V DC 量化器。

__u8

delta_q_v_ac

指示相对于 base_q_idx 的 V AC 量化器。

__u8

qm_y

指定量化器矩阵中应用于亮度平面解码的级别。

__u8

qm_u

指定量化器矩阵中应用于色度 U 平面解码的级别。

__u8

qm_v

指定量化器矩阵中应用于色度 V 平面解码的级别。

__u8

delta_q_res

指定应应用于解码量化器索引增量值的左移。

AV1 量化 标志

V4L2_AV1_QUANTIZATION_FLAG_DIFF_UV_DELTA

0x00000001

如果设置,指示 U 和 V 增量量化器值是单独编码的。 如果未设置,指示 U 和 V 增量量化器值共享一个公共值。

V4L2_AV1_QUANTIZATION_FLAG_USING_QMATRIX

0x00000002

如果设置,指定量化器矩阵将用于计算量化器。

V4L2_AV1_QUANTIZATION_FLAG_DELTA_Q_PRESENT

0x00000004

指定是否存在量化器索引增量值。

type v4l2_av1_tile_info

AV1 切片信息,如 ref:av1 的 6.8.14 节“切片信息语义”中所定义。

struct v4l2_av1_tile_info

__u8

flags

有关更多详细信息,请参见 AV1 切片信息标志

__u8

context_update_tile_id

指定用于 CDF 更新的切片。

__u8

tile_cols

指定跨帧的切片数。

__u8

tile_rows

指定沿帧向下的切片数。

__u32

mi_col_starts[V4L2_AV1_MAX_TILE_COLS + 1]

一个数组,指定图像中每个切片的起始列(以 4x4 亮度样本为单位)。

__u32

mi_row_starts[V4L2_AV1_MAX_TILE_ROWS + 1]

一个数组,指定图像中每个切片的起始行(以 4x4 亮度样本为单位)。

__u32

width_in_sbs_minus_1[V4L2_AV1_MAX_TILE_COLS]

指定以超块为单位的切片宽度减 1。

__u32

height_in_sbs_minus_1[V4L2_AV1_MAX_TILE_ROWS]

指定以超块为单位的切片高度减 1。

__u8

tile_size_bytes

指定编码每个切片大小所需的字节数。

__u8

reserved[3]

应用程序和驱动程序必须将此设置为零。

AV1 切片 信息 标志

V4L2_AV1_TILE_INFO_FLAG_UNIFORM_TILE_SPACING

0x00000001

如果设置,表示切片在帧中均匀分布。 (换句话说,所有切片的大小都相同,除了右边缘和底边缘的切片可能较小)。 如果未设置,表示将编码切片大小。

type v4l2_av1_frame_type

AV1 帧类型

V4L2_AV1_KEY_FRAME

0

关键帧。

V4L2_AV1_INTER_FRAME

1

帧间帧。

V4L2_AV1_INTRA_ONLY_FRAME

2

仅帧内帧。

V4L2_AV1_SWITCH_FRAME

3

切换帧。

type v4l2_av1_interpolation_filter

AV1 插值滤波器

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

滤波器选择在块级别进行信号通知。

type v4l2_av1_tx_mode

AV1 Tx 模式,如 AV1 的 6.8.21 节“TX 模式语义”中所述。

V4L2_AV1_TX_MODE_ONLY_4X4

0

逆变换将仅使用 4x4 变换。

V4L2_AV1_TX_MODE_LARGEST

1

逆变换将使用适合块内部的最大变换大小。

V4L2_AV1_TX_MODE_SELECT

2

变换大小的选择是为每个块显式指定的。

V4L2_CID_STATELESS_AV1_FRAME (struct)

表示帧头 OBU。 有关更多详细信息,请参见 AV1 的 6.8 节“帧头 OBU 语义”。

type v4l2_ctrl_av1_frame
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

CDEF 参数

__u8

skip_mode_frame[2]

当 skip_mode 等于 1 时,指定用于复合预测的帧。

__u8

primary_ref_frame

指定哪个参考帧包含应在帧开始时加载的 CDF 值和其他状态。

struct v4l2_av1_loop_restoration

loop_restoration

环路恢复参数。

struct v4l2_av1_global_motion

global_motion

全局运动参数。

__u32

flags

有关更多详细信息,请参见 AV1 帧标志

enum v4l2_av1_frame_type

frame_type

指定 AV1 帧类型

__u32

order_hint

指定此帧的预期输出顺序的 OrderHintBits 最低有效位。

__u32

upscaled_width

上采样的宽度。

enum v4l2_av1_interpolation_filter

interpolation_filter

指定用于执行帧间预测的滤波器选择。

enum v4l2_av1_tx_mode

tx_mode

指定如何确定变换大小。

__u32

frame_width_minus_1

加 1 以获得帧的宽度。

__u32

frame_height_minus_1

加 1 以获得帧的高度。

__u16

render_width_minus_1

加 1 以获得以亮度样本为单位的帧的渲染宽度。

__u16

render_height_minus_1

加 1 以获得以亮度样本为单位的帧的渲染高度。

__u32

current_frame_id

指定当前帧的帧 ID 号。 帧 ID 号是附加信息,不会影响解码过程,但为解码器提供了一种检测丢失的参考帧的方法,以便可以采取适当的措施。

__u8

buffer_removal_time[V4L2_AV1_MAX_OPERATING_POINTS]

指定从操作点 opNum 的最后一个随机访问点的删除时间开始计数的 DecCT 时钟周期为单位的帧删除时间。

__u8

reserved[4]

应用程序和驱动程序必须将此设置为零。

__u32

order_hints[V4L2_AV1_TOTAL_REFS_PER_FRAME]

指定每个参考帧的预期输出顺序提示。 此字段对应于规范中的 OrderHints 变量(5.9.2 节“未压缩的标头语法”)。 因此,这仅用于非帧内帧,否则将被忽略。 order_hints[0] 始终被忽略。

__u64

reference_frame_ts[V4L2_AV1_TOTAL_REFS_PER_FRAME]

枚举 v4l2_av1_reference_frame 中从 V4L2_AV1_REF_LAST_FRAME 开始枚举的每个参考帧的 V4L2 时间戳。 这表示参考槽的状态,如规范中所述,并由用户空间通过 7.20 节中的“参考帧更新过程”进行更新。 时间戳引用 struct v4l2_buffer 中的 timestamp 字段。 使用 v4l2_timeval_to_ns() 函数将 struct v4l2_buffer 中的 struct timeval 转换为 __u64。

__s8

ref_frame_idx[V4L2_AV1_REFS_PER_FRAME]

表示帧间帧使用的参考的有序列表的 reference_frame_ts 中的索引。 匹配同名的比特流语法元素。

__u8

refresh_frame_flags

包含一个位掩码,指定在解码当前帧后将使用当前帧更新哪些参考帧槽。

AV1 标志

V4L2_AV1_FRAME_FLAG_SHOW_FRAME

0x00000001

如果设置,指定一旦解码应立即输出此帧。 如果未设置,指定不应立即输出此帧;如果稍后的未压缩标头使用的 show_existing_frame 等于 1,则可能会稍后输出此帧。

V4L2_AV1_FRAME_FLAG_SHOWABLE_FRAME

0x00000002

如果设置,指定可以使用 show_existing_frame 机制输出帧。 如果未设置,指定将不使用 show_existing_frame 机制输出此帧。

V4L2_AV1_FRAME_FLAG_ERROR_RESILIENT_MODE

0x00000004

指定是否启用错误恢复模式。

V4L2_AV1_FRAME_FLAG_DISABLE_CDF_UPDATE

0x00000008

指定是否应禁用符号解码过程中的 CDF 更新。

V4L2_AV1_FRAME_FLAG_ALLOW_SCREEN_CONTENT_TOOLS

0x00000010

如果设置,指示帧内块可以使用调色板编码。 如果未设置,指示从不使用调色板编码。

V4L2_AV1_FRAME_FLAG_FORCE_INTEGER_MV

0x00000020

如果设置,指定运动矢量始终为整数。 如果未设置,指定运动矢量可以包含小数位。

V4L2_AV1_FRAME_FLAG_ALLOW_INTRABC

0x00000040

如果设置,指示可以在此帧中使用帧内块复制。 如果未设置,指示在此帧中不允许帧内块复制。

V4L2_AV1_FRAME_FLAG_USE_SUPERRES

0x00000080

如果设置,指示需要上采样。

V4L2_AV1_FRAME_FLAG_ALLOW_HIGH_PRECISION_MV

0x00000100

如果设置,指定运动矢量指定为八分之一像素精度。 如果未设置,指定运动矢量指定为四分之一像素精度;

V4L2_AV1_FRAME_FLAG_IS_MOTION_MODE_SWITCHABLE

0x00000200

如果未设置,指定仅使用 SIMPLE 运动模式。

V4L2_AV1_FRAME_FLAG_USE_REF_FRAME_MVS

0x00000400

如果设置,指定在解码当前帧时可以使用来自先前帧的运动矢量信息。 如果未设置,指定将不使用此信息。

V4L2_AV1_FRAME_FLAG_DISABLE_FRAME_END_UPDATE_CDF

0x00000800

如果设置,指示已禁用帧结束 CDF 更新。 如果未设置,指示已启用帧结束 CDF 更新

V4L2_AV1_FRAME_FLAG_ALLOW_WARPED_MOTION

0x00001000

如果设置,指示语法元素 motion_mode 可能存在,如果未设置,指示语法元素 motion_mode 将不存在。

V4L2_AV1_FRAME_FLAG_REFERENCE_SELECT

0x00002000

如果设置,指定帧间块的模式信息包含语法元素 comp_mode,该元素指示是使用单参考预测还是复合参考预测。 如果未设置,指定所有帧间块将使用单预测。

V4L2_AV1_FRAME_FLAG_REDUCED_TX_SET

0x00004000

如果设置,指定该帧仅限于变换类型的缩减子集。

V4L2_AV1_FRAME_FLAG_SKIP_MODE_ALLOWED

0x00008000

此标志保留与 AV1 中的 SkipModeAllowed 相同的含义。

V4L2_AV1_FRAME_FLAG_SKIP_MODE_PRESENT

0x00010000

如果设置,指定语法元素 skip_mode 将存在,如果未设置,指定此帧将不使用 skip_mode。

V4L2_AV1_FRAME_FLAG_FRAME_SIZE_OVERRIDE

0x00020000

如果设置,指定帧大小将指定为参考帧之一的大小,或者从 frame_width_minus_1 和 frame_height_minus_1 语法元素计算得出。 如果未设置,指定帧大小等于序列标头中的大小。

V4L2_AV1_FRAME_FLAG_BUFFER_REMOVAL_TIME_PRESENT

0x00040000

如果设置,指定 buffer_removal_time 存在。 如果未设置,指定 buffer_removal_time 不存在。

V4L2_AV1_FRAME_FLAG_FRAME_REFS_SHORT_SIGNALING

0x00080000

如果设置,指示仅显式地发出两个参考帧的信号。 如果未设置,指示显式地发出所有参考帧的信号。

V4L2_CID_STATELESS_AV1_FILM_GRAIN (struct)

表示可选的胶片颗粒参数。 有关更多详细信息,请参见 AV1 的 6.8.20 节“胶片颗粒参数语义”。

type v4l2_ctrl_av1_film_grain
struct v4l2_ctrl_av1_film_grain

__u8

flags

参见 AV1 胶片颗粒标志

__u8

cr_mult

表示 cr 分量的乘数,用于推导 cr 分量缩放函数的输入索引。

__u16

grain_seed

指定在胶片颗粒合成期间使用的伪随机数的起始值。

__u8

film_grain_params_ref_idx

指示哪个参考帧包含用于此帧的胶片颗粒参数。

__u8

num_y_points

指定亮度分段线性缩放函数的点数。

__u8

point_y_value[V4L2_AV1_MAX_NUM_Y_POINTS]

表示亮度分量的分段线性缩放函数的第 i 个点的 x(亮度值)坐标。 这些值以 0..255 的比例发出信号。 对于 10 位视频,这些值对应于亮度值除以 4。 对于 12 位视频,这些值对应于亮度值除以 16。

__u8

point_y_scaling[V4L2_AV1_MAX_NUM_Y_POINTS]

表示亮度分量的分段线性缩放函数的第 i 个点的缩放(输出)值。

__u8

num_cb_points

指定 cb 分量的分段线性缩放函数的点数。

__u8

point_cb_value[V4L2_AV1_MAX_NUM_CB_POINTS]

表示 cb 分量的分段线性缩放函数的第 i 个点的 x 坐标。 这些值以 0..255 的比例发出信号。

__u8

point_cb_scaling[V4L2_AV1_MAX_NUM_CB_POINTS]

表示 cb 分量的分段线性缩放函数的第 i 个点的缩放(输出)值。

__u8

num_cr_points

表示 cr 分量的分段线性缩放函数的点数。

__u8

point_cr_value[V4L2_AV1_MAX_NUM_CR_POINTS]

表示 cr 分量的分段线性缩放函数的第 i 个点的 x 坐标。 这些值以 0..255 的比例发出信号。

__u8

point_cr_scaling[V4L2_AV1_MAX_NUM_CR_POINTS]

表示 cr 分量的分段线性缩放函数的第 i 个点的缩放(输出)值。

__u8

grain_scaling_minus_8

表示应用于色度分量值的 shift - 8。 grain_scaling_minus_8 可以取 0..3 的值,并确定胶片颗粒标准偏差的范围和量化步长。

__u8

ar_coeff_lag

指定亮度和色度的自回归系数数。

__u8

ar_coeffs_y_plus_128[V4L2_AV1_AR_COEFFS_SIZE]

指定用于 Y 平面的自回归系数。

__u8

ar_coeffs_cb_plus_128[V4L2_AV1_AR_COEFFS_SIZE]

指定用于 U 平面的自回归系数。

__u8

ar_coeffs_cr_plus_128[V4L2_AV1_AR_COEFFS_SIZE]

指定用于 V 平面的自回归系数。

__u8

ar_coeff_shift_minus_6

指定自回归系数的范围。 值 0、1、2 和 3 分别对应于 [-2, 2)、[-1, 1)、[-0.5, 0.5) 和 [-0.25, 0.25) 的自回归系数范围。

__u8

grain_scale_shift

指定在高斯随机数应在颗粒合成过程中缩减多少。

__u8

cb_mult

表示 cb 分量的乘数,用于推导 cb 分量缩放函数的输入索引。

__u8

cb_luma_mult

表示平均亮度分量的乘数,用于推导 cb 分量缩放函数的输入索引。

__u8

cr_luma_mult

表示平均亮度分量的乘数,用于推导 cr 分量缩放函数的输入索引。

__u16

cb_offset

表示用于推导 cb 分量缩放函数的输入索引的偏移量。

__u16

cr_offset

表示用于推导 cr 分量缩放函数的输入索引的偏移量。

__u8

reserved[4]

应用程序和驱动程序必须将此设置为零。

AV1 胶片 颗粒 标志

V4L2_AV1_FILM_GRAIN_FLAG_APPLY_GRAIN

0x00000001

如果设置,指定应将胶片颗粒添加到此帧。 如果未设置,指定不应添加胶片颗粒。

V4L2_AV1_FILM_GRAIN_FLAG_UPDATE_GRAIN

0x00000002

如果设置,表示应发送一组新参数。 如果未设置,指定应使用上一组参数。

V4L2_AV1_FILM_GRAIN_FLAG_CHROMA_SCALING_FROM_LUMA

0x00000004

如果设置,则指定色度缩放是从亮度缩放推断出来的。

V4L2_AV1_FILM_GRAIN_FLAG_OVERLAP

0x00000008

如果设置,则表示应应用胶片颗粒块之间的重叠。 如果未设置,则表示不应应用胶片颗粒块之间的重叠。

V4L2_AV1_FILM_GRAIN_FLAG_CLIP_TO_RESTRICTED_RANGE

0x00000010

如果设置,则表示在添加胶片颗粒后,应对采样值应用限制范围(工作室范围,即有限范围)的剪切(有关工作室范围的解释,请参阅 color_range 的语义)。 如果未设置,则表示在添加胶片颗粒后,应对采样值应用全范围的剪切。