From 04169b0c5aacf180ec974cd4c12d337632aca01b Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 27 Mar 2022 00:02:21 +0000 Subject: [PATCH] Use nvv4l2 decoder instead of nvmpi for L4T --- .gitmodules | 3 +++ Dockerfile.l4t.bionic | 5 ++--- FFmpeg-l4t | 1 + debian/rules | 4 ++++ scripts/build-deps.sh | 10 ++++++++-- scripts/build-package.sh | 2 +- 6 files changed, 19 insertions(+), 6 deletions(-) create mode 160000 FFmpeg-l4t diff --git a/.gitmodules b/.gitmodules index a2ce733..457ae7b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,3 +16,6 @@ [submodule "rpi-userland"] path = rpi-userland url = https://github.com/cgutman/userland.git +[submodule "FFmpeg-l4t"] + path = FFmpeg-l4t + url = https://gitlab.com/switchroot/switch-l4t-multimedia/FFmpeg.git diff --git a/Dockerfile.l4t.bionic b/Dockerfile.l4t.bionic index c69ff6d..07a1953 100644 --- a/Dockerfile.l4t.bionic +++ b/Dockerfile.l4t.bionic @@ -4,18 +4,17 @@ ENV TARGET=l4t COPY scripts/install-base-deps.sh /opt/scripts/ RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ - curl -1sLf 'https://dl.cloudsmith.io/public/moonlight-game-streaming/moonlight-l4t/setup.deb.sh' | bash && \ echo "deb https://repo.download.nvidia.com/jetson/common r32 main" >> /etc/apt/sources.list && \ echo "deb https://repo.download.nvidia.com/jetson/t210 r32 main" >> /etc/apt/sources.list && \ apt-key adv --fetch-key https://repo.download.nvidia.com/jetson/jetson-ota-public.asc && \ mkdir -p /opt/nvidia/l4t-packages/ && \ echo >> /opt/nvidia/l4t-packages/.nv-l4t-disable-boot-fw-update-in-preinstall && \ apt-get update && \ - apt-get install -y -o Dpkg::Options::="--force-confold" libnvmpi1.0.0 nvidia-l4t-multimedia-utils && \ + apt-get install -y -o Dpkg::Options::="--force-confold" libv4l-dev nvidia-l4t-multimedia-utils && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* -COPY FFmpeg /opt/FFmpeg +COPY FFmpeg-l4t /opt/FFmpeg COPY SDL2 /opt/SDL2 COPY SDL_ttf /opt/SDL_ttf diff --git a/FFmpeg-l4t b/FFmpeg-l4t new file mode 160000 index 0000000..1d0dbfb --- /dev/null +++ b/FFmpeg-l4t @@ -0,0 +1 @@ +Subproject commit 1d0dbfb7243a12b2941a23584a2dbed7cfb7077f diff --git a/debian/rules b/debian/rules index b061060..4ae2d0a 100755 --- a/debian/rules +++ b/debian/rules @@ -3,6 +3,10 @@ export QT_SELECT := qt5 %: dh $@ +override_dh_shlibdeps: + # Override package dependency error for /usr/lib/aarch64-linux-gnu/tegra/libnvbuf_utils.so + dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info + override_dh_install: dh_install diff --git a/scripts/build-deps.sh b/scripts/build-deps.sh index 92617f5..b53b511 100755 --- a/scripts/build-deps.sh +++ b/scripts/build-deps.sh @@ -23,8 +23,8 @@ if [ "$TARGET" == "rpi" ] || [ "$TARGET" == "rpi64" ]; then # Enable MMAL and VL42 stateless decoders EXTRA_FFMPEG_ARGS="--enable-mmal --enable-decoder=h264_mmal --disable-rpi --enable-sand --enable-libudev --enable-v4l2-request --enable-hwaccel=h264_v4l2request --enable-hwaccel=hevc_v4l2request" elif [ "$TARGET" == "l4t" ]; then - # Enable NVMPI decoders - EXTRA_FFMPEG_ARGS="--enable-nvmpi --enable-decoder=h264_nvmpi --enable-decoder=hevc_nvmpi" + # Enable NVV4L2 decoders + EXTRA_FFMPEG_ARGS="--enable-nvv4l2 --enable-decoder=h264_nvv4l2 --enable-decoder=hevc_nvv4l2" elif [ "$TARGET" == "desktop" ]; then # We need to install the NVDEC headers cd /opt/nv-codec-headers @@ -59,3 +59,9 @@ cd /opt/FFmpeg ./configure $BASE_FFMPEG_ARGS $EXTRA_FFMPEG_ARGS make -j$(nproc) make install + +if [ "$TARGET" == "l4t" ]; then + # Patch libavcodec.pc to provide the proper library path for libnvbuf_utils.so + sed -i 's|-lnvbuf_utils|-L/usr/lib/aarch64-linux-gnu/tegra/ -lnvbuf_utils|g' /usr/local/lib/pkgconfig/libavcodec.pc + cat /usr/local/lib/pkgconfig/libavcodec.pc +fi diff --git a/scripts/build-package.sh b/scripts/build-package.sh index c601bc8..dec378c 100755 --- a/scripts/build-package.sh +++ b/scripts/build-package.sh @@ -20,7 +20,7 @@ elif [ "$TARGET" == "rpi64" ]; then EXTRA_BUILD_DEPS="" EXTRA_DEPS="" elif [ "$TARGET" == "l4t" ]; then - EXTRA_BUILD_DEPS="libnvmpi1.0.0" + EXTRA_BUILD_DEPS="" elif [ "$TARGET" == "desktop" ]; then EXTRA_BUILD_DEPS="libwayland-dev, wayland-protocols, libva-dev, libvdpau-dev" else