H264/AVC-slice header解析

本文详细解读了视频编码中sliceheader的构成,包括first_mb_in_slice、slice_type、pic_parameter_set_id等核心元素,以及它们在编码中的作用,如帧定位、类型识别和参考帧管理。特别关注了MBAFF、POC计算和预测策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个slice语法由slice header和slice data构成,slice header表示该slice的基本语法,slice data则存放了该slice中所有宏块的数据。

slice header语法结构

在这里插入图片描述
在这里插入图片描述first_mb_in_slice:
表示该slice的第一个宏块在图像中的位置。一个图像可能分为多个slice单独编码,因此可以通过first_mb_in_slice确定该slice是否为一个完整的图像。
1)如果MbaffFrameFlag 等于 0, 也就是该slice不是mbaff,则first_mb_in_slice 表示该slice的第一个宏块位置。first_mb_in_slice 的数值范围是 0 到 PicSizeInMbs − 1。
2)否则(该slice是mbaff),first_mb_in_slice * 2 是该slice的第一个宏块位置, 也就是第一个宏块对的顶场宏块。此时 first_mb_in_slice 的数值范围是 0 到 PicSizeInMbs / 2 − 1。

slice_type
表示slice的类型
在这里插入图片描述
pic_parameter_set_id
表示该slice对应的PPS参数,通过pps_id可以找到对应的PPS。

frame_num
表示当前帧序号,每个IDR的frame_num会清零。

field_pic_flag
表示当前slice是否为场格式。
当前slice是否为mbaff由该语法推导:
MbaffFrameFlag = ( mb_adaptive_frame_field_flag && !field_pic_flag )

bottom_field_flag
表示该slice是否为底场

pic_order_cnt_lsb、delta_pic_order_cnt_bottom、delta_pic_order_cnt
这几个语法元素用于该slice的POC计算,具体计算方式可参考POC计算方式

direct_spatial_mv_pred_flag
表示B slice中B_Direct和B_Skip宏块 mv 预测方式,因此只有B slice才由该语法。
direct_spatial_mv_pred_flag等于1表示使用空域direct预测方式;
等于0表示使用时域direct预测

num_ref_idx_active_override_flag
PPS中编码了当前slice的前向、后向参考帧个数num_ref_idx_l0_active_minus1和num_ref_idx_l1_active_minus1,num_ref_idx_active_override_flag=1,表示该slice的前向后向参考帧个数与PPS中的元素不一样,需要重新编码。
否则,不需要重新编码,直接使用PPS中的值。

cabac_init_idc
用于该slice的 cabac 初始化。
对于I slice,cabac初始化不需要该元素,所以不编码该语法。

slice_qp_delta
表示该slice的qp偏移量
当前slice Y分量qp计算方式如下:SliceQPY = 26 + pic_init_qp_minus26 + slice_qp_delta

disable_deblocking_filter_idc
表示是否使用deblocking。
0:开启去块滤波功能,去块滤波需要对整个图像(包括多个slice)执行。
1:关闭去块滤波功能。
2:开启去块滤波功能,但是滤波只能对同一个slice范围内的宏块执行。比如图像分为slice1和slice2,如果slice2的宏块2与slice1的宏块1相邻,则两个宏块的相邻边不需要滤波。

slice_alpha_c0_offset_div2、slice_beta_offset_div2
滤波要用到的参数

ref_pic_list_reordering( )
表示参考帧队列重排序语法。具体排序过程可参考参考帧队列重排序

dec_ref_pic_marking( )
表示参考帧标记过程,用于确定参考帧队列中的帧是短期参考、长期参考还是不用于参考帧。具体过程参考解码参考标记

pred_weight_table( )
表示帧间预测权重。帧间预测使用的每一个参考帧的YUV分量都可能对应一个权重,获取预测块时需要乘以该权值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值