From 0d4a28ba2fbc565ae3c002aa34463b783137ea91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Thu, 29 Aug 2024 11:26:03 +0200 Subject: [PATCH 01/17] Add restrictedResolution to encoding parameters. --- index.html | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index dd1f238..4f4d5ef 100644 --- a/index.html +++ b/index.html @@ -359,12 +359,38 @@

additional members to control audio packetization.

partial dictionary RTCRtpEncodingParameters {
-  unsigned long ptime;
-  boolean adaptivePtime = false;
+    RTCResolutionRestriction restrictedResolution;
+    unsigned long            ptime;
+    boolean                  adaptivePtime = false;
 };

Dictionary {{RTCRtpEncodingParameters}} Members

+
+ restrictedResolution of type {{RTCResolutionRestriction}} +
+
+

The resolution at which to restrict this encoding.

+

The default "scale resolution down by" factors (e.g. 4:2:1) are not + applied when this parameter is used. Instead, frames are either sent + as-is or they are downscaled by the encoder to uphold the + restrictions. The encoder will never upscale a frame. In simulcast, + this can result in dropping top layer(s) if the input frame is too + small as to avoid sending the same resolution on multiple layers.

+

When setting parameters, if {{restrictedResolution}} is specified + on any encoding, check that the following is true or else throw an + {{InvalidModificationError}}:

+
    +
  • +

    {{restrictedResolution}} is specified on all encodings and has + values in both dimensions that are greater than 0.

    +
  • +
  • +

    {{RTCRtpEncodingParameters/scaleResolutionDownBy}} is not + specified on any encoding.

    +
  • +
+
ptime of type unsigned long
@@ -403,6 +429,45 @@

Dictionary {{RTCRtpEncodingParameters}} Members

+
+

+ The {{RTCResolutionRestriction}} dictionary. +

+
dictionary RTCResolutionRestriction {
+    unsigned long maxWidth;
+    unsigned long maxHeight;
+};
+
+

Dictionary {{RTCResolutionRestriction}} Members

+
+
+ maxWidth of type unsigned long +
+
+

The maximum width that frames will be encoded with without getting + downscaled. The size comparison is orientation agnostic. When scaling + is applied, both dimensions of the frame are downscaled using the same + factor.

+
+
+ maxHeight of type unsigned long +
+
+

The maximum height that frames will be encoded with without getting + downscaled. The size comparison is orientation agnostic. When scaling + is applied, both dimensions of the frame are downscaled using the same + factor.

+
+
+

+ Orientation agnostic means that if resolution restrictions are specified + in landscape mode but the frame is in portrait mode or vice versa, the + encoder will internally swap the restricted width and height prior to + each size comparison. This does not modify the value of + {{RTCRtpEncodingParameters/restrictedResolution}}. +

+
+

{{RTCRtpSender}} {{RTCRtpSender/setParameters()}} extensions for requesting the generation of a key frame. From b9444fbf699df39a34447d700e1c41e2365d3370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Thu, 29 Aug 2024 13:56:26 +0200 Subject: [PATCH 02/17] r/restrictedResolution/resolutionRestriction --- index.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index 4f4d5ef..b1e076c 100644 --- a/index.html +++ b/index.html @@ -359,7 +359,7 @@

additional members to control audio packetization.

partial dictionary RTCRtpEncodingParameters {
-    RTCResolutionRestriction restrictedResolution;
+    RTCResolutionRestriction resolutionRestriction;
     unsigned long            ptime;
     boolean                  adaptivePtime = false;
 };
@@ -367,7 +367,7 @@

Dictionary {{RTCRtpEncodingParameters}} Members

- restrictedResolution of type {{RTCResolutionRestriction}} + resolutionRestriction of type {{RTCResolutionRestriction}}

The resolution at which to restrict this encoding.

@@ -377,12 +377,12 @@

Dictionary {{RTCRtpEncodingParameters}} Members

