Skip to content

upipe-av: fix compilation with ffmpeg 5 #1072

upipe-av: fix compilation with ffmpeg 5

upipe-av: fix compilation with ffmpeg 5 #1072

Workflow file for this run

name: Test suite
on: [push, pull_request]
jobs:
ci:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
env:
MAKEFLAGS: -j4
strategy:
fail-fast: false
matrix:
include:
- name: ubuntu-amd64-gcc-14
os: ubuntu-24.04
arch: amd64
compiler: gcc
version: 14
- name: ubuntu-amd64-gcc-14-static
os: ubuntu-24.04
arch: amd64
compiler: gcc
version: 14
static: true
- name: ubuntu-amd64-clang-18
os: ubuntu-24.04
arch: amd64
compiler: clang
version: 18
# - name: ubuntu-i386-gcc-12
# os: ubuntu-22.04
# arch: i386
# host: i686-linux-gnu
# compiler: gcc
# version: 12
- name: ubuntu-armhf-gcc-14
os: ubuntu-24.04
arch: armhf
host: arm-linux-gnueabihf
compiler: gcc
version: 14
- name: ubuntu-arm64-gcc-14
os: ubuntu-24.04
arch: arm64
host: aarch64-linux-gnu
compiler: gcc
version: 14
- name: macos-13-amd64-xcode
os: macos-13
compiler: xcode
- name: macos-14-arm64-xcode
os: macos-14
compiler: xcode
luajit: false
steps:
- name: Set up env
run: |
echo "echo \"\$1=\$2\" >> \$GITHUB_ENV" | sudo tee /usr/local/bin/set-env >/dev/null
sudo chmod +x /usr/local/bin/set-env
- name: Checkout
uses: actions/checkout@v4
- name: Install compiler (gcc)
if: runner.os == 'Linux' && matrix.compiler == 'gcc'
run: |
if [ "${{ matrix.arch }}" != "amd64" ]; then
sudo dpkg --add-architecture ${{ matrix.arch }}
sudo sed '/^Signed-By:/a Architectures: amd64' -i /etc/apt/sources.list.d/*.sources
sudo add-apt-repository -n -y -S "deb http://ports.ubuntu.com $(lsb_release -sc) main universe"
sudo add-apt-repository -n -y -S "deb http://ports.ubuntu.com $(lsb_release -sc)-updates main universe"
sudo add-apt-repository -n -y -S "deb http://ports.ubuntu.com $(lsb_release -sc)-security main universe"
sudo sed 's/^deb /deb [arch=arm64,armhf] /' -i /etc/apt/sources.list.d/archive_uri-http_ports_ubuntu_com-*.list
fi
sudo apt-get update
CC=gcc
CXX=g++
PKG=g++
if [ -n "${{ matrix.version }}" ]; then
CC=$CC-${{ matrix.version }}
CXX=$CXX-${{ matrix.version }}
PKG=$PKG-${{ matrix.version }}
fi
if [ -n "${{ matrix.host }}" ]; then
CC=${{ matrix.host }}-$CC
CXX=${{ matrix.host }}-$CXX
PKG=$PKG-${{ matrix.host }}
fi
sudo apt-get install $PKG
set-env HOST_CC "$CC"
set-env HOST_CXX "$CXX"
if [ "${{ matrix.arch }}" = "i386" ]; then
set-env CFLAGS "-msse2 -mfpmath=sse"
fi
if [ -n "${{ matrix.host }}" ]; then
set-env HOST "--host=${{ matrix.host }}"
fi
if [ "${{ matrix.sanitizer }}" = "true" ]; then
SAN="-fsanitize=undefined -fsanitize=address,pointer-compare,pointer-subtract"
set-env CFLAGS "$SAN"
set-env CXXFLAGS "$SAN"
set-env LDFLAGS "$SAN"
set-env UBSAN_OPTIONS "print_stacktrace=1"
fi
- name: Install compiler (clang)
if: runner.os == 'Linux' && matrix.compiler == 'clang'
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo add-apt-repository -y "deb http://apt.llvm.org/$(lsb_release -sc)/ llvm-toolchain-$(lsb_release -sc)-${{ matrix.version }} main"
sudo apt-get update
sudo apt-get install clang-${{ matrix.version }}
set-env HOST_CC "clang-${{ matrix.version }}"
set-env HOST_CXX "clang++-${{ matrix.version }}"
set-env CXXFLAGS "-Wno-error=vla-cxx-extension"
- name: Install dependencies (Linux)
if: runner.os == 'Linux'
env:
LIBS: >
ev asound2 x264 x265 speexdsp png freetype6 zvbi gcrypt tasn1 dvbv5
udev avcodec avformat swresample swscale gl1-mesa glu1-mesa
srt-gnutls gnutls28 ssl
LIBS_FULL: ebur128 dvbcsa
run: |
if [ "${{ matrix.arch }}" != "i386" ]; then
LIBS="$LIBS $LIBS_FULL"
fi
if [ "${{ matrix.arch }}" != "amd64" ]; then
sudo apt-get install qemu-user-binfmt
fi
sudo apt-get install valgrind nasm elfutils \
$(printf '%s:${{ matrix.arch }} ' libc6-dbg luajit) \
$(printf 'lib%s-dev:${{ matrix.arch }} ' $LIBS)
if [ -n "${{ matrix.host }}" ]; then
set-env DISABLE_VALGRIND "1"
fi
- name: Install dependencies (macOS)
if: runner.os == 'macOS'
run: |
# temporary fix for https://github.com/actions/setup-python/issues/577
rm -f /usr/local/bin/2to3*
rm -f /usr/local/bin/idle3*
rm -f /usr/local/bin/pydoc3*
rm -f /usr/local/bin/python3*
brew install autoconf automake libtool pkg-config nasm ffmpeg \
freetype libebur128 libev libgcrypt libtasn1 speex x264 x265 luajit
BREW_PREFIX="$(brew --prefix)"
set-env HOST_CC "clang"
set-env HOST_CXX "clang++"
set-env CFLAGS "-Wno-error=deprecated-declarations -fsanitize=undefined -fsanitize=address -fsanitize-address-use-after-scope -fsanitize-recover=all -fno-omit-frame-pointer -fno-optimize-sibling-calls -I$BREW_PREFIX/include"
set-env LDFLAGS "-fsanitize=undefined -fsanitize=address -L$BREW_PREFIX/lib"
set-env DISABLE_VALGRIND "1"
set-env INSERT_LIBRARIES "$(clang -print-search-dirs | sed -n 's/^libraries: =//p')/lib/darwin/libclang_rt.asan_osx_dynamic.dylib"
set-env UBSAN_OPTIONS "print_stacktrace=1"
- name: Install bitstream
run: |
git clone --depth 1 https://code.videolan.org/videolan/bitstream.git
make -C bitstream install PREFIX="$PWD/usr-bitstream"
set-env PKG_CONFIG_PATH "$PKG_CONFIG_PATH:$PWD/usr-bitstream/share/pkgconfig"
- name: Build and install libamt
if: runner.os == 'Linux' && (matrix.arch == 'amd64' || matrix.arch == 'i386')
run: |
if [ "${{ matrix.arch }}" = "i386" ]; then
LIBAMT_PLATFORM="PLATFORM32=1"
fi
git clone --depth 1 https://github.com/cisco/SSMAMTtools.git
make -C SSMAMTtools/build/linux \
CC="$HOST_CC -fPIC" \
TARGET=libamt.a \
WFLAGS=-Wno-int-conversion \
$LIBAMT_PLATFORM
sudo install -D SSMAMTtools/include/amt.h /usr/local/include/amt.h
sudo install -D SSMAMTtools/lib/linux/libamt.a /usr/local/lib/libamt.a
- name: Build and install libdvbcsa
if: runner.os == 'macOS' || matrix.arch == 'i386'
run: |
git clone --depth 1 https://github.com/glenvt18/libdvbcsa.git
cd libdvbcsa
./bootstrap
./configure $HOST CC="$HOST_CC"
sudo make install
- name: Configure
run: |
autoreconf -i
if [ "${{ matrix.static }}" = "true" ]; then
STATIC="--disable-shared"
fi
if [ "${{ matrix.luajit }}" != "false" ]; then
LUAJIT="--enable-luajit"
fi
CONFIGURE_FLAGS="$LUAJIT $STATIC --disable-silent-rules $HOST CC=\"$HOST_CC\" CXX=\"$HOST_CXX\" CFLAGS=\"-Werror -Wno-error=deprecated-declarations -O2 -g -gdwarf-4 -fdiagnostics-color=always $CFLAGS\" CXXFLAGS=\"-Werror -O2 -g -fdiagnostics-color=always $CXXFLAGS\" LDFLAGS=\"$LDFLAGS\""
set-env CONFIGURE_FLAGS "$CONFIGURE_FLAGS"
eval ./configure $CONFIGURE_FLAGS
- name: Archive config log
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.name }}_config.log
path: config.log
- name: Build and test
run: >
make distcheck
DISTCHECK_CONFIGURE_FLAGS="$CONFIGURE_FLAGS"
AM_COLOR_TESTS="always"
VERBOSE=1
coding-style:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
env:
LIBS: ev avutil dvbcsa srt-gnutls gnutls28
run: |
sudo apt-get update
sudo apt-get install $(printf 'lib%s-dev ' $LIBS)
- name: Configure
run: |
autoreconf -i
./configure
- name: Check whitespaces
run: make check-whitespace
- name: Check headers
env:
AM_COLOR_TESTS: always
run: make check-headers
- name: Check tests
env:
AM_COLOR_TESTS: always
run: make check-tests