Skip to content

LinuxCapture: Add mutex around AVC calls #258

LinuxCapture: Add mutex around AVC calls

LinuxCapture: Add mutex around AVC calls #258

Workflow file for this run

name: dvrescue-gui
on: [push, pull_request]
jobs:
build-macos-brew:
strategy:
matrix:
compiler: ['clang-9']
include:
- compiler: clang-9
packages: llvm@13
env: { 'CC': 'clang', 'CXX': 'clang++' }
runs-on: macos-latest
env: ${{ matrix.env }}
steps:
- uses: actions/checkout@v2
with:
fetch: 1
- name: Checkout submodules
shell: bash
run: |
GIT_PATH=https://github.com/.extraheader
AUTH_HEADER="$(git config --local --get http.$GIT_PATH)"
git submodule sync --recursive
git -c "http.extraheader=$AUTH_HEADER" \
-c protocol.version=2 \
submodule update --init --force --recursive --depth=1
- name: Install dependencies
run: |
brew install ${{ matrix.packages }} pkg-config ffmpeg
- name: Install qwt-qt5
run: |
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/56cd02e96876d1fb5b9ae951d605585fe8d614de/Formula/qwt.rb
brew install ./qwt.rb
- name: Set Qt5 environment path
run: |
echo "/usr/local/opt/qt@5/bin" >> $GITHUB_PATH
- name: Build dvrescue-gui
env:
USE_BREW: true
run: |
cd Source/GUI/dvrescue/
mkdir build
cd build
qmake ..
make CC=$CC CXX=$CXX -j4
- name: Launch dvrescue-gui
run: |
cd Source/GUI/dvrescue/build
ls
ls ./dvrescue
export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH
open ./dvrescue/dvrescue.app
build-macos-brew-Qt6:
strategy:
matrix:
compiler: ['clang-9']
include:
- compiler: clang-9
packages: llvm@13
env: { 'CC': 'clang-9', 'CXX': 'clang++-9', 'HOMEBREW_NO_INSTALL_CLEANUP': '1', 'HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK': '1' }
- qt_version: "6.3.0"
qt_modules: "qtmultimedia"
runs-on: macos-latest
env: ${{ matrix.env }}
steps:
- uses: actions/checkout@v2
with:
fetch: 1
- name: Checkout submodules
shell: bash
run: |
GIT_PATH=https://github.com/.extraheader
AUTH_HEADER="$(git config --local --get http.$GIT_PATH)"
git submodule sync --recursive
git -c "http.extraheader=$AUTH_HEADER" \
-c protocol.version=2 \
submodule update --init --force --recursive --depth=1
- name: Install dependencies
run: |
brew install ${{ matrix.packages }} pkg-config ffmpeg
- name: Install Qt6
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_version }}
modules: ${{ matrix.qt_modules }}
- name: Install qwt
run: |
brew install --ignore-dependencies qwt
- name: Set Qt6 environment path
run: |
echo "/usr/local/opt/qt6/bin" >> $GITHUB_PATH
- name: Build dvrescue-gui
env:
USE_BREW: true
run: |
cd Source/GUI/dvrescue/
mkdir build
cd build
qmake ..
make -j4
- name: Launch dvrescue-gui
run: |
cd Source/GUI/dvrescue/build
ls
ls ./dvrescue
export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH
open ./dvrescue/dvrescue.app
build-macos-no-brew:
strategy:
matrix:
compiler: ['clang-9']
include:
- compiler: clang-9
packages: llvm@13
env: { 'CC': 'clang', 'CXX': 'clang++' }
runs-on: macos-latest
env: ${{ matrix.env }}
steps:
- uses: actions/checkout@v2
with:
fetch: 1
- name: Checkout submodules
shell: bash
run: |
GIT_PATH=https://github.com/.extraheader
AUTH_HEADER="$(git config --local --get http.$GIT_PATH)"
git submodule sync --recursive
git -c "http.extraheader=$AUTH_HEADER" \
-c protocol.version=2 \
submodule update --init --force --recursive --depth=1
- name: Install dependencies
run: |
brew install ${{ matrix.packages }} nasm qt@5
- name: Set Qt5 environment path
run: |
echo "/usr/local/opt/qt@5/bin" >> $GITHUB_PATH
- name: Build qwt
run: |
git clone --branch qwt-6.2 --depth 1 https://git.code.sf.net/p/qwt/git ../qwt
cd ../qwt
qmake -r
make -j4
- name: Build FFmpeg
run: |
git clone --depth 1 --branch n5.1 https://github.com/FFmpeg/FFmpeg ../ffmpeg
cd ../ffmpeg
./configure --enable-gpl \
--enable-static \
--disable-shared \
--disable-autodetect \
--disable-securetransport \
--disable-videotoolbox \
--disable-doc \
--disable-ffplay \
--disable-ffprobe \
--disable-debug
make -j12
- name: Build dvrescue-gui
env:
USE_BREW: false
run: |
cd Source/GUI/dvrescue/
mkdir build
cd build
qmake ..
make CC=$CC CXX=$CXX -j4
- name: Launch dvrescue-gui
run: |
cd Source/GUI/dvrescue/build
ls
ls ./dvrescue
export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH
open ./dvrescue/dvrescue.app
build-macos-no-brew-Qt6:
strategy:
matrix:
compiler: ['clang-9']
include:
- compiler: clang-9
packages: llvm@13
env: { 'CC': 'clang-9', 'CXX': 'clang++-9', 'HOMEBREW_NO_INSTALL_CLEANUP': '1', 'HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK': '1' }
- qt_version: "6.3.0"
qt_modules: "qtmultimedia"
runs-on: macos-latest
env: ${{ matrix.env }}
steps:
- uses: actions/checkout@v2
with:
fetch: 1
- name: Checkout submodules
shell: bash
run: |
GIT_PATH=https://github.com/.extraheader
AUTH_HEADER="$(git config --local --get http.$GIT_PATH)"
git submodule sync --recursive
git -c "http.extraheader=$AUTH_HEADER" \
-c protocol.version=2 \
submodule update --init --force --recursive --depth=1
- name: Install dependencies
run: |
brew install ${{ matrix.packages }} nasm
- name: Install Qt6
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_version }}
modules: ${{ matrix.qt_modules }}
- name: Set Qt6 environment path
run: |
echo "/usr/local/opt/qt6/bin" >> $GITHUB_PATH
- name: Build qwt
run: |
git clone --branch qwt-6.2 --depth 1 https://git.code.sf.net/p/qwt/git ../qwt
cd ../qwt
qmake -r
make -j4
- name: Build FFmpeg
run: |
git clone --depth 1 --branch n5.1 https://github.com/FFmpeg/FFmpeg ../ffmpeg
cd ../ffmpeg
./configure --enable-gpl \
--enable-static \
--disable-shared \
--disable-autodetect \
--disable-securetransport \
--disable-videotoolbox \
--disable-doc \
--disable-ffplay \
--disable-ffprobe \
--disable-debug
make -j12
- name: Build dvrescue-gui
env:
USE_BREW: false
run: |
cd Source/GUI/dvrescue/
mkdir build
cd build
qmake ..
make -j4
- name: Launch dvrescue-gui
run: |
cd Source/GUI/dvrescue/build
ls
ls ./dvrescue
export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH
open ./dvrescue/dvrescue.app
build-linux:
strategy:
matrix:
compiler: ['gcc-9']
include:
- compiler: gcc-9
packages: gcc-9 g++-9
env: { 'CC': 'gcc-9', 'CXX': 'g++-9' }
- qt_version: "5.15.2"
qt_packages: "libxkbcommon-dev libgstreamer-plugins-base1.0-0 libgstreamer-gl1.0-0"
runs-on: ubuntu-latest
env: ${{ matrix.env }}
steps:
- uses: actions/checkout@v2
with:
fetch: 1
- name: Checkout submodules
shell: bash
run: |
GIT_PATH=https://github.com/.extraheader
AUTH_HEADER="$(git config --local --get http.$GIT_PATH)"
git submodule sync --recursive
git -c "http.extraheader=$AUTH_HEADER" \
-c protocol.version=2 \
submodule update --init --force --recursive --depth=1
- name: Install Python 3.7 version
uses: actions/setup-python@v1
with:
python-version: '3.7'
architecture: 'x64'
- name: Install compiler and FFmpeg dependencies
run: |
sudo apt-get update &&
sudo apt-get install -y ${{ matrix.packages }} \
libunwind-dev \
libavcodec-dev \
libavformat-dev \
libavdevice-dev \
libegl1-mesa-dev \
libglew-dev \
libxv-dev \
libraw1394-dev \
libavc1394-dev \
libiec61883-dev
- name: Install Qt 5.15
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_version }}
- name: Cleanup
run: |
sudo apt-get clean -y
sudo rm -rf /var/lib/apt/lists/*
- name: Build qwt
run: |
git clone --branch qwt-6.2 --depth 1 https://git.code.sf.net/p/qwt/git ../qwt
cd ../qwt
qmake -r
make -j4
- name: Build dvrescue-gui
run: |
cd Source/GUI/dvrescue/
qmake
make -j4
- name: Launch dvrescue-gui
run: |
cd Source/GUI/dvrescue/
ls
ls ./dvrescue
./dvrescue/dvrescue --platform minimal 2>&1 &
sleep 2
pidof dvrescue
build-linux-Qt6:
strategy:
matrix:
compiler: ['gcc-9']
include:
- compiler: gcc-9
packages: gcc-9 g++-9
env: { 'CC': 'gcc-9', 'CXX': 'g++-9' }
- qt_version: "6.5.0"
qt_modules: "qtmultimedia qt5compat qtshadertools"
qt_packages: "libxkbcommon-dev libgstreamer-plugins-base1.0-0 libgstreamer-gl1.0-0"
runs-on: ubuntu-latest
env: ${{ matrix.env }}
steps:
- uses: actions/checkout@v2
with:
fetch: 1
- name: Checkout submodules
shell: bash
run: |
GIT_PATH=https://github.com/.extraheader
AUTH_HEADER="$(git config --local --get http.$GIT_PATH)"
git submodule sync --recursive
git -c "http.extraheader=$AUTH_HEADER" \
-c protocol.version=2 \
submodule update --init --force --recursive --depth=1
- name: Install Python 3.7 version
uses: actions/setup-python@v1
with:
python-version: '3.7'
architecture: 'x64'
- name: Install compiler and FFmpeg dependencies
run: |
sudo apt-get update &&
sudo apt-get install -y ${{ matrix.packages }} \
libunwind-dev \
libgstreamer-plugins-base1.0-dev \
libavcodec-dev \
libavformat-dev \
libavdevice-dev \
libegl1-mesa-dev \
libglew-dev \
libxkbcommon-dev \
libxv-dev
- name: Install Qt 6
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_version }}
modules: ${{ matrix.qt_modules }}
- name: Cleanup
run: |
sudo apt-get clean -y
sudo rm -rf /var/lib/apt/lists/*
- name: Build qwt
run: |
git clone --branch qwt-6.2 --depth 1 https://git.code.sf.net/p/qwt/git ../qwt
cd ../qwt
qmake -r
make -j4
- name: Build dvrescue-gui
run: |
cd Source/GUI/dvrescue/
qmake
make -j4
- name: Launch dvrescue-gui
run: |
cd Source/GUI/dvrescue/
ls
ls ./dvrescue
./dvrescue/dvrescue --platform minimal 2>&1 &
sleep 2
pidof dvrescue
build-windows-mingw:
strategy:
matrix:
qt_version: ["5.15.2"]
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
with:
fetch: 1
- name: Checkout submodules
shell: bash
run: |
GIT_PATH=https://github.com/.extraheader
AUTH_HEADER="$(git config --local --get http.$GIT_PATH)"
git submodule sync --recursive
git -c "http.extraheader=$AUTH_HEADER" \
-c protocol.version=2 \
submodule update --init --force --recursive --depth=1
- name: Build and install zlib
shell: cmd
run: |
git clone --depth 1 https://github.com/madler/zlib ../zlib-dev
cd ../zlib-dev
mkdir build
cd build
cmake -G "Unix Makefiles" ^
-DCMAKE_INSTALL_PREFIX="%GITHUB_WORKSPACE%\..\zlib" ^
-DBUILD_SHARED_LIBS=0 ^
-DCMAKE_BUILD_TYPE=Release ^
..
make install
- name: Install Qt 5.15
uses: jurplel/install-qt-action@v3
with:
arch: win64_mingw81
version: ${{ matrix.qt_version }}
- name: Install FFmpeg
shell: pwsh
run: |
Set-Location ..
$json = $(curl -L -H "Accept: application/vnd.github+json" https://api.github.com/repos/BtbN/FFmpeg-Builds/releases/latest)
$ffmpeg_name = $($json | jq -r '.assets[] | select(.name | endswith("-gpl-shared-6.1.zip")).name | sub("\\.zip$";"")')
$ffmpeg_url = $($json | jq -r '.assets[] | select(.name | endswith("-gpl-shared-6.1.zip")).browser_download_url')
Invoke-WebRequest -Uri "$ffmpeg_url" -OutFile "$ffmpeg_name.zip"
Expand-Archive -Path "$ffmpeg_name.zip" -DestinationPath .
Rename-Item -Path "$ffmpeg_name" -NewName "ffmpeg"
- name: Download and configure qwt
run: |
git clone --branch qwt-6.2 --depth 1 https://git.code.sf.net/p/qwt/git ../qwt
copy .github\workflows\qwtconfig.pri ..\qwt
cd ../qwt
qmake -r
- name: Build qwt
shell: cmd
run: |
cd ../qwt
mingw32-make -j4
- name: Configure dvrescue-gui
shell: cmd
run: |
cd Source/GUI/dvrescue/
qmake
# - name: Start SSH session
# uses: luchihoratiu/debug-via-ssh@main
# with:
# NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }}
# SSH_PASS: ${{ secrets.SSH_PASS }}
- name: Build dvrescue-gui
shell: cmd
run: |
cd Source/GUI/dvrescue/
mingw32-make
- name: Launch dvrescue-gui
run: |
cd Source/GUI/dvrescue/
ls
ls ./dvrescue
./dvrescue/release/dvrescue
build-windows-mingw-Qt6:
strategy:
matrix:
include:
- qt_version: "6.3.0"
qt_modules: "qtmultimedia qt5compat"
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
with:
fetch: 1
- name: Checkout submodules
shell: bash
run: |
GIT_PATH=https://github.com/.extraheader
AUTH_HEADER="$(git config --local --get http.$GIT_PATH)"
git submodule sync --recursive
git -c "http.extraheader=$AUTH_HEADER" \
-c protocol.version=2 \
submodule update --init --force --recursive --depth=1
- name: Build and install zlib
shell: cmd
run: |
git clone --depth 1 https://github.com/madler/zlib ../zlib-dev
cd ../zlib-dev
mkdir build
cd build
cmake -G "Unix Makefiles" ^
-DCMAKE_INSTALL_PREFIX="%GITHUB_WORKSPACE%\..\zlib" ^
-DBUILD_SHARED_LIBS=0 ^
-DCMAKE_BUILD_TYPE=Release ^
..
make install
- name: Install Qt 6
uses: jurplel/install-qt-action@v3
with:
arch: win64_mingw
version: ${{ matrix.qt_version }}
modules: ${{ matrix.qt_modules }}
- name: Install FFmpeg
shell: pwsh
run: |
Set-Location ..
$json = $(curl -L -H "Accept: application/vnd.github+json" https://api.github.com/repos/BtbN/FFmpeg-Builds/releases/latest)
$ffmpeg_name = $($json | jq -r '.assets[] | select(.name | endswith("-gpl-shared-6.1.zip")).name | sub("\\.zip$";"")')
$ffmpeg_url = $($json | jq -r '.assets[] | select(.name | endswith("-gpl-shared-6.1.zip")).browser_download_url')
Invoke-WebRequest -Uri "$ffmpeg_url" -OutFile "$ffmpeg_name.zip"
Expand-Archive -Path "$ffmpeg_name.zip" -DestinationPath .
Rename-Item -Path "$ffmpeg_name" -NewName "ffmpeg"
- name: Download and configure qwt
run: |
git clone --branch qwt-6.2 --depth 1 https://git.code.sf.net/p/qwt/git ../qwt
copy .github\workflows\qwtconfig.pri ..\qwt
cd ../qwt
qmake -r
- name: Build qwt
shell: cmd
run: |
cd ../qwt
mingw32-make -j4
- name: Configure dvrescue-gui
shell: cmd
run: |
cd Source/GUI/dvrescue/
qmake
# - name: Start SSH session
# uses: luchihoratiu/debug-via-ssh@main
# with:
# NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }}
# SSH_PASS: ${{ secrets.SSH_PASS }}
- name: Build dvrescue-gui
shell: cmd
run: |
cd Source/GUI/dvrescue/
mingw32-make
- name: Launch dvrescue-gui
run: |
cd Source/GUI/dvrescue/
ls
ls ./dvrescue
./dvrescue/release/dvrescue
build-windows-vs:
strategy:
matrix:
qt_version: ["5.15.2"]
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
with:
fetch: 1
- name: Checkout submodules
shell: bash
run: |
GIT_PATH=https://github.com/.extraheader
AUTH_HEADER="$(git config --local --get http.$GIT_PATH)"
git submodule sync --recursive
git -c "http.extraheader=$AUTH_HEADER" \
-c protocol.version=2 \
submodule update --init --force --recursive --depth=1
- name: Init vs environment
uses: egor-tensin/vs-shell@v2
with:
arch: x64
- name: Build and install zlib
shell: cmd
run: |
git clone --depth 1 https://github.com/madler/zlib ../zlib-dev
cd ../zlib-dev
mkdir build
cd build
cmake -G "NMake Makefiles" ^
-DCMAKE_INSTALL_PREFIX="%GITHUB_WORKSPACE%\..\zlib" ^
-DBUILD_SHARED_LIBS=0 ^
-DCMAKE_BUILD_TYPE=Release ^
..
nmake install
- name: Install Qt 5.15
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_version }}
- name: Install FFmpeg
shell: pwsh
run: |
Set-Location ..
$json = $(curl -L -H "Accept: application/vnd.github+json" https://api.github.com/repos/BtbN/FFmpeg-Builds/releases/latest)
$ffmpeg_name = $($json | jq -r '.assets[] | select(.name | endswith("-gpl-shared-6.1.zip")).name | sub("\\.zip$";"")')
$ffmpeg_url = $($json | jq -r '.assets[] | select(.name | endswith("-gpl-shared-6.1.zip")).browser_download_url')
Invoke-WebRequest -Uri "$ffmpeg_url" -OutFile "$ffmpeg_name.zip"
Expand-Archive -Path "$ffmpeg_name.zip" -DestinationPath .
Rename-Item -Path "$ffmpeg_name" -NewName "ffmpeg"
- name: Download and configure qwt
run: |
git clone --branch qwt-6.2 --depth 1 https://git.code.sf.net/p/qwt/git ../qwt
copy .github\workflows\qwtconfig.pri ..\qwt
cd ../qwt
qmake -r
- name: Build qwt
shell: cmd
run: |
cd ../qwt
nmake
- name: Configure dvrescue-gui
shell: cmd
run: |
cd Source/GUI/dvrescue/
qmake
- name: Build dvrescue-gui
shell: cmd
run: |
cd Source/GUI/dvrescue/
nmake
- name: Launch dvrescue-gui
run: |
cd Source/GUI/dvrescue/
ls
ls ./dvrescue
./dvrescue/release/dvrescue
build-windows-vs-Qt6:
strategy:
matrix:
include:
- qt_version: "6.3.0"
qt_modules: "qtmultimedia qt5compat"
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
with:
fetch: 1
- name: Checkout submodules
shell: bash
run: |
GIT_PATH=https://github.com/.extraheader
AUTH_HEADER="$(git config --local --get http.$GIT_PATH)"
git submodule sync --recursive
git -c "http.extraheader=$AUTH_HEADER" \
-c protocol.version=2 \
submodule update --init --force --recursive --depth=1
- name: Init vs environment
uses: egor-tensin/vs-shell@v2
with:
arch: x64
- name: Build and install zlib
shell: cmd
run: |
git clone --depth 1 https://github.com/madler/zlib ../zlib-dev
cd ../zlib-dev
mkdir build
cd build
cmake -G "NMake Makefiles" ^
-DCMAKE_INSTALL_PREFIX="%GITHUB_WORKSPACE%\..\zlib" ^
-DBUILD_SHARED_LIBS=0 ^
-DCMAKE_BUILD_TYPE=Release ^
..
nmake install
- name: Install Qt 6
uses: jurplel/install-qt-action@v3
with:
arch: win64_msvc2019_64
version: ${{ matrix.qt_version }}
modules: ${{ matrix.qt_modules }}
- name: Install FFmpeg
shell: pwsh
run: |
Set-Location ..
$json = $(curl -L -H "Accept: application/vnd.github+json" https://api.github.com/repos/BtbN/FFmpeg-Builds/releases/latest)
$ffmpeg_name = $($json | jq -r '.assets[] | select(.name | endswith("-gpl-shared-6.1.zip")).name | sub("\\.zip$";"")')
$ffmpeg_url = $($json | jq -r '.assets[] | select(.name | endswith("-gpl-shared-6.1.zip")).browser_download_url')
Invoke-WebRequest -Uri "$ffmpeg_url" -OutFile "$ffmpeg_name.zip"
Expand-Archive -Path "$ffmpeg_name.zip" -DestinationPath .
Rename-Item -Path "$ffmpeg_name" -NewName "ffmpeg"
- name: Download and configure qwt
run: |
git clone --branch qwt-6.2 --depth 1 https://git.code.sf.net/p/qwt/git ../qwt
copy .github\workflows\qwtconfig.pri ..\qwt
cd ../qwt
qmake -r
- name: Build qwt
shell: cmd
run: |
cd ../qwt
nmake
- name: Configure dvrescue-gui
shell: cmd
run: |
cd Source/GUI/dvrescue/
qmake
- name: Build dvrescue-gui
shell: cmd
run: |
cd Source/GUI/dvrescue/
nmake
- name: Launch dvrescue-gui
run: |
cd Source/GUI/dvrescue/
ls
ls ./dvrescue
./dvrescue/release/dvrescue