restrictions. The encoder will never upscale a frame. In simulcast, this can result in dropping top layer(s) if the input frame is too small as to avoid sending the same resolution on multiple layers.

-

When setting parameters, if {{restrictedResolution}} is specified +

When setting parameters, if {{resolutionRestriction}} is specified on any encoding, check that the following is true or else throw an {{InvalidModificationError}}:

  • -

    {{restrictedResolution}} is specified on all encodings and has +

    {{resolutionRestriction}} is specified on all encodings and has values in both dimensions that are greater than 0.

  • @@ -464,7 +464,7 @@

    Dictionary {{RTCResolutionRestriction}} Members

    in landscape mode but the frame is in portrait mode or vice versa, the encoder will internally swap the restricted width and height prior to each size comparison. This does not modify the value of - {{RTCRtpEncodingParameters/restrictedResolution}}. + {{RTCRtpEncodingParameters/resolutionRestriction}}.

From cbc61ebd49c2ce897041d931a77a35e465ffa90f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Thu, 29 Aug 2024 14:11:13 +0200 Subject: [PATCH 03/17] Addressed comments --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index b1e076c..a7e0e55 100644 --- a/index.html +++ b/index.html @@ -375,8 +375,8 @@

Dictionary {{RTCRtpEncodingParameters}} Members

applied when this parameter is used. Instead, frames are either sent as-is or they are downscaled by the encoder to uphold the restrictions. The encoder will never upscale a frame. In simulcast, - this can result in dropping top layer(s) if the input frame is too - small as to avoid sending the same resolution on multiple layers.

+ encodings are sent up to and including the layer that results in a + downscale, ignoring any layers further up.

When setting parameters, if {{resolutionRestriction}} is specified on any encoding, check that the following is true or else throw an {{InvalidModificationError}}:

From 046e1ea90a6d75afeabdd5f6d4c4273ac9000a31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Fri, 30 Aug 2024 09:00:56 +0200 Subject: [PATCH 04/17] scaleResolutionDownTo, remove orientation talk, clarify not sending --- index.html | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/index.html b/index.html index a7e0e55..d77a570 100644 --- a/index.html +++ b/index.html @@ -359,7 +359,7 @@

additional members to control audio packetization.

partial dictionary RTCRtpEncodingParameters {
-    RTCResolutionRestriction resolutionRestriction;
+    RTCResolutionRestriction scaleResolutionDownTo;
     unsigned long            ptime;
     boolean                  adaptivePtime = false;
 };
@@ -367,22 +367,26 @@

Dictionary {{RTCRtpEncodingParameters}} Members

- resolutionRestriction of type {{RTCResolutionRestriction}} + scaleResolutionDownTo of type {{RTCResolutionRestriction}}
-

The resolution at which to restrict this encoding.

+

The maximum dimensions at which to restrict this encoding.

The default "scale resolution down by" factors (e.g. 4:2:1) are not applied when this parameter is used. Instead, frames are either sent as-is or they are downscaled by the encoder to uphold the restrictions. The encoder will never upscale a frame. In simulcast, - encodings are sent up to and including the layer that results in a - downscale, ignoring any layers further up.

-

When setting parameters, if {{resolutionRestriction}} is specified + not upscaling can result in multiple same-sized encodings if the size + of the frame is smaller than {{scaleResolutionDownTo}}; an encoding is + not sent if {{scaleResolutionDownTo}} is larger than the frame and + there exists another {{RTCRtpEncodingParameters/active}} encoding with + a smaller {{scaleResolutionDownTo}} density resulting in the same + size.

+

