0
所以我发现了一些C代码来解压缩某些PCM样本,我想在AS3中做同样的事情。我试图这样做,但似乎没有工作。我对C没有多少了解,尽管我在AS3中很流利,所以我可能会错误地翻译它。我是否将此C代码正确转换为AS3?
下面是C语言代码:(Output()
是用于动作,以在所述解压缩样本值做一个占位符)
BYTE bShift; // shift value
char *inputBuffer[dwSize];
SHORT iCurValue;
DWORD i;
iCurValue=0x0000;
for (i=0;i<dwSize;i++)
{
iCurValue+=(signed short)inputBuffer[i];
Output(iCurValue<<bShift);
}
这里是我在AS3制成的功能这是为了做同样的事情:
private function pcmDecompress(pcmBytes:ByteArray, shift:int):ByteArray
{
var input:ByteArray = pcmBytes;
var output:ByteArray = new ByteArray();
output.endian = Endian.LITTLE_ENDIAN;
var iCurValue:int = 0x0000;
for (var i:int = 0; i < input.length; i++)
{
iCurValue += input[i];
output.writeShort(iCurValue << shift);
}
return output;
}
后来我编码的WAV文件并保存,使用output
含有样本的数据部分。 WAV文件播放,但我听到的是很多静态。
任何帮助将不胜感激。
现在看起来很明显。我尝试了它(用'while'循环替换'for'循环),但我仍然是静态的。另外,'input'中有奇数个字节,所以我得到一个“文件结束”错误,除非在剩余1个字节时我跳出循环。不过,我在64位系统上,这会有所作为吗? – puggsoy 2013-04-08 15:26:20