На самом деле я в растерянности.
У меня все правильно настроено - даже если я испортил некоторые значения, обратный вызов все равно должен быть вызван.
Мой код вызова, если кому-то все равно - вызывается с помощью действия кнопки:
[self audioDataFormatSetup:&anAQData];
NSLog(@"buffer size %lu, packets %lu", anAQData.bufferByteSize, anAQData.mNumPacketsToRead);
anAQData.mIsRunning = true;
AudioQueueNewOutput (
&anAQData.mDataFormat,
HandleOutputBuffer,
&anAQData,
CFRunLoopGetCurrent(),
kCFRunLoopCommonModes,
0,
&anAQData.mQueue
);
//buffers here
anAQData.mCurrentPacket = 0;
for (int i = 0; i < kNumberBuffers; ++i) {
AudioQueueAllocateBuffer (
anAQData.mQueue,
anAQData.bufferByteSize,
&anAQData.mBuffers[i]
);
HandleOutputBuffer (
&anAQData,
anAQData.mQueue,
anAQData.mBuffers[i]
);
}
NSLog(@"buffer size %lu, packets %lu", anAQData.bufferByteSize, anAQData.mNumPacketsToRead);
AudioQueueStart (
anAQData.mQueue,
NULL
);
NSLog(@"AQ started");
/*
do {
CFRunLoopRunInMode (
kCFRunLoopDefaultMode,
0.25,
false
);
} while (anAQData.mIsRunning);
CFRunLoopRunInMode (
kCFRunLoopDefaultMode,
1,
false
);*/
Нет ошибок, ничего. Это смешно.
edit: Не берите в голову, я дебил, который не умеет читать.
Я забыл установить mAudioDataByteSize, чтобы указать, что в буфере есть данные, которые стоит прочитать. / Facepalm
PS: я забыл также увеличить начальный пакет / текущий пакет. / Вздох
PPS: ошибка в обратном вызове. Пропустил несколько шагов туда.