G.711实施A-law

时间:2013-12-18 16:30:57

标签: c standards codec standards-compliance

我正在实施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标准的编解码器?

1 个答案:

答案 0 :(得分:5)

该代码与标准相符。

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

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

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

相关问题