commit b1d8e8c9a928c4e96aefe7638e830f7ddf43bec6
Author: david.sorber <david.sorber@gmail.com>
Date:   Sun Sep 7 18:42:35 2025 -0400

    Updated build_ffmpeg.sh to build latest version (8.0).

diff --git a/software/misc/build_ffmpeg.sh b/software/misc/build_ffmpeg.sh
index ddc72c7..90e2767 100755
--- a/software/misc/build_ffmpeg.sh
+++ b/software/misc/build_ffmpeg.sh
@@ -1,170 +1,397 @@
 #!/bin/bash
-#
-# 20181218 -- Build static version of ffmpeg, basically a script that automates
-# these instructions: https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
-#
 
+###############################################################################
+# FFmpeg Build Script                                                         #
+#                                                                             #
+# This script is based on instructions here:                                  #
+#   https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu                      #
+#                                                                             #
+# NOTE: The script is designed to build shared libraries instead of static    #
+#       ones as the original instructions did.                                #
+#                                                                             #
+###############################################################################
 
-SOURCES_DIR="/home/dsorber/Downloads/ffmpeg/sources"
-BUILD_DIR="/home/dsorber/Downloads/ffmpeg/build"
-BIN_DIR="/home/dsorber/Downloads/ffmpeg/bin"
-FFMPEG_VERSION="4.1" # <--- set this to latest version
+# Helper function to pause between each step
+function pause {
+  echo "Press any key to continue"
+  #~ read -n 1
+  echo
+  echo
+}
+
+# Use aggressive compiler flags (not sure these flags really matter these days...)
+export CFLAGS="-O3 -march=native -mtune=native" 
+export CXXFLAGS=$CFLAGS
 
 NUM_CORES=$(cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l)
 
-# CLEAN: rm -rf bin/ build sources/
-
-echo "Installing prereqs..."
-sudo apt -y install \
-  autoconf \
-  automake \
-  build-essential \
-  cmake \
-  git-core \
-  libass-dev \
-  libfreetype6-dev \
-  libnuma-dev \
-  libsdl2-dev \
-  libtool \
-  libva-dev \
-  libvdpau-dev \
-  libvorbis-dev \
-  libxcb1-dev \
-  libxcb-shm0-dev \
-  libxcb-xfixes0-dev \
-  mercurial \
-  pkg-config \
-  texinfo \
-  wget \
-  zlib1g-dev
+# Setup directories - modify as needed
+DATESTAMP=$(date +%Y%m%d-%H%M%S)
+SOURCES_DIR="/tmp/ffmpeg-${DATESTAMP}/"
+INSTALL_DIR="/opt/local"
+BIN_DIR="$INSTALL_DIR/bin"
+
+
+# Set to a string containing the version you wish to install
+FFMPEG_VERSION="8.0"
+
+echo -e "BlackLynx FFmpeg Build Script\n"
+
+if [[ $EUID -ne 0 ]]; then
+   echo -e "ERROR: This script must be run as root\n"
+   exit 1
+fi
+
+echo -e "Sources directory: ${SOURCES_DIR}"
+echo -e "Install directory: ${INSTALL_DIR}"
+echo -e "FFmpeg version: ${FFMPEG_VERSION}\n\n"
+
+
+# Determine which OS the script is running on
+DISTRIB_ID="$(lsb_release -is)"
+
+# Install prereqs depending on OS version
+if [[ "$DISTRIB_ID" == "RedHatEnterpriseServer" || 
+      "$DISTRIB_ID" == "CentOS" ]]; then
+  echo -e "\nRedHat/CentOS detected\n\n";
+  sudo yum -y install \
+    autoconf \
+    automake \
+    cmake3 \
+    git \
+    libass-devel \
+    freetype-devel \
+    libnuma \
+    SDL2-devel \
+    libtool \
+    libva-devel \
+    libvdpau-devel \
+    libvorbis-devel \
+    libxcb-devel \
+    mercurial \
+    pkgconfig \
+    texinfo \
+    wget \
+    zlib-devel
+  CMAKE_CMD="cmake3"
+  LIB_DIR_NAME="lib64"
+  LIB_DIR="$INSTALL_DIR/$LIB_DIR_NAME"
   
