H264/AVC 句法和语义--重要的字段、带截图

一 SPS、PPS句法和语义

宽高在SPS里。
profile_idc:baseline、main、high。
level_idc:值越大,最大宏块处理速率等值越大。
m_ptParam.i_level_idc = 21; //X264编码参数
chroma_format_idc:1表示采样格式为4:2:0。
frame_mbs_only_flag:=1只含帧宏块。
SPS

entropy_coding_mode_flag:1—cabac 0—cavlc
weighted_pred_flag=1—P片使用加权预测
weighted_bipred_idc=2—B片使用隐式加权预测

m_ptParam.rc.i_qp_min = 10; //量化的最小值
m_ptParam.rc.i_qp_max = 51;
PPS

二 Slice Header

slice_type:0–P帧,1–B帧,2–I帧。大于5时,做减5处理。
field_pic_flag:0—帧编码 1—场编码(顶场、底场)。
idr_pic_id:IDR帧的序号。
disable_deblocking_filter_idc:去块滤波器。
first_mb_in_slice:重要,第一个宏块在整帧中的位置
frame_num:解码用。
POC picture_order_count:显示用。
pic_order_cnt_lsb:这个不是poc。
编码帧,POC包括TopFieldOrderCnt、BottomFieldOrderCnt。
SPS中有一个pic_order_cnt_type决定。
pic_order_cnt_type=0:只对POC低位编码传输。有B帧的。
=2:显示和解码顺序一致。没有B帧。
Slice Header

三 条带数据(宏块)语法

P帧才有运动矢量motion vectors L0 and L1
Mb_type:25–I_PCM,以差分编码形式保存宏块原始的像素值。
非I_PCM:值不确定。I slice,0-24。P slice,0-4。B slice,0-22。

mb_skip_run:cavlc跳过的个数,mb_skip_flag:使用cabac时,宏块是否跳过。
transform_size_8x8_flag:为1,预测残差按照8x8像素块进行解码。
为0,4x4。

CBP coded_block_pattern:当前宏块内的4个8x8子块编码对那个残差系树进行编码。
该语法在宏块为非I_16x16模式才存在。I_16x16,cbp在mb_type体现了。

高2位存储色度cbp:值范围0-2。
低4位存储亮度cbp:对应4个8x8,0-1。

mb_qp_delta:量化参数偏移值,[-26, 25]。
每一个slice第一个宏块的量化参数:
QP0 = pic_init_qp + 26 + slice_qp_delta + mb_qp_delta。
第二个及以后:QPn = (QPm + mb_qp_delta + 52) % 52。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值