FEC Dependency Examples A Review of Existing Tools – January 29 th, 2008 Ali C. Begen
22 Ali C. Begen 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
33 Ali C. Begen 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
44 Ali C. Begen Tools Available to US RFC 3388 – Grouping of Media Lines in SDP RFC 4756 – FEC Grouping Semantics in SDP draft-ietf-mmusic-decoding-dependency
55 Ali C. Begen 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)
66 Ali C. Begen 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
77 Ali C. Begen Example: LAY a=group:DDP 1 2 m=video RTP/AVP a=rtpmap:94 H264/90000 a=rtpmap:194 H264/90000 a=mid:1 m=video RTP/AVP 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
88 Ali C. Begen Example: LAY a=group:DDP m=video RTP/AVP 94 a=mid:1 m=video RTP/AVP 95 a=mid:2 a=depend:95 lay 1:94 m=video RTP/AVP 96 a=mid:3 a=depend:96 lay 1:94 m=video 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
99 Ali C. Begen Example: MDC a=group:DDP m=video RTP/AVP 94 a=mid:1 a=depend:94 mdc 2:95 3:96 m=video RTP/AVP 95 a=mid:2 a=depend:95 mdc 1:94 3:96 m=video 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)
10 Ali C. Begen RFC 4756 – FEC Grouping Semantics a=group:FEC m=audio RTP/AVP 0 a=mid:1 m=audio RTP/AVP 100 a=mid:2 m=audio 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
11 Ali C. Begen 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 a=group:FEC 1 6 a=group:FEC This is not allowed by RFC 3388 But we can write a=group:FEC “group:FEC” line does not indicate any particular association
12 Ali C. Begen Pro-MPEG CoP3 2-D (Parity) Codes Column and Row FECs are additive and do not depend on each other We could write a=group:FEC 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 S #1 (PT:80, mid:1) FEC #1 R #1 (PT:90, mid:5) R #2 (PT:91, mid:6)
13 Ali C. Begen DVB Hybrid FEC (CoP3 Column + Raptor) 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 S #1 (PT:80, mid:1) FEC #1 R #1 (PT:90, mid:5) R #2 (PT:91, mid:6)
14 Ali C. Begen We could write a=group:FEC 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 Protecting a Group of Source Flows S #1 (PT:80, mid:1) FEC #1 R #1 (PT:90, mid:5) 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)
15 Ali C. Begen The following IS NOT allowed (per decoding-dependency draft) a=group:FEC a=group:DDP 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 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 Protecting a Group of Source Flows S #1 (PT:80, mid:1) FEC #1 S #2 (PT:81, mid:2) R #1 (PT:90, mid:5)R #2 (PT:91, mid:6) R #3 (PT:92, mid:7)
16 Ali C. Begen Protecting by Multiple FEC Schemes E.g.: FEC #1 CoP3 Column+Row FEC, FEC #2 Reed-Solomon a=group:FEC 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 R #1 (PT:90, mid:5) R #2 (PT:91, mid:6) S #1 (PT:80, mid:1) FEC #2 R #3 (PT:92, mid:7)
17 Ali C. Begen 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