®AFRd | Программа для Автоматического Подбора Частоты (Auto Frame Rate)



Реп: (545)
AFRd
версия: 0.3.2

Последнее обновление программы в шапке: 26.04.2019

Прикрепленное изображение

Скриншоты
Прикрепленное изображение
Прикрепленное изображение

Для функционирования программы необходимы права root пользователя.

Краткое описание:
AFRd переключает частоту вертикальной развёртки на Android TV устройствах на базе чипов AmLogic (только AmLogic)

Описание:
AFRd это программа для Android TV устройств на базе чипов AmLogic, которая реализует переключение частоты вертикальной развёртки в соответствии с частотой кадров просматриваемого видео. AFRd не завязан на конкретный дистрибутив (был протестирован и работает на Android 6.0, 7.0, 8.1, 9.0) или конкретный чип, и будет работать на самых разных устройствах. На сегодняшний день AFRd протестирован и работает на ATV устройствах на базе чипов S905, S905W, S912, S905X2, S905Y2 а также, не исключено что и других.

Для своей работы AFRd использует определённые возможности стандартного ядра Android от фирмы AmLogic. Однако, некоторые "именитые производители" вносят существенные изменения в ядро, что приводит к неработоспособности AFRd.

Поэтому узнать, поддерживает ли AFRd или не поддерживает конкретное устройство можно узнать либо из опыта других пользователей, либо из собственного опыта. Даже если AFRd не работает на Вашем устройстве, ничего страшного не произойдёт - Вы всегда можете просто удалить приложение.

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

При переключении частоты развёртки экран кратковременно (1-2, иногда до 3-5 секунд) отключается, затем включается уже с новой частотой. Это, к сожалению, неизбежно. AFRd делает всё, что в его силах, чтобы избежать лишних переключений а также чтобы сделать эти переключения максимально комфортными для пользователя.

Требуется Android: 6.0 и выше
Требуется процессор: AmLogic S9xx
Русский интерфейс: Да

Список несовместимых устройств
На следующих системах и устройствах обнаружены принципиальные проблемы, делающими невозможной корректную работу AFRd:
  • Minix Neo U9-H, причина: сильно изменённое ядро (по сравнению с ядром от AmLogic) (детали). Также проблемы наблюдаются с "портами" прошивки MINIX на другие устройства. ДОП 2019.04.26 начиная с версии 0.3.2 в AFRd добавлена ограниченная поддержка устройств MINIX. Под ограниченной имеется в виду то, что там имеется всего один источник информации о частоте видео, вместо четырёх, используемых на других устройствах.
  • Устройства Ugoos на чипах S912, по аналогичной причине.
  • Андроид 6.0.1 выпуска до осени 2017 года, там слишком старое ядро, которое не поддерживает ни один из поддерживаемых AFRd механизмов уведомления о старте/остановке видео. Лечится установкой более свежего ядра (осень 2017 и позже, либо моё самосборное ядро для X92).


Разработчик: Андрей Заболотный, anpaza @ 4pda
Домашняя страница: https://github.com/anpaza/afrd

ЧАВО
Что такое автоматическое переключение частоты (АПЧ, AFR)? Зачем вообще нужна эта программа?
Любое видео всегда снимается с определённой частотой кадров. "Большое" кино традиционно снимается с частотой 24 кадра в секунду, телевизионный сигнал использует 30/60 (стандарт NTSC) или 25/50 (стандарты PAL и SECAM) кадров в секунду.

Телевизор воспроизводит видео также с определённой частотой кадров, назывемой "частотой вертикальной развёртки". Большинство телевизоров умеет работать на разных частотах вертикальной развёртки.

Если частота вертикальной развёртки не кратна частоте кадров фильма, картинка будет ощутимо "подёргиваться", особенно это заметно на сценах с плавным движением камеры. Например, если мы смотрим кино, снятое на 24 кадрах в секунду на телевизоре с развёрткой 60 кадров в секунду, последовательность показа кадров будет примерно такая:
0 0 0 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 7 ...

Как видно, кадры отображаются неодинаковое время: чётные кадры отображаются три раза (3/60 секунды), а нечётные - лишь два раза (2/60 секунд). Это и есть та неравномерность, которую улавливает глаз.

