Re: [rtcweb] SDP and ssrc-group,

Peter Thatcher <pthatcher@google.com> Wed, 22 October 2014 19:40 UTC

Return-Path: <pthatcher@google.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D01691AD3C6 for <rtcweb@ietfa.amsl.com>; Wed, 22 Oct 2014 12:40:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.412
X-Spam-Level:
X-Spam-Status: No, score=0.412 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_12=0.6, J_CHICKENPOX_15=0.6, J_CHICKENPOX_16=0.6, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1ufewnCz7TzQ for <rtcweb@ietfa.amsl.com>; Wed, 22 Oct 2014 12:40:34 -0700 (PDT)
Received: from mail-vc0-x233.google.com (mail-vc0-x233.google.com [IPv6:2607:f8b0:400c:c03::233]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0819F1AD3C1 for <rtcweb@ietf.org>; Wed, 22 Oct 2014 12:40:33 -0700 (PDT)
Received: by mail-vc0-f179.google.com with SMTP id im17so2499630vcb.10 for <rtcweb@ietf.org>; Wed, 22 Oct 2014 12:40:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=uk+RQjZNLTZM53SC5W2HBCkx3O8O9QiHro7hs56kFx0=; b=R49QZ81mqiZPaBVDTuKP+s1fFX6eoZuqGNFtJAlEP71UGB2J/4A3y4jHuX54BVynom +zgXcQRwY0SHcHe/lk35eDw539e3y047xqwrHzJDkW7MBNl3ttOIm1vilMrdI07LPfwQ JBVi27Y0ZQejO+bkv+IzSPEdKgXmYGxlTTBc3JtH69XKuNEynJQc6Tpfy9zmDFbMmU8E PGBc9NPVZXvfVniYRDsMAVH90DG0ZoogwiffGDCQiFb3/WMPDTjcQz7vVwMF0YDEsJFZ spYN9iu5bfsQUm7tlyupeENni42NU32tZc503Cw+G+ThhyxEL0Yhngdv6LomsN7Vhw5N GAEw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=uk+RQjZNLTZM53SC5W2HBCkx3O8O9QiHro7hs56kFx0=; b=Baa/Xmy5u9Wnzm8VshKf4aaJaveNTNkywb8cH/8lxHLIwnALmrKbVFY194OOJXMF0n xjla7n8kqj1zL21dc12C7MqfJWj2qblYryH9dVusOIW9W7+G95DyjeUfv2zUol7iChj+ K0xBv9qy5/wAtIaFfVul8ICX726lf/28FzylYd1ymAW9s3RHpmsDBwHZ1TypBgVQG3N2 IbLMGPwqqo0z1m5ncrHSpW7crC/HrZDbx7+CQqVIMEMN9Ira2Pm/h69zNdvFAIIob1ps aSohHfphp+xJrrl2awR7XTYdOx3lf+GiqhfOkff55AZY6u0QMFhyn3EHB44L1O7r58yH xEwQ==
X-Gm-Message-State: ALoCoQkwFZDiwoR1jW7NkM69Ugz/fFuZZ4PTzrzYOw5ObBkIJ1EF0TvONW6JaT9BI12De9cgKJqe
X-Received: by 10.220.1.15 with SMTP id 15mr131363vcd.39.1414006833026; Wed, 22 Oct 2014 12:40:33 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.220.173.136 with HTTP; Wed, 22 Oct 2014 12:39:50 -0700 (PDT)
In-Reply-To: <544806D1.8010606@gmail.com>
References: <CALiegfmH8rRyEDbJjQ=kzMv0nGC=S9gNsE7roE=kqJyVcfgy8g@mail.gmail.com> <CAJrXDUHekuQCLeCYzsnm8AuTUgiVppQHUqR7MKdQ9Q=eFFAy0w@mail.gmail.com> <CALiegfm_B5KfD5SBPzsH4YYuzD2OXdu47TtatPVmd6ihrMCh1A@mail.gmail.com> <CAJrXDUF-AXcDuQmYhH91vbgPAxLkYkB==GY9opoRk7zrEP8A7A@mail.gmail.com> <CALiegfmxnzZ6_3rKX0paNhHas6Emvu1Mekgb9caj9NLVSf_u+g@mail.gmail.com> <5F93BF20-03B2-4D2D-BEFC-ED91250993BD@gmail.com> <CAMRcRGQ6yfWqXhevnFJDXWq20wJbfimrxhe9M_E3LrBTjmHU=w@mail.gmail.com> <5A936EB2-EC94-49BD-AF11-E5A5141D77BE@gmail.com> <544806D1.8010606@gmail.com>
From: Peter Thatcher <pthatcher@google.com>
Date: Wed, 22 Oct 2014 12:39:50 -0700
Message-ID: <CAJrXDUEF2FoiWoVk77QAmOWJK8LpXKQ_dWn6BMKJ=DRrwF-1MQ@mail.gmail.com>
To: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>
Content-Type: multipart/alternative; boundary="001a11c3cc02fe3a280506081ea8"
Archived-At: http://mailarchive.ietf.org/arch/msg/rtcweb/IFd4OrN9lsoW80Rs407aJyqRgBw
Cc: "<rtcweb@ietf.org>" <rtcweb@ietf.org>
Subject: Re: [rtcweb] SDP and ssrc-group,
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb/>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 19:40:38 -0000

Most of the discussion here has been about having enough information to
receive packets.  But there's another side to it in the rtcweb case.  When
viewed as an API surface, having SDP that the JS gives to the browser which
means "use one of these for RTX, and one for the normal media flow, but you
pick which" is suboptimal.  As an API surface, it would be much better to
allow the application to be explicit about which SSRC it wants for which.



On Wed, Oct 22, 2014 at 12:34 PM, Sergio Garcia Murillo <
sergio.garcia.murillo@gmail.com> wrote:

>  Hi,
>
> I disagree, It is not possible just by looking at the SDP to know which
> ssrc is from the media and which is from rtx. While for WebRTC-endpoints it
> may be irrelevant because, as you say, you can wait for the RTP data to
> check the payload type and match the ssrc, we have seen that it is a must
> have for interoperability with ORTC.
>
> Best regards
> Sergio
>
> On 22/10/2014 21:28, Bernard Aboba wrote:
>
> I agree. The SSRC-groups are included only to make it clear which
> FEC/RED/RTX streams go with which media streams in the multiple source
> case. As long as payload types are distinct we have all the information we
> need.
>
>  On Oct 22, 2014, at 12:16 PM, Suhas Nandakumar <suhasietf@gmail.com>
> wrote:
>
>   Just thinking loud
>  As long as there is enough information to unabigously map the incoming
> streams to the SDP, i dont see we need any more information to be added.
>
>  I feel the combination of SSRC and Payload Type in the RTP packet is
> good enough to find the mapping to the appropriate media line (if the PTs
> are not repeated) when needed.
>
>  So in the initial examples above, ssrc-group communicated in SDP along
> with semantics (FEC,FID) when applied to incoming SSRCs and the associated
> payload type has all the needed info for the receiver to demux at the rtp
> level as well as map at the SDP level. Thus i dont see a need for
> specifying PT association explicitly in SDP for the ssrc-groups.
>
>  Cheers
> Suhas
>
> On Wed, Oct 22, 2014 at 12:01 PM, Bernard Aboba <bernard.aboba@gmail.com>
> wrote:
>
>>  SDP specifies payload types for RED/ULPFEC/RTX so as to allow
>> differentiation within an ssrc-group. So while an fmtp: attribute could be
>> used to denote a media stream on an a:ssrc line, it is not necessary.
>>
>>  RFC 5176 Example 3 gives an example with two cameras in which there are
>> two ssrc-group lines (one for each camera), with payload type used to
>> differentiate between H.264 and RTX in each ssrc-group:
>>
>>
>>    m=video 49174 RTP/AVPF 96 98
>>
>>  a=rtpmap:96 H.264/90000
>>
>>  a=rtpmap:98 rtx/90000
>>
>>  a=fmtp:98 apt=96;rtx-time=3000
>>
>>  a=ssrc-group:FID 11111 22222
>>
>>  a=ssrc:11111 cname:user3@example.com
>>
>>  a=ssrc:22222 cname:user3@example.com
>>
>>  a=ssrc-group:FID 33333 44444
>>
>>  a=ssrc:33333 cname:user3@example.com
>>
>>  a=ssrc:44444 cname:user3@example.com
>>
>>  I believe that RFC 5176 includes the two groups to make clear that there are two sources so that the Answerer might choose to reject the m-line if it cannot handle that. From RFC 5176 Section 8:
>>
>>  When used with the SDP Offer/Answer Model [RFC3264 <http://tools.ietf.org/html/rfc3264>], SDP source-specific attributes describe only the sources that each party is
>>    willing to send (whether it is sending RTP data or RTCP report
>>    blocks).  No mechanism is provided by which an answer can accept or
>>    reject individual sources within a media stream; if the set of
>>    sources in a media stream is unacceptable, the answerer's only option
>>    is to reject the media stream or the entire multimedia session.
>>
>>  Note that in the example in RFC 4588 Section 8.8 where there is only one source, there are no ssrc-group lines at all:
>>
>>   v=0
>>
>>  o=mascha 2980675221 2980675778 IN IP4 host.example.net
>>
>>  c=IN IP4 192.0.2.0
>>
>>  m=video 49170 RTP/AVPF 96 97
>>
>>  a=rtpmap:96 MP4V-ES/90000
>>
>>  a=rtcp-fb:96 nack
>>
>>  a=fmtp:96 profile-level-id=8;config=01010000012000884006682C2090A21F
>>
>>  a=rtpmap:97 rtx/90000
>>
>>  a=fmtp:97 apt=96;rtx-time=3000
>>
>>
>>  The situation would be the same for FEC groups created via
>> ssrc-group:FEC. From
>> https://tools.ietf.org/html/draft-lennox-payload-ulp-ssrc-mux  :
>>
>>        The FEC and the payload MAY also be multiplexed by SSRC into one
>>       single RTP session, with separate SSRC values, if the association
>>       between FEC and payload streams are communicated to all members of
>>       the session.  If SDP is used, this association MAY be communicated
>>       through the FEC ssrc-group semantic [RFC5576 <https://tools.ietf.org/html/rfc5576>]; other mechanisms
>>       are also possible.  Receivers MUST NOT attempt to interpret FEC
>>       streams for which they do not have information to associate them
>>       with the corresponding payload streams.
>>
>>
>>
>>
>> On Oct 21, 2014, at 11:36 AM, Iñaki Baz Castillo <ibc@aliax.net> wrote:
>>
>>   I hope I can rule my SDP logic based on standards rather than on how
>> Chrome implements some features.
>>
>> My question was generic: if I receive the above SDP, how do I know which
>> payloads each ssrc is supposed to transport?
>> On 21 Oct 2014 19:57, "Peter Thatcher" <pthatcher@google.com> wrote:
>>
>>>  I'm not sure where it's specified, but here's where it's implemented:
>>>
>>>
>>> https://code.google.com/p/webrtc/source/browse/trunk/talk/media/webrtc/webrtcvideoengine.cc#4108
>>>
>>>  It only supports 2 SSRCs for a FID group.  It would ignore any more
>>> than that.
>>>
>>> On Tue, Oct 21, 2014 at 10:40 AM, Iñaki Baz Castillo <ibc@aliax.net>
>>> wrote:
>>>
>>>> How is that? Where is that specified? What about if I include 3 ssrc
>>>> values in the ssrc-group? What is each one for?
>>>>  On 21 Oct 2014 19:31, "Peter Thatcher" <pthatcher@google.com> wrote:
>>>>
>>>>>  345259865 is "real"
>>>>>  2693756249 is rtx
>>>>>
>>>>> On Tue, Oct 21, 2014 at 9:25 AM, Iñaki Baz Castillo <ibc@aliax.net>
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> May I know which SSRC (345259865 or 2693756249) will be used for the
>>>>>> real media stream (plus RED and FEC) and which SSRC will be used for
>>>>>> RTX?
>>>>>>
>>>>>>
>>>>>>
>>>>>> --------------------------
>>>>>> m=video 62164 RTP/SAVPF 100 116 117 96
>>>>>> a=mid:video
>>>>>> a=rtpmap:100 VP8/90000
>>>>>> a=rtpmap:116 red/90000
>>>>>> a=rtpmap:117 ulpfec/90000
>>>>>> a=rtpmap:96 rtx/90000
>>>>>> a=fmtp:96 apt=100
>>>>>> a=ssrc-group:FID 345259865 2693756249
>>>>>> a=ssrc:345259865 cname:erS7E/KHLYKTejNs
>>>>>> a=ssrc:345259865 msid:DWpWct9bWKzTMNYZn5bKVgwZ8Mfy2EtfqBY5
>>>>>> c0134f05-e7c2-4afd-a979-4e224de5eb91
>>>>>> a=ssrc:345259865 mslabel:DWpWct9bWKzTMNYZn5bKVgwZ8Mfy2EtfqBY5
>>>>>> a=ssrc:345259865 label:c0134f05-e7c2-4afd-a979-4e224de5eb91
>>>>>> a=ssrc:2693756249 cname:erS7E/KHLYKTejNs
>>>>>> a=ssrc:2693756249 msid:DWpWct9bWKzTMNYZn5bKVgwZ8Mfy2EtfqBY5
>>>>>> c0134f05-e7c2-4afd-a979-4e224de5eb91
>>>>>> a=ssrc:2693756249 mslabel:DWpWct9bWKzTMNYZn5bKVgwZ8Mfy2EtfqBY5
>>>>>> a=ssrc:2693756249 label:c0134f05-e7c2-4afd-a979-4e224de5eb91
>>>>>> -------------------------------
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> RFC 5576 does not clarify it at all:
>>>>>>
>>>>>> http://tools.ietf.org/html/rfc5576#section-4.2
>>>>>>
>>>>>> --------------------------------------------------
>>>>>> 4.2.  The "ssrc-group" Media Attribute
>>>>>>
>>>>>>    a=ssrc-group:<semantics> <ssrc-id> ...
>>>>>>
>>>>>>    [..]
>>>>>>
>>>>>>    The <semantics> parameter is taken from the specification of the
>>>>>>    "group" attribute [RFC3388].  The initial semantic values defined
>>>>>> for
>>>>>>    the "ssrc-group" attribute are FID (Flow Identification) [RFC3388]
>>>>>>    and FEC (Forward Error Correction) [RFC4756].  In each case, the
>>>>>>    relationship among the grouped sources is the same as the
>>>>>>    relationship among corresponding sources in media streams grouped
>>>>>>    using the SDP "group" attribute.
>>>>>> --------------------------------------------------
>>>>>>
>>>>>>
>>>>>>
>>>>>> The referenced RFC 3388 neither clarifies it:
>>>>>>
>>>>>> ---------------------------------------------------
>>>>>> 7.4 FID Semantics
>>>>>>
>>>>>>    Several "m" lines grouped together using FID semantics form a media
>>>>>>    flow.  A media agent handling a media flow that comprises several
>>>>>> "m"
>>>>>>    lines MUST send a copy of the media to every "m" line part of the
>>>>>>    flow as long as the codecs and the direction attribute present in a
>>>>>>    particular "m" line allow it.
>>>>>>
>>>>>>    It is assumed that the application uses only one codec at a time to
>>>>>>    encode the media produced.  This codec MAY change dynamically
>>>>>> during
>>>>>>    the session, but at any particular moment only one codec is in use.
>>>>>>
>>>>>>    The application encodes the media using the current codec and
>>>>>> checks
>>>>>>    one by one all the "m" lines that are part of the flow.  If a
>>>>>>    particular "m" line contains the codec being used and the direction
>>>>>>    attribute is "sendonly" or "sendrecv", a copy of the encoded media
>>>>>> is
>>>>>>    sent to the address/port specified in that particular media stream.
>>>>>>    If either the "m" line does not contain the codec being used or the
>>>>>>    direction attribute is neither "sendonly" nor "sendrecv", nothing
>>>>>> is
>>>>>>    sent over this media stream.
>>>>>> ----------------------------------------------------
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> So, how is the usage of ssrc-group? Where is it really defined?
>>>>>>
>>>>>> Can I put more than 2 ssrc together in the same ssrc-group line?
>>>>>>
>>>>>> How should the receiver interpret it?
>>>>>>
>>>>>> Does a ssrc-group always mean RTX usage? Where is that specified in
>>>>>> the above SDP?
>>>>>>
>>>>>> Does not the above SDP look a complete mixture of hacks and
>>>>>> workarounds?
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Iñaki Baz Castillo
>>>>>> <ibc@aliax.net>
>>>>>>
>>>>>> _______________________________________________
>>>>>> rtcweb mailing list
>>>>>> rtcweb@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/rtcweb
>>>>>>
>>>>>
>>>>>
>>>    _______________________________________________
>> rtcweb mailing list
>> rtcweb@ietf.org
>> https://www.ietf.org/mailman/listinfo/rtcweb
>>
>>
>> _______________________________________________
>> rtcweb mailing list
>> rtcweb@ietf.org
>> https://www.ietf.org/mailman/listinfo/rtcweb
>>
>>
>
>
> _______________________________________________
> rtcweb mailing listrtcweb@ietf.orghttps://www.ietf.org/mailman/listinfo/rtcweb
>
>
>
> _______________________________________________
> rtcweb mailing list
> rtcweb@ietf.org
> https://www.ietf.org/mailman/listinfo/rtcweb
>
>