1

我目前在我的 C 源代码中使用两个函数将 A-law 文件转换为 PCM 16 位,将 U-law 文件转换为 PCM 16 位。U-law 文件到 PCM 16 位的转换不成功。生成的 PCM 16 位文件有很多噪音。

下面有两个函数:

short ALawToPcm16(char c)
{
    int i;
    short val;

    i = (c & 0x00FF) ^ 0x0055;

    if (i > 0x007F)
    {
        val = (short)(0x10000 - AIndexToPcm16Bit[i - 0x80]);
    }
    else
    {
        val = AIndexToPcm16Bit[i];
    }

    return(val);
}


short FctMuLawToPcm16(char c)
{
    int i;
    short val;

    i = (c & 0x00FF);

    if (i > 0x007F)
    {
        val = (short)(0x10000 - UIndexToPcm16Bit[i - 0x80]);
    }
    else
    {
        val = UIndexToPcm16Bit[i];
    }

    return(val);
}

谁能告诉我第二个功能有什么问题?谢谢

4

1 回答 1

0

尝试替换i = (c & 0x00FF);i = (c & 0x00FF) ^ 0x00FF; – Ian Abbott

于 2018-09-04T09:26:47.603 回答