x264 源码分析 -cabac浅析(一)

本文深入探讨了x264编码器中的CABAC(Context-Adaptive Binary Arithmetic Coding)编码机制,包括编码流程、概率模型建立、二值化过程以及码表更新。内容涉及宏块头信息如帧内预测模式、CBP、参考帧索引等,并详细阐述了P宏块和B宏块的编码过程。通过对每个宏块头信息的分析,揭示了CABAC如何高效地编码视频数据。

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

x264代码中的cabac和之前理解的算数编码有点不一样,x264中编码的时候,先需要将

数据二值化,然后建概率模型。逐个bit写入cabac cache,然后不断更新码表,因为二值化过,所以码表只有两个值0/1。

同样解码的时候,逆向来的,解码一个bit调整一次码表。这个流程目前没有看明白,先看看cabac存储了宏块的哪些字段

cabac_mb_type_intra //帧内块type,另外还有个预测模式

cabac_field_decoding_flag //场编码标记

cabac_intra4x4_pred_mode //帧内块4x4预测模式

cabac_intra_chroma_pred_mode//帧内色度块预测模式 只有帧内预测,才有模式

cabac_cbp_luma //亮度块cbp

cabac_cbp_chroma //色度块cbp

cabac_qp_delta //存储delta qp值

x264_cabac_mb_skip //存储是否为skip宏块标记

cabac_subpartition_p //字块partition P帧

cabac_subpartition_b B帧partition

cabac_transform_size //dct变换size

cabac_ref_p //参考帧idx

cabac_ref_b //B帧参考帧信息,带个list方向

cabac_mvd_cpn //存储mvd信息

cabac_8x8_mvd//存储8x8mvd

cabac_mb_header_i//mb header信息,mb类型,slice 类型,是否为色度

cabac_mb_header_p //MB类型 ,是否为色度

cabac_mb_header_b //mb类型,是否为色度

cabac_block_residual_internal //残差信息

接下来看看,实际编码mb的时候,是如何做的。

P宏块

B宏块

这里先分析完了每一个宏块的宏块头里面存储有哪些信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值