From 80ad73154a22d8893cbd399057b988a55b1f1a58 Mon Sep 17 00:00:00 2001 From: YashasVM Date: Sun, 2 Aug 2026 16:24:24 +0530 Subject: [PATCH] spike(v4): document blocked transport decision --- docs/decisions/0001-v4-transport-blocked.md | 72 +++++++ .../v4-01-transport-audit/environment.json | 78 +++++++ .../v4-01-transport-audit/matrix.jsonl | 192 ++++++++++++++++++ spikes/transport/README.md | 24 +++ spikes/transport/audit.py | 162 +++++++++++++++ tests/test_v4_transport_audit.py | 67 ++++++ 6 files changed, 595 insertions(+) create mode 100644 docs/decisions/0001-v4-transport-blocked.md create mode 100644 docs/evidence/v4-01-transport-audit/environment.json create mode 100644 docs/evidence/v4-01-transport-audit/matrix.jsonl create mode 100644 spikes/transport/README.md create mode 100644 spikes/transport/audit.py create mode 100644 tests/test_v4_transport_audit.py diff --git a/docs/decisions/0001-v4-transport-blocked.md b/docs/decisions/0001-v4-transport-blocked.md new file mode 100644 index 0000000..8cbee63 --- /dev/null +++ b/docs/decisions/0001-v4-transport-blocked.md @@ -0,0 +1,72 @@ +# ADR 0001: V4 transport selection is blocked + +Status: blocked — no transport selected +Date: 2026-08-02 + +## Decision + +Neither custom-framed SRT message mode nor RTP/RTCP/SRTP is selected. Product +transport implementation must not begin from this spike. + +The required comparison cannot be run reproducibly from this repository and +host state. Selecting from the Phase 0 metadata impairment simulator would +violate `docs/v4-transport-benchmark.md`, which says simulated impairment is +harness validation rather than transport-selection evidence. + +## Reproduced blockers + +The checked-in audit reports these unmet gates: + +1. No pinned Windows x64 libsrt development package. +2. No pinned Windows x64 libsrtp2 development package. +3. No native custom-AU SRT and RTP/RTCP/SRTP probe exists. +4. No identical real H.264/HEVC AU corpus preserves source/decode timestamps, + sequence, codec-config generation, orientation, payload bytes and CRC. +5. No target Wi-Fi impairment topology/configuration was supplied. Local JSONL + loss injection is not a substitute. + +The V4 envelope documented before this spike also omits orientation even though +the timestamp and master architecture require it. The native probe/corpus must +resolve and version that field before measurements begin. + +## Commands and raw evidence + +Run from the repository root: + +```powershell +python spikes/transport/audit.py --output out/transport-audit +python -m pytest tests/test_v4_transport_audit.py +``` + +The first command intentionally exits 2 while blocked and writes: + +- `out/transport-audit/environment.json`: versions, queue declarations and + individual prerequisite verdicts. +- `out/transport-audit/matrix.jsonl`: all 192 candidate/codec/profile/case/seed + cells, explicitly `NOT_RUN` with blocker IDs. + +The checked-in reproduction from this host is under +`docs/evidence/v4-01-transport-audit/`. These files are prerequisite inventory, +not raw transport measurements. The audit deliberately cannot turn a cell into +a pass: native linking, real payload/CRC validation and target-network behavior +must be established by the future benchmark runner. + +The matrix is the documented superset: clean, random loss, burst loss+jitter, +explicit reorder, 500 ms outage, 5 s outage, bitrate step and isolated reconnect; +both codecs; 4x1080p30 and 2x1080p60; three seeds. + +## Acceptance gate to unblock + +Pin the two native libraries; check in a spike-only native probe; provide the +versioned real-AU corpus and target topology; then run every raw cell. Only the +measured leader may run the required one-hour H.264, HEVC and 1080p60 soaks, +including isolated camera failure. A leader may be selected only if timestamps, +sequence, codec config, orientation and CRC are preserved; all queues remain +within declared capacity/deadline/policy; gaps are explicit; memory slope is at +most 1 MiB/hour; and copy, CPU, private-memory and maintenance evidence passes. + +## Scope and rollback + +This change adds audit/test/documentation files only. It does not implement a +transport, re-encode media, or touch Android, OBS, engine, or legacy production +paths. Rollback is removal of `spikes/transport`, its test, and this ADR. diff --git a/docs/evidence/v4-01-transport-audit/environment.json b/docs/evidence/v4-01-transport-audit/environment.json new file mode 100644 index 0000000..2cc0235 --- /dev/null +++ b/docs/evidence/v4-01-transport-audit/environment.json @@ -0,0 +1,78 @@ +{ + "schema_version": 4, + "commit": "6c65476a7245e479a0cc9c2bfa6bd167d6cbd875", + "platform": "Windows-10-10.0.26200-SP0", + "python": "3.11.9", + "ffmpeg": "ffmpeg version 8.0.1-full_build-www.gyan.dev Copyright (c) 2000-2025 the FFmpeg developers", + "cmake": "cmake version 4.2.3", + "vcpkg_root": null, + "queues": [ + { + "name": "encoded_au_ingress_per_session", + "capacity": 120, + "deadline_ms": 150, + "overflow_policy": "reject_past_deadline_and_declare_gap" + }, + { + "name": "received_datagrams_per_session", + "capacity": 2048, + "deadline_ms": 150, + "overflow_policy": "discard_past_deadline_and_declare_gap" + }, + { + "name": "fragment_reassembly_per_session", + "capacity": 120, + "capacity_bytes": 67108864, + "max_fragments_per_au": 4096, + "deadline_ms": 150, + "overflow_policy": "expire_incomplete_au_and_declare_gap" + }, + { + "name": "assembled_video_per_session", + "capacity": 120, + "deadline_ms": 150, + "overflow_policy": "drop_oldest_non_key_request_keyframe_declare_gap" + }, + { + "name": "retransmit_cache_per_session", + "capacity": 4096, + "deadline_ms": 120, + "overflow_policy": "expire_oldest_past_deadline_and_count_range" + }, + { + "name": "telemetry", + "capacity": 1024, + "deadline_ms": 1000, + "overflow_policy": "coalesce_gauges_retain_fault_transitions" + } + ], + "prerequisites": [ + { + "gate": "pinned_windows_libsrt", + "pass": false, + "detail": "VCPKG_ROOT is unset" + }, + { + "gate": "pinned_windows_libsrtp2", + "pass": false, + "detail": "VCPKG_ROOT is unset" + }, + { + "gate": "native_both_candidate_probe", + "pass": false, + "detail": "native probe absent" + }, + { + "gate": "identical_real_au_corpus", + "pass": false, + "detail": "no --corpus supplied" + }, + { + "gate": "target_wifi_impairment_topology", + "pass": false, + "detail": "no --topology supplied" + } + ], + "inputs_declared": false, + "decision": "NOT_RUN" +} diff --git a/docs/evidence/v4-01-transport-audit/matrix.jsonl b/docs/evidence/v4-01-transport-audit/matrix.jsonl new file mode 100644 index 0000000..652c303 --- /dev/null +++ b/docs/evidence/v4-01-transport-audit/matrix.jsonl @@ -0,0 +1,192 @@ +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"clean","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"clean","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"clean","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"random-1","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"random-1","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"random-1","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"burst-3","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"burst-3","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"burst-3","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"reorder","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"reorder","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"reorder","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-500","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-500","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-500","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-5000","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-5000","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-5000","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"bitrate-step","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"bitrate-step","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"bitrate-step","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"isolated-reconnect","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"isolated-reconnect","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"isolated-reconnect","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"clean","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"clean","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"clean","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"random-1","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"random-1","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"random-1","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"burst-3","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"burst-3","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"burst-3","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"reorder","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"reorder","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"reorder","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-500","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-500","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-500","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-5000","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-5000","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-5000","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"bitrate-step","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"bitrate-step","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"bitrate-step","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"isolated-reconnect","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"isolated-reconnect","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"isolated-reconnect","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"clean","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"clean","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"clean","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"random-1","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"random-1","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"random-1","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"burst-3","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"burst-3","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"burst-3","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"reorder","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"reorder","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"reorder","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-500","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-500","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-500","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-5000","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-5000","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-5000","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"bitrate-step","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"bitrate-step","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"bitrate-step","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"isolated-reconnect","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"isolated-reconnect","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"isolated-reconnect","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"clean","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"clean","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"clean","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"random-1","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"random-1","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"random-1","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"burst-3","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"burst-3","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"burst-3","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"reorder","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"reorder","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"reorder","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-500","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-500","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-500","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-5000","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-5000","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-5000","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"bitrate-step","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"bitrate-step","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"bitrate-step","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"isolated-reconnect","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"isolated-reconnect","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"srt-au","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"isolated-reconnect","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"clean","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"clean","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"clean","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"random-1","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"random-1","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"random-1","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"burst-3","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"burst-3","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"burst-3","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"reorder","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"reorder","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"reorder","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-500","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-500","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-500","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-5000","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-5000","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-5000","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"bitrate-step","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"bitrate-step","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"bitrate-step","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"isolated-reconnect","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"isolated-reconnect","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"isolated-reconnect","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"clean","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"clean","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"clean","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"random-1","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"random-1","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"random-1","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"burst-3","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"burst-3","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"burst-3","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"reorder","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"reorder","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"reorder","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-500","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-500","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-500","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-5000","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-5000","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-5000","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"bitrate-step","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"bitrate-step","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"bitrate-step","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"isolated-reconnect","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"isolated-reconnect","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"h264","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"isolated-reconnect","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"clean","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"clean","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"clean","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"random-1","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"random-1","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"random-1","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"burst-3","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"burst-3","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"burst-3","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"reorder","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"reorder","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"reorder","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-500","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-500","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-500","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-5000","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-5000","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"outage-5000","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"bitrate-step","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"bitrate-step","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"bitrate-step","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"isolated-reconnect","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"isolated-reconnect","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":30,"streams":4},"case":"isolated-reconnect","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"clean","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"clean","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"clean","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"random-1","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"random-1","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"random-1","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"burst-3","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"burst-3","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"burst-3","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"reorder","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"reorder","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"reorder","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-500","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-500","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-500","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-5000","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-5000","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"outage-5000","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"bitrate-step","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"bitrate-step","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"bitrate-step","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"isolated-reconnect","seed":1,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"isolated-reconnect","seed":7,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} +{"schema_version":4,"candidate":"rtp-srtp","codec":"hevc","profile":{"width":1920,"height":1080,"fps":60,"streams":2},"case":"isolated-reconnect","seed":19,"result":"NOT_RUN","blockers":["pinned_windows_libsrt","pinned_windows_libsrtp2","native_both_candidate_probe","identical_real_au_corpus","target_wifi_impairment_topology"]} diff --git a/spikes/transport/README.md b/spikes/transport/README.md new file mode 100644 index 0000000..783f84c --- /dev/null +++ b/spikes/transport/README.md @@ -0,0 +1,24 @@ +# V4 transport decision spike + +This directory contains decision-spike tooling only. It is not a product +transport and is not linked by Android, OBS, or the V4 engine. + +`audit.py` records whether a host has the minimum inputs needed to run the +native custom-framed SRT versus RTP/RTCP/SRTP comparison. When a prerequisite +is absent it emits the complete matrix as `NOT_RUN`; it never substitutes the +Phase 0 metadata simulator for native transport evidence. + +This is a prerequisite inventory, not raw transport-result evidence. Even when +all paths are declared, it does not validate native linking, corpus payloads or +network behavior and therefore never marks a matrix cell passed. + +```powershell +python spikes/transport/audit.py --output out/transport-audit +python -m pytest tests/test_v4_transport_audit.py +``` + +To become runnable, the spike still needs all of the following checked in or +provided explicitly: pinned Windows x64 libsrt and libsrtp2 development +packages, a native probe for both candidates, an extracted real H.264/HEVC AU +corpus with source timestamps/config/orientation, and a documented target Wi-Fi +impairment topology. See `docs/decisions/0001-v4-transport-blocked.md`. diff --git a/spikes/transport/audit.py b/spikes/transport/audit.py new file mode 100644 index 0000000..4005d32 --- /dev/null +++ b/spikes/transport/audit.py @@ -0,0 +1,162 @@ +"""Emit a reproducible, exhaustive V4-01 prerequisite and NOT_RUN audit.""" + +from __future__ import annotations + +import argparse +import json +import os +import platform +import shutil +import subprocess +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[2] +CASES = ( + "clean", + "random-1", + "burst-3", + "reorder", + "outage-500", + "outage-5000", + "bitrate-step", + "isolated-reconnect", +) +CANDIDATES = ("srt-au", "rtp-srtp") +CODECS = ("h264", "hevc") +PROFILES = ((4, 30), (2, 60)) +SEEDS = (1, 7, 19) + +# These are declarations for the proposed native probe. No queue is created by +# this audit tool. A future implementation must expose depth/HWM/overflow for +# every declaration and must not add undeclared queues. +QUEUES = ( + {"name": "encoded_au_ingress_per_session", "capacity": 120, + "deadline_ms": 150, "overflow_policy": "reject_past_deadline_and_declare_gap"}, + {"name": "received_datagrams_per_session", "capacity": 2048, + "deadline_ms": 150, "overflow_policy": "discard_past_deadline_and_declare_gap"}, + {"name": "fragment_reassembly_per_session", "capacity": 120, + "capacity_bytes": 67108864, "max_fragments_per_au": 4096, + "deadline_ms": 150, "overflow_policy": "expire_incomplete_au_and_declare_gap"}, + {"name": "assembled_video_per_session", "capacity": 120, + "deadline_ms": 150, "overflow_policy": "drop_oldest_non_key_request_keyframe_declare_gap"}, + {"name": "retransmit_cache_per_session", "capacity": 4096, + "deadline_ms": 120, "overflow_policy": "expire_oldest_past_deadline_and_count_range"}, + {"name": "telemetry", "capacity": 1024, + "deadline_ms": 1000, "overflow_policy": "coalesce_gauges_retain_fault_transitions"}, +) + + +def command_version(command: str, *arguments: str) -> str | None: + executable = shutil.which(command) + if executable is None: + return None + try: + result = subprocess.run( + [executable, *arguments], capture_output=True, text=True, check=False, + timeout=15, + ) + except (OSError, subprocess.TimeoutExpired) as error: + return f"unavailable: {error}" + output = (result.stdout or result.stderr).splitlines() + return output[0].strip() if output else f"exit={result.returncode}" + + +def find_corpus(corpus: Path | None) -> tuple[bool, str]: + if corpus is None: + return False, "no --corpus supplied" + manifest = corpus / "manifest.json" + if not manifest.is_file(): + return False, f"missing {manifest}" + try: + data = json.loads(manifest.read_text(encoding="utf-8")) + except (OSError, json.JSONDecodeError) as error: + return False, f"invalid corpus manifest: {error}" + required = {"codec", "sequence", "source_time_ns", "decode_time_ns", + "codec_config_generation", "orientation", "payload_bytes", "payload_crc32"} + fields = set(data.get("access_unit_fields", [])) + if not required <= fields: + return False, f"manifest missing AU fields: {sorted(required - fields)}" + if not data.get("real_encoded_payloads", False): + return False, "manifest does not attest real encoded payloads" + return True, "real AU manifest present" + + +def prerequisites(corpus: Path | None, topology: Path | None) -> list[dict[str, object]]: + vcpkg_root = os.environ.get("VCPKG_ROOT") + installed = Path(vcpkg_root) / "installed" / "x64-windows" if vcpkg_root else None + srt = bool(installed and (installed / "include" / "srt" / "srt.h").is_file()) + srtp = bool(installed and (installed / "include" / "srtp2" / "srtp.h").is_file()) + corpus_ok, corpus_detail = find_corpus(corpus) + topology_ok = bool(topology and topology.is_file()) + native_probe = (ROOT / "spikes" / "transport" / "native" / "CMakeLists.txt").is_file() + return [ + {"gate": "pinned_windows_libsrt", "pass": srt, + "detail": str(installed) if installed else "VCPKG_ROOT is unset"}, + {"gate": "pinned_windows_libsrtp2", "pass": srtp, + "detail": str(installed) if installed else "VCPKG_ROOT is unset"}, + {"gate": "native_both_candidate_probe", "pass": native_probe, + "detail": "native/CMakeLists.txt" if native_probe else "native probe absent"}, + {"gate": "identical_real_au_corpus", "pass": corpus_ok, "detail": corpus_detail}, + {"gate": "target_wifi_impairment_topology", "pass": topology_ok, + "detail": str(topology) if topology else "no --topology supplied"}, + ] + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--output", type=Path, required=True) + parser.add_argument("--corpus", type=Path) + parser.add_argument("--topology", type=Path) + args = parser.parse_args() + args.output.mkdir(parents=True, exist_ok=True) + + gates = prerequisites(args.corpus, args.topology) + ready = all(bool(gate["pass"]) for gate in gates) + fingerprint = { + "schema_version": 4, + "commit": subprocess.run( + ["git", "rev-parse", "HEAD"], cwd=ROOT, capture_output=True, + text=True, check=True, + ).stdout.strip(), + "platform": platform.platform(), + "python": platform.python_version(), + "ffmpeg": command_version("ffmpeg", "-version"), + "cmake": command_version("cmake", "--version"), + "vcpkg_root": os.environ.get("VCPKG_ROOT"), + "queues": QUEUES, + "prerequisites": gates, + # This is an input inventory, not validation of library ABI/linking, + # payload CRCs, native protocol behavior, or the network topology. + "inputs_declared": ready, + "decision": "NOT_RUN", + } + (args.output / "environment.json").write_text( + json.dumps(fingerprint, indent=2) + "\n", encoding="utf-8" + ) + + with (args.output / "matrix.jsonl").open("w", encoding="utf-8", newline="\n") as output: + for candidate in CANDIDATES: + for codec in CODECS: + for streams, fps in PROFILES: + for case in CASES: + for seed in SEEDS: + output.write(json.dumps({ + "schema_version": 4, + "candidate": candidate, + "codec": codec, + "profile": {"width": 1920, "height": 1080, + "fps": fps, "streams": streams}, + "case": case, + "seed": seed, + "result": "NOT_RUN", + "blockers": [gate["gate"] for gate in gates if not gate["pass"]], + }, separators=(",", ":")) + "\n") + + print(json.dumps({"inputs_declared": ready, "output": str(args.output), + "matrix_cells": len(CANDIDATES) * len(CODECS) * len(PROFILES) * len(CASES) * len(SEEDS)})) + return 0 if ready else 2 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tests/test_v4_transport_audit.py b/tests/test_v4_transport_audit.py new file mode 100644 index 0000000..ac9743c --- /dev/null +++ b/tests/test_v4_transport_audit.py @@ -0,0 +1,67 @@ +import importlib.util +import json +import subprocess +import sys +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +SPEC = importlib.util.spec_from_file_location("transport_audit", ROOT / "spikes/transport/audit.py") +assert SPEC and SPEC.loader +AUDIT = importlib.util.module_from_spec(SPEC) +SPEC.loader.exec_module(AUDIT) + + +def test_all_planned_queues_declare_capacity_deadline_and_policy() -> None: + assert AUDIT.QUEUES + assert len({queue["name"] for queue in AUDIT.QUEUES}) == len(AUDIT.QUEUES) + for queue in AUDIT.QUEUES: + assert isinstance(queue["capacity"], int) and queue["capacity"] > 0 + assert isinstance(queue["deadline_ms"], int) and queue["deadline_ms"] > 0 + assert queue["overflow_policy"] + + +def test_missing_prerequisites_emit_exhaustive_not_run_matrix(tmp_path: Path) -> None: + output = tmp_path / "audit" + result = subprocess.run( + [sys.executable, str(ROOT / "spikes/transport/audit.py"), "--output", str(output)], + cwd=ROOT, capture_output=True, text=True, check=False, + ) + assert result.returncode == 2 + environment = json.loads((output / "environment.json").read_text(encoding="utf-8")) + assert environment["inputs_declared"] is False + rows = [json.loads(line) for line in (output / "matrix.jsonl").read_text(encoding="utf-8").splitlines()] + assert len(rows) == 2 * 2 * 2 * 8 * 3 + assert {row["result"] for row in rows} == {"NOT_RUN"} + assert {row["candidate"] for row in rows} == {"srt-au", "rtp-srtp"} + assert {row["codec"] for row in rows} == {"h264", "hevc"} + assert {row["case"] for row in rows} == set(AUDIT.CASES) + assert {row["seed"] for row in rows} == set(AUDIT.SEEDS) + assert {(row["profile"]["streams"], row["profile"]["fps"]) for row in rows} == set(AUDIT.PROFILES) + tuples = { + (row["candidate"], row["codec"], row["profile"]["streams"], + row["profile"]["fps"], row["case"], row["seed"]) + for row in rows + } + assert tuples == { + (candidate, codec, streams, fps, case, seed) + for candidate in AUDIT.CANDIDATES + for codec in AUDIT.CODECS + for streams, fps in AUDIT.PROFILES + for case in AUDIT.CASES + for seed in AUDIT.SEEDS + } + assert all(row["blockers"] for row in rows) + + +def test_corpus_requires_preservation_fields_and_real_payload_attestation(tmp_path: Path) -> None: + corpus = tmp_path / "corpus" + corpus.mkdir() + (corpus / "manifest.json").write_text(json.dumps({ + "real_encoded_payloads": True, + "access_unit_fields": [ + "codec", "sequence", "source_time_ns", "decode_time_ns", + "codec_config_generation", "orientation", "payload_bytes", "payload_crc32", + ], + }), encoding="utf-8") + assert AUDIT.find_corpus(corpus) == (True, "real AU manifest present")