Аудио драйвер для android
Модификация и улучшение качества звука андройд | Modification and improvement of sound quality android
Данная тема создана с целью улучшения и повышения звуковых характеристик андройд устройств,
где все подробно описано начиная от простых действий в build.prop,
заканчивая внедрением сторонних аудио библиотек в свой смартфон.
Тему буду обновлять по ходу времени
Для всех действий понадобится наличе root прав
Список samplingRates 8000,16000,32000,44100,48000,88200,96000,176400,192000,384000,768000
Список format по возрастанию в качестве
AUDIO_FORMAT_PCM_16_BIT
AUDIO_FORMAT_PCM_24_BIT_PACKED (в основном используется для a2dp профиля)
AUDIO_FORMAT_PCM_8_24_BIT
AUDIO_FORMAT_PCM_32_BIT
Флаг fast
Он же вывод звука с низкой задержкой до 40 мс
16 bit и 48Khz максимкльно и все что ниже. Нельзя выводить hires
Разгрузка offload
Список форматов:
AUDIO_OUTPUT_FLAG_DIRECT (прямой выход)
AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD (сжатие аудио на выходе)
AUDIO_OUTPUT_FLAG_NON_BLOCKING (аудио выход не блокируется)
используется для вывода на bluetooth или устройства где это необходимо гарнитуру, современные устройства компрессиуют сигнал до mp3 под кодек SBC,если наушники (устройство) не поддерживают кодек ldac, aptx и hwa
если есть возможность выводить через hires кодек, то вывод идет через 24_BIT_PACKED, упрощенный формат 24bit
Прямой вывод звука, игнорирование всех эффектов системы и пост обработок, то есть вывод HIRES
Список форматов:
AUDIO_OUTPUT_FLAG_DIRECT (прямой выход)
AUDIO_OUTPUT_FLAG_DIRECT_PCM (прямой выход в PCM контейнере)
В чем разница незнаю, можете использовать 1 один из них
Флаги выхода аудио
AUDIO_OUTPUT_FLAG_PRIMARY (первичный аудио выход, используется по стандарту в большинстве устройств)
AUDIO_OUTPUT_FLAG_DEEP_BUFFER (Глубокий буффер)
Список форматов компрессии аудио от самого высокого до низкого качества (это не весь список, но самые нормальные) (не все будут поддерживаться)
AUDIO_FORMAT_FLAC
AUDIO_FORMAT_ALAC
AUDIO_FORMAT_APE
AUDIO_FORMAT_VORBIS
AUDIO_FORMAT_WMA
AUDIO_FORMAT_WMA_PRO
AUDIO_FORMAT_MP3 (по умолчанию)
bundle <
path /system/lib64/soundfx/libbundlewrapper.so
>
>
effects <
bassboost <
library bundle
uuid 8631f300-72e2-11df-b57e-0002a5d5c51b
>
>
Разложить все файлы по папкам из архива, и дать разрешения
Правка разрешений файлов
/bin/alsa_amixer 0755
/bin/alsa_aplay 0755
/bin/alsa_ctl 0755
/lib/libasound.so 0644
/usr/share/alsa //всем папкам 0755, всем файлам в папке alsa 0644
Драйвер для 32/64 битных процессоров: alsa_32bit.zip ( 405.16 КБ )
(ограничение андройд от 4 до 6 выше работать не будет)
Дополнение положить в /system/lib/hw с правами 0644 (может как положительно так и негативно сказаться на звуке): alsa.default.so.zip ( 12.96 КБ )
Готовый скрипт для запуска alsa: alsa.sh.zip ( 272 байт )
# Нестандартные
Имеет качествнный алгоритм обработки аудио
Ставить с заменой, если в /system/lib/libasound.so имеется данная библиотека, если ее нет бесполезно (возможно появистя эффект, но не уверен) В /system/bin не должно быть бинарников от alsa, иначе с замной библиотеки пропадет звук, сделайте копию оригинала для безопасности 🙂
Библиотека asound от Samsung GS8+: alsa_asound_sgs8+.zip ( 262.15 КБ )
Библиотеки брал от 6 андройд, но должны работать и на версиях ниже, так как они универсальные
ВАЖНО сделайте бекап системного раздела не гарантирую 100% работу библиотек (телефон может зависнуть на вечной анимации) , можете перебирать по одной и наблюдать как ведет себя смартфон
Установка: перенести все библиотеки с заменой в /system/lib и дать права 0644
Можно упростить процесс правки прав
su #получаем root
mount -o rw,remount /system #перевод системного раздела в запись
chmod 0644 /system/lib/*.so #смена прав
Список библиотек:
/libaudioflinger.so
/libaudioresampler.so
/libaudiospdif.so
/libaudioutils.so
/libeffects.so
/libinput.so
/libinputflinger.so
/libsonic.so
/libsonivox.so
/libsoundtrigger.so
/libspeexresampler.so
/libwebrtc_audio_coding.so
/libwebrtc_audio_preprocessing.so
В целом повышает общий уровень громкости, четкость, басс.audio_engine.zip ( 1.24 МБ )
Рекомендации:
1. Используйте только от флагманов звуковые библиотеки. Так как только на данных устройствах,
производители делают максимальный акцент на составляющие устройства. Так же папка soundfx
2. Многие попросту удаляют папку soundfx с устройства и прочее, дабы сделать более чистый выход звука,
я являюсь противником данного метода, т.к. всегда приводило к жестяному и не живому звуку.
Делайте перезапуск интерфейса, что бы не ждать долгой перезагрузки, изменения так же вступают в силу
su
am restart
Сообщение отредактировал derak1129 — 08.07.21, 14:02
Подробная инструкция по настройке ALSA
На выходе получите высококачественнее звук
Смена звуковой карты, если имеется 2
Наличие и номер звуковых карт можно проверить командой в терминале
cat /proc/asound/modules
Если выдало к примеру, 0 стандартная карта, 1 адаптированная для музыки именно она должна поддерживать 32 или 24 битную обработку и 192000 дискритизацию, хотя бывает что и стандартная не плохо себя ведет на такой обработке.
0 mtkcard
1 hdcard
# по умолчанию 0, пишем 0 или 1 взависмости от наличия карт
defaults.ctl.card 0
defaults.pcm.card 0
defaults.pcm.device 0
Находим и меняем данные строки
сильно влияет на звук
defaults.pcm.dmix.rate 48000 #повышем до 96000 / 192000 , насколько система позволяет
defaults.pcm.dmix.format «U16_LE» #формат обработки рекомендую использовать U32_LE или U24_3LE U18_3LE
Значения выше, высокие и средние поднимаются, если в минус басса больше, менять default
Функция значительно преображает звук, по умолчание 16, если спустить на 0 и ниже звук будет бассистым, наоборот ввысьвысокие и средние выражаются, более четкий
менять default
Сообщение отредактировал Roman_city — 28.09.17, 16:54
Библиотеки Beats
Оригинал, но тут расширенная версия
Данные операции над устройством безопасны, то есть они не приведут к крашам и вечным загрузкам устройства!
Работают на arm/arm64/x86
Не пихайте сразу все, они очень сильно влияют звук даже при малейшем изменении, можно испортить так и повысить звучание
Установка: всем файлам права 0644, папкам 0755, исключение /bin/все файлы, права 0755
Внутри лежит файл для добавления эффектов в audio_effects.conf
Внутри архива папка beats_expansion, в ней находятся все остальные конфигурации звука
Файлы с расширением /etc/*.bin бросайте в /system/etc с правами 0644, рекомендую использовать по 1 из каждого подраздела bas,dyn,img,peq (может одного хватит)
Список основных либов к которым поодключаются все остальные настройки и либы /system/lib:
/system/lib/soundfx/libbeatsbass.so
/system/lib/soundfx/libsrsfx.so
/system/lib/soundfx/libsrstb.so
Описание эффектов:
/etc/*.bin конфигурация выходного звука,
В папке /etc/soundimage лежат основные настройки для SRS, эквализируют звук, бассбусты, усилетели голоса и высоких и т.д., копируйте в /system/etc/soundimage с правами 0644
Из названия разберетесь
В папке /etc/audio, файлы, которые копрессируют, лимитируют и выравнивают АЧХ выходного сигнала.
/system/bin/sound лимитер
/system/lib/soundfx/libbeatsbass.so усилитель басса
/system/lib/soundfx/libsrsfx.so накладвает эффекты расширение стерео образа, реверб, дисторшен и т.д.
/system/lib/soundfx/libsrstb.so Что то вроде компрессора
/system/lib/soundfx/libsrscore.so помогает libsrsfx.so, компрессирует звук
/system/lib/soundfx/libbeatscorehtc.so помогает libbeatsbass.so
/system/lib/soundfx/libharmancorehtc.so возбуждает высокий спектр частот, голоса чище звучат
Сообщение отредактировал Roman_city — 14.10.17, 14:41
Выставил дискретизацию 384000, звук не пропал, смарт redmi 3s, проц снап 430.
Сообщение отредактировал rv.e.a — 12.10.17, 07:33
Настройка и эквализация звука в SRS Processing
Ставится в основном на бюджетных моделях, может ошибаюсь (как пример взял от Leagoo M8)
Возможно у кого то она заработает без наличия данной библиотеки
Наличие проверяется, нахождением файлов: в /system/lib/libsrsprocessing.so ../system/data/srs_processing.cfg (иногда он находисят в etc)
Версия самой программы, включение программы или нет и уровень усиления выходного сигнала
// BLOCK: srs_cfg
// Config — Non-IP Configuration
:srs_skip = 1 #Пропускает любую обработку SRS 0 -нет, 1 — да
:trumedia_enable = 0 #включен или нет
:trumedia_preset = 0 #какую использует предустановку, 0 — music ,1 — movie, 2 — podcast
:trumedia_igain_int = 1.000
:trumedia_igain_ext = 1.000
:vol_int_enable = 0 #регулирования объема
:trumedia_skip = 0
Tru Bass — строка эмулирует вертикальный басовый звук
srs_mus_int:
:wowhd_igain = 0.600 #усиление звука на входе
:wowhd_ogain = 1.000 #усиление звука на выходе
:wowhd_trubass_enable = 0 #включение отключение 0-1
:wowhd_trubass_min = 0.000 #минимальная частота воздействия в герцах
:wowhd_trubass_window = 1.000 #размер
:wowhd_trubass_slide = 0.000 #насколько будет сглажен
:wowhd_trubass_slide_udef = 0.000 #практически делает то же самое, что и slide
:wowhd_trubass_compressor = 0.000 #компрессор, срезает лишние частоты, возвышающие выше 0дб
// ALIAS :wowhd_trubass_size // TruBass Speaker Size
:wowhd_trubass_freq = 500 #основная частота на которую воздействует — частота
:wowhd_trubass_analysis = 300 #размер анализа — частота
:wowhd_trubass_sa_enable = 1 #включение отключение сплит анализа
:wowhd_trubass_mode = 0 #Тру басс мод (0 — моно, 1 — стерео)
:wowhd_xover_enable = 1 #частота среза фильтра для динамика
:wowhd_xover_order = 4 # степень воздействия (максимум — 6)
:wowhd_xover_freq = 750 #частота (рекомендую 250)
:wowhd_hpf_enable = 1 #Hi pass Фильтр — обрезает частоты ниже установленной фильтра
:wowhd_hpf_order = 4 #степень воздействия (максимум — 6)
:wowhd_hpf_freq = 250 #частота
:wowhd_srs_enable = 0 #SRS3D — создает ощущение 3D
:wowhd_srs_space = 0.700 #воздействие на правый и левый канал
:wowhd_srs_center = 0.500 #воздействие по центру
:wowhd_srs_mode = 1 #(0-моно, 1-один динамик, 2-стерео, 3-экстрим
:wowhd_srs_speaker = 0 #тип звука (0 — динамик, 1 — наушники)
:wowhd_focus_enable = 0 #включение отключение фокуса
:wowhd_focus = 0.170 #Степень воздействие фокуса
:wowhd_definition_enable = 0 #четкость звука 0-1
:wowhd_definition_min = 0.000 #минимальная степень воздействия
:wowhd_definition_window = 0.500 #размер
:wowhd_definition_slide = 0.000 #
:wowhd_definition_slide_udef = 0.100 #
:wowhd_widesur_enable = 0 #сключает расширение стерео образа
:wowhd_widesur_igain = 1.000 #усиление
:wowhd_widesur_centerboost = 0.500 #усиление по центру
:wowhd_widesur_separation = 0.500 #степень смешивания звука
:wowhd_skip = 0 #пропуск эффектов или нет 0 нет, 1 да
Источник
Особенности обработки аудио в ОС Android
И как с ними бороться
Подумайте, какие ассоциации вызывает у вас операционная система Google Android? Наверняка, одной из первых в голове всплыла «распространенность», «популярность». Или, при подобающем настроении, такое словосочетание как «зоопарк устройств». Что и говорить, выбор в пользу Android уже давным-давно сделали почти все известные разработчики мобильных гаджетов.
В крупных компаниях этот шаг знаменует собой начало большого пути для подразделения R&D (Research and Development). Ведь базовые возможности Android (по крайней мере, до релиза Lollipop) были весьма скромны и могли устроить только завсегдатаев XDA Developers, которые все необходимое и сами могут дописать. В поисках примеров можно даже не уходить в дебри Android. Скажем, аппараты с поддержкой нескольких SIM-карт уже давно стали самым обычным явлением на рынке. А API для работы с ними был официально добавлен только в Google Android 5.1.
Сегодня мы подробно рассмотрим еще одну сторону ОС, которой разработчики Google Android не уделяют достойного внимания — работу со звуком. Зачем, в принципе, нужен звук на телефоне? В первую очередь, чтобы воспроизводить звонок. С этой задачей мобильные устройства справляться уже научились. Было бы здорово также вставить какой-нибудь аудиоплеер. и здесь компания Google без особых раздумий перекладывает все на производителей устройств. Беспроводное проигрывание через Bluetooth или динамики мобильных устройств зависит от ряда дополнительных факторов, требующих отдельного изучения, поэтому в данной статье мы рассмотрим, как обстоят дела с воспроизведением аудио исключительно через разъем для наушников.
До выхода Android L операционная система поддерживала «из коробки» только PCM-аудио с частотой дискретизации 44,1 или 48 кГц. К этому общему знаменателю по умолчанию приводится весь пропускаемый через систему аудиопоток. Исправление ситуации проходит на уровне конкретных производителей, которые устанавливают собственные ЦАП и пишут для них софт. Это могут позволить себе лишь крупные компании. Приобретая такое недешевое устройство как смартфон, хочется услышать адекватный по стоимости аудиочип, но на сегодняшний день это является скорее исключением из правил — большинство моделей ограничиваются лишь тем, что включено в однокристальную систему. А это значит, что воспроизведение происходит с принудительной конвертацией звука в формат, описанный в начале абзаца.
Любой, кто хотя бы немного знаком с обработкой звука, знает, что всякое препятствие на его пути чревато самыми тяжелыми последствиями. При желании проследить всю обработку звука в ОС Android можно через исходный код. Уже при поверхностном изучении настороженность вызывают следующие моменты:
- Для принудительной конвертации в нативный формат применяются как минимум целых три конвертера — в audioflinger, speex и webrtc. Здесь никакого прогресса не наблюдается с самых ранних версий, Google лишь исправляет баги.
- Слишком высокий тайминг в аудиосервере Android (audioflinger/libstagefright) при большом числе потоков.
- Программная регулировка громкости — критичный для аудиофилов аспект, с которым, увы, ничего не поделаешь в принципе.
- Колоссальные проблемы с поддержкой ALSA-драйверов (Advanced Linux Sound Architecture). Этот вопрос решается на уровне производителей устройств. Некоторые из них уже предлагают удачные решения, например, Sony и HTC.
Помимо R&D-отделов больших компаний, над улучшением звука Android активно работают энтузиасты, разрешающие порой чуть ли не безвыходные проблемы. Плоды этих титанических трудов можно оценить на пресловутом XDA Developers.
Здесь работает общее правило: чем ниже уровень, на котором производятся улучшения, тем эффективней будет результат. Материнские платы компьютеров легко вмещают всякие разновидности «high definition audio», способные удовлетворить не очень щепетильного пользователя. Что же касается современных мобильных устройств, то их размеры создают для реализации качественного звука гораздо более серьезные ограничения.
Тем не менее, прогресс в звуковой составляющей современных смартфонов очевиден. Как это ни удивительно, даже чипсетные кодеки порой играют неплохо, например, ЦАП Hexagon, устанавливаемые в SoC Qualcomm Snapdragon. Что касается однокристальных систем, менее выдающихся в плане звука (модели Samsung Exynos, Mediatek MTK), то их производители сейчас нередко устанавливают сторонние ЦАП. К сожалению, при таком подходе обычно игнорируется сопроводительная документация, что приводит к затруднениям на более высоких уровнях.
А выше «железа» у нас прописано ядро Linux — база, на которой функционирует ОС Android. Здесь находится все, что обеспечивает работу аппаратной начинки. Конкретно за звук отвечает ALSA — Advanced Linux Sound Architecture. Пионером в реализации ALSA стала компания Samsung, а вообще в ранних устройствах на базе Android эта архитектура еще не поддерживалась, поскольку сама Google еще не пришла к необходимости единообразия на данном уровне разработки.
Сама по себе архитектура ALSA является весьма оригинальной, что отчасти объясняет проблема в создании низкоуровневого ПО. Даже на написание даже простого драйвера требуется много времени. К тому же, в отличие от десктопных систем, у смартфонов есть своя специфика. Поскольку мы имеем дело с телефоном, обязательна реализация голосовой связи. Кроме того, требуется грамотное управление питанием — об автономной работе Android-устройств лишний раз и говорить нечего. Наконец, учитывая ограниченные ресурсы прикладного ЦП, встает вопрос о декодировании популярных форматов другими аппаратными средствами.
Типичный сценарий работы над ALSA-драйверами сегодня выглядит следующим образом. Поставщик SoC или кодека предоставляет производителю устройства некую «рыбу» в комплекте с многотомной документацией, при виде которой у Linux-сообщества потекли бы слюнки. Но работникам R&D-отделов производителя такой энтузиазм, мягко говоря, не свойственен. В результате чего пользователи получают ПО, где взамен реализованных возможностей железа предлагаются лишь бесчисленные баги и вообще полнейшие нелепости.
В качестве примера можно привести компанию Qualcomm, которая никакой документацией с аудиторией не делится. Но хотя бы выкладывает исходный код драйверов на своем сайте codeaurora.org. С другими поставщиками чипов ситуация тоже непростая. Даже такие либеральные в этом плане компании как Texas Instruments или Intel, публикующие все спецификации своих устройств еще до начала поставок, иной раз хранят молчание, когда речь заходит о звуке.
Что касаются производителей «второго эшелона» (как правило, многочисленных и малоизвестных компаний из Китая), то в соответствии с лицензией GPL они не обнародуют исходный код ядра вообще. С этической точки зрения выглядит это весьма скверно: на основе открытого кода Linux создается по сути закрытый, засекреченный продукт.
Как же свести весь этот «зоопарк» к общему знаменателю, чтобы любой обладатель Android-устройства мог получить качественный звук? Интерфейс ALSA-драйверов един, и, если доступны их исходные файлы, можно попытаться самостоятельно улучшить качество звука, чтобы использовать возможности устройства на 100%.
Поскольку взаимодействие осуществляется на уровне ядра, для всех нововведений потребуется наличие рут-доступа. Это позволит обойти верхние уровни аудиосистемы Android и взаимодействовать с ALSA-драйверами напрямую. Что и делает программа, которую мы задействуем для сравнительного тестирования аудиотрактов.
Источник