Сайт | Скачать | Видео | Wiki

Автор Тема: Компиляция ffmpeg и медиаплееров c аппаратным ускорением  (Прочитано 1025 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 20158
  • Репутация: +147/-0
    • PuppyRus-A
Видео (особенно в разрешении 1080) ощутимо тормозит в mpv , mplayer vlc
Причем во всех дистрах от 150balbes и арче
В этих же дистрах коди , скомпиленный с поддержкой libMali не тормозит

Попробовал скомпилить аналогичным образом ffmpeg и mpv - см. аттач - без улучшений
Выдрал ключи компиляции и src из alexelec -  без улучшений

Попробовал посадить  дистр ubuntu64-16.04.2lts-mate-odroid-c2-20170301.img (спец сборка для odroid-c2 на том же чипе) на проверенное ядро - не стартует
Попробую выдрать из него ffmpeg и пр.
Больше идей нет

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 20158
  • Репутация: +147/-0
    • PuppyRus-A
https://github.com/OtherCrashOverride/c2play
https://forum.odroid.com/viewtopic.php?t=23143

libasound2-dev - вероятно в арче это https://openmandriva.pkgs.org/cooker/openmandriva-main-release-i586/libasound2-1.1.3-1-omv3001.i586.rpm.html alsa-lib

Не компилится:
../../src/Media/MediaSourceElement.cpp:369:12: ошибка: нет декларации «CODEC_ID_MOV_TEXT» в этой области видимости
      case  CODEC_ID_MOV_TEXT:
            ^~~~~~~~~~~~~~~~~
../../src/Media/MediaSourceElement.cpp:374:12: ошибка: нет декларации «CODEC_ID_DVB_TELETEXT» в этой области видимости
      case  CODEC_ID_DVB_TELETEXT:
            ^~~~~~~~~~~~~~~~~~~~~
../../src/Media/MediaSourceElement.cpp:379:12: ошибка: нет декларации «CODEC_ID_SRT» в этой области видимости
      case  CODEC_ID_SRT:
            ^~~~~~~~~~~~
make[1]: *** [c2play.make:182: obj/Debug/c2play/MediaSourceElement.o] Ошибка 1
make: *** [Makefile:17: c2play] Ошибка 2

Оффлайн balbes150

  • Постоялец
  • ***
  • Сообщений: 102
  • Репутация: +1/-0
Я тут поковырял эту тему не много и вот к чему пришёл (все на уровне моих домыслов).
Есть несколько направлений для обеспечения видеоускорения :
- ускорение для fbdev (этот набор используется в LE и в KODI).
- ускорение для X-сов.

Элементы для обеспечения поддержки.
- модуль mali для ядра (исходники в свободном доступе) собирается под конкретное ядро
- бинарная библиотека libMali.so - поставляется в готовом виде и завязана на конкретную версию исходников для модуля
- заголовки\описатели, которые используются при сборке стороннего софта с поддержкой видеоускорения через libMali.
Все эти элементы являются взаимозависимыми, стоит изменить (использовать из другого набора) хоть что-то - нет ускорения, либо оно работает не правильно (если что-то из набора совпадает).

По не проверенной инфе - libMali может быть заточена на конкретный тип платформы\процессор и на других может не запуститься или будет работать не правильно.
Кстати, даже расположение файлов в определённых каталогах тоже может влиять, если собиралось с этими параметрами. Например, в первых вариантах LE libmali помещали в свой подкаталог в lib и прописывали в конфиг указание на него и строили индексы под него.

В общем тема не самая простая, придётся вникать в нюансы.

Кстати, KODI работает не через X-вариант, а напрямую, через fbdev (он сам выступает в роли DE) и желательно запускать его как самостоятельную оболочку. Кроме того, он использует еще несколько специфичных библиотек для аппаратного ускорения видео и звука, которые компиляться под него.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 20158
  • Репутация: +147/-0
    • PuppyRus-A
Есть несколько направлений для обеспечения видеоускорения :
- ускорение для fbdev (этот набор используется в LE и в KODI).
- ускорение для X-сов.
Ну так в Х как раз и используется свой (s905) драйвер fbdev
Получается аппаратное ускорение обеспечивает libMali
Одинаковый рецепт компиляции с libMali в одном и том же окружении в случае Коди дает ускорение. С другими плеерами - нет. По опыту i686 (где ускорение дает включение vdpau в ffmpeg) - в эту сторону и надо копать
Возможно это вообще так не решить. ARM репы юбунты а арча тоже не дураки делают. Там же без ускорения...
Хочу еще из odrobian выдернуть ffmpeg+mpv - может там с ускорением

https://github.com/OtherCrashOverride/c2play - возможно самый короткий путь к счастью. Помогите скомпилить или найти бинарник.

KODI работает не через X-вариант, а напрямую, через fbdev (он сам выступает в роли DE) и желательно запускать его как самостоятельную оболочку.
Это уже понял. Переделал в 2А на запуск коди с перестартом Х. Иначе от артефактов не избавиться

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 20158
  • Репутация: +147/-0
    • PuppyRus-A
Нашел бинарник https://forum.armbian.com/index.php?/topic/2419-armbian-for-amlogic-s905-and-s905x/&page=8#comment-18796
Пробовал вместе со всем комплектом и без - не работает. Артефакты по экрану и падает

Дочитал тему https://forum.odroid.com/viewtopic.php?f=136&t=23143&start=150
Что то совсем не просто

Вывод - надо ждать пока программеры доведут до ума c2play или добавят поддержку mali в прочие плееры.
Пока для тяжелых файлов юзать коди. 

Оффлайн balbes150

  • Постоялец
  • ***
  • Сообщений: 102
  • Репутация: +1/-0
Одинаковый рецепт компиляции с libMali в одном и том же окружении в случае Коди дает ускорение. С другими плеерами - нет.
Ты уверен, что одинаковый ? Исходники могут содержать уже нужные заголовки или свои доп. настройки для компиляции с использованием ускорения. Тут нужно всё разбирать и связанные библиотеки и компоненты.
Там же без ускорения...
По банальной причине - всё очень сильно завязано на конкретную сборку ядра и библиотеку, то бишь программа с ускорением + ядро + библиотека + драйвер должны собираться вместе, и на другом ядре (и чуть другом железе) - нет ускорения. Поэтому сборщики и не заморачиваются - слишком много нюансов для поддержки, не возможно всё отследить. Плюс лицензионные заморочки. В свое время на сайте Amlogic на некоторое время появились либы под s912 для Linux (не адройдные, а прямые под Линукс), но очень быстро исчезли, т.к. Amlogic не купили лицензию для Linux.
Помогите скомпилить или найти бинарник.
Надо посмотреть.
Вывод - надо ждать пока программеры доведут до ума c2play или добавят поддержку mali в прочие плееры.
Дык надо писать им про это и помогать.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 20158
  • Репутация: +147/-0
    • PuppyRus-A
Ты уверен, что одинаковый ?
Нет. Я не гуру компиляции. Если можешь - помоги
надо писать им про это и помогать.
Боюсь я не дорос до такого уровня. На англ. вряд ли смогу общаться
У тебя , вроде получается. Надежда на тебя

Оффлайн balbes150

  • Постоялец
  • ***
  • Сообщений: 102
  • Репутация: +1/-0
На англ. вряд ли смогу общаться
Мое общение - это яндекс переводчик + гугл переводчик в паре. С начал в яндексе перевод на буржуйский, потом проверка в гугле, вроде после этого народ понимает, что имел в виду.

Возможно это глупость, я тут подумал, возможно причина того, что в медиаплеерах не срабатывает ускорение при компиляции по рецепту KODI в том, что они рассчитаны на использование драйверов X-сов, а не консольных.

Кстати, сейчас попробовал последний образ Ubuntu на Odroid C2 (Непосредственно на самой железке Odroid C2). Тут так же - в десктопе MATE плеер (vlc) не умеет выводит в полный экран (масштабировать с увеличением из маленького в большое, за что отвечает аппаратное ускорение в KODI), только в том же разрешении, что и ролик. И mpv в Armbian даже лучше справляется, чем в Odroid C2 штатный плеер из образа vlc.
« Последнее редактирование: 29 Апрель 2017, 16:02:18 от balbes150 »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 20158
  • Репутация: +147/-0
    • PuppyRus-A
Возможно это глупость, я тут подумал, возможно причина того, что в медиаплеерах не срабатывает ускорение при компиляции по рецепту KODI в том, что они рассчитаны на использование драйверов X-сов, а не консольных.
У меня тоже были такие мысли

(vlc) не умеет выводит в полный экран
Когда делал LAB - попробовал vlc - тоже не порадовал
smplayer c mpv вообще выводит окно mpv не внутри себя....
mplayer не вывозит iptv (на любом железе и архитектуре). gnome-mplayer плохо работает с m3u
В итоге так и оставил в LAB голый mpv
А в 2A к нему прикрутил свой гуй

По итогу - наверное надо смотреть в сторону c2play...

А надо ли вообще заморачиваться.... Вряд ли кто-то будет смотреть фильм сидя у моника на табуретке
Удобнее лежа на диване на ТВ в коди
Для "глянуть" mpv и так подходит

И тут мы плавно подошли к главному вопросу - зачем и кому нужен линукс на ТВ приставке[/u]

Оффлайн balbes150

  • Постоялец
  • ***
  • Сообщений: 102
  • Репутация: +1/-0
Ты можешь описать, какие файлы использовал, что-бы перетащить KODI в archlinux ?
Хочу кое-что проверить.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 20158
  • Репутация: +147/-0
    • PuppyRus-A
какие файлы использовал, что-бы перетащить KODI в archlinux
http://hu.mirror.archlinuxarm.org/aarch64/alarm/kodi-c2-17.0-1-aarch64.pkg.tar.xz
То что я сам накомпилил - лучше не получилось. Да лучше и не куда (разве что сделать нормальную , без артефактов работу в Xorg). Поэтому поставил в А2 из репы, в надежде на автообновление

Нашел еще оптимизированный плеер
Компилится без проблем, но не работает
# /home/live/1/ge2dplayer-master/ge2dplayer Test.mp4
/dev/fb0 file handle: 3
var_info.xres = 1920
var_info.yres = 1080
var_info.xres_virtual = 1920
var_info.yres_virtual = 1080
/dev/ge2d file handle: 4
open vfm_grabber failed.

В арчрепе обновился mpv. Улучшений нет.
Да - A2 попроще поддерживать, чем PRA.  Обновления сами прилетают. Вообще ничего делать не надо  :D full + rolling release - есть свои преимущества....
« Последнее редактирование: 09 Май 2017, 09:12:10 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 20158
  • Репутация: +147/-0
    • PuppyRus-A
Еще раз попробовал vlc в 2A - 1080 вообще не воспроизводит

Попробовал скомпилить mpv с --enable-mali-fbdev
err: ../test.c:1:10: фатальная ошибка: EGL/fbdev_window.h: Нет такого файла или каталога
 #include <EGL/fbdev_window.h>
          ^~~~~~~~~~~~~~~~~~~~
компиляция прервана.
Добавил
https://github.com/libretro/RetroArch/blob/master/README-mali_fbdev_r4p0.md
Цитировать
Now we need the headers. We can get them from here:
http://malideveloper.arm.com/develop-for-mali/sdks/opengl-es-sdk-for-linux/#opengl-es-sdk-for-linux-download
Download whatever version you want. We just get the headers from here, not machine-dependant compiled code.
Extract the files and copy the directories inside inc to /usr/include .
Also, copy simple_framework/inc/mali/EGL/fbdev_window.h to /usr/include/EGL .
mpv скомпилился http://mirror.yandex.ru/puppyrus/2a-aarch64/pkg-repo/2a-extra/mpv-mali-fbdev-1%3A0.25.0-5-aarch64.pkg.tar.xz

Улучшений по скорости нет
mali-fbdev не запускается :
[cplayer] Command line options: '--vo=opengl' '--opengl-backend=mali-fbdev' '-v' '-v' './Clannad After Story OPA - sample HEVC mai
n10 1080p.mkv'
.....
[cplayer] Configuration: ./waf configure --prefix=/usr --confdir=/etc/mpv --enable-libarchive --enable-cdda --enable-dvdnav --enab
le-encoding --enable-libmpv-shared --enable-zsh-comp --enable-egl-x11 --enable-egl-drm --enable-mali-fbdev
[cplayer] List of enabled features: alsa asm atomics audio-input avutil-imgcpy-uc build-date c11-tls caca cdda cplayer cuda-hwacce
l debug-build dlopen drm dvbin dvdnav dvdread-common egl-drm egl-helpers egl-x11 encoding fchmod gbm gbm.h gcc-tls gl gl-wayland g
l-x11 glibc-thread-name glob gnuc iconv is_ffmpeg jack jpeg lcms2 libarchive libass libass-osd libav libavcodec libavdevice libblu
ray libdl libm libmpv-shared librt libsmbclient libv4l2 linux-fstatfs lua mali-fbdev nanosleep optimize oss-audio oss-audio-native
 plain-gl posix posix-or-mingw posix-spawn pthreads pulse rubberband shm stdatomic subprocess termios tv tv-v4l2 uchardet vaapi va
api-drm vaapi-egl vaapi-glx vaapi-hwaccel vaapi-hwaccel-new vaapi-wayland vaapi-x-egl vaapi-x11 vdpau vdpau-gl-x11 vdpau-hwaccel v
dpau-hwaccel-new videodev vt.h wayland x11 xv zlib zsh-comp
.....
[vo/opengl] Initializing OpenGL backend 'mali-fbdev'
[vo/opengl] EGL_VERSION=1.4 Linux-r5p1-01rel0
[vo/opengl] EGL_VENDOR=ARM
[vo/opengl] EGL_CLIENT_APIS=OpenGL_ES
[vo/opengl] Trying to create Desktop OpenGL context.
[vo/opengl] Could not bind API!
[vo/opengl] Trying to create GLES 3.x context.
[vo/opengl] Could not choose EGLConfig!
[vo/opengl] Trying to create GLES 2.0 context.
[vo/opengl] Could not create EGL surface!
[cplayer] Error opening/initializing the selected video_out (--vo) device.
« Последнее редактирование: 01 Июнь 2017, 14:50:11 от sfs »

Оффлайн baloven

  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
или я дурак - или.... лыжЫ по асфальту не ездят.....
читаем 6 страницу 2 строка таблицы
http://openlinux.amlogic.com:8000/download/doc/linux-3.14-buildroot-pkg-201605-release-v1.2.pdf

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 20158
  • Репутация: +147/-0
    • PuppyRus-A
gpu Amlogic Mali gpu driver
Это? И что?

Оффлайн baloven

  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
может я что-то не так понял, но в родном линуксе доступном для скачивания с самого амлоджика есть драйвер mali!!!! кстати ниже приводятся в том же файле сборки gsteam и еще какого-то плеера с поддержкой HW - я уже файл просто закрыл. переводчиком не переводил - но возможно что я ошибаюсь - потому и скинул сюда - вы больше разбираетесь в сборках дистрибудтивов.