- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
指数哥伦布重点讲义
目录
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc469752415 1.1. 指数哥伦布编码原理 PAGEREF _Toc469752415 \h 2
HYPERLINK \l _Toc469752416 1.2. 零阶指数哥伦布解码标准实现 PAGEREF _Toc469752416 \h 2
HYPERLINK \l _Toc469752417 1.3. FFmpeg实现 PAGEREF _Toc469752417 \h 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无符号有符号100001011101122-1001003320010144-2001105530011166-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,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
文档评论(0)