我正确地编组了:
IntPtr buffer
Buffer指向指向具有相应数据的数组的2个指针的数组。 问题是我得不到准确的数据,比如检索到的数据中缺少某些东西(例如,从音频数据流中错过样本)。
// length is parameter
IntPtr[] temp = new IntPtr[2];
Marshal.Copy(buffer, temp, 0, 2);
bufferedData = new byte[bufferSize];
byte[] a = new byte[length];
byte[] b = new byte[length];
Marshal.Copy(temp[0], a, 0, length);
Marshal.Copy(temp[1], b, 0, length);
编辑:抱歉,我忘记写下这两行:)
答案 0 :(得分:1)
我终于解决了它。我没有错误地读取完整的输入缓冲区。谢谢你的帮助!
答案 1 :(得分:0)
是的,您还需要复制字节缓冲区:)
更新:看起来更好!
答案 2 :(得分:0)
如果buffer是指向数组的指针,则需要再次读取指针。
有效:
buffer = Marshal.ReadIntPtr(buffer);
答案 3 :(得分:0)
我对C#一无所知,所以这是一个完整的猜测,但是 - 你好像是从int复制到字节,是int的计数长度,还是以字节为单位的计数?那里会有混音吗?这有时会成为常规旧C ++中的一个问题。