АПЧ (AFR) это процесс гармонизации частоты вертикальной развёртки с частотй кадров проигрываемого видео. При этом частота вертикальной развёртки не обязательно должна быть равна частоте видео, видео идёт одинаково плавно и при кратной частоте развёртки. Например, если фильм снят с частотой 30 кадров/сек, а телевизор работает с развёрткой 60Гц, каждый кадр будет отображаться по 2/60 секунды, оно же 1/30 секунды, которые Вы бы получили, если бы частота развёртки была бы 30Гц.
Зачем нужна опция выбора между "дробными" и "целочисленными" частотами вертикальной развёртки?
При определении AFRd обычно правильно "угадывает" частоту кадров видео (23.976 или 24 и так далее), но иногда может и "лажануть". Если Вы всегда смотрите кино с "дробными" частотами, или наоборот - всегда с "целочисленными" частотами, можете использовать эту опцию. Но, в целом, я рекомендую использовать опцию "авто" - во-первых, AFRd ошибается достаточно редко, во-вторых, Вы очень вряд ли увидите разницу между 24 и 23.976 кадров, неверно выставленная на 1/1001 долю частота приводит к выпаданию или добавлению лишнего кадра один раз в ~41 секунду.
У меня ничего не работает! Что делать?
Обратитесь к автору в личке. Подготовьте файл журнала приложения (не logcat!), в котором отражёна Ваша проблема.

Например - при запуске видео выставляется не та частота. Открываете AFRd, включаете галочку "Включить журнал", заходите на закладку "Журнал", нажимаете кнопку очистки журнала. Выходите из приложения, заходите в проигрыватель, запускаете видео, убеждаетесь, что частота действительно не та. Возвращаетесь в AFRd, отключаете журнал, далее копируете файл /data/log/afrd.log и присылаете его мне в личке.

Если пришлось перезагрузиться (например, приставка зависла в чёрном экране и вывести её из этого состояния не удалось), после перезагрузки следует взять не файл afrd.log, но afrd.log~ (с тильдой в конце). Дело в том, что при запуске afrd переименовывает предыдущий afrd.log в afrd.log~, поэтому если Вы пришлёте мне afrd.log, это будет пустой журнал, созданный уже после перезагрузки.

Не надо закидывать меня журналами, разбор каждого журнала это 5-10 минут моего времени. Разбирайтесь только с одной проблемой за раз, опишите проблему подробно, представьте что я хочу воспроизвести такую же проблему у себя. Не рекомендую в одном журнале собирать события от разных приложений, мне ведь неизвестно в какой момент какое приложение работало. Можно в одном журнале несколько раз воспроизвести одну и ту же проблему в одном и том же приложении.


Изменения:
0.3.2 Птн Апр 26 23:09:17 МСК 2019
  • Исправлено перевключение экрана после отваливания HDCP (одна из причин "чёрных экранов").
  • Исправлена проблема, из-за которой vdec_chunks неточно вычислял частоту при малом количестве сэмплов. Должно уменьшить количество неудачных определений частоты.
  • Добавлена ограниченная поддержка Minux Neo U9-H. В ядре Minix сломаны все источники информации, которыми пользуется afrd для определения кино, кроме одного, да и тот работает не всегда. Поэтому на этих прошивках AFRd будет работать гораздо менее надёжно, чем на других.
  • Добавлена поддержка Leanback Launcher (Android TV). Не то, чтобы дофига важно, но просили - сделал.

0.3.1 Птн Апр 12 09:31:15 МСК 2019
  • Сменил условия распространения (лицензию) с "никакие" на GPL-3. В приложение добавлен полный текст лицензии (на странице "О программе").
  • Добавлена опция switch.hdmi, которая позволяет управлять задержкой обработки событий горячего подключения HDMI кабеля, или отключить её совсем.
  • Исправлена ошибка, из-за которой в шторке иногда неверно отображалась текущая частота вертикальной развёртки.
  • Добавлено отображение текущего значения при редактировании настроек.
  • Поддерживается переключение цветовых пространств на ядрах 3.14.29 (Android 6 и 7)!
  • Поправлен "чёрный экран" при переключении частоты на устройствах со встроенными ключами HDCP 1.4. У многих это также проявлялось как "чёрный экран" при старте системы.
  • Исправлено игнорирование переключения частоты в некоторых комбинациях проигрывателей (например, HDVideoBox + MX Player) из-за добавленной в предыдущей версии опции switch.ignore.

