Audio and video stream refactoring #1999
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 Ubuntu | |
on: | |
push: | |
branches: | |
- 'master' | |
pull_request: | |
types: [opened, synchronize, reopened] | |
env: | |
CI_ARGS: -w 3 --shuffle --stdout-buf 1 | |
CI_MODE: --ci-mode | |
# Setting CI_RUNNER to empty should disable cirunner | |
CI_RUNNER: python ${{ github.workspace }}/cirunner/cirunner.py -t 3600 -o ${{ github.workspace }}/artifacts -- | |
MAKE_FAST: make -j 3 | |
jobs: | |
default-build: | |
# checking pure lib source distribution with plain configure & make | |
runs-on: ubuntu-latest | |
name: Default / build only | |
steps: | |
- uses: actions/checkout@v2 | |
- name: install cirunner | |
run: | | |
git clone --depth 1 https://github.com/pjsip/cirunner.git | |
cirunner/installlinux.sh | |
- name: configure | |
run: ./configure | |
- name: make | |
run: $MAKE_FAST | |
- name: get SSL info | |
run: pjlib/bin/pjlib-test-`make infotarget` --config --list | grep SSL | |
- name: verify oepnssl is used | |
run: pjlib/bin/pjlib-test-`make infotarget` --config --list | grep -E 'PJ_SSL_SOCK_IMP\s+:\s+1' | |
- name: upload artifacts on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ github.run_id }} | |
path: artifacts | |
default-full-bundle-1: | |
# full bundle: enable all codecs + AEC + DTLS | |
runs-on: ubuntu-latest | |
name: Default / pjmedia,pjsua | |
steps: | |
- uses: actions/checkout@v2 | |
- name: install cirunner | |
run: | | |
git clone --depth 1 https://github.com/pjsip/cirunner.git | |
cirunner/installlinux.sh | |
- name: install dependencies | |
run: sudo apt-get update && sudo apt-get install -y swig sip-tester libopencore-amrnb-dev | |
- name: config site | |
run: cd pjlib/include/pj && cp config_site_test.h config_site.h | |
- name: configure | |
run: CFLAGS="-g -fPIC" CXXFLAGS="-g -fPIC" LDFLAGS="-rdynamic" ./configure | |
- name: make | |
run: $MAKE_FAST | |
- name: swig bindings | |
run: cd pjsip-apps/src/swig && make | |
- name: set up Python 3.10 for pjsua test | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.10' | |
- name: capture pjsua capabilities | |
run: | | |
cat << EOF | pjsip-apps/bin/pjsua-`make infotarget` --log-level 3 > pjsua-caps | |
Cp | |
xx | |
vid dev list | |
vid codec list | |
q | |
EOF | |
cat pjsua-caps | |
- name: ensure AMR codec is installed | |
run: cat pjsua-caps | grep -E 'AMR/8000' | |
- name: pjmedia-test | |
run: make pjmedia-test | |
- name: pjsua-test | |
run: make pjsua-test | |
- name: upload artifacts on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ github.run_id }} | |
path: artifacts | |
default-full-bundle-2: | |
runs-on: ubuntu-latest | |
name: Default / pjlib,util,pjnath | |
steps: | |
- uses: actions/checkout@v2 | |
- name: install cirunner | |
run: | | |
git clone --depth 1 https://github.com/pjsip/cirunner.git | |
cirunner/installlinux.sh | |
- name: install dependencies | |
run: sudo apt-get install -y libopencore-amrnb-dev | |
- name: config site | |
run: cd pjlib/include/pj && cp config_site_test.h config_site.h | |
- name: configure | |
run: CFLAGS="-g" LDFLAGS="-rdynamic" ./configure | |
- name: make | |
run: $MAKE_FAST | |
- name: pjlib-test | |
run: make pjlib-test | |
- name: pjlib-util-test | |
run: make pjlib-util-test | |
- name: pjnath-test | |
run: make pjnath-test | |
- name: upload artifacts on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ github.run_id }} | |
path: artifacts | |
default-full-bundle-3: | |
runs-on: ubuntu-latest | |
name: Default / pjsip | |
steps: | |
- uses: actions/checkout@v2 | |
- name: install cirunner | |
run: | | |
git clone --depth 1 https://github.com/pjsip/cirunner.git | |
cirunner/installlinux.sh | |
- name: install dependencies | |
run: sudo apt-get install -y libopencore-amrnb-dev | |
- name: config site | |
run: cd pjlib/include/pj && cp config_site_test.h config_site.h | |
- name: configure | |
run: CFLAGS="-g" LDFLAGS="-rdynamic" ./configure | |
- name: make | |
run: $MAKE_FAST | |
- name: pjsip-test | |
run: make pjsip-test | |
- name: upload artifacts on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ github.run_id }} | |
path: artifacts | |
no-tls: | |
runs-on: ubuntu-latest | |
name: No SSL / pjlib,pjsip | |
steps: | |
- uses: actions/checkout@v2 | |
- name: install cirunner | |
run: | | |
git clone --depth 1 https://github.com/pjsip/cirunner.git | |
cirunner/installlinux.sh | |
- name: install dependencies | |
run: sudo apt-get install -y swig | |
- name: configure | |
run: CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure --disable-ssl | |
- name: make | |
run: $MAKE_FAST | |
- name: swig bindings | |
run: cd pjsip-apps/src/swig && make | |
- name: pjlib-test | |
run: make pjlib-test | |
- name: pjsip-test | |
run: make pjsip-test | |
- name: upload artifacts on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ github.run_id }} | |
path: artifacts | |
# build-ubuntu-openssl | |
# TLS: with OpenSSL (same as build-ubuntu-default) | |
gnu-tls: | |
runs-on: ubuntu-latest | |
name: GnuTLS / pjlib,pjnath,pjsip | |
steps: | |
- uses: actions/checkout@v2 | |
- name: install cirunner | |
run: | | |
git clone --depth 1 https://github.com/pjsip/cirunner.git | |
cirunner/installlinux.sh | |
- name: install dependencies | |
run: sudo apt-get update && sudo apt-get install -y --fix-missing swig libgnutls28-dev | |
- name: configure | |
run: CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure --with-gnutls=/usr/ | |
- name: make | |
run: $MAKE_FAST | |
- name: swig bindings | |
run: cd pjsip-apps/src/swig && make | |
- name: get SSL info | |
run: pjlib/bin/pjlib-test-`make infotarget` --config --list | grep SSL | |
- name: verify gnu tls is used | |
run: pjlib/bin/pjlib-test-`make infotarget` --config --list | grep -E 'PJ_SSL_SOCK_IMP\s+:\s+2' | |
- name: pjlib-test | |
run: make pjlib-test | |
- name: pjnath-test | |
run: make pjnath-test | |
- name: pjsip-test | |
run: make pjsip-test | |
- name: upload artifacts on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ github.run_id }} | |
path: artifacts | |
vid-openh264-1: | |
runs-on: ubuntu-latest | |
name: OpenH264+VPX / pjmedia,pjsua | |
steps: | |
- uses: actions/checkout@v2 | |
- name: install cirunner | |
run: | | |
git clone --depth 1 https://github.com/pjsip/cirunner.git | |
cirunner/installlinux.sh | |
- name: install dependencies | |
run: sudo apt-get update && sudo apt-get install -y swig nasm sip-tester libvpx-dev libopencore-amrnb-dev libsdl2-dev | |
- name: get openh264 | |
run: git clone --depth 1 --single-branch --branch openh264v2.1.0 https://github.com/cisco/openh264.git | |
- name: build openh264 | |
run: cd openh264 && $MAKE_FAST && sudo make install && sudo ldconfig | |
- name: config site | |
run: cd pjlib/include/pj && cp config_site_test.h config_site.h && echo "#define PJMEDIA_HAS_VIDEO 1" >> config_site.h | |
- name: configure | |
run: CFLAGS="-g -fPIC -DHAS_VID_CODEC_TEST=0" CXXFLAGS="-g -fPIC" LDFLAGS="-rdynamic" ./configure | |
- name: make | |
run: $MAKE_FAST | |
- name: swig bindings | |
run: cd pjsip-apps/src/swig && make | |
- name: set up Python 3.10 for pjsua test | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: capture pjsua capabilities | |
run: | | |
cat << EOF | pjsip-apps/bin/pjsua-`make infotarget` --log-level 3 > pjsua-caps | |
Cp | |
xx | |
vid dev list | |
vid codec list | |
q | |
EOF | |
cat pjsua-caps | |
- name: ensure AMR codec is installed | |
run: cat pjsua-caps | grep -E 'AMR/8000' | |
- name: ensure H264 codec is installed | |
run: cat pjsua-caps | grep -E 'H264/' | |
- name: ensure VP8 codec is installed | |
run: cat pjsua-caps | grep -E 'VP8/' | |
# SDL error: no available vid dev | |
#- name: ensure SDL is installed | |
# run: cat pjsua-caps | grep -E '\[SDL\]\[render\]' | |
# one of the step above has changed core_pattern, restore it | |
- name: reinstall cirunner | |
run: cirunner/installlinux.sh | |
- name: pjmedia-test | |
run: make pjmedia-test | |
- name: pjsua-test | |
run: make pjsua-test | |
- name: upload artifacts on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ github.run_id }} | |
path: artifacts | |
vid-openh264-2: | |
runs-on: ubuntu-latest | |
name: OpenH264+VPX / pjlib,util,pjnath | |
steps: | |
- uses: actions/checkout@v2 | |
- name: install cirunner | |
run: | | |
git clone --depth 1 https://github.com/pjsip/cirunner.git | |
cirunner/installlinux.sh | |
- name: install dependencies | |
run: sudo apt-get update && sudo apt-get install -y nasm libvpx-dev libopencore-amrnb-dev libsdl2-dev | |
- name: get openh264 | |
run: git clone --depth 1 --single-branch --branch openh264v2.1.0 https://github.com/cisco/openh264.git | |
- name: build openh264 | |
run: cd openh264 && $MAKE_FAST && sudo make install && sudo ldconfig | |
- name: config site | |
run: cd pjlib/include/pj && cp config_site_test.h config_site.h && echo "#define PJMEDIA_HAS_VIDEO 1" >> config_site.h | |
- name: configure | |
run: CFLAGS="-g" LDFLAGS="-rdynamic" ./configure | |
- name: make | |
run: $MAKE_FAST | |
# one of the step above has changed core_pattern, restore it | |
- name: reinstall cirunner | |
run: cirunner/installlinux.sh | |
- name: pjlib-test | |
run: make pjlib-test | |
- name: pjlib-util-test | |
run: make pjlib-util-test | |
- name: pjnath-test | |
run: make pjnath-test | |
- name: upload artifacts on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ github.run_id }} | |
path: artifacts | |
vid-openh264-3: | |
runs-on: ubuntu-latest | |
name: OpenH264+VPX / pjsip | |
steps: | |
- uses: actions/checkout@v2 | |
- name: install cirunner | |
run: | | |
git clone --depth 1 https://github.com/pjsip/cirunner.git | |
cirunner/installlinux.sh | |
- name: install dependencies | |
run: sudo apt-get update && sudo apt-get install -y nasm libvpx-dev libopencore-amrnb-dev libsdl2-dev | |
- name: get openh264 | |
run: git clone --depth 1 --single-branch --branch openh264v2.1.0 https://github.com/cisco/openh264.git | |
- name: build openh264 | |
run: cd openh264 && $MAKE_FAST && sudo make install && sudo ldconfig | |
- name: config site | |
run: cd pjlib/include/pj && cp config_site_test.h config_site.h && echo "#define PJMEDIA_HAS_VIDEO 1" >> config_site.h | |
- name: configure | |
run: CFLAGS="-g" LDFLAGS="-rdynamic" ./configure | |
- name: make | |
run: $MAKE_FAST | |
# one of the step above has changed core_pattern, restore it | |
- name: reinstall cirunner | |
run: cirunner/installlinux.sh | |
- name: pjsip-test | |
run: make pjsip-test | |
- name: upload artifacts on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ github.run_id }} | |
path: artifacts | |
vid-ffmpeg: | |
runs-on: ubuntu-latest | |
name: FFMPEG+x264 / pjmedia | |
steps: | |
- uses: actions/checkout@v2 | |
- name: install cirunner | |
run: | | |
git clone --depth 1 https://github.com/pjsip/cirunner.git | |
cirunner/installlinux.sh | |
- name: install dependencies | |
run: sudo apt-get update && sudo apt-get install -y swig nasm libx264-dev libvpx-dev libsdl2-dev | |
- name: get ffmpeg | |
run: git clone --depth 1 --single-branch --branch release/4.2 https://github.com/FFmpeg/FFmpeg.git | |
- name: configure ffmpeg | |
run: cd FFmpeg && ./configure --enable-shared --disable-static --enable-gpl --enable-libx264 | |
- name: build ffmpeg | |
run: cd FFmpeg && $MAKE_FAST && sudo make install | |
- name: config site | |
run: echo -e "#define PJMEDIA_HAS_VIDEO 1\n" > pjlib/include/pj/config_site.h | |
- name: configure | |
run: CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure | |
- name: make | |
run: $MAKE_FAST | |
- name: swig bindings | |
run: cd pjsip-apps/src/swig && make | |
- name: capture pjsua capabilities | |
run: | | |
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH | |
cat << EOF | pjsip-apps/bin/pjsua-`make infotarget` --log-level 3 > pjsua-caps | |
Cp | |
xx | |
vid dev list | |
vid codec list | |
q | |
EOF | |
cat pjsua-caps | |
- name: ensure H264 codec is installed | |
run: cat pjsua-caps | grep -E 'H264/' | |
- name: ensure VP8 codec is installed | |
run: cat pjsua-caps | grep -E 'VP8/' | |
# SDL error: no available vid dev | |
#- name: ensure SDL is installed | |
# run: cat pjsua-caps | grep -E '\[SDL\]\[render\]' | |
# one of the step above has changed core_pattern, restore it | |
- name: reinstall cirunner | |
run: cirunner/installlinux.sh | |
- name: pjmedia-test | |
run: export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH && make pjmedia-test | |
- name: upload artifacts on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ github.run_id }} | |
path: artifacts |