Преобразование частоты дискретизации

В этой статье описывается преобразование частоты дискретизации , также известное как повторная выборка, в Android. Для терминологии, связанной с преобразованием частоты дискретизации, смотрите Терминологию .

Преобразование частоты дискретизации — это процесс изменения потока дискретных выборок с одной частоты дискретизации на другой поток с другой частотой дискретизации. Преобразователь частоты дискретизации или ресемплер — это модуль, реализующий преобразование частоты дискретизации. Что касается ресемплера, исходный поток называется исходным сигналом, а поток с передискретизацией называется сигналом приемника.

Ресэмплеры используются в нескольких местах в Android. Например, файл MP3 может быть закодирован с частотой дискретизации 44,1 кГц, но его необходимо воспроизвести на устройстве Android с внутренней поддержкой звука 48 кГц. В этом случае ресемплер будет использоваться для повышения частоты дискретизации выходного звука MP3 с исходной частоты дискретизации 44,1 кГц до частоты дискретизации приемника 48 кГц, используемой в устройстве Android.

Характеристики ресемплера могут быть выражены с помощью метрик, в том числе:

  • степень сохранения общей амплитуды сигнала
  • степень сохранения полосы частот сигнала с учетом ограничений частоты дискретизации стока
  • общая задержка через ресемплер
  • постоянная фазовая и групповая задержка по частоте
  • вычислительная сложность, выраженная в циклах ЦП или потребляемой мощности
  • допустимые отношения частоты дискретизации источника и приемника
  • возможность динамически изменять коэффициенты частоты дискретизации
  • какие форматы цифровых аудиосэмплов поддерживаются

Идеальный ресемплер должен точно сохранять амплитуду и частотную полосу исходного сигнала (с учетом ограничений частоты дискретизации приемника), иметь минимальную и постоянную задержку, иметь минимальную вычислительную сложность, допускать произвольные и динамические коэффициенты преобразования и поддерживать все распространенные форматы цифровых аудиовыборок. . На практике идеальных ресемплеров не существует, поскольку реальные ресемплеры представляют собой компромисс между этими характеристиками. Например, цели идеального качества конфликтуют с короткой задержкой и низкой сложностью.

Android включает в себя различные звуковые ресемплеры, поэтому в зависимости от варианта использования приложения и нагрузки могут быть сделаны соответствующие компромиссы. Доступные ресемплеры описаны в разделе Реализация ресемплера.

Реализации ресемплера

Доступные реализации ресемплера часто меняются и могут быть настроены OEM-производителями. Передискретизаторы по умолчанию в порядке убывания искажения сигнала и возрастания вычислительной сложности включают:

  • линейный
  • кубический
  • sinc с исходными коэффициентами
  • sinc с пересмотренными коэффициентами

В общем, ресемплеры sinc больше подходят для воспроизведения музыки более высокого качества, а другие ресемплеры следует зарезервировать для случаев, когда качество менее важно (примером могут быть «щелчки клавиш» или что-то подобное).

Конкретная выбранная реализация ресемплера зависит от варианта использования, нагрузки и значения системного свойства af.resampler.quality . Для получения подробной информации обратитесь к исходному коду аудио ресемплера в AudioFlinger .