Я создал пользовательский класс аудиоплеера, который использует AudioUnit
и ExtAudioFile
.В моем классе я подготовил свою собственную функцию обратного вызова рендеринга, такую как
OSStatus MyAURenderCallack (
void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData
);
Когда мое приложение находится на переднем плане, параметр inNumberFrames
, передаваемый ОС, всегда 512
или 1024
, и мой проигрыватель работает хорошо.
Но когда устройство iOS спало, inNumberFrames
становится 4096
, и мой плеер не работает, потому что он не мог подготовить столько кадров за один раз.
Трудно улучшить подготовку кадровпроцесс, потому что он интенсивно использует extAudioFileRead
функцию, которую трудно ускорить.
Итак, я хочу ограничить inNumberFrames
от того, чтобы стать больше, чем 1024
.
Могу ли я сделать это?