Update build scripts and dependencies

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
This commit is contained in:
nyanmisaka
2023-03-04 22:24:53 +08:00
parent 5ceae32661
commit 9ef8d827ea
34 changed files with 134 additions and 118 deletions
+5 -3
View File
@@ -11,7 +11,7 @@ ENV LLVM_VER=LLVM_RELEASE_VERSION
ENV SOURCE_DIR=/ffmpeg
ENV ARTIFACT_DIR=/dist
ENV TARGET_DIR=/usr/lib/jellyfin-ffmpeg
ENV DPKG_INSTALL_LIST=${SOURCE_DIR}/debian/jellyfin-ffmpeg5.install
ENV DPKG_INSTALL_LIST=${SOURCE_DIR}/debian/jellyfin-ffmpeg6.install
ENV PATH=${TARGET_DIR}/bin:${PATH}
ENV PKG_CONFIG_PATH=${TARGET_DIR}/lib/pkgconfig:${PKG_CONFIG_PATH}
ENV LD_LIBRARY_PATH=${TARGET_DIR}/lib:${TARGET_DIR}/lib/mfx:${TARGET_DIR}/lib/xorg:${LD_LIBRARY_PATH}
@@ -26,11 +26,13 @@ RUN apt-get update \
&& yes | apt-get install -y apt-transport-https curl ninja-build debhelper gnupg wget devscripts mmv equivs git nasm pkg-config subversion dh-autoreconf libpciaccess-dev libwayland-dev libx11-dev libx11-xcb-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-present-dev libxcb-shm0-dev libxcb-sync-dev libxshmfence-dev libxext-dev libxfixes-dev libxcb1-dev libxrandr-dev libzstd-dev libelf-dev python3-pip zip unzip tar flex bison
# Install newer tools from pip3
RUN pip3 install --upgrade pip \
&& pip3 install meson cmake mako jinja2
RUN pip3 install $(pip3 help install | grep -o "\-\-break-system-packages") --upgrade pip \
&& pip3 install $(pip3 help install | grep -o "\-\-break-system-packages") meson cmake mako jinja2
# Avoids timeouts when using git and disable the detachedHead advice
RUN git config --global http.postbuffer 524288000 \
&& git config --global advice.detachedHead false
# Link to docker-build script
RUN ln -sf ${SOURCE_DIR}/docker-build.sh /docker-build.sh
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/make
DISTRO=ubuntu:hirsute
DISTRO=ubuntu:lunar
.PHONY: Dockerfile
Dockerfile: Dockerfile.win64.in
sed 's/DISTRO/$(DISTRO)/' $< > $@ || rm -f $@
+1 -1
View File
@@ -9,7 +9,7 @@ for dep in docker make; do
done
# Use the latest distro for toolchains
distro="ubuntu:kinetic"
distro="ubuntu:lunar"
image_name="jellyfin-ffmpeg-build-windows-win64"
package_temporary_dir="$( mktemp -d )"
current_user="$( whoami )"
+1 -1
View File
@@ -1,4 +1,4 @@
FROM ubuntu:kinetic
FROM ubuntu:lunar
ENV DEBIAN_FRONTEND noninteractive
RUN \
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/mirror/mingw-w64.git"
SCRIPT_COMMIT="e4bde579f050f5686ec5eefb4ad3128444797929"
SCRIPT_COMMIT="166b83cc85eb515a49764480600dca10862b6d55"
ffbuild_enabled() {
[[ $TARGET == win* ]] || return -1
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/GNOME/libxml2.git"
SCRIPT_COMMIT="e20f4d7a656e47553f9da9d594e299e2fa2dbe41"
SCRIPT_COMMIT="f560065f4d6bd970be3bab81477abaa75cdd36fa"
ffbuild_enabled() {
return 0
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/freetype/freetype.git"
SCRIPT_COMMIT="dacbb55433079fb3539163862958a6b9466a0661"
SCRIPT_COMMIT="e8931f8c56104786479de38adbe2c8bb7f49c822"
ffbuild_enabled() {
return 0
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/fontconfig/fontconfig.git"
SCRIPT_COMMIT="2ef790a0dbbab24235d1b8c0325ab4414de5f0a9"
SCRIPT_COMMIT="a6a169572204dd86f4ab462ef505d98fdfd82d76"
ffbuild_enabled() {
return 0
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/harfbuzz/harfbuzz.git"
SCRIPT_COMMIT="b41efb6c4da9b1180b5178a55ceb31c68791dfdc"
SCRIPT_COMMIT="e8f94f9e1249fd1374fa282685ae93aba3b8fcdd"
ffbuild_enabled() {
return 0
+2 -2
View File
@@ -1,10 +1,10 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/KhronosGroup/OpenCL-Headers.git"
SCRIPT_COMMIT="4c82e9cfaaad18c340f48af3cf5d09ff33e8c1b7"
SCRIPT_COMMIT="1080743ea047d6467bc609f979a21f00e06ac928"
SCRIPT_REPO2="https://github.com/KhronosGroup/OpenCL-ICD-Loader.git"
SCRIPT_COMMIT2="2cde5d09953a041786d1cfdcb1c08704a82cb904"
SCRIPT_COMMIT2="ece91448a958099b9c277f050fca9df96a2ea718"
ffbuild_enabled() {
return 0
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/proto/xcbproto.git"
SCRIPT_COMMIT="842d91316243eb1f2e208231acc1512c2cf43a1f"
SCRIPT_COMMIT="15d140d7867e8e654ce917b8d6d1dbd45b3de3b8"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/proto/xorgproto.git"
SCRIPT_COMMIT="1b6e63b2c38a0cf6cd1c70bfc5483cac0d1710e1"
SCRIPT_COMMIT="423098656f145afeb72cbf21aaa0b3a3f9bc36bb"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxcb.git"
SCRIPT_COMMIT="4d1a578dd5348909ade2a853d806272326d228d7"
SCRIPT_COMMIT="fd04ab24a5e99d53874789439d3ffb0eb82574f7"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxext.git"
SCRIPT_COMMIT="e8556ab06e03b59e9a512eb02955247efd4c4054"
SCRIPT_COMMIT="50cac0209f96469d3a332a59a9c8d6d658edaf5f"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxfixes.git"
SCRIPT_COMMIT="332394278b7110a774b5277bb3cfc58c42cd888c"
SCRIPT_COMMIT="ad22c5ade8789cdb606b244336106a713473318c"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git"
SCRIPT_COMMIT="37452e9e60940f04fc235a923ffcc31c407240fa"
SCRIPT_COMMIT="4bfa819fc3d6aa4714ad28f8dab46d0fa95177ad"
ffbuild_enabled() {
[[ $TARGET == *arm64 ]] && return -1
@@ -8,16 +8,17 @@ ffbuild_enabled() {
}
ffbuild_dockerbuild() {
git-mini-clone "$SCRIPT_REPO" "$SCRIPT_COMMIT_PINNED" chromaprint
git-mini-clone "$SCRIPT_REPO" "$SCRIPT_COMMIT" chromaprint
cd chromaprint
mkdir build && cd build
ls -lh "$FFBUILD_PREFIX"/lib/pkgconfig
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_SHARED_LIBS=OFF -DBUILD_TOOLS=OFF -DBUILD_TESTS=OFF -DFFT_LIB=fftw3f ..
make -j$(nproc)
make install
echo "Libs.private: -lfftw3f -lstdc++" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libchromaprint.pc
echo "Cflags.private: -DCHROMAPRINT_NODLL" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libchromaprint.pc
}
ffbuild_configure() {
@@ -27,11 +28,3 @@ ffbuild_configure() {
ffbuild_unconfigure() {
echo --disable-chromaprint
}
ffbuild_cflags() {
[[ $TARGET == win* ]] && echo '-DCHROMAPRINT_NODLL'
}
ffbuild_libs() {
echo '-lfftw3f -lstdc++'
}
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://code.videolan.org/videolan/dav1d.git"
SCRIPT_COMMIT="9593e625b75d498d1edea544da21ea764b98d507"
SCRIPT_COMMIT="d426d1c91075b9c552b12dd052af1cd0368f05a2"
ffbuild_enabled() {
return 0
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/FFmpeg/nv-codec-headers.git"
SCRIPT_COMMIT="f8ae7a49bfef2f99d2c931a791dc3863fda67bf3"
SCRIPT_COMMIT="c5e4af74850a616c42d39ed45b9b8568b71bf8bf"
ffbuild_enabled() {
[[ $TARGET == *arm64 ]] && return -1
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/libass/libass.git"
SCRIPT_COMMIT="077328ca6715e2e2826881003946640f56cb763c"
SCRIPT_COMMIT="218dacece7d24b45e4637ced4dc56564de29919d"
ffbuild_enabled() {
return 0
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://chromium.googlesource.com/webm/libvpx"
SCRIPT_COMMIT="660031ccf380e6a37beecc67e78154b7b6ea78d8"
SCRIPT_COMMIT="0e7804ca30c367eefb17594a0c5096f2f26de732"
ffbuild_enabled() {
return 0
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://chromium.googlesource.com/webm/libwebp"
SCRIPT_COMMIT="1347a32d82276ecf4daba12f6e9142cc4e1f2401"
SCRIPT_COMMIT="d64e6d7d9d1e91d99e07de5e17afa0134d87f4ab"
ffbuild_enabled() {
return 0
+3 -1
View File
@@ -4,8 +4,8 @@ SCRIPT_REPO="https://github.com/lu-zero/mfx_dispatch.git"
SCRIPT_COMMIT="5a3f178be7f406cec920b9f52f46c1ae29f29bb2"
ffbuild_enabled() {
return -1
[[ $TARGET == *arm64 ]] && return -1
return 0
}
ffbuild_dockerstage() {
@@ -47,9 +47,11 @@ ffbuild_dockerbuild() {
}
ffbuild_configure() {
return 0
[[ $TARGET != *arm64 ]] && echo --enable-libmfx
}
ffbuild_unconfigure() {
return 0
[[ $TARGET != *arm64 ]] && echo --disable-libmfx
}
+3 -6
View File
@@ -5,7 +5,7 @@ SCRIPT_COMMIT="6ca7a09c4b5b2c1ae6b52d73bc44c334ab66adbc"
ffbuild_enabled() {
[[ $TARGET == *arm64 ]] && return -1
return -1
return 0
}
ffbuild_dockerbuild() {
@@ -24,16 +24,13 @@ ffbuild_dockerbuild() {
ninja install
rm -rf "$FFBUILD_PREFIX"/{etc,share}
cat /opt/ffbuild/lib/pkgconfig/vpl.pc
}
ffbuild_configure() {
return 0
echo --enable-libvpl
[[ $TARGET != *arm64 ]] && echo --enable-libvpl
}
ffbuild_unconfigure() {
return 0
echo --disable-libvpl
[[ $TARGET != *arm64 ]] && echo --disable-libvpl
}
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/Haivision/srt.git"
SCRIPT_COMMIT="e8d0533176ef53bfb2b95442f125ec9c878cf791"
SCRIPT_COMMIT="1cffd2f2abad1782d1218f2c2b893f26bf4bbfce"
ffbuild_enabled() {
return 0
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.com/AOMediaCodec/SVT-AV1.git"
SCRIPT_COMMIT="71a1e23d87eeda36c28feec80f229576c9d83314"
SCRIPT_COMMIT="f2b4b2d8729d0f9afabaf85ff0dd9741e24b57fd"
ffbuild_enabled() {
[[ $TARGET == win32 ]] && return -1
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/mesa/drm.git"
SCRIPT_COMMIT="c6d6dce99fb3e7e681fbba9e198345fdbd10e49e"
SCRIPT_COMMIT="332809f3ee19f07abc03b62d5892fae51b9d9902"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/intel/libva.git"
SCRIPT_COMMIT="29ac033a2998eb012b2a98fea46fc43dcdec35e4"
SCRIPT_COMMIT="97cbc87c94351c62a47d87e776488a9317ad398b"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/KhronosGroup/SPIRV-Cross.git"
SCRIPT_COMMIT="4e2fdb25671c742a9fbe93a6034eb1542244c7e1"
SCRIPT_COMMIT="7512345f61e5f9b543ebb87df678f3fe7735587b"
ffbuild_enabled() {
return 0
+1 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
SCRIPT_REPO="https://bitbucket.org/multicoreware/x265_git.git"
SCRIPT_COMMIT="6da609e41ca5ae1d661a1b5c4805ed7a3f4117cc"
SCRIPT_COMMIT="38cf1c379b5af08856bb2fdd65f65a1f99384886"
ffbuild_enabled() {
[[ $VARIANT == lgpl* ]] && return -1
+8
View File
@@ -1,2 +1,10 @@
ffmpeg usr/lib/jellyfin-ffmpeg
ffprobe usr/lib/jellyfin-ffmpeg
libavcodec/libavcodec.so* usr/lib/jellyfin-ffmpeg/lib
libavdevice/libavdevice.so* usr/lib/jellyfin-ffmpeg/lib
libavfilter/libavfilter.so* usr/lib/jellyfin-ffmpeg/lib
libavformat/libavformat.so* usr/lib/jellyfin-ffmpeg/lib
libavutil/libavutil.so* usr/lib/jellyfin-ffmpeg/lib
libpostproc/libpostproc.so* usr/lib/jellyfin-ffmpeg/lib
libswresample/libswresample.so* usr/lib/jellyfin-ffmpeg/lib
libswscale/libswscale.so* usr/lib/jellyfin-ffmpeg/lib
+3 -9
View File
@@ -4,27 +4,22 @@ export V=1
ORIG_VERSION := $(shell dpkg-parsechangelog -S version)
VERSION_SUFFIX := $(shell lsb_release -c -s)
# Set the current "testing" explicitly to "buster"
ifeq ($(VERSION_SUFFIX),testing)
VERSION_SUFFIX := buster
endif
PACKAGEVERSION := "$(ORIG_VERSION)-$(VERSION_SUFFIX)"
CONFIG := --prefix=${TARGET_DIR} \
--target-os=linux \
--extra-libs='-lfftw3f' \
--extra-version=Jellyfin \
--disable-doc \
--disable-ffplay \
--disable-ptx-compression \
--disable-shared \
--disable-static \
--disable-libxcb \
--disable-sdl2 \
--disable-xlib \
--enable-lto \
--enable-gpl \
--enable-version3 \
--enable-static \
--enable-shared \
--enable-gmp \
--enable-gnutls \
--enable-chromaprint \
@@ -66,7 +61,7 @@ CONFIG_x86 := --arch=amd64 \
--enable-opencl \
--enable-vaapi \
--enable-amf \
--enable-libmfx \
--enable-libvpl \
--enable-ffnvcodec \
--enable-cuda \
--enable-cuda-llvm \
@@ -105,7 +100,6 @@ override_dh_auto_clean:
dh_auto_clean || true
override_dh_auto_install:
make -j1 install-data DESTDIR=/srv/build/ffmpeg/jellyfin-ffmpeg/debian/jellyfin-ffmpeg AM_UPDATE_INFO_DIR=no
override_dh_usrlocal:
+26 -25
View File
@@ -67,13 +67,9 @@ make install
popd
# FREETYPE
mkdir freetype
git clone --depth=1 https://gitlab.freedesktop.org/freetype/freetype.git
pushd freetype
ft_ver="2.13.0"
ft_link="https://download.savannah.gnu.org/releases/freetype/freetype-${ft_ver}.tar.gz"
wget ${ft_link} -O ft.tar.gz
tar xaf ft.tar.gz
pushd freetype-${ft_ver}
./autogen.sh
./configure \
--prefix=${FF_DEPS_PREFIX} \
--host=${FF_TOOLCHAIN} \
@@ -82,7 +78,6 @@ pushd freetype-${ft_ver}
make -j$(nproc)
make install
popd
popd
# FRIBIDI
git clone --depth=1 https://github.com/fribidi/fribidi.git
@@ -158,8 +153,8 @@ cmake \
..
make -j$(nproc)
make install
FF_EXTRA_LIBS="-lfftw3f -lstdc++${FF_EXTRA_LIBS}"
FF_EXTRA_CFLAGS="-DCHROMAPRINT_NODLL${FF_EXTRA_CFLAGS}"
echo "Libs.private: -lfftw3f -lstdc++" >> ${FF_DEPS_PREFIX}/lib/pkgconfig/libchromaprint.pc
echo "Cflags.private: -DCHROMAPRINT_NODLL" >> ${FF_DEPS_PREFIX}/lib/pkgconfig/libchromaprint.pc
popd
popd
@@ -488,7 +483,7 @@ make install
popd
# OpenCL headers
git clone --depth=1 https://github.com/KhronosGroup/OpenCL-Headers
git clone --depth=1 https://github.com/KhronosGroup/OpenCL-Headers.git
pushd OpenCL-Headers/CL
mkdir -p ${FF_DEPS_PREFIX}/include/CL
mv * ${FF_DEPS_PREFIX}/include/CL
@@ -526,31 +521,39 @@ EOF
popd
# FFNVCODEC
git clone -b n11.1.5.2 --depth=1 https://github.com/FFmpeg/nv-codec-headers.git
git clone --depth=1 https://github.com/FFmpeg/nv-codec-headers.git
pushd nv-codec-headers
git reset --hard "c5e4af7"
make PREFIX=${FF_DEPS_PREFIX} install
popd
# AMF
git clone --depth=1 https://github.com/GPUOpen-LibrariesAndSDKs/AMF
git clone --depth=1 https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git
pushd AMF/amf/public/include
mkdir -p ${FF_DEPS_PREFIX}/include/AMF
mv * ${FF_DEPS_PREFIX}/include/AMF
popd
# LIBMFX
git clone -b 1.35.1 --depth=1 https://github.com/lu-zero/mfx_dispatch.git
pushd mfx_dispatch
autoreconf -i
./configure \
--prefix=${FF_DEPS_PREFIX} \
--host=${FF_TOOLCHAIN} \
--disable-shared \
--enable-static \
--with-pic
# VPL
git clone -b v2023.1.2 --depth=1 https://github.com/oneapi-src/oneVPL.git
pushd oneVPL
mkdir build && pushd build
cmake \
-DCMAKE_TOOLCHAIN_FILE=${FF_CMAKE_TOOLCHAIN} \
-DCMAKE_INSTALL_PREFIX=${FF_DEPS_PREFIX} \
-DCMAKE_INSTALL_BINDIR=${FF_DEPS_PREFIX}/bin \
-DCMAKE_INSTALL_LIBDIR=${FF_DEPS_PREFIX}/lib \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_{DISPATCHER,DEV}=ON \
-DBUILD_{PREVIEW,TESTS}=OFF \
-DBUILD_TOOLS{,_ONEVPL_EXPERIMENTAL}=OFF \
-DINSTALL_EXAMPLE_CODE=OFF \
..
make -j$(nproc)
make install
popd
popd
# Jellyfin-FFmpeg
pushd ${SOURCE_DIR}
@@ -561,8 +564,6 @@ fi
./configure \
--prefix=${FF_PREFIX} \
${FF_TARGET_FLAGS} \
--extra-libs="${FF_EXTRA_LIBS}" \
--extra-cflags="${FF_EXTRA_CFLAGS}" \
--extra-version=Jellyfin \
--disable-ffplay \
--disable-debug \
@@ -603,7 +604,7 @@ fi
--enable-dxva2 \
--enable-d3d11va \
--enable-amf \
--enable-libmfx \
--enable-libvpl \
--enable-ffnvcodec \
--enable-cuda \
--enable-cuda-llvm \
+55 -36
View File
@@ -62,6 +62,8 @@ prepare_extra_common() {
pushd ${SOURCE_DIR}
git clone --depth=1 https://github.com/acoustid/chromaprint.git
pushd chromaprint
echo "Libs.private: -lfftw3f -lstdc++" >> libchromaprint.pc.cmake
echo "Cflags.private: -DCHROMAPRINT_NODLL" >> libchromaprint.pc.cmake
mkdir build
pushd build
cmake \
@@ -80,7 +82,7 @@ prepare_extra_common() {
# ZIMG
pushd ${SOURCE_DIR}
git clone --recursive --depth=1 https://github.com/sekrit-twc/zimg
git clone --recursive --depth=1 https://github.com/sekrit-twc/zimg.git
pushd zimg
./autogen.sh
./configure --prefix=${TARGET_DIR} ${CROSS_OPT}
@@ -160,16 +162,16 @@ prepare_extra_amd64() {
# FFNVCODEC
pushd ${SOURCE_DIR}
git clone -b n11.1.5.2 --depth=1 https://github.com/FFmpeg/nv-codec-headers
git clone --depth=1 https://github.com/FFmpeg/nv-codec-headers.git
pushd nv-codec-headers
make
make install
git reset --hard "c5e4af7"
make && make install
popd
popd
# AMF
# https://www.ffmpeg.org/general.html#AMD-AMF_002fVCE
git clone --depth=1 https://github.com/GPUOpen-LibrariesAndSDKs/AMF
git clone --depth=1 https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git
pushd AMF/amf/public/include
mkdir -p /usr/include/AMF
mv * /usr/include/AMF
@@ -201,7 +203,7 @@ prepare_extra_amd64() {
# LIBVA
pushd ${SOURCE_DIR}
git clone -b 2.17.0 --depth=1 https://github.com/intel/libva
git clone -b 2.17.0 --depth=1 https://github.com/intel/libva.git
pushd libva
sed -i 's|getenv("LIBVA_DRIVERS_PATH")|"/usr/lib/jellyfin-ffmpeg/lib/dri:/usr/lib/x86_64-linux-gnu/dri:/usr/lib/dri:/usr/local/lib/dri"|g' va/va.c
sed -i 's|getenv("LIBVA_DRIVER_NAME")|getenv("LIBVA_DRIVER_NAME_JELLYFIN")|g' va/va.c
@@ -218,7 +220,7 @@ prepare_extra_amd64() {
# LIBVA-UTILS
pushd ${SOURCE_DIR}
git clone -b 2.17.1 --depth=1 https://github.com/intel/libva-utils
git clone -b 2.17.1 --depth=1 https://github.com/intel/libva-utils.git
pushd libva-utils
./autogen.sh
./configure --prefix=${TARGET_DIR}
@@ -229,7 +231,7 @@ prepare_extra_amd64() {
# INTEL-VAAPI-DRIVER
pushd ${SOURCE_DIR}
git clone --depth=1 https://github.com/intel/intel-vaapi-driver
git clone --depth=1 https://github.com/intel/intel-vaapi-driver.git
pushd intel-vaapi-driver
./autogen.sh
./configure LIBVA_DRIVERS_PATH=${TARGET_DIR}/lib/dri
@@ -242,7 +244,7 @@ prepare_extra_amd64() {
# GMMLIB
pushd ${SOURCE_DIR}
git clone -b intel-gmmlib-22.3.3 --depth=1 https://github.com/intel/gmmlib
git clone -b intel-gmmlib-22.3.4 --depth=1 https://github.com/intel/gmmlib.git
pushd gmmlib
mkdir build && pushd build
cmake -DCMAKE_INSTALL_PREFIX=${TARGET_DIR} ..
@@ -252,31 +254,52 @@ prepare_extra_amd64() {
popd
popd
# MediaSDK
# MediaSDK (RT only)
# Provides MSDK runtime (libmfxhw64.so.1) for 11th Gen Rocket Lake and older
# Provides MFX dispatcher (libmfx.so.1) for FFmpeg
pushd ${SOURCE_DIR}
git clone -b intel-mediasdk-23.1.1 --depth=1 https://github.com/Intel-Media-SDK/MediaSDK
git clone -b intel-mediasdk-23.1.2 --depth=1 https://github.com/Intel-Media-SDK/MediaSDK.git
pushd MediaSDK
sed -i 's|MFX_PLUGINS_CONF_DIR "/plugins.cfg"|"/usr/lib/jellyfin-ffmpeg/lib/mfx/plugins.cfg"|g' api/mfx_dispatch/linux/mfxloader.cpp
mkdir build && pushd build
cmake -DCMAKE_INSTALL_PREFIX=${TARGET_DIR} \
-DBUILD_SAMPLES=OFF \
-DBUILD_RUNTIME=ON \
-DBUILD_{SAMPLES,TUTORIALS,OPENCL}=OFF \
-DBUILD_TUTORIALS=OFF \
..
make -j$(nproc) && make install && make install DESTDIR=${SOURCE_DIR}/intel
echo "intel${TARGET_DIR}/lib/libmfx* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
echo "intel${TARGET_DIR}/lib/mfx/*.so usr/lib/jellyfin-ffmpeg/lib/mfx" >> ${DPKG_INSTALL_LIST}
echo "intel${TARGET_DIR}/share/mfx/plugins.cfg usr/lib/jellyfin-ffmpeg/lib/mfx" >> ${DPKG_INSTALL_LIST}
echo "intel${TARGET_DIR}/lib/libmfxhw64.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
popd
popd
popd
# ONEVPL-INTEL-GPU
# ONEVPL (dispatcher + header)
pushd ${SOURCE_DIR}
git clone -b v2023.1.2 --depth=1 https://github.com/oneapi-src/oneVPL.git
pushd oneVPL
sed -i 's|ParseEnvSearchPaths(ONEVPL_PRIORITY_PATH_VAR, searchDirList)|searchDirList.push_back("/usr/lib/jellyfin-ffmpeg/lib")|g' dispatcher/vpl/mfx_dispatcher_vpl_loader.cpp
mkdir build && pushd build
cmake -DCMAKE_INSTALL_PREFIX=${TARGET_DIR} \
-DCMAKE_INSTALL_BINDIR=${TARGET_DIR}/bin \
-DCMAKE_INSTALL_LIBDIR=${TARGET_DIR}/lib \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_{DISPATCHER,DEV}=ON \
-DBUILD_{PREVIEW,TESTS}=OFF \
-DBUILD_TOOLS{,_ONEVPL_EXPERIMENTAL}=OFF \
-DINSTALL_EXAMPLE_CODE=OFF \
..
make -j$(nproc) && make install && make install DESTDIR=${SOURCE_DIR}/intel
echo "intel${TARGET_DIR}/lib/libvpl.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
popd
popd
popd
# ONEVPL-INTEL-GPU (RT only)
# Provides VPL runtime (libmfx-gen.so.1.2) for 11th Gen Tiger Lake and newer
# Both MSDK and VPL runtime can be loaded by MFX dispatcher (libmfx.so.1)
pushd ${SOURCE_DIR}
git clone -b intel-onevpl-23.1.1 --depth=1 https://github.com/oneapi-src/oneVPL-intel-gpu
git clone -b intel-onevpl-23.1.2 --depth=1 https://github.com/oneapi-src/oneVPL-intel-gpu.git
pushd oneVPL-intel-gpu
mkdir build && pushd build
cmake -DCMAKE_INSTALL_PREFIX=${TARGET_DIR} ..
@@ -290,10 +313,10 @@ prepare_extra_amd64() {
# Full Feature Build: ENABLE_KERNELS=ON(Default) ENABLE_NONFREE_KERNELS=ON(Default)
# Free Kernel Build: ENABLE_KERNELS=ON ENABLE_NONFREE_KERNELS=OFF
pushd ${SOURCE_DIR}
git clone -b intel-media-23.1.1 --depth=1 https://github.com/intel/media-driver
git clone -b intel-media-23.1.2 --depth=1 https://github.com/intel/media-driver.git
pushd media-driver
# Possible fix for TGLx timeout caused by 'HCP Scalability Decode' under heavy load
wget -q -O - https://github.com/intel/media-driver/commit/284750bf2619112627dd8c60bd5c8032c7780606.patch | git apply
wget -q -O - https://github.com/intel/media-driver/commit/284750bf.patch | git apply
mkdir build && pushd build
cmake -DCMAKE_INSTALL_PREFIX=${TARGET_DIR} \
-DENABLE_KERNELS=ON \
@@ -311,7 +334,7 @@ prepare_extra_amd64() {
# Vulkan Headers
pushd ${SOURCE_DIR}
git clone -b v1.3.240 --depth=1 https://github.com/KhronosGroup/Vulkan-Headers
git clone -b v1.3.240 --depth=1 https://github.com/KhronosGroup/Vulkan-Headers.git
pushd Vulkan-Headers
mkdir build && pushd build
cmake \
@@ -324,7 +347,7 @@ prepare_extra_amd64() {
# Vulkan ICD Loader
pushd ${SOURCE_DIR}
git clone -b v1.3.240 --depth=1 https://github.com/KhronosGroup/Vulkan-Loader
git clone -b v1.3.240 --depth=1 https://github.com/KhronosGroup/Vulkan-Loader.git
pushd Vulkan-Loader
mkdir build && pushd build
cmake \
@@ -345,7 +368,7 @@ prepare_extra_amd64() {
# SHADERC
pushd ${SOURCE_DIR}
git clone -b v2023.2 --depth=1 https://github.com/google/shaderc
git clone -b v2023.2 --depth=1 https://github.com/google/shaderc.git
pushd shaderc
./utils/git-sync-deps
mkdir build && pushd build
@@ -372,25 +395,22 @@ prepare_extra_amd64() {
if [[ ${LLVM_VER} -ge 11 ]]; then
apt-get install -y llvm-${LLVM_VER}-dev libudev-dev
pushd ${SOURCE_DIR}
mkdir mesa
git clone -b main https://gitlab.freedesktop.org/mesa/mesa.git
pushd mesa
mesa_ver="22.3.5"
mesa_link="https://mesa.freedesktop.org/archive/mesa-${mesa_ver}.tar.xz"
wget ${mesa_link} -O mesa.tar.xz
tar xaf mesa.tar.xz
# reduce encode overhead with optimized buffer types
wget -O - https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20376.patch | git apply
wget -O - https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20989.patch | git apply
git reset --hard "a19a37e8"
# fix av1 main nv12 decoding
wget -q -O - https://gitlab.freedesktop.org/mesa/mesa/-/commit/39c6f1f5.patch | git apply
popd
# disable the broken hevc packed header
MESA_VA_PIC="mesa-${mesa_ver}/src/gallium/frontends/va/picture.c"
MESA_VA_CONF="mesa-${mesa_ver}/src/gallium/frontends/va/config.c"
MESA_VA_PIC="mesa/src/gallium/frontends/va/picture.c"
MESA_VA_CONF="mesa/src/gallium/frontends/va/config.c"
sed -i 's|handleVAEncPackedHeaderParameterBufferType(context, buf);||g' ${MESA_VA_PIC}
sed -i 's|handleVAEncPackedHeaderDataBufferType(context, buf);||g' ${MESA_VA_PIC}
sed -i 's|if (u_reduce_video_profile(ProfileToPipe(profile)) == PIPE_VIDEO_FORMAT_HEVC)|if (0)|g' ${MESA_VA_CONF}
# force reporting all packed headers are supported
sed -i 's|value = VA_ENC_PACKED_HEADER_NONE;|value = 0x0000001f;|g' ${MESA_VA_CONF}
sed -i 's|if (attrib_list\[i\].type == VAConfigAttribEncPackedHeaders)|if (0)|g' ${MESA_VA_CONF}
meson setup mesa-${mesa_ver} mesa_build \
meson setup mesa mesa_build \
--prefix=${TARGET_DIR} \
--libdir=lib \
--buildtype=release \
@@ -398,7 +418,6 @@ prepare_extra_amd64() {
-Db_ndebug=true \
-Db_lto=false \
-Dplatforms=x11 \
-Ddri-drivers=[] \
-Dgallium-drivers=radeonsi \
-Dvulkan-drivers=amd,intel \
-Dvulkan-layers=device-select,overlay \
@@ -441,7 +460,7 @@ prepare_extra_amd64() {
# LIBPLACEBO
pushd ${SOURCE_DIR}
git clone -b v5.229.2 --recursive --depth=1 https://github.com/haasn/libplacebo
git clone -b v5.229.2 --recursive --depth=1 https://github.com/haasn/libplacebo.git
sed -i 's|env: python_env,||g' libplacebo/src/vulkan/meson.build
meson setup libplacebo placebo_build \
--prefix=${TARGET_DIR} \
@@ -582,5 +601,5 @@ popd
# Move the artifacts out
mkdir -p ${ARTIFACT_DIR}/deb
mv /jellyfin-ffmpeg{,5}_* ${ARTIFACT_DIR}/deb/
mv /jellyfin-ffmpeg{,6}_* ${ARTIFACT_DIR}/deb/
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}