我正在实施ITU-T G.711标准,我决定从G.191中的参考代码开始。
对A-law压缩运行一些测试让我怀疑算法的正确性。
根据G.711,输入范围0-63应位于第一段,步长为2。 G.191中的示例代码将此范围映射如下:
在将输出与表中的值进行比较时,不仅得到1段偏移,而且范围也减半,使得压缩的FF对应于统一的2047.
我应该如何处理符合G.711标准的编解码器?
答案 0 :(得分:5)
该代码与标准相符。
首先注意,该标准假设13位输入(但总是量化lsb),代码假设为16位,并立即丢弃除12 ms之外的所有输入。因此,在12位术语中,G.711中的表1a实际上是这样说的:
唯一剩下的差异是第一段显然在代码中分为两部分。这不是真的;请注意,这些段与指数不同;细分1包含指数000
和001
。该代码专门处理指数。