When setting parameters, if {{scaleResolutionDownTo}} is specified on any encoding, check that the following is true or else throw an {{InvalidModificationError}}:

  • -

    {{resolutionRestriction}} is specified on all encodings and has +

    {{scaleResolutionDownTo}} is specified on all encodings and has values in both dimensions that are greater than 0.

  • @@ -445,27 +449,18 @@

    Dictionary {{RTCResolutionRestriction}} Members

    The maximum width that frames will be encoded with without getting - downscaled. The size comparison is orientation agnostic. When scaling - is applied, both dimensions of the frame are downscaled using the same - factor.

    + downscaled. When scaling is applied, both dimensions of the frame are + downscaled using the same factor.

    maxHeight of type unsigned long

    The maximum height that frames will be encoded with without getting - downscaled. The size comparison is orientation agnostic. When scaling - is applied, both dimensions of the frame are downscaled using the same - factor.

    + downscaled. When scaling is applied, both dimensions of the frame are + downscaled using the same factor.

-

- Orientation agnostic means that if resolution restrictions are specified - in landscape mode but the frame is in portrait mode or vice versa, the - encoder will internally swap the restricted width and height prior to - each size comparison. This does not modify the value of - {{RTCRtpEncodingParameters/resolutionRestriction}}. -

From 3adc13b7f7a6ed55a2fc0b57b894391a913985df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Fri, 30 Aug 2024 10:32:23 +0200 Subject: [PATCH 05/17] Orientation agnostic --- index.html | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index d77a570..2a2a4c2 100644 --- a/index.html +++ b/index.html @@ -449,17 +449,26 @@

Dictionary {{RTCResolutionRestriction}} Members

The maximum width that frames will be encoded with without getting - downscaled. When scaling is applied, both dimensions of the frame are - downscaled using the same factor.

+ downscaled. The restrictions are orientation agnostic, see note below. + When scaling is applied, both dimensions of the frame are downscaled + using the same factor.

maxHeight of type unsigned long

The maximum height that frames will be encoded with without getting - downscaled. When scaling is applied, both dimensions of the frame are - downscaled using the same factor.

+ downscaled. The restrictions are orientation agnostic, see note below. + When scaling is applied, both dimensions of the frame are downscaled + using the same factor.

+

+ The restrictions being orientation agnostic means that they will + automatically be adjusted to portrait mode or landscape mode depending + on the orientation of the frame being restricted. This means that it + does not matter if 1280x720 or 720x1280 is specified, both always + result in the exact same scaling factor. +

From e3cdde9f97afab86fb124c467ffc1b03a865a6d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Fri, 30 Aug 2024 10:33:38 +0200 Subject: [PATCH 06/17] Orientation agnostic --- index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 2a2a4c2..4955d18 100644 --- a/index.html +++ b/index.html @@ -467,7 +467,8 @@

Dictionary {{RTCResolutionRestriction}} Members

automatically be adjusted to portrait mode or landscape mode depending on the orientation of the frame being restricted. This means that it does not matter if 1280x720 or 720x1280 is specified, both always - result in the exact same scaling factor. + result in the exact same scaling factor regardless of the orientation + of the frame.

From 9e709364c487ab19f98479c2fdd702ced5587975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Fri, 30 Aug 2024 10:43:28 +0200 Subject: [PATCH 07/17] Rewording --- index.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index 4955d18..1c250e8 100644 --- a/index.html +++ b/index.html @@ -464,11 +464,11 @@

Dictionary {{RTCResolutionRestriction}} Members

The restrictions being orientation agnostic means that they will - automatically be adjusted to portrait mode or landscape mode depending - on the orientation of the frame being restricted. This means that it - does not matter if 1280x720 or 720x1280 is specified, both always - result in the exact same scaling factor regardless of the orientation - of the frame. + automatically be adjusted to the orientation of the frame being + restricted (portrait mode or landscape mode) by swapping width and + height if necessary. This means that it does not matter if 1280x720 or + 720x1280 is specified, both always result in the exact same scaling + factor regardless of the orientation of the frame.

From 2685fad03e15291e013ea924c18910875174a417 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Mon, 2 Sep 2024 10:26:33 +0200 Subject: [PATCH 08/17] r/throw/reject --- index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 1c250e8..9cc957c 100644 --- a/index.html +++ b/index.html @@ -382,7 +382,8 @@

Dictionary {{RTCRtpEncodingParameters}} Members

a smaller {{scaleResolutionDownTo}} density resulting in the same size.

