2013-08-16 2 views
0

У меня есть приложение, которое использует AudioIO Audio Unit для создания звуков. Однако из-за латентности и вычислительных проблем частота дискретизации этой системы не может превышать 8 кГц. Я использую следующую строку для установки частоты дискретизации.Обеспечение частоты дискретизации звука в iOS

AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareSampleRate,propSize,&hwSampleRate) 

Однако на некоторых трассах я получаю частоту дискретизации 44,1 кГц. В этом случае мое приложение, похоже, не работает, поскольку оно не может обрабатывать вычисления с такой частотой дискретизации. Каков мой лучший вариант для обеспечения частоты дискретизации 8 кГц? Выход и открытие приложения снова работает, но делает плохой UX.

+1

Аудио - это общий ресурс в iOS. Ни одно приложение не может принудительно настроить аудио, поскольку это может быть несовместимо с другими службами ОС или приложениями, использующими аудиооборудование. Вместо этого попробуйте использовать преобразователь частоты дискретизации, аудиоустройство или часть вашей обработки звука. – hotpaw2

ответ

3

Как отметил hotpaw2, звук является общим ресурсом на iOS. Вы не можете получить эксклюзивный доступ к оборудованию. Вызов AudioSessionSetProperty/kAudioSessionProperty_PreferredHardwareSampleRate устанавливает предпочтительную частоту дискретизации. Как вы заметили, в конечном итоге вы можете использовать аппаратное обеспечение с другой скоростью, что не означает, что ваше приложение не может работать на частоте 8 кГц.

Если вы правильно настроили формат RemoteIO, RemoteIO будет выполнять преобразование частоты дискретизации вывода для вас. Аппаратное обеспечение будет работать на частоте 44,1 кГц, но ваше приложение будет выводиться на частоте 8 кГц.

Вы можете прочитать о различных способах для достижения этой цели путем поиска «частота дискретизации» в этой документации:

http://developer.apple.com/library/ios/documentation/MusicAudio/Conceptual/AudioUnitHostingGuide_iOS/ConstructingAudioUnitApps/ConstructingAudioUnitApps.html

Один из вариантов (как описано в документации) будет установить смеситель с правильную выходную частоту дискретизации, затем присоедините обратный вызов рендеринга к входу микшера.

+0

Есть ли у вас учебник по получению микшерного блока, обратного вызова звука и RemoteIO? Пробовал последние 2 дня. Apple MixerHost также врезается во время выполнения. Пытался скопировать код оттуда, добравшись до точки, где, похоже, все подключено, но при регистрации на консоли ясно, что обратный вызов вызывается эффективно со скоростью 44100. Узлы-члены: \t узел 1: ' auou» 'rioc' 'заявл', экземпляр 0x1f53e150 вывода \t узел 2: 'aumx' 'mcmx' 'заявл', экземпляр 0x20031320 O Входные обратные вызовы: \t {0xa430d, 0x1f53549c} => узел 1 автобус 0 [2 ч , 16000 Гц] – e7mac

Смежные вопросы