Commit 40695472 authored by Tim Haloun's avatar Tim Haloun Committed by Commit Bot

Expose new RtpEncoder Network Priority Parameter

Added to webrtc rtpencoder struct is a field for specifying the dscp value
on a per-encoder basis, allowing audio and video to have different priorities.
The API is defined in https://w3c.github.io/webrtc-dscp-exp/ , and the
particular codepoints are defined in
https://tools.ietf.org/html/draft-ietf-tsvwg-rtcweb-qos-18#section-5
Note, actually enabling DSCP at all is still guarded by the googDscp
PeerConnection constraint, for now.

WPT tests:  https://chromium-review.googlesource.com/c/chromium/src/+/1357515
I2I: https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/bVNynDp9PHo
chromestatus:  https://www.chromestatus.com/feature/5583278023114752


Bug: webrtc:5008
Change-Id: I05bdcf62787d30211310a4686bb5fc18fda674da
Reviewed-on: https://chromium-review.googlesource.com/c/1298231Reviewed-by: default avatarFlorent Castelli <orphis@chromium.org>
Commit-Queue: Tim Haloun <thaloun@chromium.org>
Cr-Commit-Position: refs/heads/master@{#613218}
parent 31e7159a
......@@ -216,6 +216,7 @@ class RTCRtpSender::RTCRtpSenderInternal
new_parameters.encodings[i].dtx = encoding.dtx;
new_parameters.encodings[i].active = encoding.active;
new_parameters.encodings[i].bitrate_priority = encoding.bitrate_priority;
new_parameters.encodings[i].network_priority = encoding.network_priority;
new_parameters.encodings[i].ptime = encoding.ptime;
new_parameters.encodings[i].max_bitrate_bps = encoding.max_bitrate_bps;
new_parameters.encodings[i].max_framerate = encoding.max_framerate;
......
......@@ -16,6 +16,7 @@ dictionary RTCRtpEncodingParameters : RTCRtpCodingParameters {
//TODO(orphis): Missing dtx. https://crbug.com/857044
boolean active = true;
RTCPriorityType priority = "low";
RTCPriorityType networkPriority = "low";
//TODO(orphis): Missing ptime. https://crbug.com/857046
unsigned long maxBitrate;
//TODO(orphis): Missing maxFramerate. https://crbug.com/857047
......
......@@ -248,6 +248,8 @@ webrtc::RtpEncodingParameters ToRtpEncodingParameters(
webrtc::RtpEncodingParameters webrtc_encoding;
webrtc_encoding.active = encoding->active();
webrtc_encoding.bitrate_priority = PriorityToDouble(encoding->priority());
webrtc_encoding.network_priority =
PriorityToDouble(encoding->networkPriority());
if (encoding->hasMaxBitrate())
webrtc_encoding.max_bitrate_bps = clampTo<int>(encoding->maxBitrate());
return webrtc_encoding;
......@@ -318,6 +320,8 @@ RTCRtpSendParameters* RTCRtpSender::getParameters() {
encoding->setMaxBitrate(web_encoding.max_bitrate_bps.value());
encoding->setPriority(
PriorityFromDouble(web_encoding.bitrate_priority).c_str());
encoding->setNetworkPriority(
PriorityFromDouble(web_encoding.network_priority).c_str());
encodings.push_back(encoding);
}
parameters->setEncodings(encodings);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment