博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
H.264句法和语法总结(十四)CAVLC 残差句法
阅读量:4183 次
发布时间:2019-05-26

本文共 1673 字,大约阅读时间需要 5 分钟。

residual_block_cavlc( coeffLevel, maxNumCoeff ) {  C      Descriptor 

    for( i = 0; i < maxNumCoeff; i++ )           

        coeffLevel[ i ] = 0      

    
// coeff_token      指明了非零系数的个数,拖尾系数的个数。       
    
coeff_token
  

    if( TotalCoeff( coeff_token ) > 0 ) {           

        if( TotalCoeff( coeff_token ) > 10    &&    TrailingOnes( coeff_token ) < 

3 ) 

            suffixLength = 1           

        else           

            suffixLength = 0           

        for( i = 0; i < TotalCoeff( coeff_token ); i++ )           

            if( i < TrailingOnes( coeff_token ) ) {            

             
   // trailing_ones_sign_flag  拖尾系数的符号 
                    -     如果trailing_ones_sign_flag = 0,  相应的拖尾系数是+1。 
                    -     否则,trailing_ones_sign_flag =1,相应的拖尾系数是-1。
  

                
trailing_ones_sign_flag
   

                level[ i ] = 1 – 2 * trailing_ones_sign_flag           

            } else {           

                
// level_prefix and level_suffix  非零系数值的前缀和后缀。  
                
level_prefix
  

                levelCode = ( level_prefix << suffixLength )           

                if( suffixLength > 0    | |    level_prefix >= 14 ) {           

                    
level_suffix
   

                    levelCode += level_suffix           

                }           

                if( level_prefix    = =    15    &&    suffixLength    = =    0 )           

                    levelCode += 15           

                if( i    = =    TrailingOnes( coeff_token )    &&     

                      TrailingOnes( coeff_token ) < 3 ) 

                    levelCode += 2           

                if( levelCode % 2    = =    0 )           

                    level[ i ] = ( levelCode + 2 ) >> 1           

                else           

                    level[ i ] = ( –levelCode – 1 ) >> 1           

                if( suffixLength    = =    0 )           

                    suffixLength = 1           

                if( Abs( level[ i ] )    >    ( 3 << ( suffixLength – 1 ) )    &&     

                      suffixLength < 6 ) 

                    suffixLength++           

            }           

        if( TotalCoeff( coeff_token ) < maxNumCoeff ) {           

            
// total_zeros    系数中 0 的总个数。
 

            
total_zeros
    

            zerosLeft = total_zeros           

        } else           

            zerosLeft = 0           

        for( i = 0; i < TotalCoeff( coeff_token ) – 1; i++ ) {           

            if( zerosLeft > 0 ) {           

                

                
run_before
    

                run[ i ] = run_before           

            } else           

                run[ i ] = 0           

            zerosLeft = zerosLeft – run[ i ]           

        }           

        run[ TotalCoeff( coeff_token ) – 1 ] = zerosLeft           

        coeffNum = -1           

        for( i = TotalCoeff( coeff_token ) – 1; i >= 0; i-- ) {           

            coeffNum += run[ i ] + 1           

            coeffLevel[ coeffNum ] = level[ i ]             

        }           

    }           

}

转载地址:http://pbzoi.baihongyu.com/

你可能感兴趣的文章
求字符串的最长回文串-----Manacher's Algorithm 马拉车算法
查看>>
回溯法常用的解题模板和常见题型
查看>>
深入分析Java I/O 的工作机制
查看>>
动态规划的套路----左神
查看>>
KMP算法简解
查看>>
左神算法课进阶版总结
查看>>
左神算法基础班总结
查看>>
Linux性能优化
查看>>
进程间的通信---UNIX高级环境编程
查看>>
基于SSH开发的城市公交管理系统 JAVA MySQL
查看>>
基于SSH开发的勤工助学管理系统 JAVA MySQL
查看>>
基于SSH开发的宠物销售商城系统 JAVA MySQL
查看>>
基于springboot的宠物领养管理系统 java
查看>>
JAVA 洗衣房管理系统 宿舍洗衣机管理系统
查看>>
基于SSM的街道办安全管理系统 JAVA
查看>>
基于SSM的论文选题管理系统 JAVA
查看>>
生成器模式
查看>>
工厂方法模式
查看>>
阿里规范(一)关于CountDownLatch和ThreadLocalRandom的详解(带测试代码)
查看>>
Mysql 函数 STR_TO_DATE
查看>>