170 likes | 246 Views
FEC Dependency Examples A Review of Existing Tools – January 29 th , 2008. Ali C. Begen abegen@cisco.com. 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
E N D
FEC Dependency ExamplesA Review of Existing Tools – January 29th, 2008 Ali C. Begen abegen@cisco.com
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
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
Tools Available to US • RFC 3388 – Grouping of Media Lines in SDP • RFC 4756 – FEC Grouping Semantics in SDP • draft-ietf-mmusic-decoding-dependency
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 (while version-00 seems to be solely RTP-based)
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
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
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
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)
RFC 4756 – FEC Grouping Semantics a=group:FEC 1 2 3 m=audio 30000 RTP/AVP 0 a=mid:1 m=audio 30002 RTP/AVP 100 a=mid:2 m=audio 30004 RTP/AVP 102 a=mid:3 • “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
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
Pro-MPEG CoP3 2-D (Parity) Codes R #1 (PT:90, mid:5) • Column and Row FECs are additive and do not depend on 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=depend:90 mdc 6:91 a=mid:6 % Row FEC a=depend:91 mdc 5:90 This works FEC #1 S #1 (PT:80, mid:1) R #2 (PT:91, mid:6)
DVB Hybrid FEC (CoP3 Column + Raptor) R #1 (PT:90, mid:5) • DVB uses a hybrid combination of CoP3 Column and Raptor codes • The Hybrid Decoding Procedure: • If there are missing source packet(s) • Decode CoP3 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 FEC #1 S #1 (PT:80, mid:1) R #2 (PT:91, mid:6)
Protecting a Group of Source Flows R #1 (PT:90, mid:5) • 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=depend:90 mdc 6:91 a=mid:6 % Repair flow #2 a=depend:91 mdc 5:90 OR a=depend:91 lay 5:90 This works, too S #1 (PT:80, mid:1) FEC #1 R #2 (PT:91, mid:6) S #2 (PT:81, mid:2) R #1 (PT:90, mid:5) R #2 (PT:91, mid:6) R #1 (PT:90, mid:5) R #2 (PT:91, mid:6)
Protecting a Group of Source Flows R #1 (PT:90, mid:5) R #2 (PT:91, mid:6) • The following IS NOT allowed (per decoding-dependency draft) a=group:FEC 1 2 5 6 7 a=group:DDP 5 6 7 a=depend:90 mdc 6:91 a=depend:91 mdc 5:90 We cannot mix lay and mdc in one DDP a=depend:92 lay 5:90 • The following IS NOT allowed, either (per RFC 3388) a=group:FEC 1 2 5 6 7 a=group:DDP 5 6 a=group:DDP 5 7 mid:5 MUST NOT appear twice in a DDP line a=depend:90 mdc 6:91 a=depend:91 mdc 5:90 a=depend:92 lay 5:90 S #1 (PT:80, mid:1) FEC #1 S #2 (PT:81, mid:2) R #3 (PT:92, mid:7)
Protecting by Multiple FEC Schemes R #1 (PT:90, mid:5) • E.g.: FEC #1 CoP3 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=depend:90 mdc 6:91 a=mid:6 % Repair flow #2 a=depend:91 mdc 5:90 a=mid:7 % Repair flow #3 This works, too FEC #1 S #1 (PT:80, mid:1) R #2 (PT:91, mid:6) FEC #2 R #3 (PT:92, mid:7)
Conclusion • decoding-dependency draft offers • A signaling mechanism for “lay” dependencies • A signaling mechanism for “mdc” dependencies (additivity) • But, it does not support • Using “lay” and “mdc” in the same DDP group We won’t need “lay” dependency between the repair flows, we just need additivity • Prioritization of streams We need prioritization among the repair flows