Fix race issue among decoding threads which causes broken frame. (#3735) #26
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
pull_request: | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: sudo apt-get update -qq | |
- run: sudo apt-get install -qq nasm g++-multilib gcc-multilib libc6-dev-i386 python3-pip python3-setuptools | |
- run: sudo python3 -m pip install meson==0.52.1 ninja | |
- run: nasm -v | |
- run: c++ --version | |
- run: make gmp-bootstrap | |
- run: make gtest-bootstrap | |
- run: meson builddir --werror | |
- run: ninja -C builddir -v | |
- run: ( cd test/encoder_binary_comparison ; CFLAGS=-Werror ./run_PrepareAllTestData.sh 64 ) | |
- run: meson test -C builddir -v | |
- run: ./run_Test.sh BinaryCompare BA_MW_D.264 | |
- run: ./run_Test.sh BinaryCompare Adobe_PDF_sample_a_1024x768_50Frms.264 | |
- run: ./run_Test.sh BinaryCompare Zhling_1280x720.264 | |
asan: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: sudo apt-get update -qq | |
- run: sudo apt-get install -qq nasm | |
- run: nasm -v | |
- run: c++ --version | |
- run: make gtest-bootstrap | |
- run: LDFLAGS=-fsanitize=address CFLAGS=-fsanitize=address make -j$(nproc) | |
- run: ./codec_unittest | |
windows: | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@v3 | |
- run: choco install nasm | |
# nasm is not installed into the $PATH so add it manually | |
- run: echo "C:\Program Files\NASM" >> $env:GITHUB_PATH | |
- run: nasm -v | |
- run: make OS=msvc gmp-bootstrap | |
- run: make OS=msvc gtest-bootstrap | |
- working-directory: ./build | |
env: | |
CFLAGS: -WX | |
run: ./AutoBuildForWindows.bat | |
- run: ./bin/Win32/Release/codec_unittest.exe | |
mingw: | |
runs-on: windows-2019 | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
with: | |
msystem: mingw64 | |
install: >- | |
git | |
make | |
mingw-w64-x86_64-toolchain | |
mingw-w64-x86_64-nasm | |
mingw-w64-x86_64-meson | |
- uses: actions/checkout@v3 | |
- run: c++ --version | |
- run: make gmp-bootstrap | |
- run: make gtest-bootstrap | |
# disable Werror on gcc 12 until #3533 is fixed. | |
#- run: CFLAGS=-Werror make -j$(nproc) all plugin test | |
- run: make -j$(nproc) all plugin test | |
#- run: meson builddir --werror | |
- run: meson builddir | |
- run: ninja -C builddir -v | |
- run: meson test -C builddir -v | |
macos: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: brew install nasm meson | |
- run: make gmp-bootstrap | |
- run: make gtest-bootstrap | |
- run: nasm -v | |
- run: c++ --version | |
- run: CFLAGS=-Werror make -j$(sysctl -n hw.ncpu) all plugin test | |
- run: meson builddir --werror | |
- run: ninja -C builddir -v | |
- run: meson test -C builddir -v | |
linux-cross-arm: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: sudo apt-get update -qq | |
- run: sudo apt-get install -qq g++-arm-linux-gnueabihf g++-aarch64-linux-gnu qemu-user | |
- run: arm-linux-gnueabihf-g++ --version | |
- run: make gmp-bootstrap | |
- run: make gtest-bootstrap | |
- run: CFLAGS=-Werror make -j$(nproc) ARCH=armv7 CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ | |
- run: CFLAGS=-Werror make clean | |
- run: CFLAGS=-Werror make -j$(nproc) ARCH=aarch64 CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ | |
- run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./codec_unittest | |
macos-cross-arm64: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: make gmp-bootstrap | |
- run: make gtest-bootstrap | |
- run: c++ --version | |
- run: CFLAGS=-Werror make -j$(sysctl -n hw.ncpu) ARCH=arm64 | |
fuzzing: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Build Fuzzers | |
id: build | |
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master | |
with: | |
oss-fuzz-project-name: 'openh264' | |
language: c++ | |
- name: Run Fuzzers | |
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master | |
with: | |
oss-fuzz-project-name: 'openh264' | |
language: c++ | |
fuzz-seconds: 600 | |
- name: Upload Crash | |
uses: actions/upload-artifact@v1 | |
if: failure() && steps.build.outcome == 'success' | |
with: | |
name: artifacts | |
path: ./out/artifacts |