В этой статье описывается преобразование частоты дискретизации, также известное как передискретизация , в Android. Терминологию, связанную с преобразованием частоты дискретизации, см. в разделе Терминология .
Преобразование частоты дискретизации — это процесс изменения потока дискретных выборок с одной частоты дискретизации на другой поток с другой частотой дискретизации. Преобразователь частоты дискретизации или ресэмплер — это модуль, реализующий преобразование частоты дискретизации. Что касается передискретизатора, исходный поток называется исходным сигналом, а преобразованный поток называется приемным сигналом.
Ресемплеры используются в нескольких местах Android. Например, файл MP3 может быть закодирован с частотой дискретизации 44,1 кГц, но его необходимо воспроизвести на устройстве Android, поддерживающем внутреннюю частоту звука 48 кГц. В этом случае ресэмплер будет использоваться для повышения частоты дискретизации выходного аудио MP3 с частоты дискретизации источника 44,1 кГц до частоты дискретизации приемника 48 кГц, используемой на устройстве Android.
Характеристики ресэмплера можно выразить с помощью показателей, в том числе:
- степень сохранения общей амплитуды сигнала
- степень сохранения полосы частот сигнала с учетом ограничений частоты дискретизации приемника
- общая задержка через ресэмплер
- согласованная фазовая и групповая задержка по частоте
- вычислительная сложность, выраженная в циклах ЦП или энергопотреблении
- разрешенные соотношения частот дискретизации источника и приемника
- возможность динамического изменения коэффициентов частоты дискретизации
- какие форматы цифровых аудиосэмплов поддерживаются
Идеальный преобразователь частоты должен точно сохранять амплитуду и полосу частот исходного сигнала (с учетом ограничений частоты дискретизации приемника), иметь минимальную и постоянную задержку, иметь минимальную вычислительную сложность, обеспечивать произвольные и динамические коэффициенты преобразования и поддерживать все распространенные форматы цифровых аудиосэмплов. . На практике идеальных ресэмплеров не существует, поскольку реальные ресэмплеры представляют собой компромисс между этими характеристиками. Например, цели идеального качества конфликтуют с короткой задержкой и низкой сложностью.
Android включает в себя множество преобразователей аудио, поэтому можно найти соответствующие компромиссы в зависимости от варианта использования и нагрузки приложения. Доступные ресэмплеры описаны в разделе «Реализация Resampler».
Реализации ресэмплера
Доступные реализации ресемплера часто меняются и могут быть настроены OEM-производителями. Ресемплеры по умолчанию, в порядке убывания искажения сигнала и возрастания вычислительной сложности, включают:
- линейный
- кубический
- sinc с исходными коэффициентами
- sinc с пересмотренными коэффициентами
В общем, ресэмплеры sinc больше подходят для воспроизведения музыки более высокого качества, а другие ресэмплеры следует зарезервировать для случаев, когда качество менее важно (примером могут быть «нажатия клавиш» или что-то подобное).
Конкретная выбранная реализация ресэмплера зависит от варианта использования, нагрузки и значения системного свойства af.resampler.quality
. Подробности см. в исходном коде аудиоресемплера в AudioFlinger .