commit eb42f6a68662b6281258f3bad33de3b16405e3a2
parent fd67d67de7f3e22e6264ebfe7ad2aa5dfb5c3bd9
Author: Nico Grunbaum <na-g@nostrum.com>
Date: Wed, 31 Dec 2025 22:47:15 +0000
Bug 2008063 - expand webrtc in-tree docs with terms;r=mjf
Differential Revision: https://phabricator.services.mozilla.com/D277677
Diffstat:
1 file changed, 766 insertions(+), 1 deletion(-)
diff --git a/docs/contributing/debugging/debugging_webrtc_calls.rst b/docs/contributing/debugging/debugging_webrtc_calls.rst
@@ -975,10 +975,14 @@ provided below to help one navigate.
- Signalling
- This is the JSEP state engine implementation
-
- * - `media/webrtc/libwebrtcglue <https://searchfox.org/mozilla-central/source/dom/media/webrtc/libwebrtcglue>`__
+ * - `dom/media/webrtc/libwebrtcglue <https://searchfox.org/mozilla-central/source/dom/media/webrtc/libwebrtcglue>`__
- WebRTC (various)
- This is the glue code between libwebrtc and Firefox
-
+ * - `dom/media/webrtc/libwebrtc_overrides <https://searchfox.org/mozilla-central/source/dom/media/webrtc/libwebrtc_overrides>`__
+ - WebRTC (various)
+ - Firefox-specific overrides for libwebrtc components
+ -
* - `dom/media/webrtc/sdp <https://searchfox.org/mozilla-central/source/dom/media/webrtc/sdp>`__
- Signalling
- This contains the SDP parsing interface
@@ -995,6 +999,10 @@ provided below to help one navigate.
- Network
- This contains the ICE implementation, the MDNS implementation, and transport code
-
+ * - `dom/media/webrtc/transport/ipc <https://searchfox.org/mozilla-central/source/dom/media/webrtc/transport/ipc>`__
+ - Network
+ - IPDL protocols for WebRTC transport, including STUN address requests and WebRTC TCP sockets
+ -
* - `dom/media/webrtc/transportbridge <https://searchfox.org/mozilla-central/source/dom/media/webrtc/transportbridge>`__
- WebRTC
- This contains the MediaPipeline and MediaPipeline filter code which is glue between transport and the libwebrtc RTP stack
@@ -1019,6 +1027,46 @@ provided below to help one navigate.
- Media Capture
- GetUserMedia and related classes are here
- There are many other unrelated media source files here
+ * - `dom/media/systemservices <https://searchfox.org/mozilla-central/source/dom/media/systemservices>`__
+ - Media Capture
+ - System services for media capture including camera/microphone access
+ - Contains CamerasChild, CamerasParent, VideoEngine, and platform-specific implementations
+ * - `dom/media/encoder <https://searchfox.org/mozilla-central/source/dom/media/encoder>`__
+ - Media Encoding
+ - Media encoders for recording, including Opus and VP8 track encoders
+ -
+ * - `dom/media/gmp <https://searchfox.org/mozilla-central/source/dom/media/gmp>`__
+ - Media Codecs
+ - Gecko Media Plugin (GMP) framework for sandboxed codec plugins
+ - Used by WebRTC for H.264 codec support
+ * - `dom/media/platforms <https://searchfox.org/mozilla-central/source/dom/media/platforms>`__
+ - Media Codecs
+ - Platform-specific encoder/decoder implementations (Apple, Android, FFmpeg, WMF)
+ - Contains PlatformEncoderModule and EncoderConfig used by WebRTC
+ * - `netwerk/sctp/datachannel <https://searchfox.org/mozilla-central/source/netwerk/sctp/datachannel>`__
+ - Data Channels
+ - SCTP-based data channel implementation
+ -
+ * - `browser/components/webrtc <https://searchfox.org/mozilla-central/source/browser/components/webrtc>`__
+ - Browser UI
+ - Browser-level WebRTC UI components including permission prompts and indicators
+ -
+ * - `toolkit/content/aboutwebrtc <https://searchfox.org/mozilla-central/source/toolkit/content/aboutwebrtc>`__
+ - Debugging
+ - Implementation of the about:webrtc debugging page
+ -
+ * - `media/webrtc/signaling <https://searchfox.org/mozilla-central/source/media/webrtc/signaling>`__
+ - Signalling
+ - WebRTC signaling implementation and GTests
+ -
+ * - `browser/base/content/test/webrtc <https://searchfox.org/mozilla-central/source/browser/base/content/test/webrtc>`__
+ - Tests
+ - Browser chrome tests for WebRTC getUserMedia and getDisplayMedia
+ -
+ * - `testing/web-platform/tests/webrtc <https://searchfox.org/mozilla-central/source/testing/web-platform/tests/webrtc>`__
+ - Tests
+ - Web Platform Tests for WebRTC conformance
+ - Also includes webrtc-encoded-transform, webrtc-extensions, webrtc-ice, webrtc-identity, webrtc-priority, webrtc-stats, webrtc-svc
* - `dom/webidl <https://searchfox.org/mozilla-central/source/dom/webidl>`__
- WebIDL (JS API)
- This contains the WebIDL definitions for the WebRTC JS API amongst many other WebIDL definitions
@@ -1051,3 +1099,720 @@ send side to play out on receive side to be
::
25ms + (272ms / 2) = 161ms
+
+.. _glossary:
+
+Appendix: WebRTC Glossary
+-------------------------
+
+Session Management Terms
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Offer** An SDP document created by one peer to initiate a connection,
+proposing media parameters and capabilities.
+
+**Answer** An SDP document created in response to an offer, accepting or
+rejecting the proposed media parameters.
+
+**Pranswer (Provisional Answer)** A preliminary answer that may be
+modified before the final answer is accepted, allowing for early media
+establishment.
+
+**Rollback** The action of reverting to a previous stable session state,
+typically used when negotiation fails or needs to be cancelled. During
+offer/answer negotiation, the ICE agent automatically initiates rollback
+when an offer collision occurs (e.g., receiving an offer while in
+have-local-offer state). Learn more about `perfect
+negotiation <https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Perfect_negotiation>`__
+on MDN and RFC 9429
+`§4.1.10.2 <https://www.rfc-editor.org/rfc/rfc9429#section-4.1.10.2>`__
+and `§5.7 <https://www.rfc-editor.org/rfc/rfc9429#section-5.7>`__.
+
+**Perfect Negotiation** A design pattern for WebRTC signaling that
+handles offer collisions gracefully using rollback, allowing both peers
+to attempt to be the offerer simultaneously without complex glare
+handling logic. Learn more about `perfect
+negotiation <https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Perfect_negotiation>`__
+on MDN.
+
+**Signaling State** The current state of the offer/answer negotiation
+process (``stable``, ``have-local-offer``, ``have-remote-offer``,
+``have-local-pranswer``, ``have-remote-pranswer``, ``closed``). Learn
+more about
+`signalingState <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/signalingState>`__
+on MDN and RFC 9429
+`§3.2 <https://www.rfc-editor.org/rfc/rfc9429#section-3.2>`__.
+
+**Pending Description** An offer or answer that has been created or set
+but not yet matched with a corresponding answer or offer. Learn more
+about
+`pendingLocalDescription <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/pendingLocalDescription>`__
+and
+`pendingRemoteDescription <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/pendingRemoteDescription>`__
+on MDN and RFC 9429
+`§4.1.14 <https://www.rfc-editor.org/rfc/rfc9429#section-4.1.14>`__ and
+`§4.1.16 <https://www.rfc-editor.org/rfc/rfc9429#section-4.1.16>`__.
+
+**Current Description** The currently active local or remote session
+description after successful negotiation. Learn more about
+`currentLocalDescription <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/currentLocalDescription>`__
+and
+`currentRemoteDescription <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/currentRemoteDescription>`__
+on MDN and RFC 9429
+`§4.1.13 <https://www.rfc-editor.org/rfc/rfc9429#section-4.1.13>`__ and
+`§4.1.15 <https://www.rfc-editor.org/rfc/rfc9429#section-4.1.15>`__.
+
+Transport and Bundle Terms
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Bundle Policy** Controls how multiple media tracks are combined onto a
+single transport (``balanced``, ``max-compat``, ``max-bundle``). Learn
+more about
+`transports <https://developer.mozilla.org/en-US/docs/Web/API/RTCDtlsTransport#allocation_of_dtls_transports>`__
+and `bundle
+configuration <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection#bundlepolicy>`__
+on MDN.
+
+**Bundle Level** The m-line index of the media section that provides the
+transport for bundled media.
+
+**Transport ID** A unique identifier for a transport used to carry media
+or data.
+
+**ICE Restart** The process of restarting ICE candidate gathering and
+connectivity checks, typically to recover from network changes.
+
+**ICE Trickle** A technique where ICE candidates are incrementally sent
+to the remote peer as they are gathered, rather than waiting for all
+candidates to be collected before beginning negotiation. Learn more
+about
+`connectivity <https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Connectivity>`__
+on MDN and `trickle
+detection <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/canTrickleIceCandidates>`__
+on in the JSEP spec.
+
+**ICE Credentials (ufrag/pwd)** Username fragment and password used for
+ICE connectivity checks.
+
+**DTLS Fingerprint** A cryptographic hash of the DTLS certificate used
+to verify the identity of the peer. Learn more about `RTCCertificate
+fingerprints <https://developer.mozilla.org/en-US/docs/Web/API/RTCCertificate/getFingerprints>`__
+on MDN and RFC 8122
+`§5 <https://www.rfc-editor.org/rfc/rfc8122#section-5>`__ and RFC 4572
+`§1 <https://www.rfc-editor.org/rfc/rfc4572#section-1>`__.
+
+**ICE Lite** A simplified ICE implementation that only acts as a
+controlled agent, used by servers. Learn more about ICE Lite in RFC 8445
+`§3 <https://www.rfc-editor.org/rfc/rfc8445#section-3>`__.
+
+**ICE Controlling** The ICE agent role that makes the final decision on
+which candidate pair to use.
+
+**Candidate** An ICE candidate describing the protocols and routing
+needed for WebRTC to communicate with a remote device. Each candidate
+specifies network connectivity information including IP address, port,
+transport protocol, and candidate type (host, srflx, prflx, relay).
+Candidates are gathered during connection establishment and exchanged
+between peers. Learn more about
+`RTCIceCandidate <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate>`__
+on MDN and RFC 8445
+`§2 <https://www.rfc-editor.org/rfc/rfc8445#section-2>`__.
+
+**Candidate Pair** A pairing of a local and remote ICE candidate that
+together describe a viable connection path between two WebRTC endpoints.
+During ICE connectivity checks, candidate pairs are tested to determine
+which provides the best connection. The selected candidate pair is used
+for media and data transport. Learn more about
+`RTCIceCandidatePair <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidatePair>`__
+and `candidate pair
+stats <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidatePairStats>`__
+on MDN and RFC 8445
+`§2 <https://www.rfc-editor.org/rfc/rfc8445#section-2>`__.
+
+Codec and Media Encoding Terms
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Payload Type (PT)** A numeric identifier (0-127) in RTP packets that
+identifies the codec being used. Payload types 0-95 are statically
+assigned for common codecs, while 96-127 are dynamically assigned and
+negotiated via SDP. Learn more about `RTP
+parameters <https://www.iana.org/assignments/rtp-parameters>`__ via the
+IANA registry where many of the relevant RFCs for specific formats are
+linked.
+
+**FMTP (Format Parameters)** SDP attribute containing codec-specific
+parameters like profile, level, or packetization mode.
+
+**RTX (Retransmission)** A mechanism for retransmitting lost RTP
+packets, using a separate payload type.
+
+**RED (Redundant Encoding)** A mechanism for including redundant data in
+RTP packets to help with packet loss recovery.
+
+**ULPFEC (Uneven Level Protection Forward Error Correction)** Forward
+error correction mechanism for protecting video streams against packet
+loss. Learn more about ULPFEC in RFC 5109
+`§1 <https://datatracker.ietf.org/doc/html/rfc5109#section-1>`__.
+
+**FEC (Forward Error Correction)** Technique of adding redundancy to
+transmitted data to allow recovery from errors without retransmission.
+
+**Opus** A versatile audio codec widely used in WebRTC, supporting both
+voice and music at various bitrates. Learn more about
+`Opus <https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/WebRTC_codecs#opus>`__
+on MDN.
+
+**VP8** An open video codec developed by Google, mandatory for WebRTC
+implementations. Learn more about
+`VP8 <https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/WebRTC_codecs#vp8>`__
+on MDN.
+
+**VP9** An improved successor to VP8, offering better compression
+efficiency.
+
+**AV1** A modern open video codec offering significant compression
+improvements over VP9. Learn more about
+`AV1 <https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/WebRTC_codecs#av1>`__
+on MDN.
+
+**H.264/AVC (Advanced Video Coding)** A widely-used video codec,
+mandatory for WebRTC implementations. Learn more about
+`AVC/H.264 <https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/WebRTC_codecs#avc_h.264>`__
+on MDN.
+
+**H.265/HEVC (High Efficiency Video Coding)** A successor to H.264
+offering improved compression efficiency, with hardware-dependent
+support in modern browsers. Chrome 136+ and Safari support H.265 in
+WebRTC when available via hardware. Learn more about `video
+codecs <https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/Video_codecs>`__
+on MDN.
+
+**G.722** A wideband audio codec operating at 64 kbit/s. Learn more
+about
+`G.722 <https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/Audio_codecs#g.722_64_kbps_7_khz_audio_coding>`__
+on MDN.
+
+**PCMU/PCMA** G.711 audio codecs (μ-law and A-law) offering basic audio
+quality, mandatory for WebRTC. Learn more about
+`G.711 <https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/WebRTC_codecs#g.711>`__
+on MDN.
+
+RTP Header Extensions and Features
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**RTP Extension (extmap)** RTP header extensions that carry additional
+metadata like audio levels or video orientation.
+
+**SSRC (Synchronization Source)** A 32-bit identifier for a single
+source of RTP packets within an RTP session.
+
+**CNAME (Canonical Name)** A persistent identifier for an RTP source
+that remains constant across SSRCs.
+
+**RID (Restriction Identifier)** An identifier used in simulcast to
+distinguish between different encodings of the same source.
+
+**MID (Media Identification)** An identifier that associates an RTP
+stream with a specific m-line in the SDP.
+
+**MSID (Media Stream Identification)** An identifier that associates an
+RTP stream with a MediaStream and track.
+
+Common RTP Header Extensions
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+RTP header extensions carry additional metadata in RTP packets using the
+framework defined in RFC 8285. All extensions must be negotiated via SDP
+before use.
+
+**Audio Level (Client-to-Mixer)** Indicates the audio level of the RTP
+packet payload in -dBov, allowing servers to identify active speakers
+without decoding audio. URI:
+``urn:ietf:params:rtp-hdrext:ssrc-audio-level``. Learn more about `audio
+level
+indication <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/getParameters#headerextensions>`__
+on MDN and RFC 6464
+`§1 <https://www.rfc-editor.org/rfc/rfc6464#section-1>`__.
+
+**Audio Level (Mixer-to-Client)** Indicates audio levels of contributing
+sources in a mixed audio stream. URI:
+``urn:ietf:params:rtp-hdrext:csrc-audio-level``. Learn more in RFC 6465
+`§1 <https://www.rfc-editor.org/rfc/rfc6465#section-1>`__.
+
+**Video Orientation (CVO)** Indicates the rotation needed for video
+frames (0, 90, 180, 270 degrees) to support orientation changes. URI:
+``urn:3gpp:video-orientation``. Learn more in 3GPP TS 26.114 and RFC
+8285 `§1 <https://www.rfc-editor.org/rfc/rfc8285#section-1>`__.
+
+**Transport-Wide Sequence Number** Provides sequence numbers for
+transport-wide congestion control feedback. URI:
+``http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions``.
+Learn more in draft-holmer-rmcat-transport-wide-cc-extensions
+`§2 <https://datatracker.ietf.org/doc/html/draft-holmer-rmcat-transport-wide-cc-extensions#section-2>`__.
+
+**MID Header Extension** Carries the media identification tag in RTP
+packets for bundle multiplexing. URI:
+``urn:ietf:params:rtp-hdrext:sdes:mid``. Learn more in RFC 9143
+`§1 <https://www.rfc-editor.org/rfc/rfc9143#section-1>`__.
+
+**RID Header Extension** Identifies RTP streams in simulcast scenarios.
+URI: ``urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id``. Learn more in
+RFC 8852 `§1 <https://www.rfc-editor.org/rfc/rfc8852#section-1>`__.
+
+**Absolute Capture Time** Timestamps packets with NTP time when media
+was captured, enabling audio-video synchronization across hops. URI:
+``http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time``. Learn
+more in draft-ietf-avtcore-abs-capture-time
+`§1 <https://www.ietf.org/archive/id/draft-ietf-avtcore-abs-capture-time-00.html#section-1>`__.
+
+**Transmission Time Offset** Communicates the offset between RTP
+timestamp and actual transmission time, useful for handling
+retransmissions and buffering. URI:
+``urn:ietf:params:rtp-hdrext:toffset``. Learn more in RFC 5450
+`§1 <https://www.rfc-editor.org/rfc/rfc5450#section-1>`__.
+
+**Absolute Send Time** Timestamps packets with departure time from the
+sender, providing precise timing for bandwidth estimation. URI:
+``http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time``. Learn
+more in the `abs-send-time
+specification <https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/abs-send-time/>`__.
+
+**Video Content Type** Indicates whether video is screenshare or camera
+content, enabling optimized rendering. URI:
+``http://www.webrtc.org/experiments/rtp-hdrext/video-content-type``.
+Learn more in the `video-content-type
+specification <https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/video-content-type/>`__.
+
+**Video Timing** Provides per-frame timing information including encode
+start/finish, packetization, and pacer timestamps for performance
+analysis. URI:
+``http://www.webrtc.org/experiments/rtp-hdrext/video-timing``. Learn
+more in the `video-timing
+specification <https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/video-timing/>`__.
+
+**Playout Delay** Allows sender to specify minimum and maximum playout
+delay ranges, enabling latency control for different use cases (gaming,
+streaming, conferencing). URI:
+``http://www.webrtc.org/experiments/rtp-hdrext/playout-delay``. Learn
+more in the `playout-delay
+specification <https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/playout-delay/>`__.
+
+**Color Space** Communicates color space information and HDR metadata
+for proper video rendering. URI:
+``http://www.webrtc.org/experiments/rtp-hdrext/color-space``. Learn more
+in the `color-space
+specification <https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/color-space/>`__.
+
+**Video Frame Tracking ID** Propagates VideoFrame ID field through RTP
+packets for frame tracking. URI:
+``http://www.webrtc.org/experiments/rtp-hdrext/video-frame-tracking-id``.
+This is only for quality testing purposes and should not be used in
+production. Learn more in the `video-frame-tracking-id
+specification <https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/video-frame-tracking-id/>`__.
+
+**Dependency Descriptor** Conveys information about video frames and
+their dependencies in a codec-agnostic way, enabling selective
+forwarding without decoding. Designed for AV1 but useful for other
+codecs. URI:
+``https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension``.
+Learn more in the `AV1 RTP
+specification <https://aomediacodec.github.io/av1-rtp-spec/>`__.
+
+**SDES Items in RTP Headers** Allows rapid delivery of RTCP Source
+Description items (like CNAME) via RTP header extensions. Learn more in
+RFC 7941 `§1 <https://www.rfc-editor.org/rfc/rfc7941#section-1>`__.
+
+Simulcast and Encoding Terms
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Simulcast** Simultaneously sending multiple encoded versions of the
+same video source at different qualities. Codecs may have optimizations
+that improve performance when encoding the same frame at different
+resolutions.
+
+**SVC (Scalable Video Coding)** A video coding technique that encodes a
+single bitstream that can be decoded at different resolutions, frame rates,
+or quality levels to adapt to varying network conditions and receiver
+capabilities. Unlike simulcast which sends multiple independent streams, WebRTC
+SVC produces one encoded stream on a single SSRC. Scalability modes use **L**
+for spatial layers (resolution scalability) and **T** for temporal layers
+(frame rate scalability), such as L1T2 or L3T3. SVC is particularly useful
+for Selective Forwarding Units (SFUs) which can selectively forward layers
+to adapt to varying network conditions without re-encoding. Learn more about
+`scalability modes
+<https://developer.mozilla.org/en-US/docs/Web/API/RTCOutboundRtpStreamStats/scalabilityMode>`__
+on MDN and in the W3C `Scalable Video Coding (SVC) Extension
+<https://www.w3.org/TR/webrtc-svc/>`__ specification.
+
+**Encoding** A single encoded representation of media, identified by an
+SSRC or RID.
+
+**Send Track / Recv Track** Internal representation of media direction -
+tracks for sending media and tracks for receiving media.
+
+**Transceiver** A pairing of a sender and receiver that share a common
+mid value, managing bidirectional media.
+
+**Negotiated Details** The final agreed-upon parameters for a track
+after offer/answer negotiation completes.
+
+SDP Attributes and Parameters
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**M-line (Media Description Line)** An SDP line beginning with ``m=``
+that defines a media stream, specifying the media type (audio, video,
+etc.), port, transport protocol, and codec format. The interpretation of
+the format is dependent on the selected protocol. Each m-line starts a
+new media section that continues until the next m-line or end of the
+SDP. Learn more about
+`SDP <https://developer.mozilla.org/en-US/docs/Glossary/SDP>`__ on MDN
+and RFC 8866
+`§5.14 <https://www.rfc-editor.org/rfc/rfc8866#section-5.14>`__.
+
+**Direction Attribute** SDP attribute indicating media stream direction
+(``sendrecv``, ``sendonly``, ``recvonly``, ``inactive``).
+
+**Setup Role** DTLS role in the connection (``active``, ``passive``,
+``actpass``) determining who initiates the handshake.
+
+**TIAS (Transport Independent Application Specific Maximum)** Bandwidth
+constraint indicating maximum bitrate in bits per second. Learn more
+about
+`maxBitrate <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/setParameters#maxbitrate>`__
+on MDN and RFC 3890
+`§6.2.2 <https://datatracker.ietf.org/doc/html/rfc3890#section-6.2.2>`__.
+
+H.264 Format Parameters
+~~~~~~~~~~~~~~~~~~~~~~~
+
+**H.264 Profile Level ID** H.264-specific parameter indicating the codec
+profile (baseline, main, high) and level (capability). Signaled in SDP
+via the ``profile-level-id`` FMTP parameter. Learn more about `H.264
+profile-level-id <https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/WebRTC_codecs#profile-level-id>`__
+on MDN and RFC 6184
+`§8.1 <https://www.rfc-editor.org/rfc/rfc6184#section-8.1>`__.
+
+**H.264 Max-FS (Maximum Frame Size)** Video codec parameter limiting the
+maximum number of macroblocks in a frame. Signaled in SDP via the
+``max-fs`` FMTP parameter for H.264. Learn more about
+`max-fs <https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/WebRTC_codecs#max-fs>`__
+on MDN and RFC 6184
+`§8.1 <https://www.rfc-editor.org/rfc/rfc6184#section-8.1>`__.
+
+**H.264 Max-FR (Maximum Frame Rate)** Video codec parameter limiting the
+maximum frame rate in frames per second. Signaled in SDP via the
+``max-fr`` FMTP parameter for H.264. Learn more about
+`maxFramerate <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/setParameters#maxframerate>`__
+on MDN and RFC 6184
+`§8.1 <https://www.rfc-editor.org/rfc/rfc6184#section-8.1>`__.
+
+**H.264 Max-BR (Maximum Bitrate)** Video codec parameter limiting the
+maximum bitrate. Signaled in SDP via the ``max-br`` FMTP parameter for
+H.264. Learn more about
+`maxBitrate <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/setParameters#maxbitrate>`__
+on MDN and RFC 6184
+`§8.1 <https://www.rfc-editor.org/rfc/rfc6184#section-8.1>`__.
+
+**H.264 Max-MBPS (Maximum Macroblocks Per Second)** H.264 parameter
+limiting the processing rate. Signaled in SDP via the ``max-mbps`` FMTP
+parameter. Learn more about
+`max-mbps <https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/WebRTC_codecs#max-mbps>`__
+on MDN and RFC 6184
+`§8.1 <https://www.rfc-editor.org/rfc/rfc6184#section-8.1>`__.
+
+**H.264 Sprop-parameter-sets** H.264 parameter containing SPS/PPS data
+for decoder initialization. Signaled in SDP via the
+``sprop-parameter-sets`` FMTP parameter. Learn more in RFC 6184
+`§8.1 <https://www.rfc-editor.org/rfc/rfc6184#section-8.1>`__.
+
+**H.264 Packetization Mode** H.264 parameter specifying the
+packetization method for RTP packets. Mode 0 uses single NAL unit
+packets, while Mode 1 allows for more efficient fragmentation and
+aggregation of NAL units. Signaled in SDP via the ``packetization-mode``
+FMTP parameter. Learn more in RFC 6184
+`§8.1 <https://www.rfc-editor.org/rfc/rfc6184#section-8.1>`__.
+
+VP8 Format Parameters
+~~~~~~~~~~~~~~~~~~~~~
+
+**VP8 Max-FS (Maximum Frame Size)** VP8 parameter limiting the maximum
+frame size in units of macroblocks that the decoder can decode. The
+decoder can handle frame widths and heights up to int(sqrt(max-fs \* 8))
+macroblocks. For example, max-fs=1200 supports up to 640x480 resolution
+(97 macroblocks width/height, or 1552 pixels). Signaled in SDP via the
+``max-fs`` FMTP parameter. Learn more in RFC 7741
+`§6.1 <https://www.rfc-editor.org/rfc/rfc7741#section-6.1>`__.
+
+**VP8 Max-FR (Maximum Frame Rate)** VP8 parameter limiting the maximum
+frame rate in frames per second that the decoder can decode. Signaled in
+SDP via the ``max-fr`` FMTP parameter. Learn more in RFC 7741
+`§6.1 <https://www.rfc-editor.org/rfc/rfc7741#section-6.1>`__.
+
+VP9 Format Parameters
+~~~~~~~~~~~~~~~~~~~~~
+
+**VP9 Profile-ID** VP9 parameter indicating the codec profile (0-3).
+Profile 0 supports 8-bit 4:2:0 only, Profile 1 adds 8-bit 4:2:2/4:4:4,
+Profile 2 adds 10/12-bit 4:2:0, and Profile 3 adds 10/12-bit
+4:2:2/4:4:4. When not present, a value of 0 is inferred. Signaled in SDP
+via the ``profile-id`` FMTP parameter. Learn more in RFC 9628
+`§6 <https://www.rfc-editor.org/rfc/rfc9628#section-6>`__.
+
+**VP9 Max-FS (Maximum Frame Size)** VP9 parameter limiting the maximum
+frame size in units of macroblocks that the decoder can decode. Signaled
+in SDP via the ``max-fs`` FMTP parameter. Learn more in RFC 9628
+`§6 <https://www.rfc-editor.org/rfc/rfc9628#section-6>`__.
+
+**VP9 Max-FR (Maximum Frame Rate)** VP9 parameter limiting the maximum
+frame rate in frames per second that the decoder can decode. Signaled in
+SDP via the ``max-fr`` FMTP parameter. Learn more in RFC 9628
+`§6 <https://www.rfc-editor.org/rfc/rfc9628#section-6>`__.
+
+AV1 Format Parameters
+~~~~~~~~~~~~~~~~~~~~~
+
+**AV1 Profile** AV1 parameter indicating the codec profile (Main, High,
+or Professional). The profile determines the supported bit depths and
+chroma subsampling formats. Signaled in SDP via the ``profile``
+parameter. Learn more in the `AV1 RTP
+specification <https://aomediacodec.github.io/av1-rtp-spec/#sdp-parameters>`__.
+
+**AV1 Level-IDX** AV1 parameter indicating the level, which defines the
+decoder’s maximum processing capabilities including resolution, frame
+rate, and bitrate. Signaled in SDP via the ``level-idx`` parameter.
+Learn more in the `AV1 RTP
+specification <https://aomediacodec.github.io/av1-rtp-spec/#sdp-parameters>`__.
+
+**AV1 Tier** AV1 parameter indicating the tier (Main or High), which
+determines the maximum bitrate for a given level. High tier allows
+roughly 2x the bitrate of Main tier. Signaled in SDP via the ``tier``
+parameter. Learn more in the `AV1 RTP
+specification <https://aomediacodec.github.io/av1-rtp-spec/#sdp-parameters>`__.
+
+H.265/HEVC Format Parameters
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**H.265 Profile-ID** H.265 parameter indicating the codec profile along
+with profile-space. Profiles include Main, Main 10, Main Still Picture,
+and others that determine supported bit depths and features. Signaled in
+SDP via the ``profile-id`` FMTP parameter. Learn more in RFC 7798
+`§7.1 <https://www.rfc-editor.org/rfc/rfc7798#section-7.1>`__.
+
+**H.265 Level-ID** H.265 parameter indicating the level, which defines
+the decoder’s maximum processing capabilities including resolution,
+frame rate, and bitrate. Signaled in SDP via the ``level-id`` FMTP
+parameter. Learn more in RFC 7798
+`§7.1 <https://www.rfc-editor.org/rfc/rfc7798#section-7.1>`__.
+
+**H.265 Tier-Flag** H.265 parameter indicating the tier (Main=0 or
+High=1), which determines the maximum bitrate for a given level. High
+tier supports higher bitrates than Main tier at the same level. Signaled
+in SDP via the ``tier-flag`` FMTP parameter. Learn more in RFC 7798
+`§7.1 <https://www.rfc-editor.org/rfc/rfc7798#section-7.1>`__.
+
+**H.265 Max-LSR (Maximum Luma Sample Rate)** H.265 parameter indicating
+the maximum processing rate in units of luma samples per second,
+allowing receivers to signal capabilities beyond the base level
+requirements. Signaled in SDP via the ``max-lsr`` FMTP parameter. Learn
+more in RFC 7798
+`§7.1 <https://www.rfc-editor.org/rfc/rfc7798#section-7.1>`__.
+
+**H.265 Max-FPS (Maximum Frame Rate)** H.265 parameter indicating the
+maximum picture rate in units of pictures per 100 seconds, used to
+signal a constraint that lowers the maximum picture rate. Signaled in
+SDP via the ``max-fps`` FMTP parameter. Learn more in RFC 7798
+`§7.1 <https://www.rfc-editor.org/rfc/rfc7798#section-7.1>`__.
+
+**H.265 Max-BR (Maximum Bitrate)** H.265 parameter indicating the
+maximum bitrate capability of the receiver, extending beyond the base
+level requirements. Signaled in SDP via the ``max-br`` FMTP parameter.
+Learn more in RFC 7798
+`§7.1 <https://www.rfc-editor.org/rfc/rfc7798#section-7.1>`__.
+
+**H.265 Max-CPB (Maximum Coded Picture Buffer)** H.265 parameter
+indicating the maximum coded picture buffer size capability, allowing
+receivers to signal support for larger buffers than required by the base
+level. Signaled in SDP via the ``max-cpb`` FMTP parameter. Learn more in
+RFC 7798 `§7.1 <https://www.rfc-editor.org/rfc/rfc7798#section-7.1>`__.
+
+**H.265 Sprop-VPS/SPS/PPS** H.265 parameters containing VPS (Video
+Parameter Set), SPS (Sequence Parameter Set), and PPS (Picture Parameter
+Set) data for out-of-band decoder initialization. Signaled in SDP via
+the ``sprop-vps``, ``sprop-sps``, and ``sprop-pps`` FMTP parameters.
+Learn more in RFC 7798
+`§7.1 <https://www.rfc-editor.org/rfc/rfc7798#section-7.1>`__.
+
+RTCP Feedback Types
+~~~~~~~~~~~~~~~~~~~
+
+**RTCP Feedback (rtcp-fb)** Mechanisms for providing rapid feedback
+about media quality and requests.
+
+**NACK (Negative Acknowledgment)** RTCP feedback requesting
+retransmission of lost packets.
+
+**PLI (Picture Loss Indication)** RTCP feedback requesting a full
+intra-frame when video decoding fails. Learn more about PLI in RFC 4585
+`§6.3.1 <https://www.rfc-editor.org/rfc/rfc4585.html#section-6.3.1>`__.
+
+**FIR (Full Intra Request)** RTCP feedback requesting a full intra-frame
+for decoder refresh. Learn more about FIR in RFC 2032
+`§5.2.1 <https://www.rfc-editor.org/rfc/rfc2032#section-5.2.1>`__.
+
+**TMMBR (“timber”, Temporary Maximum Media Stream Bitrate Request)**
+RTCP feedback for requesting bitrate reduction. Learn more about TMMBR
+in RFC 5104
+`§3.5.4 <https://datatracker.ietf.org/doc/html/rfc5104#section-3.5.4>`__.
+
+**REMB (Receiver Estimated Maximum Bitrate)** RTCP feedback
+communicating receiver’s bandwidth estimate to the sender. Learn more
+about REMB in draft-alvestrand-rmcat-remb
+`§2 <https://datatracker.ietf.org/doc/html/draft-alvestrand-rmcat-remb#section-2>`__.
+
+**Transport-CC (Transport-wide Congestion Control)** Mechanism for
+gathering packet arrival times to estimate available bandwidth. Learn
+more about transport-cc in
+draft-holmer-rmcat-transport-wide-cc-extensions
+`§2 <https://datatracker.ietf.org/doc/html/draft-holmer-rmcat-transport-wide-cc-extensions#section-2>`__.
+
+**FlexFEC** Flexible forward error correction mechanism for RTP streams
+that can protect against packet loss by sending redundant recovery
+packets. Uses a separate RTP stream for FEC packets, allowing flexible
+configuration of protection levels. Learn more about FlexFEC in RFC 8627
+`§1 <https://datatracker.ietf.org/doc/html/rfc8627#section-1>`__.
+
+Audio-Specific Terms
+~~~~~~~~~~~~~~~~~~~~
+
+**DTX (Discontinuous Transmission)** Not transmitting audio packets
+during silence to save bandwidth. Signaled in SDP via the ``usedtx``
+FMTP parameter for Opus. Learn more about DTX in `supported audio
+codecs <https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/WebRTC_codecs#supported_audio_codecs>`__
+on MDN and RFC 7587
+`§6.1 <https://www.rfc-editor.org/rfc/rfc7587#section-6.1>`__.
+
+**In-band FEC** Opus-specific forward error correction included within
+the audio stream. Signaled in SDP via the ``useinbandfec`` FMTP
+parameter. Learn more in RFC 7587
+`§6.1 <https://www.rfc-editor.org/rfc/rfc7587#section-6.1>`__.
+
+**Stereo** Two-channel audio encoding. Stereo can either be
+independently encoded or, in some codecs like Opus, joint encoded.
+
+**Ptime (Packet Time)** The duration of media represented in a single
+RTP packet, in milliseconds. Learn more about ptime in RFC 8866
+`§6.4 <https://datatracker.ietf.org/doc/html/rfc8866#section-6.4>`__.
+
+**Maxptime (Maximum Packet Time)** The maximum acceptable ptime value.
+Learn more about maxptime in RFC 8866
+`§6.4 <https://www.rfc-editor.org/rfc/rfc8866#section-6.4>`__.
+
+**CBR (Constant Bitrate)** Encoding mode where bitrate remains constant
+regardless of content complexity. For Opus, signaled in SDP via the
+``cbr`` FMTP parameter. Learn more in RFC 7587
+`§6.1 <https://www.rfc-editor.org/rfc/rfc7587#section-6.1>`__.
+
+**VBR (Variable Bitrate)** Encoding mode where bitrate varies based on
+content complexity, allowing more efficient compression. This is the
+default mode for many codecs like Opus.
+
+**ABR (Adaptive Bitrate)** Encoding mode that dynamically adjusts
+bitrate in real-time based on network conditions and receiver feedback.
+In WebRTC, ABR uses bandwidth estimation algorithms (like Transport-CC)
+to continuously monitor connection quality and adapt the encoding
+bitrate to maintain optimal quality while preventing congestion. This
+differs from VBR which adapts to content complexity but not network
+conditions. Learn more about `bandwidth
+estimation <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidatePairStats/availableOutgoingBitrate>`__
+on MDN.
+
+Data Channel Terms
+~~~~~~~~~~~~~~~~~~
+
+**SCTP (Stream Control Transmission Protocol)** Protocol used for WebRTC
+data channels, providing reliable or unreliable delivery. Learn more
+about
+`RTCSctpTransport <https://developer.mozilla.org/en-US/docs/Web/API/RTCSctpTransport>`__
+on MDN and RFC 9260
+`§1 <https://datatracker.ietf.org/doc/html/rfc9260#section-1>`__.
+
+**Data Channel** A bidirectional data transport for arbitrary
+application data over WebRTC. Learn more about
+`RTCDataChannel <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel>`__
+on MDN and RFC 8831
+`§6.4 <https://datatracker.ietf.org/doc/html/rfc8831#name-data-channel-definition>`__.
+
+**SCTP Port** The port number used for SCTP associations in data
+channels.
+
+**Max Message Size** The maximum size of a single message that can be
+sent over a data channel.
+
+Session State and Lifecycle
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Associated** A transceiver that has been assigned a mid value during
+negotiation.
+
+**Negotiated** A transceiver that has completed offer/answer exchange
+and has agreed parameters.
+
+**Stopped** A transceiver that has been permanently stopped and cannot
+be reused.
+
+**Receptive** A transceiver’s ability to receive media based on the
+local description.
+
+**Add Track Magic** Special negotiation behavior where transceivers
+created via ``addTrack()`` can be reused during negotiation, unlike
+those created with ``addTransceiver()``. When applying a remote offer,
+``addTrack()``-created transceivers may be “stolen” to match incoming
+m-lines, while ``addTransceiver()``-created transceivers are never
+reused. Learn more about
+`addTrack <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addTrack>`__
+and
+`addTransceiver <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addTransceiver>`__
+on MDN.
+
+Advanced Terms
+~~~~~~~~~~~~~~
+
+**Subprofile** H.264 profiles like Constrained Baseline, Baseline, Main,
+High, etc. Signaled in SDP via the ``profile-level-id`` FMTP parameter.
+Learn more in RFC 6184
+`§8.1 <https://www.rfc-editor.org/rfc/rfc6184#section-8.1>`__.
+
+**Level Asymmetry Allowed** H.264 parameter allowing different encoding
+levels in each direction. Signaled in SDP via the
+``level-asymmetry-allowed`` FMTP parameter. Learn more in RFC 6184
+`§8.1 <https://www.rfc-editor.org/rfc/rfc6184#section-8.1>`__.
+
+**Unique Receive Payload Types** Payload types that can be uniquely
+identified for SSRC-to-PT matching.
+
+**Preferred Codecs** User-specified codec ordering that overrides
+defaults. See Codec Preferences.
+
+**Codec Preferences** Settings controlling which codecs are enabled and
+their configurations, specified as an array of ``RTCRtpCodecCapability``
+objects in order of decreasing preference. Set via
+``setCodecPreferences()`` on an ``RTCRtpTransceiver`` to control which
+codecs are used during negotiation. Codecs not included in the
+preferences are excluded from negotiation. An empty list resets to user
+agent defaults. Learn more about
+`setCodecPreferences <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver/setCodecPreferences>`__
+on MDN.
+
+**RTCRtpScriptTransform** An interface that enables custom processing of
+encoded audio and video frames in WebRTC by inserting transform streams into
+sender and receiver pipelines. The transform runs in a Worker thread and
+receives encoded frames through a TransformStream, allowing real-time frame
+manipulation, encryption, analytics, or bandwidth optimization. Developers
+assign transforms to ``RTCRtpSender.transform`` for outgoing frames or
+``RTCRtpReceiver.transform`` for incoming frames. The worker receives an
+``rtctransform`` event with a ``transformer`` object containing readable and
+writable streams for processing. Learn more about
+`RTCRtpScriptTransform <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpScriptTransform>`__
+and `Using WebRTC Encoded Transforms
+<https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Using_Encoded_Transforms>`__
+on MDN.