Encoding Exp-Golomb码字构造和解析方法

Encoding Exp-Golomb码字构造和解析方法,encoding,compression,decoding,lossless-compression,openh264,Encoding,Compression,Decoding,Lossless Compression,Openh264,我正在使用OpenH264编解码器。OpenH264使用Exp-Golomb编码来获取报头相关信息。我研究了几个网站,收集了一些关于Exp Golomb编码的信息。OpenH264使用4种类型的Exp Golomb编码方法。它们是: Ue[当值仅为非负数时] Te[当值仅为1或0时] Se[当值同时为负数和正数时] Me[当值为值定义标准代码映射时] 我已经学会了如何通过方法Ue构造或解析 Exp-Golomb(Ue)=[M-Zeros][1][INFO]的语法格式 构造:假设我们有一个Co

我正在使用OpenH264编解码器。OpenH264使用Exp-Golomb编码来获取报头相关信息。我研究了几个网站,收集了一些关于Exp Golomb编码的信息。OpenH264使用4种类型的Exp Golomb编码方法。它们是:

  • Ue[当值仅为非负数时]
  • Te[当值仅为1或0时]
  • Se[当值同时为负数和正数时]
  • Me[当值为值定义标准代码映射时]
我已经学会了如何通过方法Ue构造或解析

Exp-Golomb(Ue)=[M-Zeros][1][INFO]的语法格式

构造:假设我们有一个Code_Num=226
现在,
M=楼层(log2(代码数量))=楼层(log2(226))=7
INFO=Code_Num+1-pow(2,M)=226+1-128=99=(1100011)二进制格式
所以,
码字=00000001 1100011[M-zero,1忽略位,信息]

解析: 假设我们有一个码字=0000000 11100011
Code_Num=pow(2,M)+INFO-1=128+99-1=226


现在我可以计算Exp Golomb(Ue)。但我想学习所有与Se、Te和我相关的理论。但是我找不到其他方法的任何资源。请帮帮我

OpenH264是H.264/AVC视频编解码器的实现

AVC在它的各种头文件中使用Exp Golomb编码,所有兼容的编码器也必须使用

此外,te(v)代表截断指数golomb编码

无论如何,您可以在

但是一个真正快速的tl;dr是0=1,1=010,-1=011,等等

至于这个烂摊子:

M=floor(log2(code_Num))=floor(log2(226))=7
INFO=Code_Num+1-pow(2,M)=226+1-128=99=(1100011)二进制
所以
CodeWord=00000001 1100011[M-零,1忽略位,信息]

这一点都不准确,应该在编码时加1,在解码时减去1(仅适用于无符号Exp-Golomb),有符号Exp-Golomb使用完全不同的系统

编辑:

映射的Exp-Golomb与未签名的Exp-Golomb完全相同,另外还有一个表查找

截断Exp Golomb与标准RICE aka一元编码相同,只是停止位为0

如果您不想创建自己的解码器/编码器,请看一下我的项目BitIO,因为我已经编写了它们,特别是ReadRICE/WriteRICE和ReadExpGolomb/WriteExpGolomb函数