-mkdir -p $SOURCES_DIR $BUILD_DIR $BIN_DIR
+elif [[ "$DISTRIB_ID" == "Ubuntu" ||
+        "$DISTRIB_ID" == "Linuxmint" ]]; then
+  echo -e "\nUbuntu detected\n\n";
+  echo "Installing prereqs..."
+  sudo apt -y install \
+    autoconf \
+    automake \
+    build-essential \
+    cmake \
+    git-core \
+    libass-dev \
+    libfreetype6-dev \
+    libgnutls28-dev \
+    libmp3lame-dev \
+    libsdl2-dev \
+    libtool \
+    libva-dev \
+    libvdpau-dev \
+    libvorbis-dev \
+    libxcb1-dev \
+    libxcb-shm0-dev \
+    libxcb-xfixes0-dev \
+    meson \
+    ninja-build \
+    pkg-config \
+    texinfo \
+    wget \
+    yasm \
+    zlib1g-dev \
+    nasm \
+    libx264-dev \
+    libx265-dev \
+    libnuma-dev \
+    libvpx-dev \
+    libfdk-aac-dev \
+    libopus-dev \
+    openssl \
+    libssl-dev \
+    frei0r-plugins-dev \
+    libchromaprint-dev \
+    libgme-dev \
+    flite1-dev \
+    libcaca-dev \
+    libbs2b-dev \
+    libopenjp2-7-dev \
+    libopencore-amrnb-dev \
+    librubberband-dev \
+    libopenmpt-dev \
+    libshine-dev \
+    libsnappy-dev \
+    libsoxr-dev \
+    libspeex-dev \
+    libtheora-dev \
+    libtwolame-dev \
+    libv4l-dev \
+    libvidstab-dev \
+    libvo-amrwbenc-dev \
+    libxvidcore-dev \
+    liblzma-dev \
+    libbluray-dev \
+    libcdparanoia-dev \
+    libcdio-dev \
+    libcdio-paranoia-dev \
+    ladspa-sdk \
+    libgsm1-dev \
+    libvpl2 \
+    libwebp-dev \
+    libzimg-dev \
+    libzvbi-dev
+  CMAKE_CMD="cmake"
+  LIB_DIR_NAME="lib"
+  LIB_DIR="$INSTALL_DIR/$LIB_DIR_NAME"
   
-echo
-echo
+fi
 
-echo "Building NASM"
-cd $SOURCES_DIR && \
-wget https://www.nasm.us/pub/nasm/releasebuilds/2.14/nasm-2.14.tar.bz2 && \
-tar xjvf nasm-2.14.tar.bz2 && \
-cd nasm-2.14 && \
-./autogen.sh && \
-PATH="$BIN_DIR:$PATH" ./configure --prefix="$BUILD_DIR" --bindir="$BIN_DIR" && \
-make -j$NUM_CORES && \
-make install
+mkdir -p $SOURCES_DIR $INSTALL_DIR $BIN_DIR $LIB_DIR
+  
 echo
 echo
 
-echo "Building Yasm"
-cd $SOURCES_DIR && \
-wget -O yasm-1.3.0.tar.gz https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz && \
-tar xzvf yasm-1.3.0.tar.gz && \
-cd yasm-1.3.0 && \
-./configure --prefix="$BUILD_DIR" --bindir="$BIN_DIR" && \
-make -j$NUM_CORES && \
-make install
-echo
-echo
+#~ echo "Building NASM"
+#~ cd $SOURCES_DIR && \
+#~ wget https://www.nasm.us/pub/nasm/releasebuilds/2.14/nasm-2.14.tar.bz2 && \
+#~ tar xjvf nasm-2.14.tar.bz2 && \
+#~ cd nasm-2.14 && \
+#~ ./autogen.sh && \
+#~ PATH="$BIN_DIR:$PATH" ./configure --prefix="$INSTALL_DIR" --libdir="$LIB_DIR" && \
+#~ make -j$NUM_CORES && \
+#~ sudo make install
+#~ echo
+#~ echo
 
