Я ударил еще одну ошибку симулятора iOS. У меня вопрос: есть ли обходной путь? < /P>
ошибка такова /strong> Sample Project. < /p>
и просто распечатайте количество кадров, полученных с помощью обратного вызова < /strong> (в auriotouchappdelegate.mm) < /p>
static OSStatus PerformThru(
void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{
printf( "%u, ", (unsigned int)inNumberFrames );
< /code>
Я получаю следующий вывод: < /p>
471, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, ...
< /code>
Однако, если вы прокомментируете вызов audiounitrender < /strong> в следующей строке: < /p>
{
printf( "%u, ", (unsigned int)inNumberFrames );
aurioTouchAppDelegate *THIS = (aurioTouchAppDelegate *)inRefCon;
OSStatus err = 0; // AudioUnitRender(THIS->rioUnit, ioActionFlags, inTimeStamp, 1, inNumberFrames, ioData);
< /code>
теперь он отправляет соответствующее количество поплавок каждый раз. < /p>
471, 470, 471, 470, 470, 471, 470, 471, 470, 470, 471, 470, 471, 470, 470, 471, 470,
< /code>
Другой вопрос, который у меня есть: почему такое случайное число, как 470, 471? Я где -то читал, что вы неявно указываете длину буфера, указав его продолжительность времени, и он устанавливает длину буфера на мощность двух, которая дает лучшее приближение к этой продолжительности . Но эмпирические данные свидетельствуют о том, что это не так. < /P>
В любом случае, почти уверен, что это ошибка. Я собираюсь пойти на это. Если кто -то может пролить свет, пожалуйста, сделайте!
Подробнее здесь: https://stackoverflow.com/questions/663 ... unitrender