我试图做一些简单的事:
向一个C图书馆派遣一个星座,填补一个缓冲地带,并读到记忆中,但我认为,我存在着转换问题。
这里,我是在以下行动中做的:
var memory:ByteArray = gstate.ds;
// get sound
var soundBytes:ByteArray = new ByteArray();
_source.extract(soundBytes, 4096);
soundBytes.position = 0;
// send sound
_lib.processSound(soundBytes);
// get sound back to play it
memory.position = _dataPosition
event.data.writeBytes(memory);
《刑法》:
我的缓冲变量:
float *buffer;
缓冲区一开始便衣着:
static AS3_Val initByteArray(void* self, AS3_Val args) {
AS3_ArrayValue(args, "IntType", &bufferSize);
buffer = (float*)malloc(bufferSize*sizeof(float));
return AS3_Int((int)buffer);
}
我处理的是:
AS3_Val src = AS3_Undefined();
AS3_ArrayValue( args,"AS3ValType", &src );
// get length
AS3_Val lengthOfArgs = AS3_GetS(src,"length");
int len = AS3_IntValue(lengthOfArgs);
// set position to 0 and write the buffer
AS3_ByteArray_seek(src, 0, SEEK_SET);
AS3_Trace(AS3_GetS(src, "bytesAvailable"));
AS3_ByteArray_readBytes(buffer, src, len);
现在我犯了错误:
Exception fault: RangeError: Error #2004: One of the parameters is invalid. at flash.media::Sound/play()
在我写在缓冲地带时,记忆似乎正确增加,4096天,为32768人,为8人(左翼和右频道为4人)。
当我在寄送提格雷之前追踪闪电时,我有类似数目(具体立场是1421年比较):
soundBytes.position = 1421 * 8;
trace(soundBytes.readFloat()); // trace -0.000030517578125 (left)
trace(soundBytes.readFloat()); // trace 0.000030517578125 (right)
在C中,我可以找到同样的编号:
AS3_ByteArray_seek(src, 1421*8, SEEK_SET);
AS3_Val emptyParams = AS3_Array("");
AS3_Val readFloat = AS3_GetS(src, "readFloat");
AS3_Trace(readFloat);
AS3_Val left = AS3_Call(readFloat, src, emptyParams);
AS3_Trace(left); // trace -0.000030517578125 (left)
AS3_Val right = AS3_Call(readFloat, src, emptyParams);
AS3_Trace(right); // trace 0.000030517578125 (right)
但是,当我追踪缓冲区时:
AS3_Trace(AS3_Number(buffer[1421*2])); // trace 2.5783891743576634e-43
AS3_Trace(AS3_Number(buffer[(1421*2)+1])); trace 7.847271400218976e-44
在打字之后的闪光中:
soundBytes.position = 1421 * 8;
trace(soundBytes.readFloat()); // trace 2.5783891743576634e-43
trace(soundBytes.readFloat()); // trace 7.847271400218976e-44
我看一看该数字已经转换或具有不同的类型/格式:
-0.000030517578125 vs 2.5783891743576634e-43
不要说C的流利,对发生什么的想法是什么?
感谢阅读。
Romu