-echo "Building libx264"
-cd $SOURCES_DIR && \
-git -C x264 pull 2> /dev/null || git clone --depth 1 https://git.videolan.org/git/x264 && \
-cd x264 && \
-PATH="$BIN_DIR:$PATH" PKG_CONFIG_PATH="$BUILD_DIR/lib/pkgconfig" ./configure --prefix="$BUILD_DIR" \
---bindir="$BIN_DIR" --enable-static --enable-pic && \
-PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
-make install
-echo
-echo
+#~ echo "Building Yasm"
+#~ cd $SOURCES_DIR && \
+#~ wget -O yasm-1.3.0.tar.gz https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz && \
+#~ tar xzvf yasm-1.3.0.tar.gz && \
+#~ cd yasm-1.3.0 && \
+#~ ./configure --prefix="$INSTALL_DIR" --libdir="$LIB_DIR" --disable-static && \
+#~ make -j$NUM_CORES && \
+#~ sudo make install
+#~ echo
+#~ echo
+
+#~ echo "Building libx264"
+#~ cd $SOURCES_DIR && \
+#~ git -C x264 pull 2> /dev/null || git clone --depth 1 https://git.videolan.org/git/x264 && \
+#~ cd x264 && \
+#~ PATH="$BIN_DIR:$PATH" PKG_CONFIG_PATH="$LIB_DIR/pkgconfig" ./configure --prefix="$INSTALL_DIR" \
+#~ --libdir="$LIB_DIR" --enable-shared --enable-pic \
+#~ --extra-ldflags="-Wl,-rpath=$LIB_DIR,--enable-new-dtags" && \
+#~ PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && sudo make install
+#~ echo
+#~ echo
+
+#~ echo "Building libx265"
+#~ cd $SOURCES_DIR && \
+#~ if cd x265 2> /dev/null; then hg pull && hg update; else hg clone https://bitbucket.org/multicoreware/x265; fi && \
+#~ cd x265/build/linux && \
+#~ PATH="$BIN_DIR:$PATH" $CMAKE_CMD -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
+#~ -DLIB_INSTALL_DIR="$LIB_DIR_NAME" \
+#~ -DCMAKE_EXE_LINKER_FLAGS="-Wl,-rpath=$LIB_DIR,--enable-new-dtags" ../../source && \
+#~ PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
+#~ sudo make install
+#~ # NOTE: There does not appear to be a way to disable building of static lib;
+#~ #       instead we remove it after the fact
+#~ rm $LIB_DIR/libx265.a
+#~ echo
+#~ echo
+
+#~ echo "Building libvpx"
+#~ cd $SOURCES_DIR && \
+#~ git -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && \
+#~ cd libvpx && \
+#~ PATH="$BIN_DIR:$PATH" ./configure --prefix="$INSTALL_DIR" --libdir="$LIB_DIR" --disable-examples \
+#~ --disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-shared --disable-static && \
+#~ PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
+#~ sudo make install
+#~ echo
+#~ echo
 
-echo "Buildxing libx265"
+#~ echo "Building libfdk-aac"
+#~ cd $SOURCES_DIR && \
+#~ git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \
+#~ cd fdk-aac && \
+#~ autoreconf -fiv && \
+#~ ./configure --prefix="$INSTALL_DIR" --libdir="$LIB_DIR" --disable-static && \
+#~ make -j$NUM_CORES && \
+#~ sudo make install
+#~ echo
+#~ echo
+
+#~ echo "Building libmp3lame"
+#~ cd $SOURCES_DIR && \
+#~ wget -O lame-3.100.tar.gz https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz && \
+#~ tar xzvf lame-3.100.tar.gz && \
+#~ cd lame-3.100 && \
+#~ PATH="$BIN_DIR:$PATH" ./configure --prefix="$INSTALL_DIR" --libdir="$LIB_DIR" --disable-static && \
+#~ PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
+#~ sudo make install
+#~ echo
+#~ echo
+
+#~ echo "Building libopus"
+#~ cd $SOURCES_DIR && \
+#~ git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \
+#~ cd opus && \
+#~ ./autogen.sh && \
+#~ ./configure --prefix="$INSTALL_DIR" --libdir="$LIB_DIR" --disable-static && \
+#~ make -j$NUM_CORES && \
+#~ sudo make install
+#~ echo
+#~ echo
+
+echo "Building libaom"
 cd $SOURCES_DIR && \
