From 521fb9d94149a2cf9781762a24d045af4344198d Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 16 May 2025 00:28:37 +0300 Subject: [PATCH] libvmaf cuda support --- docker-images/7.1/nvidia2404/Dockerfile | 11 ++++++----- docker-images/7.1/nvidia2404/build_source.sh | 2 +- .../generate-source-of-truth-ffmpeg-versions.py | 8 ++++++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/docker-images/7.1/nvidia2404/Dockerfile b/docker-images/7.1/nvidia2404/Dockerfile index 78726574..49b8a01f 100644 --- a/docker-images/7.1/nvidia2404/Dockerfile +++ b/docker-images/7.1/nvidia2404/Dockerfile @@ -6,7 +6,7 @@ # # # Stage 1: Build ( https://hub.docker.com/r/nvidia/cuda ) -FROM nvidia/cuda:12.6.2-devel-ubuntu24.04 AS builder +FROM nvidia/cuda:12.9.0-devel-ubuntu24.04 AS builder ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility,video ENV DEBIAN_FRONTEND=noninteractive @@ -18,9 +18,9 @@ COPY download_tarballs.sh /tmp/workdir COPY build_source.sh /tmp/workdir COPY install_ffmpeg.sh /tmp/workdir -ENV ENV FFMPEG_VERSION=7.1.1 +ENV FFMPEG_VERSION=7.1.1 -ENV NVIDIA_HEADERS_VERSION=11.1.5.3 +#ENV NVIDIA_HEADERS_VERSION=11.1.5.3 ## opencore-amr - https://sourceforge.net/projects/opencore-amr/ ## x264 - http://www.videolan.org/developers/x264.html @@ -161,6 +161,7 @@ RUN buildDeps="autoconf \ expat \ libgomp1 \ ca-certificates \ + xxd \ libxcb-shape0-dev \ libavformat-dev" && \ apt-get -yqq update && \ @@ -200,7 +201,7 @@ RUN /tmp/workdir/install_ffmpeg.sh # Stage 2: Final Image ( shrink the size back down ) # FROM nvidia/cuda:12.6.2-runtime-ubuntu24.04 -FROM nvidia/cuda:12.6.2-base-ubuntu24.04 AS runtime +FROM nvidia/cuda:12.9.0-base-ubuntu24.04 AS runtime # We used to use runtime, but I switched us to base, as it is significantly-smaller. # (~ 80Megs ) base: Includes the CUDA runtime (cudart) # (~ 1.4Gigs) runtime: Builds on the base and includes the CUDA math libraries⁠, and NCCL⁠. @@ -230,7 +231,7 @@ RUN apt-get -yqq update && \ LABEL org.opencontainers.image.authors="julien@rottenberg.info" \ org.opencontainers.image.source=https://github.com/jrottenberg/ffmpeg -ENV LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64 +ENV LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64:/usr/local/cuda-12.9/compat/ CMD ["--help"] ENTRYPOINT ["ffmpeg"] diff --git a/docker-images/7.1/nvidia2404/build_source.sh b/docker-images/7.1/nvidia2404/build_source.sh index 5d40fcc6..86a5b64b 100644 --- a/docker-images/7.1/nvidia2404/build_source.sh +++ b/docker-images/7.1/nvidia2404/build_source.sh @@ -285,7 +285,7 @@ build_libvmaf() { # https://github.com/Netflix/vmaf/issues/788#issuecomment-756098059 mkdir ./libvmaf/build cd ./libvmaf/build - meson setup -Denable_tests=false -Denable_docs=false --buildtype=release --default-library=static --prefix "${PREFIX}" .. && \ + meson setup -Denable_tests=false -Denable_docs=false -Denable_cuda=true --buildtype=release --default-library=static --prefix "${PREFIX}" .. && \ # meson setup -Denable_tests=false -Denable_docs=false --buildtype=release --default-library=shared --prefix "${PREFIX}" .. ninja ninja install diff --git a/docker-images/7.1/nvidia2404/generate-source-of-truth-ffmpeg-versions.py b/docker-images/7.1/nvidia2404/generate-source-of-truth-ffmpeg-versions.py index 5261acb8..b284b07c 100755 --- a/docker-images/7.1/nvidia2404/generate-source-of-truth-ffmpeg-versions.py +++ b/docker-images/7.1/nvidia2404/generate-source-of-truth-ffmpeg-versions.py @@ -71,7 +71,9 @@ LIBARIBB24 = {"version": "1.0.3", "release_date": "2014-08-18"} OPENJPEG = {"version": "2.5.2", "release_date": "2024-02-28"} THEORA = {"version": "1.1.1", "release_date": "2010-01-25"} -LIBVMAF = {"version": "3.0.0", "release_date": "2023-12-07"} +# libvmaf to old for cuda we need use master branch +# https://github.com/Netflix/vmaf/issues/1357 +LIBVMAF = {"version": "master", "release_date": "2023-12-07"} # Library details, Source of truth # TODO: store this in a yaml confiuration file ( would probably be better ) @@ -636,9 +638,11 @@ "license_name": "BSD-2-Clause", "license_link": "https://github.com/Netflix/vmaf/blob/master/LICENSE", "build_info": { - "download_link": f"https://github.com/Netflix/vmaf/archive/refs/tags/v{LIBVMAF['version']}.tar.gz", + #"download_link": f"https://github.com/Netflix/vmaf/archive/refs/tags/v{LIBVMAF['version']}.tar.gz", + "download_link":"https://github.com/Netflix/vmaf/archive/refs/heads/master.tar.gz", "build_dir": "/tmp/vmaf", "tarball_name": f"vmaf-v{LIBVMAF['version']}.tar.gz", + #"tarball_name": f"vmaf-v{LIBVMAF['version']}.tar.gz", }, }, ),