Re: Separate proposal on layering/simulcast (was part of the "big proposal")

​I'm fine having it be a string.  I can't think of a major reason not to.
 Here you go:

​dictionary RTCRtpEncodingParameters {

 // ... existing ssrc, codec, fec, rtx

 // These are to setup layer dependencies.

 // If there are no layer dependencies

// (they are independent),

 // then it's effectively simulcast.

 DOMString layerId;
 sequence<DOMString> layerDependencies;  // Just the IDs


  // Disable is different than omitting the layer,

 // because it can keep resources available to re-enable

 // more quickly than re-adding.
 // Plus, it still sends RTCP.
 // Default is active.
 bool active;

 // Relative spatial resolution (0.5, 0.25, etc).

 double scale;
}


​However​, you breach the question of scope. What's the scope of the
layerId? I was assuming it was per RtpSender/RtpReceiver. But now you're
suggesting that they have basically a global scope (across all
RtpSender/RtpReceivers). That's an important question to answer. One one
hand, it the JS more power. On the other, it is more complex. I'm usually
inclined to stick with simple, not complex. How compelling do you think
having dependent layers on different ports really is?



On Wed, Apr 16, 2014 at 10:39 AM, Bernard Aboba <Bernard.Aboba@microsoft.com
> wrote:

> I believe that layerId needs to be a DOMString, and layerDependencies
> needs to be a sequence of DOMStrings.
>
> The reason is that if it is an int, then it is really only possible to
> reference layer dependencies within an individual RTPReceiver or RTPSender
> object.
>
> However, RFC 5583 describes scenarios in which there would be dependencies
> between different RTPReceiver or RTPSender objects.
>
> For example, consider a scenario where an H.264 base layer is being
> offered on port 4000, with an H.264/SVC enhancement layer on port 4002.
>
>
> ========== Parental Guidance Suggested ==============
>
>          v=0
>          o=svcsrv 289083124 289083124 IN IP4 host.example.com
>          s=LAYERED VIDEO SIGNALING Seminar
>          t=0 0
>          c=IN IP4 192.0.2.1/127
>          a=group:DDP L1 L2 L3
>          m=video 40000 RTP/AVP 96 97
>          b=AS:90
>          a=framerate:15
>          a=rtpmap:96 H264/90000
>          a=rtpmap:97 H264/90000
>          a=mid:L1
>          m=video 40002 RTP/AVP 98 99
>          b=AS:64
>          a=framerate:15
>          a=rtpmap:98 H264-SVC/90000
>          a=rtpmap:99 H264-SVC/90000
>          a=mid:L2
>          a=depend:98 lay L1:96,97; 99 lay L1:97
>          m=video 40004 RTP/AVP 100 101
>          b=AS:128
>          a=framerate:30
>          a=rtpmap:100 H264-SVC/90000
>          a=rtpmap:101 H264-SVC/90000
>          a=mid:L3
>          a=depend:100 lay L1:96,97; 101 lay L1:97 L2:99
> ________________________________________
> From: Peter Thatcher [pthatcher@google.com]
> Sent: Tuesday, April 15, 2014 11:10 AM
> To: public-ortc@w3.org
> Subject: Separate proposal on layering/simulcast (was part of the "big
> proposal")
>
> Here's a simplified proposal for how to add layering/simulcast support
> without getting too mixed up with quality (there will be a separate
> proposal for that).
>
>
> dictionary RTCRtpEncodingParameters {
>  // ... existing ssrc, codec, fec, rtx
>
>  // These are to setup layer dependencies.
>
>  // If there are no layer dependencies
>
> // (they are independent),
>
> // then it's effectively simulcast.
>
>  int layerId;
>  sequence<int> layerDependencies;  // Just the IDs
>
>
>  // Disable is different than omitting the layer,
>
> // because it can keep resources available to re-enable
>
> // more quickly than re-adding.
>  // Plus, it still sends RTCP.
>  // Default is active.
>  bool active = true;
>
>
>  // Relative spatial resolution (0.5, 0.25, etc).
>
>  double scale;
>
> }
>
> And here are some examples:
>
> Example of 3-layer SVC
> var encodings =[{
>   layerId: 0,
>   scale: 0.25
> }, {
>   layerId: 1,
>   layerDependencies: [0]
>   scale: 0.5
> }, {
>   layerId: 2,
>   layerDependencies: [0, 1]
>   scale: 1.0
> }]
>
> Example of 3-layer SVC with all but bottom layer disabled
> var encodings1 =[{
>   layerId: 0,
>   scale: 0.25
> }, {
>   layerId: 1,
>   layerDependencies: [0],
>   scale: 0.5,
>   active: false
> }, {
>   layerId: 2,
>   layerDependencies: [0, 1],
>   scale: 1.0,
>   active: false
> }];
>
> Example of 3-layer simlucast
> var encodings =[{
>   layerId: 0,
>   scale: 0.25
> }, {
>   layerId: 1,
>   scale: 0.5
> }, {
>   layerId: 2,
>   scale: 1.0
> }]
>
> Example of 3-layer simulcast with all but bottom layer disabled
> var encodings1 =[{
>   layerId: 0,
>   scale: 0.25
> }, {
>   layerId: 1,
>   scale: 0.5,
>   active: false
> }, {
>   layerId: 2,
>   scale: 1.0,
>   active: false
> }];
>
>

Received on Wednesday, 16 April 2014 19:28:38 UTC