-if cd x265 2> /dev/null; then hg pull && hg update; else hg clone https://bitbucket.org/multicoreware/x265; fi && \
-cd x265/build/linux && \
-PATH="$BIN_DIR:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$BUILD_DIR" -DENABLE_SHARED=off ../../source && \
+git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && \
+mkdir aom_build && \
+cd aom_build && \
+PATH="$BIN_DIR:$PATH" $CMAKE_CMD -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
+-DCMAKE_EXE_LINKER_FLAGS="-Wl,-rpath=$LIB_DIR,--enable-new-dtags" \
+-DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DENABLE_NASM=ON ../aom && \
 PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
-make install
+sudo make install
 echo
 echo
+pause
+
 
-echo "Building libvpx"
+echo "Building libsvtav1"
 cd $SOURCES_DIR && \
-git -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && \
-cd libvpx && \
-PATH="$BIN_DIR:$PATH" ./configure --prefix="$BUILD_DIR" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm && \
+# Temporarily use version 2.0.3 instead of latest: https://forums.linuxmint.com/viewtopic.php?t=435381
+#~ git -C SVT-AV1 pull 2> /dev/null || git clone https://gitlab.com/AOMediaCodec/SVT-AV1.git && \
+wget https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v2.3.0/SVT-AV1-v2.3.0.tar.gz && \
+tar xzvf SVT-AV1-v2.3.0.tar.gz && mv SVT-AV1-v2.3.0 SVT-AV1 && /
+mkdir -p SVT-AV1/build && \
+cd SVT-AV1/build && \
+PATH="$BIN_DIR:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
+-DCMAKE_BUILD_TYPE=Release -DBUILD_DEC=OFF -DBUILD_SHARED_LIBS=ON .. && \
 PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
-make install
+sudo make install
 echo
 echo
+pause
 
-echo "Building libfdk-aac"
+echo "Building libdav1d"
 cd $SOURCES_DIR && \
-git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \
-cd fdk-aac && \
-autoreconf -fiv && \
-./configure --prefix="$BUILD_DIR" --disable-shared && \
-make -j$NUM_CORES && \
-make install
+git -C dav1d pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/dav1d.git && \
+mkdir -p dav1d/build && \
+cd dav1d/build && \
+PATH="$BIN_DIR:$PATH" meson setup -Denable_tools=false -Denable_tests=false --default-library=shared .. \
+--prefix "$INSTALL_DIR" --libdir="$LIB_DIR" && \
+ninja && \
+sudo ninja install
 echo
 echo
+pause
 
-echo "Building libmp3lame"
-cd $SOURCES_DIR && \
-wget -O lame-3.100.tar.gz https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz && \
-tar xzvf lame-3.100.tar.gz && \
-cd lame-3.100 && \
-PATH="$BIN_DIR:$PATH" ./configure --prefix="$BUILD_DIR" --bindir="$BIN_DIR" --disable-shared --enable-nasm && \
-PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
-make install
+echo "Building libvmaf"
+cd $SOURCES_DIR &&
+git clone 'https://github.com/Netflix/vmaf' 'vmaf-master' &&
+mkdir -p 'vmaf-master/libvmaf/build' &&
+cd 'vmaf-master/libvmaf/build' &&
+meson setup -Denable_tests=false -Denable_docs=false --buildtype=release --default-library=shared '../' \
+--prefix "$INSTALL_DIR" --bindir="$BIN_DIR" --libdir="$LIB_DIR" &&
+ninja &&
+sudo ninja install
 echo
 echo
+pause
 
-echo "Building libopus"
-cd $SOURCES_DIR && \
-git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \
-cd opus && \
-./autogen.sh && \
-./configure --prefix="$BUILD_DIR" --disable-shared && \
-make -j$NUM_CORES && \
-make install
+echo "Building VVenC (H.266/VVC)"
+cd $SOURCES_DIR && 
+git -C vvenc pull 2> /dev/null || git clone --depth 1 https://github.com/fraunhoferhhi/vvenc && 
+cd vvenc && 
+PATH="$BIN_DIR:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON && 
+PATH="$BIN_DIR:$PATH" make -j$(NUM_CORES) && 
+sudo make -j$(NUM_CORES) install
 echo
 echo
