mirror of
https://github.com/jellyfin/jellyfin-ffmpeg.git
synced 2026-09-02 21:03:08 +03:00
Enable chromaprint in ffmpeg
This commit is contained in:
+1
-1
@@ -14,7 +14,7 @@ ENV DPKG_INSTALL_LIST=${SOURCE_DIR}/debian/jellyfin-ffmpeg5.install
|
|||||||
ENV PATH=${TARGET_DIR}/bin:${PATH}
|
ENV PATH=${TARGET_DIR}/bin:${PATH}
|
||||||
ENV PKG_CONFIG_PATH=${TARGET_DIR}/lib/pkgconfig:${PKG_CONFIG_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}
|
ENV LD_LIBRARY_PATH=${TARGET_DIR}/lib:${TARGET_DIR}/lib/mfx:${TARGET_DIR}/lib/xorg:${LD_LIBRARY_PATH}
|
||||||
ENV LDFLAGS=-Wl,-rpath=${TARGET_DIR}/lib
|
ENV LDFLAGS="-Wl,-rpath=${TARGET_DIR}/lib -L${TARGET_DIR}/lib"
|
||||||
ENV CXXFLAGS="-I${TARGET_DIR}/include $CXXFLAGS"
|
ENV CXXFLAGS="-I${TARGET_DIR}/include $CXXFLAGS"
|
||||||
ENV CPPFLAGS="-I${TARGET_DIR}/include $CPPFLAGS"
|
ENV CPPFLAGS="-I${TARGET_DIR}/include $CPPFLAGS"
|
||||||
ENV CFLAGS="-I${TARGET_DIR}/include $CFLAGS"
|
ENV CFLAGS="-I${TARGET_DIR}/include $CFLAGS"
|
||||||
|
|||||||
Vendored
+2
@@ -12,6 +12,7 @@ PACKAGEVERSION := "$(ORIG_VERSION)-$(VERSION_SUFFIX)"
|
|||||||
|
|
||||||
CONFIG := --prefix=${TARGET_DIR} \
|
CONFIG := --prefix=${TARGET_DIR} \
|
||||||
--target-os=linux \
|
--target-os=linux \
|
||||||
|
--extra-libs='-lfftw3' \
|
||||||
--extra-version=Jellyfin \
|
--extra-version=Jellyfin \
|
||||||
--disable-doc \
|
--disable-doc \
|
||||||
--disable-ffplay \
|
--disable-ffplay \
|
||||||
@@ -26,6 +27,7 @@ CONFIG := --prefix=${TARGET_DIR} \
|
|||||||
--enable-static \
|
--enable-static \
|
||||||
--enable-gmp \
|
--enable-gmp \
|
||||||
--enable-gnutls \
|
--enable-gnutls \
|
||||||
|
--enable-chromaprint \
|
||||||
--enable-libdrm \
|
--enable-libdrm \
|
||||||
--enable-libass \
|
--enable-libass \
|
||||||
--enable-libfreetype \
|
--enable-libfreetype \
|
||||||
|
|||||||
@@ -121,6 +121,48 @@ make install
|
|||||||
popd
|
popd
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
# FFTW3
|
||||||
|
mkdir fftw3
|
||||||
|
pushd fftw3
|
||||||
|
fftw3_ver="3.3.10"
|
||||||
|
fftw3_link="https://fftw.org/fftw-${fftw3_ver}.tar.gz"
|
||||||
|
wget ${fftw3_link} -O fftw3.tar.gz
|
||||||
|
tar xaf fftw3.tar.gz
|
||||||
|
pushd fftw-${fftw3_ver}
|
||||||
|
./configure \
|
||||||
|
--prefix=${FF_DEPS_PREFIX} \
|
||||||
|
--host=${FF_TOOLCHAIN} \
|
||||||
|
--disable-{shared,doc} \
|
||||||
|
--enable-{static,threads,fortran} \
|
||||||
|
--enable-{sse2,avx,avx-128-fma,avx2,avx512} \
|
||||||
|
--with-our-malloc \
|
||||||
|
--with-combined-threads \
|
||||||
|
--with-incoming-stack-boundary=2
|
||||||
|
make -j$(nproc)
|
||||||
|
make install
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
|
||||||
|
# CHROMAPRINT
|
||||||
|
git clone --depth=1 https://github.com/acoustid/chromaprint.git
|
||||||
|
pushd chromaprint
|
||||||
|
mkdir build
|
||||||
|
pushd build
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=${FF_CMAKE_TOOLCHAIN} \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=${FF_DEPS_PREFIX} \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DBUILD_SHARED_LIBS=OFF \
|
||||||
|
-DBUILD_{TOOLS,TESTS}=OFF \
|
||||||
|
-DFFT_LIB=fftw3 \
|
||||||
|
..
|
||||||
|
make -j$(nproc)
|
||||||
|
make install
|
||||||
|
FF_EXTRA_LIBS="-lfftw3 -lstdc++${FF_EXTRA_LIBS}"
|
||||||
|
FF_EXTRA_CFLAGS="-DCHROMAPRINT_NODLL${FF_EXTRA_CFLAGS}"
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
|
||||||
# LZMA
|
# LZMA
|
||||||
mkdir xz
|
mkdir xz
|
||||||
pushd xz
|
pushd xz
|
||||||
@@ -508,6 +550,8 @@ fi
|
|||||||
./configure \
|
./configure \
|
||||||
--prefix=${FF_PREFIX} \
|
--prefix=${FF_PREFIX} \
|
||||||
${FF_TARGET_FLAGS} \
|
${FF_TARGET_FLAGS} \
|
||||||
|
--extra-libs="${FF_EXTRA_LIBS}" \
|
||||||
|
--extra-cflags="${FF_EXTRA_CFLAGS}" \
|
||||||
--extra-version=Jellyfin \
|
--extra-version=Jellyfin \
|
||||||
--disable-ffplay \
|
--disable-ffplay \
|
||||||
--disable-debug \
|
--disable-debug \
|
||||||
@@ -526,6 +570,7 @@ fi
|
|||||||
--enable-zlib \
|
--enable-zlib \
|
||||||
--enable-lzma \
|
--enable-lzma \
|
||||||
--enable-gmp \
|
--enable-gmp \
|
||||||
|
--enable-chromaprint \
|
||||||
--enable-libfreetype \
|
--enable-libfreetype \
|
||||||
--enable-libfribidi \
|
--enable-libfribidi \
|
||||||
--enable-libfontconfig \
|
--enable-libfontconfig \
|
||||||
|
|||||||
+88
-42
@@ -10,21 +10,77 @@ PORTS_ADDR=http://ports.ubuntu.com/
|
|||||||
|
|
||||||
# Prepare common extra libs for amd64, armhf and arm64
|
# Prepare common extra libs for amd64, armhf and arm64
|
||||||
prepare_extra_common() {
|
prepare_extra_common() {
|
||||||
|
case ${ARCH} in
|
||||||
|
'amd64')
|
||||||
|
CROSS_OPT=""
|
||||||
|
CMAKE_TOOLCHAIN_OPT=""
|
||||||
|
MESON_CROSS_OPT=""
|
||||||
|
;;
|
||||||
|
'armhf')
|
||||||
|
CROSS_OPT="--host=armv7-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++"
|
||||||
|
CMAKE_TOOLCHAIN_OPT="-DCMAKE_TOOLCHAIN_FILE=${SOURCE_DIR}/toolchain-${ARCH}.cmake"
|
||||||
|
MESON_CROSS_OPT="--cross-file=${SOURCE_DIR}/cross-${ARCH}.meson"
|
||||||
|
;;
|
||||||
|
'arm64')
|
||||||
|
CROSS_OPT="--host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++"
|
||||||
|
CMAKE_TOOLCHAIN_OPT="-DCMAKE_TOOLCHAIN_FILE=${SOURCE_DIR}/toolchain-${ARCH}.cmake"
|
||||||
|
MESON_CROSS_OPT="--cross-file=${SOURCE_DIR}/cross-${ARCH}.meson"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# FFTW3
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
mkdir fftw3
|
||||||
|
pushd fftw3
|
||||||
|
fftw3_ver="3.3.10"
|
||||||
|
fftw3_link="https://fftw.org/fftw-${fftw3_ver}.tar.gz"
|
||||||
|
wget ${fftw3_link} -O fftw3.tar.gz
|
||||||
|
tar xaf fftw3.tar.gz
|
||||||
|
pushd fftw-${fftw3_ver}
|
||||||
|
if [ "${ARCH}" = "amd64" ]; then
|
||||||
|
fftw3_optimizations="--enable-sse2 --enable-avx --enable-avx-128-fma --enable-avx2 --enable-avx512"
|
||||||
|
else
|
||||||
|
fftw3_optimizations=""
|
||||||
|
fi
|
||||||
|
./configure \
|
||||||
|
${CROSS_OPT} \
|
||||||
|
--prefix=${TARGET_DIR} \
|
||||||
|
--disable-{static,doc} \
|
||||||
|
--enable-{shared,threads,fortran} \
|
||||||
|
$fftw3_optimizations \
|
||||||
|
--with-our-malloc \
|
||||||
|
--with-combined-threads \
|
||||||
|
--with-incoming-stack-boundary=2
|
||||||
|
make -j$(nproc) && make install && make install DESTDIR=${SOURCE_DIR}/fftw3
|
||||||
|
echo "fftw3${TARGET_DIR}/lib/libfftw3.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
|
||||||
|
# CHROMAPRINT
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
git clone --depth=1 https://github.com/acoustid/chromaprint.git
|
||||||
|
pushd chromaprint
|
||||||
|
mkdir build
|
||||||
|
pushd build
|
||||||
|
cmake \
|
||||||
|
${CMAKE_TOOLCHAIN_OPT} \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=${TARGET_DIR} \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DBUILD_SHARED_LIBS=ON \
|
||||||
|
-DBUILD_{TOOLS,TESTS}=OFF \
|
||||||
|
-DFFT_LIB=fftw3 \
|
||||||
|
..
|
||||||
|
make -j$(nproc) && make install && make install DESTDIR=${SOURCE_DIR}/chromaprint
|
||||||
|
echo "chromaprint${TARGET_DIR}/lib/libchromaprint.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
|
||||||
# ZIMG
|
# ZIMG
|
||||||
pushd ${SOURCE_DIR}
|
pushd ${SOURCE_DIR}
|
||||||
git clone --depth=1 https://github.com/sekrit-twc/zimg
|
git clone --depth=1 https://github.com/sekrit-twc/zimg
|
||||||
pushd zimg
|
pushd zimg
|
||||||
case ${ARCH} in
|
|
||||||
'amd64')
|
|
||||||
CROSS_OPT=""
|
|
||||||
;;
|
|
||||||
'armhf')
|
|
||||||
CROSS_OPT="--host=armv7-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++"
|
|
||||||
;;
|
|
||||||
'arm64')
|
|
||||||
CROSS_OPT="--host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
./configure --prefix=${TARGET_DIR} ${CROSS_OPT}
|
./configure --prefix=${TARGET_DIR} ${CROSS_OPT}
|
||||||
make -j $(nproc) && make install && make install DESTDIR=${SOURCE_DIR}/zimg
|
make -j $(nproc) && make install && make install DESTDIR=${SOURCE_DIR}/zimg
|
||||||
@@ -35,39 +91,29 @@ prepare_extra_common() {
|
|||||||
# DAV1D
|
# DAV1D
|
||||||
pushd ${SOURCE_DIR}
|
pushd ${SOURCE_DIR}
|
||||||
git clone -b 1.0.0 --depth=1 https://code.videolan.org/videolan/dav1d.git
|
git clone -b 1.0.0 --depth=1 https://code.videolan.org/videolan/dav1d.git
|
||||||
nasmver="$(nasm -v | cut -d ' ' -f3)"
|
|
||||||
nasmminver="2.14.0"
|
|
||||||
if [ "$(printf '%s\n' "$nasmminver" "$nasmver" | sort -V | head -n1)" = "$nasmminver" ]; then
|
|
||||||
x86asm=true
|
|
||||||
else
|
|
||||||
x86asm=false
|
|
||||||
fi
|
|
||||||
if [ "${ARCH}" = "amd64" ]; then
|
if [ "${ARCH}" = "amd64" ]; then
|
||||||
meson setup dav1d dav1d_build \
|
nasmver="$(nasm -v | cut -d ' ' -f3)"
|
||||||
--prefix=${TARGET_DIR} \
|
nasmminver="2.14.0"
|
||||||
--libdir=lib \
|
if [ "$(printf '%s\n' "$nasmminver" "$nasmver" | sort -V | head -n1)" = "$nasmminver" ]; then
|
||||||
-Ddefault_library=shared \
|
dav1d_asm=true
|
||||||
-Denable_asm=$x86asm \
|
else
|
||||||
-Denable_{tools,tests,examples}=false
|
dav1d_asm=false
|
||||||
meson configure dav1d_build
|
fi
|
||||||
ninja -C dav1d_build install
|
else
|
||||||
cp ${TARGET_DIR}/lib/libdav1d.so* ${SOURCE_DIR}/dav1d
|
dav1d_asm=true
|
||||||
echo "dav1d/libdav1d.so* /usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
|
||||||
fi
|
|
||||||
if [ "${ARCH}" = "armhf" ] || [ "${ARCH}" = "arm64" ]; then
|
|
||||||
meson setup dav1d dav1d_build \
|
|
||||||
--cross-file=${SOURCE_DIR}/cross-${ARCH}.meson \
|
|
||||||
--prefix=${TARGET_DIR} \
|
|
||||||
--libdir=lib \
|
|
||||||
--buildtype=release \
|
|
||||||
-Ddefault_library=shared \
|
|
||||||
-Denable_asm=true \
|
|
||||||
-Denable_{tools,tests,examples}=false
|
|
||||||
meson configure dav1d_build
|
|
||||||
ninja -C dav1d_build install
|
|
||||||
cp ${TARGET_DIR}/lib/libdav1d.so* ${SOURCE_DIR}/dav1d
|
|
||||||
echo "dav1d/libdav1d.so* /usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
|
||||||
fi
|
fi
|
||||||
|
meson setup dav1d dav1d_build \
|
||||||
|
${MESON_CROSS_OPT} \
|
||||||
|
--prefix=${TARGET_DIR} \
|
||||||
|
--libdir=lib \
|
||||||
|
--buildtype=release \
|
||||||
|
-Ddefault_library=shared \
|
||||||
|
-Denable_asm=$dav1d_asm \
|
||||||
|
-Denable_{tools,tests,examples}=false
|
||||||
|
meson configure dav1d_build
|
||||||
|
ninja -C dav1d_build install
|
||||||
|
cp ${TARGET_DIR}/lib/libdav1d.so* ${SOURCE_DIR}/dav1d
|
||||||
|
echo "dav1d/libdav1d.so* /usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
||||||
popd
|
popd
|
||||||
|
|
||||||
# FDK-AAC-STRIPPED
|
# FDK-AAC-STRIPPED
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
set(CMAKE_SYSTEM_NAME Linux)
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
|
||||||
|
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
|
||||||
|
set(CMAKE_RANLIB aarch64-linux-gnu-ranlib)
|
||||||
|
set(CMAKE_AR aarch64-linux-gnu-ar)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_ROOT_PATH /usr/bin /usr/lib/jellyfin-ffmpeg /usr/aarch64-linux-gnu)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
set(CMAKE_SYSTEM_NAME Linux)
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR armv7)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
|
||||||
|
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
|
||||||
|
set(CMAKE_RANLIB arm-linux-gnueabihf-ranlib)
|
||||||
|
set(CMAKE_AR arm-linux-gnueabihf-ar)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_ROOT_PATH /usr/bin /usr/lib/jellyfin-ffmpeg /usr/arm-linux-gnueabihf)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||||
Reference in New Issue
Block a user