下载此文档

指数哥伦布.docx


文档分类:研究报告 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
目录
. 指数哥伦布编码原理 2
. 零阶指数哥伦布解码标准实现 2
. FFmpeg实现 3
零阶指数哥伦布码解码原理和实现
指数哥伦布编码属于变长编码,其基本原理是用短码字表示出现频率较高的信息,用长码字表示出现频率较低的信息。
指数哥伦布编解码原理
指数哥伦布编码也是变长编码的一种,指数哥伦布编码也是由前缀和后缀组成。K阶指数哥伦布码的组成如图1(a)所示:分为m个前缀0,一个比特1和m+k个后缀。解析时首先从比特流当前位置开始寻找第一个非零比特,并将找到的0比特个数记为m,第一个非零比特之后的m+k个二进制串的十进制值记为Value,如图1(b)所示。由于k阶指数哥伦布码中有一步是:去掉最低的k个比特,之后加1,然后将最低k比特恢复,相当于Value的值中包含了一个额外添加的2^k;同时,在进行码流解析时,m个前导0之后的第一个非零比特没有被计算在Value值内。

(a) 指数哥伦布解析形式(b) 指数哥伦布值的计算
图1. 指数哥伦布编码
因此解码值CodeNum的计算方式如下:
CodeNum = 2^(m+k) – 2^(k) + Value
在H264/AVC和HEVC在参数集的变长编码中常用的是0阶指数哥伦布编码,分为无符号0阶哥伦布指数编码和有符号数0级哥伦布指数编码,如表1-1所示,其中CodeNum表示解码值,有符号所对应的列表示无符号编码是所对应的值,有符号表示采用有符号0阶指数哥伦布编码时所对应的十进制数。
表1-1 0阶有符号和无符号指数哥伦布编码
码字
CodeNum
无符号
有符号
1
0
0
0
010
1
1
1
011
2
2
-1
00100
3
3
2
00101
4
4
-2
00110
5
5
3
00111
6
6
-3




零阶指数哥伦布解码标准实现
零阶指数哥伦布解码时,k=0,所以标准中的实现如下图2所示。从中可以看出,标准中的实现方法是采用一个比特一个比特地进行操作。
leadingZeroBits = .1
for( b = 0; !b; leadingZeroBits++ )
b = read_bits( 1 )
codeNum = 2leadingZeroBits -1 + read_bits( leadingZeroBits )
图2. 标准零阶指数哥伦布解码实现
零阶指数哥伦布解码FFmpeg实现
在FFmpeg中采用了查表和计算相结合的方法,对码长不超过9比特的码字制作了ff_golomb_vlc_len和ff_ue_golomb_vlc_code查找表计算码长和码字,如图3和4所示,否则通过计算的方式得出码长和码字。
const uint8_t ff_golomb_vlc_len[512]={
19,17,15,15,13,13,13,13,11,11,11,11,11,11,11,11,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
5,5,5,5,5,5,5,5,5,5

指数哥伦布 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人s1188831
  • 文件大小61 KB
  • 时间2017-07-13
最近更新