Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 28 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -159,14 +159,32 @@ <h3>
</p>
<ol>
<li>
<p>Set {{RTCRtpTransceiver/[[HeaderExtensionsToNegotiate]]}} to the
<p>If transceivers of the same kind exist in the current PeerConnection,
copy {{RTCRtpTransceiver/[[HeaderExtensionsToNegotiate]]}} from
the first such transceiver, in the order defined by the [=CollectTransceivers=] algorithm.
This ensures consistency across transceivers if they are added
after initial negotiation.
</p>
<p>If no such transceiver exists, set {{RTCRtpTransceiver/[[HeaderExtensionsToNegotiate]]}} to the
platform-specific list of implemented RTP header extensions. The
{{RTCRtpHeaderExtensionCapability/direction}} attribute for all
extensions that are mandatory to use MUST be initialized to an
appropriate value other than {{RTCRtpTransceiverDirection/"stopped"}}.
The {{RTCRtpHeaderExtensionCapability/direction}} attribute for
extensions that will not be offered by default in an initial offer MUST
be initialized to {{RTCRtpTransceiverDirection/"stopped"}}.</p>
be initialized to {{RTCRtpTransceiverDirection/"stopped"}}.</p>
<p>
If there are header extensions whose state needs to be consistent across all transceivers
in a bundle,
and any other transceiver exists that will be included in the same bundle,
copy the {{RTCRtpHeaderExtensionCapability/direction}} attribute
for that extension from that other transceiver.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add an example to illustrate the usefulness of the mechanism

</p>
<p class="note">An example of header extensions that need to be identical across all
media sections is the key management extensions from [[RFC4567]], as described in section 5.35 of
[[RFC8859]], where they have category IDENTICAL. If this is supported and negotiated as "sendrecv",
and a new transceiver is added, that transceiver needs to also have the extension as "sendrecv".
</p>
<p class="note">The list of header extensions that MUST/SHOULD be
supported is listed in [[RTCWEB-RTP]], section 5.2. The "mid" extension
is mandatory to use when BUNDLE is in use, per [[BUNDLE]] section
Expand Down Expand Up @@ -230,6 +248,14 @@ <h2>Modifications to existing procedures</h2>
<var>transceiver</var>.{{RTCRtpTransceiver/[[NegotiatedHeaderExtensions]]}}
to <var>negotiatedExtensions</var>.</p>
</li>
<li>
<p>
Set <var>transceiver</var>.{{RTCRtpTransceiver/[[HeaderExtensionsToNegotiate]]}}
to <var>negotiatedExtensions</var>.
This ensures that unless further calls to {{RTCRtpTransceiver/setHeaderExtensionsToNegotiate}} are done,
subsequent offer/answer will not alter the list of extensions.
</p>
</li>
</ol>
</li>
</ul>
Expand Down