Как многим известно, в Raspberry Pi установлен GPU модели VideoCore. Он умеет аппаратное ускорение видео. С самого начала на этих компьютерах был omxplayer, который воспроизводил видео быстро и плавно. Несколько лет назад, аппаратное декодирование видео добавили в VLC и Chromium (в хромиуме надо включить принудительно).
Я задумался, а будет ли работать аппаратное ускорение в других дистрибутивах Linux?
Наверное нет, ведь разработчики Raspbian OS сами патчили VLC и Chromium.
Но ведь это опенсорс, можно взять патчи из Raspberry OS, и наложить их в другом дистрибутиве!
Скачиваю исходники VLC:
mkdir vlc
apt-get source vlc
В каталоге vlc-3.0.8/debian/patches
лежат патчи. Один из них - mmal_10.patch
- это явно то, что нужно. Он занимает 400 килобайт, и он явно добавляет аппаратное ускорение MMAL.
Однако первые же строки кода заставили меня недоумевать:
--- a/configure.ac
+++ b/configure.ac
@@ -3420,6 +3420,9 @@
AC_ARG_ENABLE(mmal,
AS_HELP_STRING([--enable-mmal],
[Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
+AC_ARG_ENABLE(mmal_avcodec,
+ AS_HELP_STRING([--enable-mmal-avcodec],
+ [Use MMAL enabled avcodec libs (default disable)]))
if test "${enable_mmal}" != "no"; then
VLC_SAVE_FLAGS
LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
@@ -3430,7 +3433,7 @@
VLC_ADD_PLUGIN([mmal])
VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
- VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif ]) ], [
+ VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif -lvchiq_arm -lvcsm ]) ], [
AS_IF([test "${enable_mmal}" = "yes"],
[ AC_MSG_ERROR([Cannot find bcm library...]) ],
[ AC_MSG_WARN([Cannot find bcm library...]) ])
@@ -3442,6 +3445,7 @@
VLC_RESTORE_FLAGS
fi
AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
+AM_CONDITIONAL([HAVE_MMAL_AVCODEC], [test "${enable_mmal_avcodec}" = "yes"])
dnl
dnl evas plugin
Почему в оригинальном, не патченном исходнике, уже есть путь /opt/vc/lib
? Эта директория специфична именно для устройств под управлением Raspberry Pi. Выглядит так, как будто разработчики Raspberry OS патчили исходники напрямую, а не добавляли изменения патчами в vlc-3.0.8/debian/patches
. Хотя размер патча mmal_10.patch
(400 Кб) говорит об обратном.