基于内容的自适应变长编码
来源:互联网 发布:取餐叫号软件 编辑:程序博客网 时间:2024/05/22 04:48
基于内容自适应的变长编码方式用于编码zigzag顺序扫描的4x4和2x2残差变换系数块。 1、 编码系数个数和零序列(coeff_token): coeff_token = <TotalCoeff, TrailingOnes>; TotalCoeff = 编码非零系数总数; [0 , 16] TrailingOnes = 特殊处理的+/-1个数; [0 , 3] 2、 编码每个TrailingOne的符号: 倒序,从高频开始向前编码TrailingOne符号,每个符号一位,0为正,1为负,最多为3个。 3、 编码余下非零系数的幅值: 编码顺序:倒序,从高频开始向前编码直到DC系数,每个幅值码字level[i]包含一个幅值前缀level_prefix和一个幅值后缀level_suffix。 level[i]: Level为实际系数的幅值。但有个例外: 当TrailingOnes<3时,那么被编码的第一个非T1 幅值肯定不是+/-1(否则将算作T1)。这个幅值如果为负就加1(如果为正就减1),例如+/-2 被映射成+/-1, +/-3映射成+/-2进行编码,这样可以用较短的变长码. levelCode: 如果 level[i]为正, levelCode = (Level[i] << 1) - 2; 如果 level[i]为负, levelCode = -(Level[i] << 1) - 1; 计算level_prefix: 编码时: level_prefix = levelCode / (1 << suffixLength); 根据level_prefix查标准表9-6得到码字 解码时: 从比特流的当前位置开始读取,计算为0的leading bits数量。0的长度即为level_prefix值,对应关系可察看标准文档中表9-6。 计算suffixLength: suffixLength为0-6 比特,其长度是自适应变换的。 suffixLength 增长过程: 1、 初始化suffixLength = 0 ; 如果有超过10个非零系数,并且少于3个TailingOnes,这时suffixLength = 1; 2、 编码最高频的非零系数; 3、 如果这个系数的幅值大于一定的阈值,则增长suffixLength 当前suffixLength 增加suffixLength的系数阈值 0 0 1 3 2 6 3 12 4 24 5 48 6 N/A
更新suffixLength函数如下:
if(suffixLength == 0)
++suffixLength;
else if(level[i] > (3<<suffixLength-1) && suffixLength < 6)
++suffixLength;
计算levelSuffixSize: (后缀是长度为levelSuffixSize的无符号整数)
除了以下两种情况levelSuffixSize等于suffixLength:
1、 level_prefix == 14 && suffixLength == 0 时, levelSuffixSize = 4;
2、 level_prefix >= 15 时,levelSuffixSize = level_prefix – 3;
4、 编码最后一个非零系数前零的个数
使用VLC编码最高频非零系数前所有零的个数
total_zeros:既为最高非零系数前所有零的个数;编码表见标准表9-7;表9-8;表9-9
5、 编码每个零游程
zerosLeft: 当前系数之前所有的零的个数
run_before: 紧接当前系数前的零个数
- 基于内容的自适应变长编码
- 基于内容的自适应变长编码[CAVLC]
- 基于上下文的自适应变长编码CAVLC原理与流程
- 修改版:基于上下文的自适应变长编码CAVLC原理与流程
- 变长编码
- 基于内容的可编程编码(CAVLC)
- Hadoop的一个变长long编码剖析
- 遗传算法染色体变长编码的实现
- UTF8编码-变长编码
- 梯度下降算法与反向传播算法的不同、关系、辨别、使用---基于UFLDL教程的第一章稀疏自编码的内容
- 让div自动适应内容的高度
- iframe自动适应内容的高度
- 使文本框自动适应内容的高度
- textarea自动适应内容的高度
- 让div自动适应内容的高度
- div自动适应内容的高度
- 自动适应已编码或为未编码的Url
- Protobuf中的变长编码:Varints
- POJ 2631 最长路搜索,BFS
- [转载]Darwin Streaming Serve流媒体服务器安装笔记
- 关于外部设备存储空间的地址映射--摘自情景分析
- Shrink VMWare Virtual Disks formatted with ext4[转]
- C#创建不规则窗体的几种方式
- 基于内容的自适应变长编码
- 生成完整路径名的两种方法
- 获取Explorer进程ID的两种方式
- selenium 2011 2-19
- WSPRINTF格式化字符串函数
- 获取文件大小、时间
- 从窗口句柄获取进程句柄并终止进程GetWindowThreadProcessID
- 一个简单的内存补丁程序
- 利用进程ID获取主线程ID