0.3.0 Вск апр 7 12:54:16 MSK 2019
  • Исправил возможность двойного запуска демона.
  • Исправлен ряд ошибок, могущих привести к падению демона (так ему и надо, нечистой силе!)
  • Установка и настройка через Android приложение!
  • Уведомления исправлены в Android 6 и 7
  • Новая опция для отображения частоты развёртки после смены.
  • Добавлен обязательный экран "О программе".
  • Добавлен экран "Часто задаваемые вопросы".
  • Убрал зависимость от настройки Android key_hdmi_selfadaptation, теперь есть много других способов выключить afrd.
  • Существенно улучшен алгоритм распознавания частоты кадров.
  • Добавлена опция frhint.vdec.blacklist для того, чтобы afrd игнорировал FRAME_RATE_HINT от определённых декодеров видео. Это позволило решить давнюю проблему на Android 6 и 7 с кодеком H265, который выдаёт ложную частоту кадров.
  • Добавлено пользовательское API для того, чтобы сотрудничающие программы могли сообщить afrd ожидаемую частоту кадров стартующего видео, а также для других функций (см. документацию).
  • При запуске afrd теперь переключается в корневое пространство имён, чтобы избежать проблем с опцией "создавать поимённое разделение пространств" в SuperSU (какой балбес только переводил SuperSU, должно быть "создавать отдельное пространство имён").
  • Добавлена опция switch.ignore и эквивалентная настройка в Android приложении чтобы игнорировать перемотку видео.

0.2.4 Вск Мар 10 18:22:32 2019 +0300
  • Новая опция switch.timeout которая задаёт тайм-аут попыток определения fps видео.
  • Новая опция fps.blackout, которая задаёт интервал, через который экран будет выключен при включении видео, во избежание излишних хлопаний.
  • Инсталлятор AFRd через System Recovery.

0.2.2 Птн Мар 8 00:34:39 2019 +0300
  • Существенно улучшено распознавание частоты кадров запущенного видео.
    • После старта видео afrd выжидает 300мс.
    • Через каждые 100мс вычисляется fps по данным из /sys/class/vdec/dump_vdec_blocks (если они есть)
    • Параллельно вычитывается fps из /sys/class/vdec/vdec_status
    • Если три раза подряд показания этих двух параметров совпали с точностью 0.1%, afrd считает, что это истиный fps видео.

  • Реализована поддержа ядер от андроида <= 7.0
  • Добавлена возможность через конфиг задать выбор только дробных режимов (23.976, 29.97, 59.94), только целочисленных (24, 30, 60) или всех.
  • Добавлена возможность предпочитать наиболее точную частоту обновления или наоборот, предпочитать кратно более высокие частоты (25 -> 50, 30 -> 60 итд).
  • Добавлена обработка горячего подключения/отключения HDMI.
  • Добавлена опция запрета использования определённых частот.
  • Добавлена возможность выбора цветого пространства, глубины цвета и диапазона значений. Теперь AFR работает в 4k режимах.
  • Установка параметра switch.delay.off в 0 отключает восстановление исходного режима экрана
  • Добавлена опция switch.delay.retry для установки паузы перед повторными попытками получить частоту видео.

0.2.0 Сбт Фев 23 02:20:21 2019 +0300
  • Сделано переключение частоты экрана по активации драйвера аппаратного декодера. Это позволяет работать без поддержки afrd в ядре и выводит afrd на уровень универсального инструмента для всех платформ на базе новых процессоров от AmLogic.
  • Переключение по событию FRAME_RATE_HINT (модифицированные ядра и старые ядра от AmLogic (~лето-осень 2017)) осталось и имеет преимущество.
  • Постарался избавиться от хлопания экраном при перемотке.

0.1.1 Втр Янв 1 17:48:50 2019 +0300
  • Добавлена поддержка X96 через исправления в ядре 4.9 для S905X2.
  • Добавлена поддержка дробных частот развёртки (23.976, 29.97, 59.94 Гц).

0.1.0 Вск Авг 20 21:59:45 2017 +0300
  • Первый публичный выпуск afrd в составе улучшенного ядра для Android TV
  • приставки X92/S912.



