我用emscripten编译C代码到asm.js 我的C代码:使用Module.HEAP8.set搞的一团糟数据
int _call_main(char* p, int number)//p is the start arrary, number is the lengh
我想一个字节组数据发送到C代码,我JS这样的代码:
var decode_encode_audio = Module.cwrap('_call_main', 'number', ['array','number']);
........
var byteArray = new Uint8Array(message.data);//audio data
var offset = Module._malloc(70000);
Module.HEAP8.set(byteArray, offset);
decode_encode_audio(offset , byteArray.length);
在C代码,我打印点p阵列,我得到了弄乱数据,起始部和p的端部是正确的(I保存文件),但是,中间部分被混乱。我用[Module.HEAPU8.set]替换函数(Module.HEAP8.set),也出错。我不知道为什么?
我改变了JS代码:
var decode_encode_audio = Module.cwrap('_call_main', 'number', ['number','number']);//not array
........
var byteArray = new Uint8Array(message.data);//audio data
//var offset = Module._malloc(70000);
//Module.HEAP8.set(byteArray, offset);
decode_encode_audio(byteArray, byteArray.length);
我得到正确的数据。
任何人都可以告诉我“Module.HEAP8.set”方法有什么问题。
我们可以通过一个加扰数据的例子来看问题吗? –