Skip to content

feat: SRT 1.5.7 + CERALIVE SRTLA options (PERIODICNAKGATE tri-state, SRTLAPATCHES compat) - #25

Merged
andrescera merged 12 commits into
masterfrom
feat/srtla-options-1.5.7
Sep 21, 2026
Merged

andrescera merged 12 commits into
masterfrom
feat/srtla-options-1.5.7

Conversation

@andrescera

Copy link
Copy Markdown
Member

Merges Haivision SRT v1.5.7 into the CeraLive line as a true merge and adds two
additive, default-preserving CeraLive socket options on top.

Commits

SHA Change
7a6cc86 chore: merge Haivision SRT v1.5.7 (true merge, retains SRTO_REORDERFREEZE = 120 and deterministic socket teardown)
4bd4a86 feat(srtcore): SRTO_PERIODICNAKGATE tri-state (off/filter/suppress) — SRTO_PERIODICNAKGATE = 119
5d6f591 feat(srtcore): SRTO_SRTLAPATCHES compat enumerator mapping to CERALIVE options — SRTO_SRTLAPATCHES = 118

Socket options

  • SRTO_PERIODICNAKGATE = 119 — tri-state (0 off / 1 filter / 2 suppress),
    SRTO_R_PRE, receiver-side. Default 0 (off) — stock behaviour unchanged.
  • SRTO_SRTLAPATCHES = 118 — compat shim; a non-zero write sets
    bReorderFreeze = true and iPeriodicNakGate = SRTLA_PATCHES_DEFAULT_NAKGATE.
    Reads back as bReorderFreeze && iPeriodicNakGate != 0. An explicit
    SRTO_PERIODICNAKGATE write afterwards overrides it (last write wins).

Both enumerators are appended HIGH (never gap-filled) so they cannot collide with
future upstream option numbers. Both are default-off: a caller that never sets them
gets byte-identical stock behaviour.

ABI

Purely additive enumerators in SRT_SOCKOPT plus additive CSrtConfig fields.
No symbol removed, no enumerator value changed, no public struct layout changed.
.github/workflows/abi.yml compares against the immutable srt-v1.5.6+ceralive.1
tag per AGENTS.md → "ABI baseline".

Tests

test/test_periodic_nak_gate.cpp (new) and test/test_srtlapatches.cpp (new).
Full local serial ctest: 294/294 passed.

Docs

docs/CERALIVE-PATCHES.md and docs/API/API-socket-options.md updated for 118/119/120.

Not for merge yet — the SRTLA_PATCHES_DEFAULT_NAKGATE default is settled by the
downstream A/B campaign before this lands.

ethouris and others added 12 commits July 30, 2026 14:17
…on (Haivision#3349)

* Fixed gcov rule. Fixed ABI compliance checker to use local installation

* Removed codecov for C++03. Fixed wrong call path for gdb after tests

* Fixed crypto tests build break when encryption disabled

* Fixed CI on macos. Tracking a problem on ABI

* Refactored TestEnforcedEncryption to simplify initialization

* Fixed ABI. Fixed mac warn build break on ENC=no

* Added missing ASH variable to output

* Tracking problem with ABI

* Changed abi compliance checker to official package. Fixed options in configure-data

* Preserved RES up until the end to prevent error blocking report download

* Changed command call to swallow error result (prevents premature interrupt of the step)

* Fixed uploading HTML report for ABI

* I hate YAML

* Using Create Browser Link instead

* Changed ABI reporting to uploading html with no zipping

* Updated Ubuntu packages before installing

---------

Co-authored-by: Mikolaj Malecki <mmalecki@haivision.com>
…#3323)

* [core] Added checks to prevent rogue CMD MSG to sneak thru

* [core] Fixed OOB read in ACK payload parsing.

* Added protection against rogue DROPREQ. Added status return for cmd dispatchers. Changed tests for cmd dispatchers to work on a connected socket. Added protection against rogue DROP in receiver buffer

* Fixed codespell

* Wrong keyword for CUnit in tests

---------

Co-authored-by: Mikolaj Malecki <mmalecki@haivision.com>
* Fixed vulnerabilities reported as SRTX-61

* Next portion of fixes from SRTX-62

* Fixed #11 for SRTX-62

* Added MD5 check to the dependency installer scripts

* Applied safety fixes for Windows installer scripts

* Post-review fixes for vulnerability issues

* Post-review fixes, take 3

* Remaining parts of Take 3

* Fixes, take 4. Fixed ASSERT usage in FEC tests

* Take 5, possibly final

* Fixed build break with --disable-encryption

* Fixed codespell

---------

Co-authored-by: Mikolaj Malecki <mmalecki@haivision.com>
Updated link to SRT Alliance Deployment Guide
Co-authored-by: Clément Gérouville <cgerouville@haivision.com>
`socketconfig.h` is compiled by the C++03 lane
(.github/workflows/ubuntu-c++03.yml, -DUSE_CXX_STD=03 with
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON), where `constexpr` is rejected by
-Werror=c++11-compat. Use `static const int`, the same form the adjacent
SRT_OHEAD_DEFAULT_P100 uses, which is C++03-valid and equally a
compile-time constant for the two consumers (socketconfig.cpp setter and
test/test_srtlapatches.cpp).
…AKGATE

The constant was introduced as a placeholder pinned to 2 pending the D10 A/B
(plan upstream-rebase-hard-fork todos 36/38). That campaign has now run: 24/24
valid rows, 2 arms x 4 netem loss/reorder cells x 3 runs, no retries. Arm 1
(filter) won viewer-observed loss on 1 of 4 cells where the frozen rule requires
at least 3, and the goodput guard held on all 4, so WINNER = 2.

The measured winner equals the placeholder, so the value is unchanged and this
commit is a no-op for the build. Only the comment changes, so that the default
no longer reads as provisional and its provenance is explicit in the source.
Add a Releases section recording the SRTLA option set as it actually ships:
Haivision base v1.5.7 (899348d, absorbed by true merge 7a6cc86), tag
srt-v1.5.7+ceralive.2, both .deb filenames, and the additive-ABI statement.

Two tables carry the contract downstream consumers depend on. The first gives the
exact option numbers and semantics (118 SRTO_SRTLAPATCHES compat shim mapping onto
120 SRTO_REORDERFREEZE plus 119 SRTO_PERIODICNAKGATE = 2). The second is the
four-site equivalence with upstream irlserver/srt SRTLAPATCHES=1: sites 1-3 exact,
site 4 exact at the shipped default because SRTLA_PATCHES_DEFAULT_NAKGATE is 2,
matching f229719:srtcore/core.cpp:12018-12029.

The D10 A/B is recorded as measured rather than pending, with its campaign shape,
verdict and rule hash, and the three places that still described the default as
provisional are corrected.

Also corrects a documentation error found while writing the table: SRTO_REORDERFREEZE
has no URI row in apps/socketoptions.hpp, so reorderfreeze= is not a supported URI
spelling. Documented rather than added, since adding the row is a functional change
outside this release.
…ing one

SRTO_PERIODICNAKGATE=2 was described as "the arm the D10 A/B measures" and the
SRTO_SRTLAPATCHES default as "initially 2". The A/B has run and selected 2, so both
readings are now wrong in the same direction: they present a settled default as
provisional.
@andrescera
andrescera merged commit 26e7867 into master Sep 21, 2026
18 checks passed
@andrescera
andrescera deleted the feat/srtla-options-1.5.7 branch September 22, 2026 17:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants