Skip to content

Support RFC 6364 and IS-05 SMPTE 2022-5 FEC SDP#505

Open
thangldw wants to merge 2 commits into
sony:masterfrom
thangldw:fix/is05-fec
Open

Support RFC 6364 and IS-05 SMPTE 2022-5 FEC SDP#505
thangldw wants to merge 2 commits into
sony:masterfrom
thangldw:fix/is05-fec

Conversation

@thangldw

Copy link
Copy Markdown

Summary

This implements the layered FEC approach discussed in #38:

  • add structured RFC 6364 SDP support for FEC/UDP, UDP/FEC, FEC-FR, fec-source-flow, fec-repair-flow, and repair-window in sdp/;
  • map the IS-05-compatible SMPTE 2022-5 topology (one RTP source flow with one or two repair flows per transport leg) in nmos/sdp*;
  • keep RFC-only source IDs, encoding IDs, preference, SS-FSSI/FSSI, repair windows, and media stream IDs explicit in sdp_parameters rather than synthesizing them from IS-05 values;
  • resolve receiver fec_mode: auto to the highest configured dimension in the example node.

RFC / NMOS boundary

The generic SDP representation accepts the RFC 6364 ABNF, including optional parameters and empty FSSI element values. It validates numeric ranges and the RFC token/separator rules.

The NMOS layer deliberately handles only the form IS-05 can represent. RFC-valid multi-source groups remain available in the generic sdp/ JSON but are not converted to FEC transport parameters. Ambiguous/lossy cases, such as two repair flows with different destination addresses, are rejected because IS-05 exposes only one fec_destination_ip.

The fec_enabled field addition overlaps with #501. It is included here so this PR remains independently buildable from master; I will drop the duplicate during rebase if #501 merges first.

Tests

  • RFC example-style round trip covering optional source tag, preference, SS-FSSI/FSSI, empty FSSI values, and both repair-window units
  • malformed ABNF, range, ordering, and separator cases
  • exact IS-05 SMPTE 2022-5 example interpretation and text round trip
  • 2D generation/interpretation with two repair flows
  • unsupported topology, missing media reference, and unrepresentable destination-address cases
  • nmos-cpp-node build
  • full local suite: 2092 assertions in 164 test cases

Related to #38.

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.

1 participant