x264 编码器 CAVLC 熵编码原理分析:cavlc_block_residual_internal函数

cavlc_block_residual_internal函数

  1. 函数功能:该函数是完成残差编码的核心函数
  2. 函数原理过程
  • 定义两个查找表,ctz_index[8]用于计算拖尾系数、count_cat[14]用于根据块类别获取特定计数上限;
  • 调用量化模块中coeff_level_run函数,根据块类别,计算出非零系数总数i_total和非零系数的幅值 level;
  • 将 runlevel.level 数组的最后两个元素设置为2。这样做的目的是为了在计算尾部非零系数时,确保至少有三个非零系数(因为 i_total 是非零系数的总数,所以 i_total+0 和 i_total+1 实际上是数组的末尾位置)。
  • 使用位运算来计算尾部非零系数的数量,即拖尾系数i_trailing;
  • 使用 ctz_index 查找表将尾部非零系数的数量转换为对应的索引值,作为最终的拖尾系数i_trailing的个数;
  • 计算尾部非零系数的符号位i_sign;
  • 根据i_total、i_trailing、nC,在多维数组x264_coeff_token中找到对应数值,调用bs_write_vlc函数将coff_token 写入码流中;
  • 根据i_total、i_trailing的值计算非零系数的幅值的后缀长度i_suffix_length初始值;
  • 调用bs_write函数将拖尾系数i_trailing的符号位i_sign写入码流中ÿ
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Codec Conductor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值