xcode, target c, чтение содержимого аудиофайла (.WAV, кодировка PCM) в целочисленный массив C

Я работаю над приложением, которое захватывает аудиозапись и преобразует ее в mp3.

я использую библиотеку с открытым исходным кодом LAME в C для преобразования в mp3. у него есть функция, которая требует, чтобы весь поток целых чисел представлял закодированный PCM файл .wav в виде integer array.

Это мой первый проект по разработке для iphone, и я не могу понять, как я могу прочитать содержимое файла wav (который должен быть не чем иным, как stream of integers) в C style array?

пожалуйста помоги.

Нирав


person Neerav Kothari    schedule 28.05.2013    source источник
comment
Мне пришлось покинуть проект в тот же день, поэтому я больше не возвращался к этому вопросу. Извините.   -  person Neerav Kothari    schedule 12.01.2014


Ответы (1)


В Objective C вы можете легко прочитать из файла объект NSData примерно так:

NSData *data = [NSData datawithContentsOFFile:filename];

Затем вы можете получить количество байтов в этом объекте и выделить целочисленный массив в стиле C соответствующего размера, например:

NSUInteger length = [data length];
int *cdata = (int*)malloc(length);

и скопируйте байты из объекта NSData в массив C следующим образом:

[data getBytes:(void*)cdata length:length];

Не забудьте освободить память в массиве C, когда закончите с этим.

free(cdata);
person James Holderness    schedule 28.05.2013
comment
Мне пришлось покинуть проект в тот же день, поэтому я больше не возвращался к этому вопросу. Извините. обязательно запомнит это. - person Neerav Kothari; 12.01.2014
comment
Это не работает для меня: S он читает 52494646 285f0100 57415645, из 5249 4646 24b0 0000 5741 5645. Почему он объединяет каждые 2x4 цифры? - person antonio; 23.08.2015