H.264中用到的指数哥伦布解码
标准中描述为ue(v)、te(v)、se(v)、me(v)时调用
哥伦布码字表前几行
码字 编码数字(Code_Num)
1 0
010 1
011 2
00100 3
00101 4
00110 5
00111 6
0001000 7
前缀为M个0
后缀为M位的二进制数[info]
解码时:
读取1前面的0,计数得到M的值
读取1后M比特
Code_Num = 2^M -1 + [info]
编码时, 语法元素值Value按照映射ue、te、se、me得到Code_Num
解码是,根据映射类型逆运算,得到Value
①ue为无符号映射,Value = Code_Num
②se为有符号映射,如下表
Code_Num 0 1 2 3 4 5 …
Value 0 1 -1 2 -2 3 …
③te截断映射,根据Value的取值范围做不同的处理
如果Value范围是[0,K],K是大于1的一个数,那么te和ue一样
如果Value范围是[0,1]
那么不用上面的哥伦布码表取得Code_Num
直接从码流里读取1比特,设值为b,Code_Num = !b
④me映射是用Code_Num对应宏块预测模式,标准中表9-4给出了映射关系