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

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

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

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

V4L2_CID_CODEC_STATELESS_CLASS (类)

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

V4L2_CID_STATELESS_H264_SPS (结构体)

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

type v4l2_ctrl_h264_sps
结构体 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 (结构体)

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

type v4l2_ctrl_h264_pps
结构体 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 (结构体)

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

type v4l2_ctrl_h264_scaling_matrix
结构体 v4l2_ctrl_h264_scaling_matrix

__u8

scaling_list_4x4[6][16]

应用逆扫描过程后的缩放矩阵。预期的列表顺序是帧内 Y、帧内 Cb、帧内 Cr、帧间 Y、帧间 Cb、帧间 Cr。每个缩放列表中的值都按光栅扫描顺序排列。

__u8

scaling_list_8x8[6][64]

应用逆扫描过程后的缩放矩阵。预期的列表顺序是帧内 Y、帧间 Y、帧内 Cb、帧间 Cb、帧内 Cr、帧间 Cr。每个缩放列表中的值都按光栅扫描顺序排列。

V4L2_CID_STATELESS_H264_SLICE_PARAMS (结构体)

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

type v4l2_ctrl_h264_slice_params
结构体 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

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

结构体v4l2_h264_reference

ref_pic_list0[32]

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

结构体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 (结构体)

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

type v4l2_ctrl_h264_pred_weights
结构体 v4l2_ctrl_h264_pred_weights

__u16

luma_log2_weight_denom

__u16

chroma_log2_weight_denom

结构体v4l2_h264_weight_factors

weight_factors[2]

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

type v4l2_h264_weight_factors
结构体 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
结构体 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 (结构体)

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

类型 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

类型 v4l2_h264_dpb_entry
struct v4l2_h264_dpb_entry

__u64

reference_ts

用作参考的 V4L2 捕获缓冲区的的时间戳,与 B 编码和 P 编码帧一起使用。时间戳引用结构 v4l2_buffer 中的 timestamp 字段。使用 v4l2_timeval_to_ns() 函数将结构 v4l2_buffer 中的结构 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 (枚举)

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

类型 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 (枚举)

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

类型 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 (结构体)

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

类型 v4l2_ctrl_fwht_params
struct v4l2_ctrl_fwht_params

__u64

backward_ref_ts

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

__u32

version

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

__u32

width

帧的宽度。

__u32

height

帧的高度。

__u32

flags

帧的标志,参见 FWHT 标志

__u32

colorspace

帧的色彩空间,来自枚举 v4l2_colorspace

__u32

xfer_func

传递函数,来自枚举 v4l2_xfer_func

__u32

ycbcr_enc

Y'CbCr 编码,来自枚举 v4l2_ycbcr_encoding

__u32

quantization

量化范围,来自枚举 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 (结构体)

指定相关联的 VP8 解析帧数据的帧参数。这包括为 VP8 配置无状态硬件解码管道所需的必要参数。比特流参数根据 VP8 定义。

类型 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

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

__u16

height

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

__u8

horizontal_scale

水平缩放因子。

__u8

vertical_scale

垂直缩放因子。

__u8

version

比特流版本。

__u8

prob_skip_false

指示宏块未被跳过的概率。

__u8

prob_intra

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

__u8

prob_last

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

__u8

prob_gf

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

__u8

num_dct_parts

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

__u32

first_part_size

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

__u32

first_part_header_bits

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

__u32

dct_part_sizes[8]

DCT 系数的大小。

__u64

last_frame_ts

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

__u64

golden_frame_ts

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

__u64

alt_frame_ts

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

__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

0x20

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

类型 v4l2_vp8_entropy_coder_state
struct v4l2_vp8_entropy_coder_state

__u8

range

“Range”的编码器状态值

__u8

value

“Value”的编码器状态值

__u8

bit_count

剩余的位数。

__u8

padding

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

类型 v4l2_vp8_segment
struct v4l2_vp8_segment

__s8

quant_update[4]

有符号量化器值更新。

__s8

lf_update[4]

有符号环路滤波器级别值更新。

__u8

segment_probs[3]

段概率。

__u8

padding

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

__u32

flags

请参阅 段标志

标志

V4L2_VP8_SEGMENT_FLAG_ENABLED

0x01

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

V4L2_VP8_SEGMENT_FLAG_UPDATE_MAP

0x02

指示此帧中是否更新了宏块分割映射。

V4L2_VP8_SEGMENT_FLAG_UPDATE_FEATURE_DATA

0x04

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

V4L2_VP8_SEGMENT_FLAG_DELTA_VALUE_MODE

0x08

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

类型 v4l2_vp8_loop_filter
struct v4l2_vp8_loop_filter

__s8

ref_frm_delta[4]

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

__s8

mb_mode_delta[4]

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

__u8

sharpness_level

锐度级别

__u8

level

滤波器级别

__u16

padding

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

__u32

flags

请参阅 环路滤波器标志

