Skip to content
Draft
Show file tree
Hide file tree
Changes from 48 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
05e0666
Added base utilities and implementation for sender schedule (untested)
Jun 16, 2025
700eb7f
Merged-in dev-rework-multiplexer, post-fixed
Jun 25, 2025
371606f
Added SocketKeeper tracking. Added speed stats recording
Jul 9, 2025
85daec8
Merged und fixed
Jul 10, 2025
6a94985
Added stop handling and muxer config entry. STILL NOT TESTED.
Jul 11, 2025
5b4cb49
Fixed bug: twice locking in wait. STILL TESTS FAIL
Jul 11, 2025
ddc6ab2
Merged latest changes from dev and dev-rework-multiplexer
Aug 12, 2025
c5b1e2c
Added HeapSet::find_next function
Aug 13, 2025
c7e85ad
Some log fixes
Aug 14, 2025
25a6027
Updated from dev and post-fixed
Nov 6, 2025
b4943f1
Cleared a compile warning
Nov 6, 2025
34c46ea
Updated to latest dev
Nov 6, 2025
12c4285
Removed another warning error
Nov 6, 2025
4f60162
Extracted CiBuffer from CRcvBuffer. Removed offset-dep from CSndBuffe…
Nov 12, 2025
1fbe6b4
Added alternative sender buffer
Nov 21, 2025
86bc2c9
Implemented per-packet busy flags and locker object for sending packets
Nov 25, 2025
1213952
Fixed build break
Nov 25, 2025
97c005f
Fixed bug: missing setting srctime when extracting. Fixed bug: missin…
Nov 26, 2025
16d3f20
Rewritten insert_loss. Reshaped the code to collect all SndPktArray m…
Dec 4, 2025
e1162dd
Updated with latest cutoff-dev
Dec 4, 2025
c9d1ec6
Fixed some build breaks
Dec 4, 2025
5fc7180
Fixed some build breaks (test)
Dec 4, 2025
05a4f03
Restored working code with the old CSndBuffer
Dec 4, 2025
ee5ef58
Fixed preallocation and maximum storage capacity parameters
Dec 4, 2025
a76e5b1
Tracking a CI failure on Ubuntu
Dec 4, 2025
5d3c5be
[BUG] Fixed std::shared_mutex usage for C++17. Removed external clone…
Dec 8, 2025
eb255c1
Merge branch 'dev-fix-shared-mutex-selection' into dev-new-sender-buffer
Dec 8, 2025
0144e17
Logging: no passing string by value. Removed verbose entries for RcvB…
Dec 8, 2025
3455f5c
Unified rexmit extraction. Removed old implementation
Dec 10, 2025
7444735
Merge branch 'dev' into dev-new-sender-buffer
Dec 11, 2025
f17d9b9
Fixed bug in CRcvBuf: m_iEndOff incorrectly updated after removal. Re…
Dec 12, 2025
bad3676
Fixed build break on pedantic configurations
Dec 12, 2025
8396cf4
Merge branch 'dev' into dev-sender-schedule
Dec 12, 2025
a6e9cfd
Merged the changes with the new sender buffer
Dec 15, 2025
f1e5b89
Literal in comment
Dec 15, 2025
db168ac
Updated to latest dev
Apr 9, 2026
9468f92
Fixed: deleted outdated doc file
Apr 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ configuration:
image:
- Visual Studio 2022
- Visual Studio 2019
- Visual Studio 2015

platform:
- x64
Expand Down
87 changes: 67 additions & 20 deletions .github/workflows/abi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,75 +15,122 @@ jobs:
runs-on: ubuntu-latest

outputs:
SRT_BASE: ${{ steps.commands.outputs.SRT_BASE }}
base_version: ${{ steps.build.outputs.SRT_BASE }}
tag_version: ${{ steps.build.outputs.SRT_TAG_VERSION }}
steps:
- uses: actions/checkout@v3
with:
path: gitview_pr
- name: configure
- id: configure
name: Configure (cmake)
run: |
cd gitview_pr
mkdir _build && cd _build
cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_UNITTESTS=ON ../
- name: build
cmake -DCMAKE_BUILD_TYPE=Debug ../
- id: build
name: Build and dump
run: |
sudo apt install -y abi-dumper
sudo apt install -y tcl
cd gitview_pr/_build && cmake --build ./
make install DESTDIR=./installdir
SRT_TAG_VERSION=v$(../scripts/get-build-version.tcl full)
echo "SRT_TAG_VERSION=$SRT_TAG_VERSION" >> "$GITHUB_OUTPUT"
SRT_TAG=${SRT_TAG_VERSION}dev-$(git rev-parse --short HEAD)
echo "TAGGING PR BUILD: $SRT_TAG"
abi-dumper libsrt.so -o libsrt-pr.dump -public-headers installdir/usr/local/include/srt/ -lver $SRT_TAG
ls -ld libsrt-pr.dump
sha256sum libsrt-pr.dump
SRT_BASE=v$(../scripts/get-build-version.tcl base)
if [[ $SRT_TAG_VERSION == $SRT_BASE ]]; then
echo "NOT CHECKING ABI: base version is being built: $SRT_TAG"
echo "SRT_BASE=''" >> "$GITHUB_OUTPUT"
exit 0
echo "NOT CHECKING ABI: base version is being built: $SRT_TAG (not emitting SRT_BASE)"
#echo "SRT_BASE=''" >> "$GITHUB_OUTPUT"
else
echo "WILL CHECK ABI changes $SRT_BASE - $SRT_TAG_VERSION"
echo "SRT_BASE=$SRT_BASE" >> "$GITHUB_OUTPUT"
fi
echo "SRT_BASE=$SRT_BASE" >> "$GITHUB_OUTPUT"
- id: upload_pr_dump
uses: actions/upload-artifact@v4
with:
name: abidump_pr
path: gitview_pr/_build/libsrt-pr.dump

