From ea0c010e1395d92be1326684f87b205f037c0738 Mon Sep 17 00:00:00 2001
From: Jan-Ivar Bruaroey
each of the simulcast layers, populating the
{{RTCRtpCodingParameters/rid}} member
according to the corresponding rid value, and
- let sendEncodings be the list
+ let receiveEncodings be the list
containing the created dictionaries.
- Otherwise, let sendEncodings be an
+ Otherwise, let receiveEncodings be an
empty list.
2^(length of sendEncodings -
+ to 2^(length of receiveEncodings -
encoding index - 1)
.
If a suitable transceiver was found
(transceiver is set) and
- sendEncodings is non-empty, set
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
- to sendEncodings, and set
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[LastReturnedParameters]]}}
- to null
.
+ receiveEncodings is non-empty, run
+ the following steps:
+ If + transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}} + is non-empty, then for each encoding, + encoding, in + transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}, + copy all of encoding's members + and their values to the encoding with the + same {{RTCRtpCodingParameters/rid}} in + receiveEncodings, if there is one. +
+
+ Set
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
+ to receiveEncodings, and set
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[LastReturnedParameters]]}}
+ to null
.
+
@@ -2384,7 +2412,7 @@
2^(length of receiveEncodings -
+ to 2^(length of proposedSendEncodings -
encoding index - 1)
.
If a suitable transceiver was found (transceiver is set) and - receiveEncodings is non-empty, run - the following steps: + proposedSendEncodings is non-empty, + run the following steps:
Set
transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
- to receiveEncodings, and set
+ to proposedSendEncodings, and set
transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[LastReturnedParameters]]}}
to null
.
If remote is true
, and
- description is of type {{RTCSdpType/"offer"}}
- and contains a request to receive simulcast, and applying
- description leads to modifying a
- transceiver transceiver, and
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
- is non-empty, and not equal to the encodings that would
- result from processing description, the
- process of applying description fails. This
- specification does not allow remotely initiated RID
- renegotiation.
+ description is of type
+ {{RTCSdpType/"offer"}}, then for each
+ [= media description =] requesting to receive simulcast
+ that already has an existing {{RTCRtpTransceiver}} object,
+ transceiver, associated with it, as described in
+ [[!RFC8829]],
+ if the rid values specified in the simulcast attribute (up
+ to the maximum number the implementation supports) differ
+ in name, order or number from the ones previously used to
+ populate
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}},
+ then [= description fails | fail =] the process of
+ applying description.
+
- If the process to apply description fails for + If the process to apply + description fails for any reason, then the user agent MUST queue a task that runs the following steps:
@@ -2322,7 +2331,8 @@If the description is of type - {{RTCSdpType/"offer"}} and contains a request + {{RTCSdpType/"offer"}} and the + [= media description =] contains a request to receive simulcast, use the order of the rid values specified in the simulcast attribute to create an @@ -2363,42 +2373,16 @@
If a suitable transceiver was found
- (transceiver is set) and
+ (transceiver is set),
proposedSendEncodings is non-empty,
- run the following steps:
+ and
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
+ is empty, then set
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
+ to proposedSendEncodings, and set
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[LastReturnedParameters]]}}
+ to null
.
- If - transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}} - is non-empty, then for each encoding, - encoding, in - transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}, - copy all of encoding's members - and their values to the encoding with the - same {{RTCRtpCodingParameters/rid}} in - proposedSendEncodings, if there - is one. -
-
- Set
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
- to proposedSendEncodings, and set
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[LastReturnedParameters]]}}
- to null
.
-
From e671a7c0ff7b22b96dd694aa045798b6e4dafd78 Mon Sep 17 00:00:00 2001
From: Jan-Ivar Bruaroey
If the process to apply
+ id="fail-description">process to apply
description fails for
any reason, then the user agent MUST queue a task that
runs the following steps:
From b33b27244800402320e70440c03ad0b385c70e91 Mon Sep 17 00:00:00 2001
From: Jan-Ivar Bruaroey
If a suitable transceiver was found
- (transceiver is set),
+ (transceiver is set), and
proposedSendEncodings is non-empty,
- and
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
- is empty, then set
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
- to proposedSendEncodings, and set
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[LastReturnedParameters]]}}
- to
+ If the length of
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
+ is `1`, and the lone encoding
+ [=map/contains=] no
+ {{RTCRtpCodingParameters/rid}} member, set
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
+ to proposedSendEncodings.
+
+ Assert: The first encoding of
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
+ and the first encoding of
+ proposedSendEncodings both
+ [=map/contain=] a
+ {{RTCRtpCodingParameters/rid}} member, and
+ their values match.
+
+ Set the length of
+ proposedSendEncodings to the lesser
+ of its own length and the length of
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}.
+
+ Reduce the length of
+ proposedSendEncodings until all
+ encodings in it [=map/contain=] only
+ {{RTCRtpCodingParameters/rid}} member
+ values that match the
+ {{RTCRtpCodingParameters/rid}} member
+ value of the same-position encoding in
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}.
+
+ Set the length of
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
+ to the length of
+ proposedSendEncodings.
+
+ Set
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[LastReturnedParameters]]}}
+ to
From df59f7526a5f6a7327bfa712aae93d14a8b14f4e Mon Sep 17 00:00:00 2001
From: Jan-Ivar Bruaroey
- Assert: The first encoding of
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
- and the first encoding of
- proposedSendEncodings both
- [=map/contain=] a
- {{RTCRtpCodingParameters/rid}} member, and
- their values match.
-
- Set the length of
- proposedSendEncodings to the lesser
- of its own length and the length of
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}.
-
- Reduce the length of
- proposedSendEncodings until all
- encodings in it [=map/contain=] only
- {{RTCRtpCodingParameters/rid}} member
- values that match the
- {{RTCRtpCodingParameters/rid}} member
- value of the same-position encoding in
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}.
-
- Set the length of
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
- to the length of
- proposedSendEncodings.
-
- Set
+ to proposedSendEncodings, and set
transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[LastReturnedParameters]]}}
to
- If description rejects any of
+ If description is missing any of
the offered layers, then remove the
- dictionaries that correspond to rejected
+ dictionaries that correspond to the missing
layers from
transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}.
If description is missing any of
- the offered layers, then remove the
- dictionaries that correspond to the missing
- layers from
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}.
+ the previously negototiated layers, then
+ remove the dictionaries that correspond to
+ the missing layers from
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}, but do not reorder
+ them.
that already has an existing {{RTCRtpTransceiver}} object,
transceiver, associated with it, as described in
[[!RFC8829]],
- if the rid values specified in the simulcast attribute (up
- to the maximum number the implementation supports) differ
- in name, order or number from the ones previously used to
- populate
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}},
+ if the first encoding in
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
+ [=map/contains=] a {{RTCRtpCodingParameters/rid}} member, and its
+ value does not match the first rid in the simulcast attribute,
then [= description fails | fail =] the process of
applying description.
null
.
+ run the following steps:
+
null
.
+
that already has an existing {{RTCRtpTransceiver}} object,
transceiver, associated with it, as described in
[[!RFC8829]],
- if the first encoding in
+ if none of the encodings in
transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
- [=map/contains=] a {{RTCRtpCodingParameters/rid}} member, and its
- value does not match the first rid in the simulcast attribute,
- then [= description fails | fail =] the process of
- applying description.
+ [=map/contain=] a {{RTCRtpCodingParameters/rid}} member
+ whose value matches any of the rids in the simulcast
+ attribute, then [= description fails | fail =] the
+ process of applying description.
[=map/contains=] no
{{RTCRtpCodingParameters/rid}} member, set
transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}
- to proposedSendEncodings.
-
-
-
null
.
the previously negototiated layers, then
remove the dictionaries that correspond to
the missing layers from
- transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}, but do not reorder
- them.
+ transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}}.