从u-law转换为PCM,16位

问题描述 投票:1回答: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);
}

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

c pcm mu-law
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.