- From: Peter Thatcher <pthatcher@google.com>
- Date: Tue, 15 Apr 2014 12:18:31 -0700
- To: "public-ortc@w3.org" <public-ortc@w3.org>
- Message-ID: <CAJrXDUE7EAvKWrs1xPwX6WTY5iHy5GX-5k7K_WnP3wNiGDN+Mw@mail.gmail.com>
Here's a simplified proposal for how to add quality control without getting
too mixed up with quality (there will be a separate proposal for that).
dictionary RTCRtpEncodingParameters {
// ... existing ssrc, codec, fec, rtx
// The higher the value, the more the bits will be given to each
// as available bandwidth goes up. Default is 1.0.
double priority;
double maxBitrate;
double minQuality;
// 1.0 == Bias toward framerate, 0.0 == Bias toward quality/resolution
double framerateBias;
// Resolution/cropping/scaling is controlled by the input track!
}
Send a thumbnail along with regular size
*var encodings1 = [ ssrc: 1, priority: 1.0 }] // Control the resolution
and framerate with a different track and RtpSender. var encodings2 = [{
ssrc: 2, // Prioritize the thumbnail over the main video. priority: 10.0
}]; *Sign Language
*(need high framerate, but don't get too bad of quality) var encodings = [{
minQuality: 0.2, framerateBias: 1.0 }]; *Screencast
*(High quality, framerate can be low) var encodings = [{ framerateBias:
0.0 }]; * Remote Desktop
*(High framerate, must not dowscale) var encodings = [{ framerateBias: 1.0
}]; *Audio more important than video
*var audioEncodings = [{ priority: 10.0 }]; var videoEncodings = [{
priority: 0.1 }]; *Video more important than audio
var audioEncodings = [{
priority: 0.1
}];
var videoEncodings = [{
priority: 10.0
}];
Crank up the quality
var encodings = [{
maxBitrate: 10000000
}];
Keep the bandwidth low
var encodings = [{
maxBitrate: 100000
}];
Received on Tuesday, 15 April 2014 19:19:39 UTC