2010-04-07 1 views
0

Я хотел бы прочитать пакеты из аудиофайла, но я не хочу отправлять их в буфер воспроизведения. Я просто хочу получить массив пакетов, в идеале, как плавающие. Я подготовил аудио, а затем хочу позвонить:AudioFileReadPackets в массив?

OSStatus err = AudioFileReadPackets (audioFileID,FALSE,outBytes,NULL,0,numPackets,whatGoesHere?); 

Но что входит в этот последний аргумент?

Спасибо.

ответ

1

Если вы использовали Audio Queue Services, вы можете поместить указатель mAudioData в AudioQueueBuffer. Но поскольку вам просто нужны биты, вы можете передать указатель на предварительно выделенный буфер (статический или динамический) по вашему выбору. Вы можете вывести верхнюю границу необходимого размера буфера, используя части dataFormat из вашего файла.

Пример этого расчета приведен в Audio Queue Services Programming Guide; grep для DeriveBufferSize.

+1

Я должен прокомментировать, что ваш «outBytes» не является действительно параметром out - это параметр io, означающий, что вам нужно заранее установить его в емкость вашего буфера. Если считываемые данные превышают размер вашего буфера, будет считано меньшее количество пакетов, а остальные параметры будут отражать это. – warrenm