Ошибка «Не удалось преобразовать 'float' в float **" - PullRequest
2 голосов
/ 30 ноября 2011

Я записал сэмплы с микрофонного входа в массив Float32, и теперь я хочу превратить этот массив сэмплов в файл WAV.

По-видимому, хороший способ сделать это - это использовать служебный класс из библиотеки DIRAC , так как его класс EAFWrite имеет метод writeFloats, который должен сделать свое дело .

Когда я вызываю метод writeFloats от EAFWrite, я получаю сообщение об ошибке «Не удается преобразовать 'float' в float **". Вот звонок:

[mWriter writeFloats:128 fromArray:mySession];

Массив был инициализирован так: Float32 mySession[10000000] = {0};

Что вы думаете не так? Это проблема с указателями?

1 Ответ

1 голос
/ 30 ноября 2011

Просмотр исходного кода writeFloats:fromArray: (он включен в библиотеку, doncha kno) показывает, что параметр data на самом деле должен быть массивом указателей массива, с одним указателем массива на канал.Предположительно, вы указали один канал в каком-то предыдущем сообщении для mWriter, так что теперь вы можете просто сделать это:

Float32 *channelsData[1] = { mySession };
[mWriter writeFloats:128 fromArray:channelsData];

или если вы хотите получить действительно хитрый:

[mWriter writeFloats:128 fromArray:(Float32 *[]){ mySession }];
...