+pause
 
-echo "Building libaom"
-cd $SOURCES_DIR && \
-git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && \
-mkdir aom_build && \
-cd aom_build && \
-PATH="$BIN_DIR:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$BUILD_DIR" -DENABLE_SHARED=off -DENABLE_NASM=on ../aom && \
-PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
-make install
-echo
-echo
 
 echo "Building ffmpeg"
 cd $SOURCES_DIR && \
 wget -O ffmpeg-$FFMPEG_VERSION.tar.bz2 https://ffmpeg.org/releases/ffmpeg-$FFMPEG_VERSION.tar.bz2 && \
 tar xjvf ffmpeg-$FFMPEG_VERSION.tar.bz2 && \
 cd ffmpeg-$FFMPEG_VERSION && \
-PATH="$BIN_DIR:$PATH" PKG_CONFIG_PATH="$BUILD_DIR/lib/pkgconfig" ./configure \
-  --prefix="$BUILD_DIR" \
-  --pkg-config-flags="--static" \
-  --extra-cflags="-I$BUILD_DIR/include" \
-  --extra-ldflags="-L$BUILD_DIR/lib" \
+PATH="$BIN_DIR:$PATH" PKG_CONFIG_PATH="$INSTALL_DIR/lib/pkgconfig:$INSTALL_DIR/lib64/pkgconfig" ./configure \
+  --enable-shared \
+  --disable-static \
+  --prefix="$INSTALL_DIR" \
+  --libdir="$LIB_DIR" \
+  --enable-pic \
+  --extra-cflags="-I$INSTALL_DIR/include" \
+  --extra-ldflags="-L$LIB_DIR -Wl,-rpath=$LIB_DIR,--enable-new-dtags" \
   --extra-libs="-lpthread -lm" \
-  --bindir="$BIN_DIR" \
+  --enable-chromaprint \
+  --enable-frei0r \
   --enable-gpl \
+  --enable-ladspa \
   --enable-libaom \
   --enable-libass \
+  --enable-libbluray \
+  --enable-libbs2b \
+  --enable-libcaca \
+  --enable-libcdio \
   --enable-libfdk-aac \
+  --enable-libflite \
+  --enable-libfontconfig \
   --enable-libfreetype \
+  --enable-libfribidi \
+  --enable-libgme  \
+  --enable-libmp3lame \
+  --enable-libopenmpt \
   --enable-libmp3lame \
   --enable-libopus \
+  --enable-libpulse \
+  --enable-librubberband \
+  --enable-libshine \
+  --enable-libsnappy \
+  --enable-libsoxr \
+  --enable-libspeex \
+  --enable-libsvtav1 \
+  --enable-libtheora \
+  --enable-libtwolame \
+  --enable-libvidstab \
+  --enable-libdav1d \
+  --enable-libvmaf \
+  --enable-libvo-amrwbenc \
   --enable-libvorbis \
   --enable-libvpx \
   --enable-libx264 \
   --enable-libx265 \
+  --enable-libxml2 \
+  --enable-libxvid \
+  --enable-nonfree \
+  --enable-opengl \
+  --enable-openssl \
+  --enable-version3 \
+  --enable-librubberband \
+  --enable-libharfbuzz \
+  --enable-libwebp \
+  --enable-libzimg \
+  --enable-libzvbi \
+  --enable-libgsm \
+  --enable-libvvenc \
+  --enable-vaapi \
   --enable-nonfree && \
 PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
-make install && \
+sudo make install && \
 hash -r
+
+
+#~ if [ ! -f /etc/ld.so.conf.d/opt_local.conf ]; then
+    #~ echo "Adding /opt/local/lib path to ld cache"
+    #~ sudo bash -c 'echo "/opt/local/lib" >  /etc/ld.so.conf.d/opt_local.conf'
+    #~ sudo ldconfig
+#~ fi
