AV1 HEADERS详解
av1 sequence header
字段名 | 比特数 | 含义与说明 |
seq_profile | 3 | 配置文件Profile,定义了一组编码工具的限制和要求 0 Main profile 1 high profile 2 professional profile 3 reserved |
still_picture | 1 | 标识是否为静态图片 1 此系列只包含一帧 0 此序列包含多帧 |
reduced_still_picture_header | 1 | 是否使用简化的帧头结构 如果still_picture=1, 则此标志也必须为1 如果still_picture=0 此标志可以为0或者1,使用简化头可以节省比特,但是限制了一些高级功能 |
timing_info_present_flag | 1 | 是否提供时序信息,如果为1,后面会跟着timing_info()结构 |
decoder_model_info_present_flag | 1 | 是否提供解码器模型信息。用于缓冲期管理. 如果为1,后面会跟着decoder_model_info(). 通常只在需要精确时间控制的场景中使用 |
initial_display_delay_present_flag | 1 | 是否提供初始显示延迟,用于某些特定帧的显示控制 |
operating_points_cnt_minus_1 | 5 | 指示操作点的数量,操作点用于可伸缩视频编码SVC和多层编码,每个操作点对应一个可解码的子流,对于简单的不分层视频,此值为0 |
后续循环operating_point_{i} | 为每个操作点解码所必需的参数,如图层,等级等。 | |
frame_width_bits_minus_1 | 4 | 用于计算max_frame_width和max_frame_height的比特数,N = frame_width_bits_minus_1 + 1,那么帧宽/高将用N比特来表示 |
frame_height_bits_minus_1 | 4 | |
max_frame_width_minus_1 | N | 视频帧的最大宽度(以像素为单位)。实际最大宽度 = max_frame_width_minus_1 + 1 |
max_frame_height_minus_1 | N | 视频真的最大高度(以像素为单位)。实际最大高度 = max_frame_height_minus_1 + 1 |
frame_id_numbers_present_flag | 1 | 是否使用帧ID好, 用于参考帧管理和错误恢复 |
use_128x128_superblock | 1 | 超级块尺寸,AV1的基本处理单元 |
enable_filter_intra | 1 | 是否允许使用帧内预测滤波工具 |
enble_intra_edge_filter | 1 | 是否允许使用帧内边缘滤波工具 |
enable_interintra_compound | 1 | 是否允许使用inter_intra复合模式 |
enable_masked_compound | 1 | 是否允许使用遮蔽复合模式 |
enable_warped_motion | 1 | 是否允许使用反射运动补偿 |
enable_dual_filter | 1 | 是否允许使用可分离的双插值滤波器 |
enable_order_hint | 1 | 是否启用顺序提示Order Hint, 用于支持参考帧列表灵活管理 |
enable_jnt_comp | 1 | 是否允许使用联合复合预测 |
enable_ref_frame_mvs | 1 | 是否允许使用基于参考帧的运动向量推导 |
seq_force_screen_content_tools | 2 | 强制使用屏幕内容工具的选择 0 由编码器在每帧决定 -1 强制不使用 -2 强制使用 -3 保留 |
order_hint_bits_minus_1 | 3 | 如果enable_order_hint为真,此字段定义order_hint的比特数 |
enable_superres | 1 | 是否允许使用超分分辨率编码工具,该工具允许编码低于最大尺寸的帧,然后解码时上采样 |
enable_cdef | 1 | 是否允许使用的约束定向增强滤波CDEF,一种强大的环路恢复滤波器 |
enable_restoration | 1 | 是否允许使用环路恢复滤波器Loop Restoration filter 这是最强大的环路滤波器,包括自导滤波器和双滤波器 |
color_config() | 可变 | 颜色配置结构。如果seq_profile > 0即非Main profile,则一定存在 |
high_bitdepth | 1 | 高比特深度标志 |
twelve_bit | 1 | 12比特深度标志 |
bit_depth | 推导出的像素比特深度 如果seq_profile为0 main:bit_depth = 8 + (high_bitdepth * 2) 否则:bit_depth = 8 + high_bitdepth * (twelve_bit?4:2) | |
mono_chrome | 1 | 是否为单色视频 |
color_description_present_flag | 1 | 是否提供颜色描述信息 |
color_primaries | 8 | 颜色原色(BT709,BT2020) |
transfer_characteristics | 8 | 传输特性 如SRGB,HLG,PQ |
matrix_coefficients | 8 | 矩阵系数 如BT709, BT2020 |
color_range | 1 | 颜色范围 0 studio swing 1 full swing |
subsampleing_x subsampling_y | 1 | 色度采样格式 如果mono_chrome=1, 这两项都为0 否则:subsamping_x和subsampling_y 1表示4:2:0 |
chroma_sample_position | 2 | 色度样本未知,仅在subsampling_x或者subsampling_y 为1时存在 |
film_grain_parames_present | 1 | 是否允许在元数据OBU中携带电影颗粒参数,电影颗粒合成是在解码后进行的后处理操作 |
av1 obu header
字段名 | 比特数 | 详细解析 |
obu_forbidden_bit | 1 | 禁用位。含义,该位位保留位,以供未来标准使用。 解析要求 必须为0,任何接受到该位为1的OBU的解码器必须将其视为损坏的比特流并拒绝解码,这是一个简单的错误检测机制 |
obu_type | 4 | 1 OBU_SEQUENCE_HEADER 2 OBU_TEMPORAL_DELIMITER 3 OBU_FRAME_HEADER 4 OBU_FILE_GROUP 5 OBU_METADATA 6 OBU_FRAME 7 OBU_REDUNDANT_FRAME_HEADER 16 OBU_PADDING |
obu_extension_flag | 1 | 含义:指示当前OBU header后是否紧跟着一个可选的obu_extension_header 0 不存在: obu_extension_header 1 存在 obu_extension_header 需要继续解析下来的1字节 |
obu_has_size_field | 1 | 大小字段标志 含义:指示在当前OBU Header之后,是否包含一个明确标识payload长度的obu_size字段 值详解 0 不存在obu_size字段,payload的长度必须通过其他方式推断 1 存在 obu_size字段,字段使用LEB128编码,明确指出了payload的字节数 |
obu_reserved_1bit | 1 | 含义:该位为保留位,以供未来标准使用 解析要求:在当前版本的AV1标准中,该位必须为0,解码器应该忽略位的值,但发送方必须将其设置为0 |
可选扩展头 | ||
字段名 | 比特数 | 详细解析 |
obu_extension_header | 1 | OBU扩展头 存在痛啊就,当且仅当obu_extension_flag 为1时存在。 |
temporal_id | 3 | 时间标识符 用于可伸缩视频编码SVC,标识当前OBU所属的时间层级,数值越大,标识的帧率越高,但是对下层有依赖性,解码器可以根据需要丢弃高temporal_id的OBU来降低帧率 |
spatial | 2 | 空间标识符 用于可伸缩视频编码SVC,标识当前OBU所属的空间层级,即分辨率,数值越大,分辨率越高,解码器可以只解码到所需的spatial_id层级 |
externsion_header_reserved_3bits | 3 | 扩展头保留 解析要求,必须为0,保留供未来使用 |
obu_size | 可变 | OBU栽荷大小 存在条件:当且仅当obu_has_size_field为1时存在 编码方式:使用LEB128可变长度编码, |