Скачать:
версия: 0.3.2 Прикрепленный файлru.cobra.zap.afrd-0.3.2.apk ( 262.8 КБ )

Прошлые версии
версия: 0.3.1 Прикрепленный файлru.cobra.zap.afrd-0.3.1.apk ( 248.36 КБ )

версия: 0.3.0 Прикрепленный файлru.cobra.zap.afrd-0.3.0.apk ( 212.58 КБ )

версия: 0.2.4 Прикрепленный файлUPDATE-afrd-0.2.4.zip ( 46.5 КБ )
(устанавливается через System Recovery)

Немного истории
Первая версия afrd появилась летом 2017 года. Она была узкоспециализированной и работала исключительно с патченным ядром версии 3.14, которое я собирал для устройства X92 на процессоре AmLogic S912, с Андроидом 6.0.1. В ядре была включена логика, которая сообщала частоту кадров запущенного видео любой желающей пользовательской программе (в оригинальном ядре её ещё не было).

Затем эта опция стала появляться в новых приставках на базе Андроид 7.0. Таким образом, разные умельцы стали запускать afrd на более свежих приставках, но уже без моего участия.

В начале 2019 года я увидел идею использовать данные из файла /sys/class/vdec/vdec_status для определения частоты видео. В своё время я пытался использовать этот файл для того же самого, но на тот момент не было способа определить, что видео собственно запущено или остановлено. Поэтому тогда эта идея развития не получила.

Появившийся скрипт дал толчок новому витку развития AFRd. После месяца бурного развития появилась на свет версия 0.2.4, которая устанавливалась через System Recovery. Затем, ещё через месяц, появилась версия 0.3.0 уже с привычным Android интерфейсом.

Пользуясь случаем, хочу поблагодарить всех, кто участвовал во втором рождении afrd - пользователей 4PDA с ветки "Народная" прошивка для Android TV приставок на Soc Amlogic S905X2. Без сомнений, без вашей помощи afrd получился бы гораздо хуже, широкомасштабное тестирование на страницах форума позволила найти и обезвредить такие проблемы, которые на моём "железе" никогда бы не провявились.


Сообщение отредактировал anpaza - 27.04.19, 00:51



Реп: (4825)
anpaza @ 7.04.19, 16:15 *
базе чипов S905, S912, S912.
описки нет ?



Реп: (44)
В дополнение к сообщению - vdec_status нашел в папке /proc/device-tree/vdec/, а два других файла вообще не находятся



Реп: (118)
можно ли в самой программе добавить пункт "проверить наличие обновлений"?! что бы можно было обновлять программу напрямую а не качать апк файлы?!



Реп: (262)
По поводу использования дробны частот: тв имеет режимы, например, 1080р50 и 1080р60, значит лучше поставить "Предпочесть целые"?



Реп: (9)
А зачем обновлять?
У меня версия 0.2.0 приставка x96max все плеера и программы для iptv идеально переключают частоту на телике lg...
Если что-то сломается можно и самому ручками обновить



Реп: (57)
На проце Y2 картинка плавная, но как я писал в соседней теме при просмотре существует мини фриз картинки, звук при этом идет без отставания. Частоты меняет вроде правильно, дробные и все дела. Но из за чего микрофризы понять бы...



Реп: (545)
Alex-PORT @ 07.04.19, 16:41 *
В дополнение к сообщению - vdec_status нашел в папке /proc/device-tree/vdec/, а два других файла вообще не находятся