build_base:
name: Build base version
runs-on: ubuntu-latest
needs: build_pr
if: ${{ needs.build_pr.outputs.SRT_BASE != '' }}
if: ${{ needs.build_pr.outputs.base_version != '' }}

env:
SRT_BASE: ${{ needs.build_pr.outputs.SRT_BASE }}
SRT_BASE: ${{ needs.build_pr.outputs.base_version }}
SRT_TAG_VERSION: ${{ needs.build_pr.outputs.tag_version }}
steps:
- uses: actions/checkout@v3
with:
path: gitview_base
ref: ${{ env.SRT_BASE }}
- name: configure_tag
- id: configure_tag
name: Configure (cmake)
run: |
echo $SRT_TAG_VERSION
echo "TAG:$SRT_TAG_VERSION BASE:$SRT_BASE"

#This is currently a paranoid check - the if should do the job
if [[ -z $SRT_BASE ]]; then
echo "NO BASE DEFINED. NOT BUILDING"
exit 1
fi
cd gitview_base
mkdir _build && cd _build
cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_UNITTESTS=ON ../
- name: build_tag
cmake -DCMAKE_BUILD_TYPE=Debug ../
- id: build_tag
name: Build and dump
if: ${{ success() }}
run: |
sudo apt install -y abi-dumper
sudo apt install -y tcl
cd gitview_base
cd _build && cmake --build ./
make install DESTDIR=./installdir
echo "TAGGING BASE BUILD: $SRT_BASE"
abi-dumper libsrt.so -o libsrt-base.dump -public-headers installdir/usr/local/include/srt/ -lver $SRT_BASE
ls -ld libsrt-base.dump
sha256sum libsrt-base.dump
- id: upload_base_dump
uses: actions/upload-artifact@v4
with:
name: abidump_base
path: gitview_base/_build/libsrt-base.dump

check_abi:
name: Compare ABI
runs-on: ubuntu-latest
needs: [build_pr, build_base]
env:
SRT_BASE: ${{ needs.build_pr.outputs.SRT_BASE }}
SRT_BASE: ${{ needs.build_pr.outputs.base_version }}

steps:
- name: Download base dump
uses: actions/download-artifact@v4
with:
name: abidump_base
path: .
- name: Download pr dump
uses: actions/download-artifact@v4
with:
name: abidump_pr
path: .
- name: abi-check
run: |
#git clone https://github.com/lvc/abi-compliance-checker.git
cd gitview_pr/submodules
git submodule update --init abi-compliance-checker
git clone https://github.com/lvc/abi-compliance-checker.git
#cd gitview_pr/submodules
#git submodule update --init abi-compliance-checker
cd abi-compliance-checker && sudo make install && cd ../
cd ../..
abi-compliance-checker -l libsrt -old gitview_base/_build/libsrt-base.dump -new gitview_pr/_build/libsrt-pr.dump
#cd ../..
echo "FILESYSTEM state before running abi-check at $PWD"
ls -l
sha256sum libsrt-base.dump
sha256sum libsrt-pr.dump
abi-compliance-checker -l libsrt -old libsrt-base.dump -new libsrt-pr.dump
RES=$?
if (( $RES != 0 )); then
echo "ABI/API Compatibility check failed with value $?"
Expand Down
29 changes: 29 additions & 0 deletions .github/workflows/cxx03-ubuntu.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: C++03 (old compat)

