Я завершаю несколько звонков в неуправляемую библиотеку Aubio DLL (Aubio.org),
и мне интересно, какой хороший способ иметь дело с сэмплебуфером Aubio.
Это определено так:
// Buffer for real values
struct _fvec_t {
uint length; // length of buffer
uint channels; // number of channels
float **data; // data array of size [length] * [channels]
};
Aubio создает структуру для меня с правильно настроенными камерами данных, поэтому я получаю IntPtr.
Мне нужно читать / записывать указатель (и) данных из моего кода C #.
for (int chan_idx = 0; chan_idx < my_fvec.channels; ++chan_idx)
for (int i=0; i<something; i++)
my_fvec.data[chan_idx][i] = SomeRandomValue();
Как правильно сопоставить структуру C # с типом fvec_t, чтобы я мог правильно обращаться к элементу данных для чтения / записи в него?
(Или я должен использовать Marshal.Copy, и как мне сделать это с массивом указателей?)