H.264句法和语法总结(十四)CAVLC 残差句法

2024-03-16 00:38

本文主要是介绍H.264句法和语法总结(十四)CAVLC 残差句法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 ]             
        }           
    }           
}

这篇关于H.264句法和语法总结(十四)CAVLC 残差句法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/813786

相关文章

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析