When setting parameters, if {{scaleResolutionDownTo}} is specified - on any encoding, check that the following is true or else throw an + on any encoding, check that the following is true or else return a + promise [= rejected =] with a newly [= exception/created =] {{InvalidModificationError}}:

  • From d8cbcc682d78e3c3fc7bba218afb817ca732fe02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Fri, 6 Sep 2024 10:35:25 +0200 Subject: [PATCH 09/17] Address comments --- index.html | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/index.html b/index.html index 9cc957c..6e87f0a 100644 --- a/index.html +++ b/index.html @@ -371,28 +371,30 @@

    Dictionary {{RTCRtpEncodingParameters}} Members

    The maximum dimensions at which to restrict this encoding.

    -

    The default "scale resolution down by" factors (e.g. 4:2:1) are not - applied when this parameter is used. Instead, frames are either sent - as-is or they are downscaled by the encoder to uphold the - restrictions. The encoder will never upscale a frame. In simulcast, - not upscaling can result in multiple same-sized encodings if the size - of the frame is smaller than {{scaleResolutionDownTo}}; an encoding is - not sent if {{scaleResolutionDownTo}} is larger than the frame and +

    When {{scaleResolutionDownTo}} is specified, the + {{RTCRtpEncodingParameters/scaleResolutionDownBy}} scaling factor MUST + be ignored by the encoder. Instead, frames are sent according to the + specified resolution restrictions: frames MUST either be downscaled or + sent as-is. The encoder MUST NOT upscale a frame. In simulcast, not + upscaling can result in multiple same-sized encodings if the size of + the frame is smaller than {{scaleResolutionDownTo}}; an encoding MUST + NOT be sent if {{scaleResolutionDownTo}} is larger than the frame and there exists another {{RTCRtpEncodingParameters/active}} encoding with a smaller {{scaleResolutionDownTo}} density resulting in the same size.

    -

    When setting parameters, if {{scaleResolutionDownTo}} is specified - on any encoding, check that the following is true or else return a - promise [= rejected =] with a newly [= exception/created =] - {{InvalidModificationError}}:

    +

    When configuring parameters - either via + {{RTCPeerConnection/addTransceiver()}} or + {{RTCRtpSender/setParameters()}} - if {{scaleResolutionDownTo}} is + specified on any encoding, check that the following is true or else + [= exception/throw =] / [= reject =] with a newly + [= exception/created =] {{InvalidModificationError}}:

    • -

      {{scaleResolutionDownTo}} is specified on all encodings and has - values in both dimensions that are greater than 0.

      +

      {{scaleResolutionDownTo}} is specified on all encodings.

    • -

      {{RTCRtpEncodingParameters/scaleResolutionDownBy}} is not - specified on any encoding.

      +

      For each {{scaleResolutionDownTo}} value, both dimensions have + a value greater than 0.

    From 58463280d8adb42b2dcaad124919aa4da3ce2440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Wed, 11 Sep 2024 10:10:31 +0200 Subject: [PATCH 10/17] OperationError vs InvalidModification --- index.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index 6e87f0a..d061b5b 100644 --- a/index.html +++ b/index.html @@ -382,11 +382,11 @@

    Dictionary {{RTCRtpEncodingParameters}} Members

    there exists another {{RTCRtpEncodingParameters/active}} encoding with a smaller {{scaleResolutionDownTo}} density resulting in the same size.

    -

    When configuring parameters - either via - {{RTCPeerConnection/addTransceiver()}} or - {{RTCRtpSender/setParameters()}} - if {{scaleResolutionDownTo}} is - specified on any encoding, check that the following is true or else - [= exception/throw =] / [= reject =] with a newly +

    When configuring parameters, the following validation MUST be + performed if {{scaleResolutionDownTo}} is specified on any encoding or + else {{RTCPeerConnection/addTransceiver()}} [= exception/throws =] a + newly [= exception/created =] {{OperationError}} and + {{RTCRtpSender/setParameters()}} [= reject|rejects =] with a newly [= exception/created =] {{InvalidModificationError}}:

    • From 1794afabd8dd3dfcd6692083ce487944e7e491dd Mon Sep 17 00:00:00 2001 From: henbos Date: Thu, 12 Sep 2024 16:21:13 +0200 Subject: [PATCH 11/17] Update index.html Co-authored-by: Jan-Ivar Bruaroey --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index d061b5b..eed4c47 100644 --- a/index.html +++ b/index.html @@ -372,7 +372,7 @@

      Dictionary {{RTCRtpEncodingParameters}} Members

      The maximum dimensions at which to restrict this encoding.

      When {{scaleResolutionDownTo}} is specified, the - {{RTCRtpEncodingParameters/scaleResolutionDownBy}} scaling factor MUST + {{RTCRtpEncodingParameters/scaleResolutionDownBy}} value MUST be ignored by the encoder. Instead, frames are sent according to the specified resolution restrictions: frames MUST either be downscaled or sent as-is. The encoder MUST NOT upscale a frame. In simulcast, not From 02637b12afca8e21dd5d3f92bd950aaf0823ba66 Mon Sep 17 00:00:00 2001 From: henbos Date: Thu, 12 Sep 2024 16:21:20 +0200 Subject: [PATCH 12/17] Update index.html Co-authored-by: Jan-Ivar Bruaroey --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index eed4c47..c0bf6c4 100644 --- a/index.html +++ b/index.html @@ -373,7 +373,7 @@

      Dictionary {{RTCRtpEncodingParameters}} Members

      The maximum dimensions at which to restrict this encoding.

      When {{scaleResolutionDownTo}} is specified, the {{RTCRtpEncodingParameters/scaleResolutionDownBy}} value MUST - be ignored by the encoder. Instead, frames are sent according to the + be ignored. Instead, frames are sent according to the specified resolution restrictions: frames MUST either be downscaled or sent as-is. The encoder MUST NOT upscale a frame. In simulcast, not upscaling can result in multiple same-sized encodings if the size of From 555172fd10e923a6c7ef0afb8ec275e4b9b9c907 Mon Sep 17 00:00:00 2001 From: henbos Date: Thu, 12 Sep 2024 16:21:32 +0200 Subject: [PATCH 13/17] Update index.html Co-authored-by: Jan-Ivar Bruaroey --- index.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/index.html b/index.html index c0bf6c4..cf72136 100644 --- a/index.html +++ b/index.html @@ -374,8 +374,7 @@

      Dictionary {{RTCRtpEncodingParameters}} Members

      When {{scaleResolutionDownTo}} is specified, the {{RTCRtpEncodingParameters/scaleResolutionDownBy}} value MUST be ignored. Instead, frames are sent according to the - specified resolution restrictions: frames MUST either be downscaled or - sent as-is. The encoder MUST NOT upscale a frame. In simulcast, not + specified resolution restrictions: frames MUST NOT be upscaled. In simulcast, not upscaling can result in multiple same-sized encodings if the size of the frame is smaller than {{scaleResolutionDownTo}}; an encoding MUST NOT be sent if {{scaleResolutionDownTo}} is larger than the frame and From 6f0ae22ca65a9c88422db5d60bb884bd7249c0f0 Mon Sep 17 00:00:00 2001 From: henbos Date: Thu, 12 Sep 2024 16:21:38 +0200 Subject: [PATCH 14/17] Update index.html Co-authored-by: Jan-Ivar Bruaroey --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index cf72136..fb3e4e2 100644 --- a/index.html +++ b/index.html @@ -450,8 +450,8 @@

      Dictionary {{RTCResolutionRestriction}} Members

      maxWidth of type unsigned long
      -

      The maximum width that frames will be encoded with without getting - downscaled. The restrictions are orientation agnostic, see note below. +

      The maximum width that frames will be encoded with. + The restrictions are orientation agnostic, see note below. When scaling is applied, both dimensions of the frame are downscaled using the same factor.

      From ccd925e8691c369f19e349e86ebe98b6bf294e7f Mon Sep 17 00:00:00 2001 From: henbos Date: Thu, 12 Sep 2024 16:21:44 +0200 Subject: [PATCH 15/17] Update index.html Co-authored-by: Jan-Ivar Bruaroey --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index fb3e4e2..e5dda63 100644 --- a/index.html +++ b/index.html @@ -459,8 +459,8 @@

      Dictionary {{RTCResolutionRestriction}} Members

      maxHeight of type unsigned long
      -

      The maximum height that frames will be encoded with without getting - downscaled. The restrictions are orientation agnostic, see note below. +

      The maximum height that frames will be encoded with. + The restrictions are orientation agnostic, see note below. When scaling is applied, both dimensions of the frame are downscaled using the same factor.

      From df349f7825b42d5e4f75f7bda18fd3ebc9e47bdc Mon Sep 17 00:00:00 2001 From: henbos Date: Thu, 12 Sep 2024 16:22:04 +0200 Subject: [PATCH 16/17] Update index.html Co-authored-by: Jan-Ivar Bruaroey --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index e5dda63..143bac1 100644 --- a/index.html +++ b/index.html @@ -461,7 +461,7 @@

      Dictionary {{RTCResolutionRestriction}} Members

      The maximum height that frames will be encoded with. The restrictions are orientation agnostic, see note below. - When scaling is applied, both dimensions of the frame are downscaled + When scaling is applied, both dimensions of the frame MUST be downscaled using the same factor.

      From 0ec01b0249b99164350d14921dbc9f783dc8a3dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Thu, 12 Sep 2024 17:34:20 +0200 Subject: [PATCH 17/17] Remove part about not sending same size twice --- index.html | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/index.html b/index.html index 143bac1..42696ae 100644 --- a/index.html +++ b/index.html @@ -372,15 +372,9 @@

      Dictionary {{RTCRtpEncodingParameters}} Members

      The maximum dimensions at which to restrict this encoding.

      When {{scaleResolutionDownTo}} is specified, the - {{RTCRtpEncodingParameters/scaleResolutionDownBy}} value MUST - be ignored. Instead, frames are sent according to the - specified resolution restrictions: frames MUST NOT be upscaled. In simulcast, not - upscaling can result in multiple same-sized encodings if the size of - the frame is smaller than {{scaleResolutionDownTo}}; an encoding MUST - NOT be sent if {{scaleResolutionDownTo}} is larger than the frame and - there exists another {{RTCRtpEncodingParameters/active}} encoding with - a smaller {{scaleResolutionDownTo}} density resulting in the same - size.

      + {{RTCRtpEncodingParameters/scaleResolutionDownBy}} value MUST be + ignored. Instead, frames are sent according to the specified + resolution restrictions: frames MUST NOT be upscaled.

      When configuring parameters, the following validation MUST be performed if {{scaleResolutionDownTo}} is specified on any encoding or else {{RTCPeerConnection/addTransceiver()}} [= exception/throws =] a @@ -450,19 +444,19 @@

      Dictionary {{RTCResolutionRestriction}} Members

      maxWidth of type unsigned long
      -

      The maximum width that frames will be encoded with. - The restrictions are orientation agnostic, see note below. - When scaling is applied, both dimensions of the frame are downscaled - using the same factor.

      +

      The maximum width that frames will be encoded with. The + restrictions are orientation agnostic, see note below. When scaling is + applied, both dimensions of the frame are downscaled using the same + factor.

      maxHeight of type unsigned long
      -

      The maximum height that frames will be encoded with. - The restrictions are orientation agnostic, see note below. - When scaling is applied, both dimensions of the frame MUST be downscaled - using the same factor.

      +

      The maximum height that frames will be encoded with. The + restrictions are orientation agnostic, see note below. When scaling is + applied, both dimensions of the frame MUST be downscaled using the + same factor.

      The restrictions being orientation agnostic means that they will