RE: Some questions about RTCRtpEncodingParameters...

[BA] For example, while the encodingId and dependencyEncodingIds can be used to set up layering, to do layering and simulcast together requires setting up multiple sender objects.

[Peter] ​Why?  Can't you express a mix here?​

[BA] As an example, let's say that in a single sender object we wanted to simulcast two streams, each with different resolution, and each of which support temporal scalability with two layers.  So we have four streams overall.   Let's say we have a "framescale" variable which means
to use that fraction of the framerate from getUserMedia.  Would this work? 

var encodings =[{
  layerId: "halfScaleBase",
  scale: 0.5,
  framescale: 0.5
}, {
  layerId: "fullScaleBase",
  scale: 1.0,
  framescale: 0.5
}, {
  layerId: "temporalEnhancemenToHalfScaleBase",
  layerDependencies: ["halfScaleBase"],
  scale: 0.5,
  framescale: 1.0
}, {
  layerId: "temporalEnhancementToFullScaleBase",
  layerDependencies: ["fullScaleBase"],
  scale: 1.0,
  framescale: 1.0
}]


[Peter] That said, we do need to make sure that our RtpCapabilties object provides enough information to be able to do this.  Do you think it's lacking something in particular?​

[BA]  There are a few things that come to mind:

   a. One is a statement about what types of scalability a given encoder/decoder supports.  Another is how many layers they support within that type.    These can perhaps
   be combined into a capability array:  [temporalMaxLayers, spatialMaxLayers, qualityMaxLayers] where setting MaxLayers of a given type to 0 means "I don't support it at all". 

   b.  Another is a statement about what types of simulcast is supported within an object and how many streams are supported. This also might be expressed in a similar array.  

[BA] Some other questions relating to whether these attributes make sense for SVC at all.
For example, priority makes sense for specifying the priority between audio and video – but what does it mean when it is specified in individual SVC layers?

​[Peter] Maybe it wouldn't.  But it does for simulcast, doesn't it?

[BA] Yes, for simulcast it makes sense. 
​
[BA] Similarly, minQuality might make some sense for a base layer (as might minFrameRate or minResolution), but what does it mean to specify this at each SVC layer?

[Peter] ​Maybe for SVC it doesn't.  But it does for simulcast, doesn't it?

[BA] "Quality" has a specific meaning within SVC (e.g. "quality scalability").   So I'm not sure the variable is intended to have the same meaning in simulcast.  
​
[BA] Also, is it necessary to provide a maxBitrate knob for each layer in SVC?

​[Peter] Again, maybe not all knobs make sense for SVC.  So if you're doing SVC, don't use the knobs that don't make sense.​

[BA] The knobs may make sense at an overall level -- as in "I'd like to impose a maximum Bit rate on the combination of layers".    

Received on Friday, 9 May 2014 19:07:14 UTC