Re: [rtcweb] #27: Section 6.2 FEC

"rtcweb issue tracker" <> Mon, 26 August 2013 07:18 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id AB12121F99BD for <>; Mon, 26 Aug 2013 00:18:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -101.699
X-Spam-Status: No, score=-101.699 tagged_above=-999 required=5 tests=[AWL=-0.900, BAYES_00=-2.599, J_CHICKENPOX_14=0.6, J_CHICKENPOX_15=0.6, J_CHICKENPOX_18=0.6, USER_IN_WHITELIST=-100]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id UPZ8I5luuHiI for <>; Mon, 26 Aug 2013 00:18:23 -0700 (PDT)
Received: from ( [IPv6:2a01:3f0:1:2::30]) by (Postfix) with ESMTP id B585121F9980 for <>; Mon, 26 Aug 2013 00:18:22 -0700 (PDT)
Received: from localhost ([]:40866 ident=www-data) by with esmtp (Exim 4.80) (envelope-from <>) id 1VDr47-0002Fd-MA; Mon, 26 Aug 2013 09:18:19 +0200
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: rtcweb issue tracker <>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
X-Trac-Project: rtcweb
Date: Mon, 26 Aug 2013 07:18:19 -0000
Message-ID: <>
References: <>
X-Trac-Ticket-ID: 27
In-Reply-To: <>
X-SA-Exim-Scanned: No (on; SAEximRunCond expanded to false
Resent-Message-Id: <>
Resent-Date: Mon, 26 Aug 2013 00:18:22 -0700
Subject: Re: [rtcweb] #27: Section 6.2 FEC
X-Mailman-Version: 2.1.12
List-Id: Real-Time Communication in WEB-browsers working group list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 26 Aug 2013 07:18:23 -0000

#27: Section 6.2 FEC

Comment (by

 [Magnus Westerlund]

 Bernard, this is the WG consensus that we so far have arrived on. If you
 have a proposal regarding FEC, please make it and lets see if we can
 reach consensus on such a proposal.

 However, I fail to see how this is generally problematic. Retransmission
 will cover certain parts of the deployment cases when the transport RTT
 and delay does not prevent it from being able to repair in a timely
 fashion. FEC clearly covers transport characteristics where
 retransmission will show its shortcomings. If one want improved
 transport performance in those cases clearly a common implemented FEC
 solution is desired.

 [BA] FEC is discussed in Sections 1.1.7 and 3.3 of draft-roach-mmusic-
 unified-plan, with examples how it might be declared using SDP, so I found
 it a bit odd that draft-ietf-rtcweb-rtp-usage only had recommendations for
 RTX, not FEC.  For example, Section 1.1.7 says:

    For robust applications, techniques like RTX and FEC are used to
    protect media, and simulcast/layered coding can be used to provide
    support to heterogeneous receivers.  It needs to be possible to
    support these techniques, allow the recipient to optionally use or
    not use them on a source-by-source basis; and for simulcast/layered
    scenarios, to control which simulcast streams or layers are received.

 Here is what Section 3.3 says:

 3.3.  Handling of Simulcast, Forward Error Correction, and
       Retransmission Streams

    Simulcast refers to taking a single capture (e.g., a camera), and
    encoding it multiple times at different resolutions and / or frame
    rates.  For example, a device with a single HD camera may send one
    version of the video at full HD resolution, and a second version
    encoded at a low resolution.  This would allow a video conferencing
    bridge to be able to send the high resolution copy to some
    destination and low resolution copy to other destinations without
    having to recode the video at the conference bridge.

    Forward Error Correction (FEC) and Retransmission (RTX) streams are
    techniques that can provide stream robustness in the face of packet
    loss.  These approaches frequently make use of different payload
    types and different SSRC values than the stream to which they apply.

    In cases where a media source needs to correspond to more than one
    RTP flow, e.g.  RTX, FEC, or simulcast, the a=ssrc-group [RFC5576]
    concept is used to create a grouping of SSRCs for a single media
    stream track.  Each SSRC is declared using a=ssrc attributes, the
    same MSID is shared between the SSRCs, and the a=ssrc-group attribute
    defines the behavior of the grouped SSRCs.

    These groupings are used to perform demux of the incoming RTP streams
    and associate them (by SSRC) with their primary flows (modulo the
    behavior described in Section 3.2.1, if applicable).  This
    multiplexing of RTX and FEC in a single RTP session is already well-
    defined; RTX SSRC-multiplexing behavior is defined in [RFC4588], and
    FEC SSRC-multiplexing behavior is defined in [RFC5956].

    Note that both RTC and FEC also include SDP expressions that use
    different m= lines for the correction streams (cf.  [RFC4588],
    section 8.7 and [RFC5956], section 4.2).  These formats intend for
    correlation of streams to be based on transport addresses, which is
    inapplicable for bundled media streams.  Our specific proposal is:
    (1) bundling implementations will never generate such a format; and
    (2) bundling implementations MAY choose to accept SDP in such a
    format or MAY simply reject the repair streams and proceed as if the
    indicated repair format is not supported.

    For multi-resolution simulcast, we can create a similar ssrc-group,
    and adapt the imageattr attribute defined in [RFC6236] for the a=ssrc
    line attribute to indicate the send resolution for a given simulcast
    stream.  (This will be added to
    [I-D.westerlund-avtcore-rtp-simulcast], as outlined in Section 2,
    bullet 1).  In the example below, the SDP advertises a simulcast of a
    camera source at two different resolutions, as well as a screen-share
    source that supports RTX; a=ssrc-group is used to correlate the
    different SSRCs as part of a single media source.

    Note that a characteristic of this approach is that it does not allow
    for independently setting attributes for simulcast, FEC, and RTX
    streams aside from those in fmtp.  In particular, attributes such as
    ptime and framerate are shared between the streams that are grouped
    together for a simulcast group.

    m=video 62537 RTP/SAVPF 96       // main video
    a=msid:ma ta
    a=extmap:1 urn:ietf:params:rtp-hdrext:stream-correlator 15955
    a=rtpmap:96 VP8/90000
    a=ssrc:29154 imageattr:96 [x=1280,y=720]
    a=ssrc:47182 imageattr:96 [x=640,y=360]
    a=ssrc-group:SIMULCAST 29154 47182
    m=video 0 RTP/SAVPF 96 97          // slide video
    a=msid:ma tb
    a=extmap:1 urn:ietf:params:rtp-hdrext:stream-correlator 26267
    a=rtpmap:96 VP8/90000
    a=rtpmap:97 rtx/90000
    a=fmtp:97 apt=96;rtx-time=3000
    a=ssrc-group:FID 45982 9827        // FID provides SSRC correlation

    Providing explicit resolutions on a per-SSRC basis for SIMULCAST
    groupings allows an intermediary (such as a Media Translator
    [RFC5117]) to be able to select an appropriate SIMULCAST layer
    without inspecting the media stream, which could otherwise require
    decrypting and possibly partially decoding media packets.

 Reporter:                           |       Owner:  draft-ietf-rtcweb-rtp-          |
     Type:  defect                   |      Status:  new
 Priority:  major                    |   Milestone:  milestone1
Component:  rtp-usage                |     Version:  1.0
 Severity:  Active WG Document       |  Resolution:
 Keywords:                           |

Ticket URL: <>
rtcweb <>