open-standards/.github/wai-conformance/verifiers/sdp-caps.sh
Transaction Science b19e078cc3 wai: capability attributes in a WHEP offer, so the gateway forwards each player the rendition its sink dispatches first
live-ingest §9.5: a WAI-aware WHEP player writes, per media section of its offer, the WAI
capabilities its sink dispatches, in its dispatch order, as SDP media capabilities
(RFC 6871) under capability negotiation (RFC 5939): a=csup:med-v0, then for each capability
§5.1 carries over WebRTC (wai.video.avc, vp8, vp9, av1, wai.audio.opus.packet) that the
section offers, an a=rmcap, an a=mfcap of its fmtp, and an a=pcfg whose number gives the
order. The egress gateway reads them back, refuses with 422 an offer whose capability
attributes do not parse or do not hold together (caps_malformed, caps_number_reused,
caps_config_reused, caps_unknown_capability, caps_payload_type, caps_option_missing,
caps_unsupported, caps_too_many; §9.5 and §14), forwards for each section the rendition the
first advertised capability names at or below the grant's max_layer, answered with a=acfg,
and the floor where nothing advertised is published. §17 records that joule-moq-ingest does
not read them yet.

wai::sdp_caps: read, Offer::advertised, pick and Pick::acfg, write. Its tests replay
live-conformance/sdp-caps/vectors.json (offers read and refused with every reason, picks,
offers written byte for byte and read back), write and read back every order of the video
capabilities, and hold §9.5's table and reasons and §14's to the module.
live-conformance/sdp_caps_verify.py, written from §9.5 and the RFCs' grammars and sharing no
code with wai-rs, recomputes every case and requires every mutated copy to fail.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-09 16:08:15 -05:00

21 lines
1.4 KiB
Shell

# step: SDP capability attributes · wai-rs sdp_caps and sdp_caps_verify.py
# order: 471
# paths: wai/extensions/live-ingest.md
# independent: sdp-caps live python3 -I live-conformance/sdp_caps_verify.py live-conformance/sdp-caps
#
# SDP capability attributes in a WHEP offer (extensions/live-ingest.md §9.5): the reference
# module's tests (live-conformance/sdp-caps/vectors.json replayed: every offer read or refused
# with its reason, every pick with its a=acfg line, every offer written byte for byte and read
# back as the capabilities written, in order; every order of the video capabilities written
# and read back; the grammar's edges; and §9.5's table and reasons, and §14's, held to the
# module); and, in the step of every independent verifier, the corpus's second
# implementation, sdp_caps_verify.py, written from §9.5's text and the grammars of RFC 5939
# and RFC 6871 and sharing no code with wai-rs, which reads §9.5's table and reasons,
# recomputes every case and requires every mutated copy of the corpus to fail; standard
# library only, run isolated (-I).
#
# The paths this step brings to the workflow's trigger, and why:
# wai/extensions/live-ingest.md: sdp_caps::tests and sdp_caps_verify.py read §9.5's table and
# reasons and §14's reasons.
set -euo pipefail
(cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --lib sdp_caps::)