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