New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Separate proposal on layering/simulcast (was part of the "big proposal") #61

Closed
aboba opened this Issue Apr 15, 2014 · 1 comment

Comments

Projects
None yet
3 participants
@aboba
Copy link
Contributor

aboba commented Apr 15, 2014

From: Peter Thatcher pthatcher@google.com
Date: Tue, 15 Apr 2014 11:10:38 -0700
Message-ID: CAJrXDUE5VZrWJMdmQRJyL3-Y=OmodgP7a814WKWjMvbiPE0mMg@mail.gmail.com
To: "public-ortc@w3.org" public-ortc@w3.org
URL: http://lists.w3.org/Archives/Public/public-ortc/2014Apr/0064.html

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 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;
}

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
}];

@martinthomson

This comment has been minimized.

Copy link
Member

martinthomson commented Apr 15, 2014

Looks pretty usable.

I'd put "active = true" and "scale = 1.0" in the IDL to be explicit.

robin-raymond pushed a commit to robin-raymond/ortc that referenced this issue Apr 29, 2014

Robin Raymond
- Fixes for error handling, as described in w3c#26
- Support for contributing sources removed (re-classified as a 1.2 feature), as described in w3c#27
- Cleanup of DataChannel construction, as described in w3c#60
- Separate proposal on simulcast/layering, as described in w3c#61
- Separate proposal on quality, as described in w3c#62
- Fix for TCP candidate type, as described in w3c#63
- Fix to the fingerprint attribute, as described in w3c#64
- Fix to RTCRtpFeatures, as described in w3c#65
- Support for retrieval of remote certificates, as described in w3c#67
- Support for ICE error handling, described in w3c#68
- Support for Data Channel send rate control, as described in w3c#69
- Support for capabilities and settings, as described in w3c#70
- Removal of duplicate RTCRtpListener functionality, as described in w3c#71
- ICE gathering state added, as described in w3c#72
- Removed ICE role from the ICE transport constructor, as described in w3c#73
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment