1 / 17

FEC Dependency Examples A Review of Existing Tools – January 29 th , 2008

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

Download Presentation

FEC Dependency Examples A Review of Existing Tools – January 29 th , 2008

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. FEC Dependency ExamplesA Review of Existing Tools – January 29th, 2008 Ali C. Begen abegen@cisco.com

  2. 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

  3. 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

  4. Tools Available to US • RFC 3388 – Grouping of Media Lines in SDP • RFC 4756 – FEC Grouping Semantics in SDP • draft-ietf-mmusic-decoding-dependency

  5. 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)

  6. 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

  7. 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

  8. 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

  9. 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)

  10. 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

  11. 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

  12. 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)

  13. 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)

  14. 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)

  15. 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)

  16. 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)

  17. 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

More Related