环路 滤波器 标志

V4L2_VP8_LF_ADJ_ENABLE

0x01

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

V4L2_VP8_LF_DELTA_UPDATE

0x02

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

V4L2_VP8_LF_FILTER_TYPE_SIMPLE

0x04

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

类型 v4l2_vp8_quantization
struct 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

padding

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

类型 v4l2_vp8_entropy
struct 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 规范的比特流的序列头和序列扩展部分中的语法元素匹配的字段。

类型 v4l2_ctrl_mpeg2_sequence
struct 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

0x01

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

V4L2_CID_STATELESS_MPEG2_PICTURE (结构体)

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

类型 v4l2_ctrl_mpeg2_picture
struct 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 节“量化矩阵扩展”指定。

类型 v4l2_ctrl_mpeg2_quantisation
struct 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)。

类型 v4l2_ctrl_vp9_compressed_hdr
struct 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 定义。

类型 v4l2_ctrl_vp9_frame
struct v4l2_ctrl_vp9_frame

struct v4l2_vp9_loop_filter

lf

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

struct v4l2_vp9_quantization

quant

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

struct 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 以获取以像素表示的预期渲染宽度。这在解码过程中不使用,但硬件缩放器可能会使用它来准备好用于扫描输出的帧。请参阅 VP9 中的 7.2.4 节。

__u16

render_height_minus_1

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

__u64

last_frame_ts

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

__u64

golden_frame_ts

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

__u64

alt_frame_ts

“alt”参考缓冲区时间戳。该时间戳引用结构体 v4l2_buffer 中的 timestamp 字段。使用 v4l2_timeval_to_ns() 函数将结构体 timeval 中的结构体 v4l2_buffer 转换为 __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]

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

标志

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 帧参考模式语义”章节。

类型 v4l2_vp9_segmentation

对量化参数进行编码。更多详情请参考 VP9 规范的“7.2.10 分段参数语法”章节。

struct 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

0x01

指示此帧使用分段工具。

V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP

0x02

指示应在此帧解码期间更新分段图。

V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE

0x04

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

V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA

0x08

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

V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE

0x10

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

类型 v4l2_vp9_quantization

对量化参数进行编码。更多详情请参考 VP9 规范的“7.2.9 量化参数语法”章节。

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

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

类型 v4l2_vp9_loop_filter

此结构包含所有与环路滤波器相关的参数。更多详情请参考 VP9 规范的“7.2.8 环路滤波器语义”章节。

struct 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 语义”中进行了描述。

类型 v4l2_ctrl_hevc_sps
struct 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 (结构体)

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

类型 v4l2_ctrl_hevc_pps
struct v4l2_ctrl_hevc_pps

__u8

pic_parameter_set_id

为其他语法元素引用 PPS 提供标识符。

__u8

num_extra_slice_header_bits

指定在引用 PPS 的编码图像的切片头 RBSP 中存在的额外切片头位数。

__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

指定默认的去块效应滤波参数 beta 的偏移量除以 2 的值。

__s8

pps_tc_offset_div2

指定默认的去块效应滤波参数 tC 的偏移量除以 2 的值。

__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 节中导出的量化参数 qP 的 cb 偏移量

__s8

slice_act_cr_qp_offset

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

__s8

slice_beta_offset_div2

指定 beta 的去块效应滤波参数偏移量除以 2 的值。

__s8

slice_tc_offset_div2

指定 tC 的去块效应滤波参数偏移量除以 2 的值。

__u8

pic_struct

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

__u32

slice_segment_addr

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

__u8

ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

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

__u8

ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

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

__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

padding

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

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 编码帧一起使用。时间戳引用结构 v4l2_buffer 中的 timestamp 字段。使用 v4l2_timeval_to_ns() 函数将结构 v4l2_buffer 中的结构 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 (枚举)

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

类型 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 (枚举)

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

类型 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 (整数)

指定 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 (整数)

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

V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX (整数)

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

V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (位掩码)

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

V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (结构体)

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

类型 v4l2_ctrl_hevc_decode_params
struct v4l2_ctrl_hevc_decode_params

__s32

pic_order_cnt_val

PicOrderCntVal,如规范第 8.3.1 节“图片顺序计数的解码过程”中所述。

__u16

short_term_ref_pic_set_size

指定在切片头或 SPS(第 7.3.6.1 节)中描述为 st_ref_pic_set() 的第一个切片的短期参考图片集的大小(以位为单位)。

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

PocStCurrBefore,如第 8.3.2 节“参考图片集解码过程”中所述:提供 DPB 数组中短期之前的参考的索引。

__u8

poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

PocStCurrAfter,如第 8.3.2 节“参考图片集解码过程”中所述:提供 DPB 数组中短期之后的参考的索引。

__u8

poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]

PocLtCurr,如第 8.3.2 节“参考图片集解码过程”中所述:提供 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 (结构体)

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

