iOS аудио через HDMI - как бороться с частотой дискретизации 48 кГц? - PullRequest
5 голосов
/ 07 ноября 2011

Я с удовольствием синтезировал аудио (44,1 кГц) и отправил его через аудиоустройство RemoteIO. До меня дошло, что звук моего приложения искажается при выходе через HDMI на определенную модель телевизора. Мне кажется, что проблема связана с тем, что этот телевизор ищет аудиоданные на 48 кГц.

Вот несколько вопросов:

  • Принимает ли RemoteIO частоту дискретизации того устройства, на которое оно выводит? Если я отправляю аудио через HDMI на устройство, которое запрашивает 48 кГц, мои буферы обратного вызова RemoteIO становятся 48 кГц?

  • Есть ли какой-то аккуратный способ заставить RemoteIO по-прежнему мыслить с точки зрения 44,1 кГц и быть достаточно умным, чтобы самостоятельно выполнить любые необходимые преобразования частоты дискретизации, прежде чем передавать данные на устройство?

  • Если RemoteIO действительно просто откладывается на устройство, к которому он подключен, то, вероятно, мне нужно выполнить некоторое преобразование частоты дискретизации между моим механизмом синтеза и удаленным вводом-выводом. AudioConverterConvertComplexBuffer - лучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 08 ноября 2011

Исправлена ​​моя проблема.Я неправильно предполагал, что число фреймов, запрошенных обратным вызовом рендеринга, будет степенью двойки.Изменил мой код, чтобы приспособить любое произвольное количество кадров, и теперь все, кажется, работает нормально.

1 голос
/ 08 ноября 2011

Если вы хотите преобразовать частоту дискретизации, попробуйте использовать Audio Queue API или выполните преобразование в вашем собственном приложении, используя некоторый код DSP.

Возможность настройки размера буфера RemoteIO или частоты дискретизации может зависеть от модели устройства iOS, версии ОС, маршрутов аудио, фоновых режимов и т. Д., Поэтому приложение должно соответствовать разным размерам буфера и частоте дискретизации, когдаиспользуя RemoteIO.

...