G.711实施A-law

Geo*_*rge 4 c standards standards-compliance codec

我正在实施ITU-T G.711标准,我决定从G.191中的参考代码开始.

对A-law压缩运行一些测试让我怀疑算法的正确性.

根据G.711,输入范围0-63应位于第一段,步长为2.G.191中的示例代码将此范围映射如下:

  • 在段0上从0到15,步长为1
  • 在段1上从16到31,步长为1
  • 在段2上从32到63,步长为2

在将输出与表中的值进行比较时,不仅我们得到1段偏移,而且范围也减半,使得压缩的FF对应于均匀的2047.

我应该如何进行以获得符合G.711标准的编解码器?

Oli*_*rth 5

代码与标准相符.

首先请注意,标准假定13位输入(但总是量化lsb),代码假定为16位,并立即丢弃除12 ms之外的所有输入.因此,在12位术语中,G.711中的表1a实际上是这样说的:

  • 段1:输入值0 - > 31(步长1)
  • 段2:输入值32 - > 63(步长2)
  • ...

唯一剩下的差异是第一段显然在代码中分成两部分.这不是真的; 请注意,这些段与指数不同; 第1部分包括指数000001.该代码专门处理指数.