Структура AudioBuffer
хранит данные в памяти, а не в файле. Поэтому fread
не имеет значения.
mBuffer
- это просто указатель на начало данных, и вы можете использовать два других поля структуры для правильного чтения данных. От этой ссылки :
struct AudioBuffer {
UInt32 mNumberChannels;
UInt32 mDataByteSize;
void *mData;
};
mDataByteSize
сообщает вам, сколько байтов содержит буфер (таким образом, вы не получите доступ к памяти через конец буфера), а mNumberChannels
говорит вам, как переупорядочить ваши данные, например, если буфер содержит два канала, то данные чересстрочные, то есть отсчеты 1,3,5, ... поступают из канала 1, а 2,4,6 ... из канала 2.
Помните, что вы также несете ответственность за приведение данных к правильному типу.