当前位置:   article > 正文

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

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写入码流中ÿ
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/895202
推荐阅读
相关标签
  

闽ICP备14008679号