on:
push:
branches: [ "master", "dev" ]
pull_request:
branches: [ "master", "dev" ]
types: [opened, synchronize, reopened]
jobs:
build:
name: ubuntu
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: configure
run: |
mkdir _build && cd _build
cmake ../ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DENABLE_STDCXX_SYNC=OFF -DUSE_CXX_STD=c++03 -DENABLE_ENCRYPTION=ON -DENABLE_UNITTESTS=ON -DENABLE_BONDING=ON -DENABLE_TESTING=ON -DENABLE_EXAMPLES=ON -DENABLE_CODE_COVERAGE=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
- name: build
# That below is likely SonarQube remains, which was removed earlier.
#run: cd _build && build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build .
run: cd _build && cmake --build .
- name: test
run: |
cd _build && ctest --extra-verbose
- name: codecov
run: |
source ./scripts/collect-gcov.sh
bash <(curl -s https://codecov.io/bash)
12 changes: 8 additions & 4 deletions .github/workflows/cxx11-macos.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: cxx11
name: C++11

on:
push:
Expand All @@ -14,13 +14,17 @@ jobs:
steps:
- name: GoogleTest
run: |
curl -o googletest.rb https://raw.githubusercontent.com/Homebrew/homebrew-core/23e7fb4dc0cc73facc3772815741e1deb87d6406/Formula/googletest.rb
brew install -s googletest.rb
brew tap-new Haivision/gt-local
brew extract --version=1.12.1 --force googletest Haivision/gt-local
brew install googletest@1.12.1
# NOTE: 1.12.1 is the last version that requires C++11; might need update later
# curl -o googletest.rb https://raw.githubusercontent.com/Homebrew/homebrew-core/23e7fb4dc0cc73facc3772815741e1deb87d6406/Formula/googletest.rb
# brew install -s googletest.rb
- uses: actions/checkout@v3
- name: configure
run: |
mkdir _build && cd _build
cmake ../ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DENABLE_STDCXX_SYNC=ON -DENABLE_ENCRYPTION=OFF -DENABLE_UNITTESTS=ON -DENABLE_BONDING=ON -DUSE_CXX_STD=17
cmake ../ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DENABLE_STDCXX_SYNC=ON -DENABLE_ENCRYPTION=OFF -DENABLE_UNITTESTS=ON -DENABLE_BONDING=ON -DUSE_CXX_STD=17 -DENABLE_HEAVY_LOGGING=ON
- name: build
run: cd _build && cmake --build ./
- name: test
Expand Down
6 changes: 2 additions & 4 deletions .github/workflows/cxx11-ubuntu.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: cxx11
name: C++11

on:
push:
Expand All @@ -9,16 +9,14 @@ on:
jobs:
build:
name: ubuntu
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: configure
run: |
mkdir _build && cd _build
cmake ../ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DENABLE_STDCXX_SYNC=ON -DENABLE_ENCRYPTION=ON -DENABLE_UNITTESTS=ON -DENABLE_BONDING=ON -DENABLE_TESTING=ON -DENABLE_EXAMPLES=ON -DENABLE_CODE_COVERAGE=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
- name: build
# That below is likely SonarQube remains, which was removed earlier.
#run: cd _build && build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build .
run: cd _build && cmake --build .
- name: test
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cxx11-win.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: cxx11
name: C++11

on:
push:
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/iOS.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,20 @@ jobs:
build:
strategy:
matrix:
cxxstdsync: [OFF, ON]
cxxstdsync: [ON] #[OFF, ON] # cxxsync=off is Linux-gcc-only.

name: iOS-cxxsync${{ matrix.cxxstdsync }}
runs-on: macos-latest

steps:
- uses: actions/checkout@v3
- name: Install dependency packages
run: |
brew install make llvm
- name: configure
run: |
mkdir _build && cd _build
cmake ../ -DENABLE_ENCRYPTION=OFF -DENABLE_STDCXX_SYNC=${{matrix.cxxstdsync}} -DENABLE_UNITTESTS=OFF -DUSE_CXX_STD=c++11 -DENABLE_BONDING=ON --toolchain scripts/iOS.cmake
export PATH="/opt/homebrew/opt/llvm/bin:$PATH" CC=clang CXX=clang++
cmake .. -DCMAKE_MAKE_PROGRAM=gmake -DENABLE_ENCRYPTION=OFF -DENABLE_STDCXX_SYNC=${{matrix.cxxstdsync}} -DENABLE_MONOTONIC_CLOCK=OFF -DENABLE_UNITTESTS=OFF -DUSE_CXX_STD=c++11 -DENABLE_BONDING=ON --toolchain scripts/iOS.cmake
- name: build
run: cd _build && cmake --build ./
4 changes: 2 additions & 2 deletions .github/workflows/s390x-focal.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ jobs:
apt-get -y install tzdata &&
uname -a &&
lscpu | grep Endian &&
apt-get -y install cmake g++ libssl-dev git &&
apt-get -y install cmake g++ libssl-dev git python &&
mkdir _build && cd _build &&
cmake ../ -DENABLE_ENCRYPTION=ON -DENABLE_UNITTESTS=ON -DENABLE_BONDING=ON -DENABLE_TESTING=ON -DENABLE_EXAMPLES=ON &&
cmake --debug-output ../ -DENABLE_ENCRYPTION=ON -DENABLE_UNITTESTS=ON -DENABLE_BONDING=ON -DENABLE_TESTING=ON -DENABLE_EXAMPLES=ON &&
cmake --build ./ &&
./test-srt -disable-ipv6"
Loading
Loading