FEC Dependency Examples A Review of Existing Tools Ali C. Begen [email protected] FEC Framework Flexibility • Requirement: One FEC Framework instance per FEC scheme • We’d like to support flexible grouping – A source flow MAY be protected by multiple instances – Within an instance, multiple repair flows MAY exist – Source flows MAY be grouped prior to FEC protection • If multiple repair flows are associated with a source flow, we’d like to support – Additive repair flows so that they MAY be used together – Prioritization among the repair flows Ali C. Begen ([email protected]) 2 Can We Do This with Existing Tools? _____| FEC FRAMEWORK / | 4: Repair Flow / | 5: Repair Flow / SOURCE FLOWS / __| FEC FRAMEWORK 1: Source Flow |___/ |---' | 6: Repair Flow 2: Source Flow | |____ 3: Source Flow | \ | FEC FRAMEWORK \ | 7: Repair Flow \_| 8: Repair Flow | 9: Repair Flow Ali C. Begen ([email protected]) 3 Tools Available to US • RFC 3388 – Grouping of Media Lines in SDP • RFC 4756 – FEC Grouping Semantics in SDP • draft-ietf-mmusic-decoding-dependency Ali C. Begen ([email protected]) 4 draft-ietf-mmusic-decoding-dependency • Goal: Propose a generic solution for SDP grouping semantics for signaling decoding dependency • Two Decoding Dependencies (DDP) are defined: – LAY: Layered coding • Strict dependence • Directed graph – MDC: Multiple description coding • No dependence but there is a mutual benefit • Not a directed graph • The mechanism is transport protocol independent Ali C. Begen ([email protected]) 5 Requirements • All media streams in a DDP group MUST have the same decoding dependency We cannot mix LAY and MDC in one DDP group • In offer/answer model, the media streams MUST have the same dependency structure Ali C. Begen ([email protected]) 6 Example: LAY a=group:DDP 1 2 m=video 40000 RTP/AVP 94 194 a=rtpmap:94 H264/90000 a=rtpmap:194 H264/90000 a=mid:1 m=video 40002 RTP/AVP 95 195 a=rtpmap:95 SVC/90000 a=rtpmap:195 SVC/90000 a=mid:2 a=depend:95 lay 1:94,195 lay 1:194 • In other words – PT 95 depends on PT 94 – PT 195 depends on PT 194 Ali C. Begen ([email protected]) 7 Example: LAY a=group:DDP 1 2 3 4 m=video 40000 RTP/AVP 94 a=mid:1 m=video 40002 RTP/AVP 95 a=mid:2 a=depend:95 lay 1:94 m=video 40004 RTP/AVP 96 a=mid:3 a=depend:96 lay 1:94 m=video 40006 RTP/AVP 97 a=mid:4 a=depend:97 lay 1:94 3:96 Multiple dependencies • In other words – PT 95 depends on PT 94 – PT 96 depends on PT 94 – PT 97 depends on both PT 94 and 96 Ali C. Begen ([email protected]) 8 Example: MDC a=group:DDP 1 2 3 m=video 40000 RTP/AVP 94 a=mid:1 a=depend:94 mdc 2:95 3:96 m=video 40002 RTP/AVP 95 a=mid:2 a=depend:95 mdc 1:94 3:96 m=video 40004 RTP/AVP 96 a=mid:3 a=depend:96 mdc 1:94 2:95 • In other words – PT 94, 95 and 96 don’t depend on each other – They help each other to improve quality (i.e., they are additive) Ali C. Begen ([email protected]) 9 RFC 4756 – FEC Grouping Semantics a=group:FEC 1 m=audio 30000 a=mid:1 m=audio 30002 a=mid:2 m=audio 30004 a=mid:3 2 3 RTP/AVP 0 RTP/AVP 100 RTP/AVP 102 • “a=group:FEC” line MAY have – One or more source flows sharing the FEC flow(s) – We want this – One or more repair flows – We want this Ali C. Begen ([email protected]) 10 RFC 3388 – Grouping Requirements • RFC 3388 states that An “m” line identified by its “mid” attribute MUST NOT appear in more than one “a=group” line using the same semantics • So, what about the example given in slide 3? a=group:FEC 1 2 4 5 a=group:FEC 1 6 a=group:FEC 2 3 7 8 9 This is not allowed by RFC 3388 But we can write a=group:FEC 1 2 3 4 5 6 7 8 9 “group:FEC” line does not indicate any particular association Ali C. Begen ([email protected]) 11 Pro-MPEG CoP3 2-D (Parity) Codes R #1 (PT:90, mid:5) S #1 (PT:80, mid:1) FEC #1 R #2 (PT:91, mid:6) • Column and Row FEC are additive and do not depend each other • We could write a=group:FEC 1 5 6 Group source & repair flows a=group:DDP 5 6 Group repair flows a=mid:1 % Source flow a=mid:5 % Column FEC a=mid:6 % Row FEC a=depend:90 mdc 6:91 a=depend:91 mdc 5:90 This works Ali C. Begen ([email protected]) 12 DVB Hybrid FEC (CoP3 Column + Raptor) R #1 (PT:90, mid:5) S #1 (PT:80, mid:1) FEC #1 R #2 (PT:91, mid:6) • DVB uses a hybrid combination of CoP3 Column and Raptor codes • The Hybrid Decoding Procedure: – If there are missing source packet(s) • Decode CoP3 Column FEC packets • Decode Raptor FEC packets • Convert CoP3 packets to Raptor packets and try decoding again • While CoP3 packets are used for recovery before Raptor packets, there is no dependency between the repair flows They can be considered “additive” So, we can use an SDP similar to the one in the previous slide Ali C. Begen ([email protected]) 13 Protecting a Group of Source Flows R #1 (PT:90, mid:5) S #1 (PT:80, mid:1) FEC #1 S #2 (PT:81, mid:2) R #2 (PT:91, mid:6) • We could write a=group:FEC 1 2 5 6 Group source & repair flows a=group:DDP 5 6 Group repair flows a=mid:1 % Source flow #1 a=mid:2 % Source flow #2 a=mid:5 % Repair flow #1 a=mid:6 % Repair flow #2 a=depend:90 mdc 6:91 R #1 (PT:90, mid:5) R #2 (PT:91, mid:6) a=depend:91 mdc 5:90 OR a=depend:91 lay 5:90 R #1 (PT:90, mid:5) R #2 (PT:91, mid:6) This works, too Ali C. Begen ([email protected]) 14 Protecting a Group of Source Flows R #1 (PT:90, mid:5) S #1 (PT:80, mid:1) R #2 (PT:91, mid:6) FEC #1 S #2 (PT:81, mid:2) • The following IS NOT allowed (per decoding-dependency draft) a=group:FEC a=group:DDP a=depend:90 a=depend:91 a=depend:92 • R #3 (PT:92, mid:7) 1 2 5 6 mdc mdc lay 5 6 7 7 6:91 5:90 We cannot mix lay and mdc in one DDP 5:90 The following IS NOT allowed, either (per RFC 3388) a=group:FEC a=group:DDP a=group:DDP a=depend:90 a=depend:91 a=depend:92 Ali C. Begen ([email protected]) 1 2 5 6 5 7 mdc mdc lay 5 6 7 mid:5 MUST NOT appear twice in a DDP line 6:91 5:90 5:90 15 Protecting by Multiple FEC Schemes R #1 (PT:90, mid:5) S #1 (PT:80, mid:1) FEC #1 R #2 (PT:91, mid:6) FEC #2 R #3 (PT:92, mid:7) • E.g.: FEC#1 CoP2 Column+Row FEC, FEC#2 Reed-Solomon a=group:FEC 1 5 6 7 Group source & repair flow a=group:DDP 5 6 Group repair flows a=mid:1 % Source flow #1 a=mid:5 % Repair flow #1 a=mid:6 % Repair flow #2 a=mid:7 % Repair flow #3 a=depend:90 mdc 6:91 a=depend:91 mdc 5:90 This works, too Ali C. Begen ([email protected]) 16 Conclusion • decoding-dependency draft offers – A signaling mechanism for “lay” dependencies – A signaling mechanism for “mdc” dependencies (additiveness) • But, it does not support – Using “lay” and “mdc” in the same DDP group – Prioritization of streams Ali C. Begen ([email protected]) 17
© Copyright 2026 Paperzz