# Compatibility Matrix ## Mandatory Acceptance Matrix The deterministic acceptance matrix is driven by tester binaries, not by a dummy pipeline source. Run it with: ```bash cmake -B build -S . cmake --build build ./scripts/acceptance_standalone.sh ``` Covered rows: | Row | Protocol | Codec | Transport | Runner | |-----|----------|-------|-----------|--------| | 1 | RTP | H.264 | UDP RTP | `./scripts/acceptance_standalone.sh` | | 2 | RTP | H.265 | UDP RTP | `./scripts/acceptance_standalone.sh` | | 3 | RTMP | H.264 | `libavformat` | `./scripts/acceptance_standalone.sh` | | 4 | RTMP | H.265 | `libavformat` | `./scripts/acceptance_standalone.sh` | | 5 | RTMP | H.264 | `ffmpeg_process` | `./scripts/acceptance_standalone.sh` | | 6 | RTMP | H.265 | `ffmpeg_process` | `./scripts/acceptance_standalone.sh` | Notes: - RTMP is Enhanced RTMP only. - The custom RTMP packetizer and domestic mode are removed. - `encoder.backend` remains `auto|ffmpeg`; both resolve to FFmpeg. ## Optional Checks (Non-Blocking) These are useful interoperability checks, but they are not part of the mandatory acceptance gate: - `./scripts/rtmp_srs_smoke.sh` - `./scripts/live_srs_forward_smoke.sh ''` - manual WHEP playback through SRS - manual ZLMediaKit interoperability checks - live MCAP capture, validation, and paced replay ## Recording Coverage MCAP support is validated separately with: - `./build/mcap_reader_tester` - `./build/mcap_replay_tester` - `./scripts/replay_mcap.sh` Current recording scope: | Output | Codec | Notes | |--------|-------|-------| | MCAP `foxglove.CompressedVideo` | H.264 | Stored as Annex B access units | | MCAP `foxglove.CompressedVideo` | H.265 | Stored as Annex B access units | ## Current Defaults | Setting | Value | |---------|-------| | Encoder backend | `auto` -> FFmpeg | | RTMP transport | `libavformat` | | RTMP mode | Enhanced only | | Encoder device | `auto` | | Low-latency GOP | `30` | | B-frames | `0` | ## What Is No Longer Supported - GStreamer encoder backend - custom RTMP packetizer - RTMP domestic mode - dummy input flags in the main runtime - direct in-repo RTSP/WebRTC publishing