类型 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 平面可以具有单独的 delta 量化器值。如果未设置,则指示 U 和 V 平面将共享相同的 delta 量化器值。

V4L2_CID_STATELESS_AV1_TILE_GROUP_ENTRY (结构体)

表示 AV1 Tile Group 内的单个 AV1 瓦片。请注意,MiRowStart、MiRowEnd、MiColStart 和 MiColEnd 可以通过使用 tile_row 和 tile_col 从 struct v4l2_av1_tile_infostruct v4l2_ctrl_av1_frame 中检索。更多详细信息,请参阅 AV1 中第 6.10.1 节“通用瓦片组 OBU 语义”。

类型 v4l2_ctrl_av1_tile_group_entry
结构体 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”。

类型 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

扭曲模型是一般的仿射变换。

类型 v4l2_av1_reference_frame

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

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

BWD 帧参考。

V4L2_AV1_REF_ALTREF2_FRAME

6

ALTREF2 帧参考。

V4L2_AV1_REF_ALTREF_FRAME

7

ALTREF 帧参考。

类型 v4l2_av1_global_motion

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

结构体 v4l2_av1_global_motion

__u8

flags[V4L2_AV1_TOTAL_REFS_PER_FRAME]

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

枚举 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

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

类型 v4l2_av1_frame_restoration_type

AV1 帧恢复类型。

V4L2_AV1_FRAME_RESTORE_NONE

0

不应用任何滤波。

V4L2_AV1_FRAME_RESTORE_WIENER

1

调用维纳滤波器处理。

V4L2_AV1_FRAME_RESTORE_SGRPROJ

2

调用自引导滤波器处理。

V4L2_AV1_FRAME_RESTORE_SWITCHABLE

3

恢复滤波器是可切换的。

类型 v4l2_av1_loop_restoration

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

结构体 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 相同的含义。

类型 v4l2_av1_cdef

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

结构体 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]

指定辅助滤波器的强度。

类型 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

段功能的数量。

类型 v4l2_av1_segmentation

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

结构体 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。如果未设置,则表示将首先读取跳过语法元素。

类型 v4l2_av1_loop_filter

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

结构体 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 边缘发送单独的环路滤波器增量。delta_lf_multi 的值为 0 表示所有边缘使用相同的环路滤波器增量。

类型 v4l2_av1_量化

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

结构体 v4l2_av1_量化

__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

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

类型 v4l2_av1_瓦片信息

AV1 瓦片信息,定义在 ref:av1 的 6.8.14 节“瓦片信息语义”中。

结构体 v4l2_av1_瓦片信息

__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

如果设置,表示瓦片在帧中均匀间隔。(换句话说,除了右边缘和底边缘的瓦片可能较小之外,所有瓦片的大小都相同)。如果未设置,则表示瓦片大小是编码的。

类型 v4l2_av1_帧类型

AV1 帧类型

V4L2_AV1_KEY_FRAME

0

关键帧。

V4L2_AV1_INTER_FRAME

1

帧间帧。

V4L2_AV1_INTRA_ONLY_FRAME

2

仅帧内帧。

V4L2_AV1_SWITCH_FRAME

3

切换帧。

类型 v4l2_av1_插值滤波器

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

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

类型 v4l2_av1_tx_模式

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 (结构体)

表示帧头 OBU。更多细节请参阅 AV1 的 6.8 节“帧头 OBU 语义”。

类型 v4l2_ctrl_av1_frame
结构体 v4l2_ctrl_av1_frame

结构体 v4l2_av1_tile_info

tile_info

瓦片信息

结构体 v4l2_av1_量化

quantization

量化参数。

__u8

superres_denom

上采样比率的分母。

结构体 v4l2_av1_分割

segmentation

分割参数。

结构体 v4l2_av1_环路滤波器

loop_filter

环路滤波器参数

结构体 v4l2_av1_cdef

cdef

CDEF 参数

__u8

skip_mode_frame[2]

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

__u8

primary_ref_frame

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

结构体 v4l2_av1_环路恢复

loop_restoration

环路恢复参数。

结构体 v4l2_av1_全局运动

global_motion

全局运动参数。

__u32

flags

更多细节请参阅 AV1 帧标志

枚举 v4l2_av1_帧类型

frame_type

指定 AV1 帧类型

__u32

order_hint

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

__u32

upscaled_width

上采样的宽度。

枚举 v4l2_av1_插值滤波器

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_REF_LAST_FRAME 开始,枚举的每个参考帧的 V4L2 时间戳,在 enum v4l2_av1_reference_frame 中定义。这表示规范中描述的参考槽的状态,并由用户空间通过第 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

如果设置,则指定运动矢量以 1/8 像素精度指定。如果未设置,则指定运动矢量以 1/4 像素精度指定;

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 (结构体)

表示可选的胶片颗粒参数。有关更多详细信息,请参见 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 的语义)。 如果未设置,则表示在添加胶片颗粒后,应将样本值裁剪到完整范围。