Похоже, в Minix очень серьёзно "поработали" над ядром, когда реализовывали свой AFR, при этом с корнем вырвали всё, что могло бы пригодиться AFRd :(

С тяжёлым сердцем вынужден добавить Minix Neo U9-H к устройствам, которые AFRd не поддерживает в принципе :'-(
Если найдёте какой-нибудь атрибут в /sys, из которого можно как-то вычислить частоту кадров проигрываемого видео, можно будет добавить поддержку в AFRd. А пока - увы.

Сообщение отредактировал anpaza - 07.04.19, 17:46



Реп: (545)
Roman911 @ 07.04.19, 16:57 *
можно ли в самой программе добавить пункт "проверить наличие обновлений"?! что бы можно было обновлять программу напрямую а не качать апк файлы?!

Когда руки дойдут, собираюсь опубликовать приложение в репозитории F-Droid. Тогда сможете обновлять в порядке "общей очереди", через приложение репозитория.



Реп: (545)
override999 @ 07.04.19, 17:01 *
По поводу использования дробны частот: тв имеет режимы, например, 1080р50 и 1080р60, значит лучше поставить "Предпочесть целые"?

Немного ненужной теории
На AmLogic дробные частоты реализованы через установку обычного "целочисленного" режима.
При этом в /sys/devices/virtual/amhdmitx/amhdmitx0/frac_rate_policy записывается "1", затем устанавливается, скажем, режим 1080p60hz.
Драйвер дисплея при этом установит частоту вертикальной развёртки не 60Гц а 59.94 (аналогично вместо 24Гц установится 23.976, вместо 30 - 29.97). Если же записать в frac_rate_policy "0", тогда установится ровно указанная "целая" частота.

При определении AFRd обычно правильно "угадывает" частоту кадров видео (23.976 или 24 и так далее), но иногда может и "лажануть". Если Вы всегда смотрите кино с "дробными" частотами, или наоборот - всегда с "целочисленными" частотами, можете использовать эту опцию.


В целом, я не рекомендую использовать опцию "предпочитать целые/дробные/авто" в режимах кроме "авто", но она была реализована для некоторых пользователей, которые о ней просили.



Реп: (9)
До этого установил afrd через Amlogic Tool Pro. Чтоб установить ru.cobra.zap.afrd-0.3.0, надо удалять Amlogic Tool Pro или можно чтоб было две программы?



Реп: (85)
Спасибо что сделали отдельную ветку. :) И спрошу, в свойствах iptv потоков пишет частоту кадров 25 fps, но переключение частоты на 25 не происходит. С чем это связано?



Реп: (57)
* rosolovsky,

Попробуй поставь галку в настройках предпочитать точное соответствие частоты



Реп: (545)
Igoriy905 @ 07.04.19, 18:06 *
До этого установил afrd через Amlogic Tool Pro. Чтоб установить ru.cobra.zap.afrd-0.3.0, надо удалять Amlogic Tool Pro или можно чтоб было две программы?

Можно, просто выключите afrd в настройках ATP. В принципе, если AFRd обнаружит запущенный демон старой версии, он его в любом случае прибьёт и запустит новую версию. Но нафига Вам эта подковёрная возня?

Сообщение отредактировал anpaza - 07.04.19, 19:14



Реп: (9)
* anpaza, Спасибо.
Просто автор Amlogic Tool Pro писал, что его программа полностью не удаляется, а оставляет какие то файлы. А я не разбираюсь, как и что чистить руками.



Реп: (57)
* anpaza,

Записал в файле 0 вместо 1 и все равно выдает частоту 59.94 вместо 60..что не так?:)



Реп: (545)
satsochi20142014 @ 07.04.19, 18:49 *
Записал в файле 0 вместо 1 и все равно выдает частоту 59.94 вместо 60..что не так?:)

afrd всё равно, он перед сменой режима всегда туда пишет чего ему нужно.



Реп: (9)
Отлично работает, при перемотке не переключает, в отличии от ATP, только в LazyMedia Deluxe картинка дергается, в нем все видео включает в 50 и 60.



Реп: (311)
* anpaza,
В продолжение этого поста "Народная" прошивка для Android TV устройств X96 Max (Пост kigba #84039061) добавлю, что данный трабл "вылечился" при включении "черного" экрана перед переключением частоты. Как появилась эта опция "гашения", так ей и пользовался, но отключил на время пользования иптв. И при торрент-онлайн появился этот баг. При включении гашения баг вроде пропал, но с гашением экрана иптв смотреть нереально или увеличивать время "возврата", что для кино не камильфо. Радует, что гибкость настроек афрд позволяет приспосабливать его под свои сценарии...



Реп: (263)
Установил версию 0.3.0 тв Samsung 48 H6650 (full HD). Чёрный экран при первом запуске видео остался, жму два раза назад и жду 10 сек, потом все ОК!



Реп: (33)
Получается не нужны теперь скрипты, установка afrd через twrp и т.д.? Все работать будет просто через приложение?


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 12.07.24, 19:01