我目前在我的 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);
}
谁能告诉我第二个功能有什么问题?谢谢