rfc9626v1.txt | rfc9626.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) M. Zanaty | Internet Engineering Task Force (IETF) M. Zanaty | |||
Request for Comments: 9626 E. Berger | Request for Comments: 9626 E. Berger | |||
Category: Experimental S. Nandakumar | Category: Experimental S. Nandakumar | |||
ISSN: 2070-1721 Cisco Systems | ISSN: 2070-1721 Cisco Systems | |||
August 2024 | February 2025 | |||
Video Frame Marking RTP Header Extension | Video Frame Marking RTP Header Extension | |||
Abstract | Abstract | |||
This document describes a Video Frame Marking RTP header extension | This document describes a Video Frame Marking RTP header extension | |||
used to convey information about video frames that is critical for | used to convey information about video frames that is critical for | |||
error recovery and packet forwarding in RTP middleboxes or network | error recovery and packet forwarding in RTP middleboxes or network | |||
nodes. It is most useful when media is encrypted and essential when | nodes. It is most useful when media is encrypted and essential when | |||
the middlebox or node has no access to the media decryption keys. It | the middlebox or node has no access to the media decryption keys. It | |||
skipping to change at line 41 ¶ | skipping to change at line 41 ¶ | |||
publication by the Internet Engineering Steering Group (IESG). Not | publication by the Internet Engineering Steering Group (IESG). Not | |||
all documents approved by the IESG are candidates for any level of | all documents approved by the IESG are candidates for any level of | |||
Internet Standard; see Section 2 of RFC 7841. | Internet Standard; see Section 2 of RFC 7841. | |||
Information about the current status of this document, any errata, | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | and how to provide feedback on it may be obtained at | |||
https://www.rfc-editor.org/info/rfc9626. | https://www.rfc-editor.org/info/rfc9626. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Revised BSD License text as described in Section 4.e of the | include Revised BSD License text as described in Section 4.e of the | |||
Trust Legal Provisions and are provided without warranty as described | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction | 1. Introduction | |||
2. Requirements Language | 2. Requirements Language | |||
3. Frame Marking RTP Header Extension | 3. Video Frame Marking RTP Header Extension | |||
3.1. Long Extension for Scalable Streams | 3.1. Long Extension for Scalable Streams | |||
3.2. Short Extension for Non-scalable Streams | 3.2. Short Extension for Non-Scalable Streams | |||
3.3. LID Mappings for Scalable Streams | 3.3. LID Mappings for Scalable Streams | |||
3.3.1. VP9 LID Mapping | 3.3.1. VP9 LID Mapping | |||
3.3.2. H265 LID Mapping | 3.3.2. H265 LID Mapping | |||
3.3.3. H264 Scalable Video Coding (SVC) LID Mapping | 3.3.3. H264 Scalable Video Coding (SVC) LID Mapping | |||
3.3.4. H264 Advanced Video Coding (AVC) LID Mapping | 3.3.4. H264 Advanced Video Coding (AVC) LID Mapping | |||
3.3.5. VP8 LID Mapping | 3.3.5. VP8 LID Mapping | |||
3.3.6. Future Codec LID Mapping | 3.3.6. Future Codec LID Mapping | |||
3.4. Signaling Information | 3.4. Signaling Information | |||
3.5. Usage Considerations | 3.5. Usage Considerations | |||
3.5.1. Relation to Layer Refresh Request (LRR) | 3.5.1. Relation to Layer Refresh Request (LRR) | |||
skipping to change at line 157 ¶ | skipping to change at line 157 ¶ | |||
specifies the necessary meta-information in an RTP header extension. | specifies the necessary meta-information in an RTP header extension. | |||
2. Requirements Language | 2. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. Frame Marking RTP Header Extension | 3. Video Frame Marking RTP Header Extension | |||
This specification uses RTP header extensions as defined in | This specification uses RTP header extensions as defined in | |||
[RFC8285]. A subset of meta-information from the video stream is | [RFC8285]. A subset of meta-information from the video stream is | |||
provided as an RTP header extension to allow an RTP switch to do | provided as an RTP header extension to allow an RTP switch to do | |||
generic selective forwarding of video streams encoded with | generic selective forwarding of video streams encoded with | |||
potentially different video codecs. | potentially different video codecs. | |||
The Frame Marking RTP header extension is encoded using the one-byte | The Video Frame Marking RTP header extension is encoded using the | |||
header or two-byte header as described in [RFC8285]. The one-byte | one-byte header or two-byte header as described in [RFC8285]. The | |||
header format is used for examples in this document. The two-byte | one-byte header format is used for examples in this document. The | |||
header format is used when other two-byte header extensions are | two-byte header format is used when other two-byte header extensions | |||
present in the same RTP packet since mixing one-byte and two-byte | are present in the same RTP packet since mixing one-byte and two-byte | |||
extensions is not possible in the same RTP packet. | extensions is not possible in the same RTP packet. | |||
This extension is only specified for Source (not Redundancy) RTP | This extension is only specified for Source (not Redundancy) RTP | |||
Streams [RFC7656] that carry video payloads. It is not specified for | Streams [RFC7656] that carry video payloads. It is not specified for | |||
audio payloads, nor is it specified for Redundancy RTP Streams. The | audio payloads, nor is it specified for Redundancy RTP Streams. The | |||
(separate) specifications for Redundancy RTP Streams often include | (separate) specifications for Redundancy RTP Streams often include | |||
provisions for recovering any header extensions that were part of the | provisions for recovering any header extensions that were part of the | |||
original source packet. Such provisions can be followed to recover | original source packet. Such provisions can be followed to recover | |||
the Frame Marking RTP header extension of the original source packet. | the Video Frame Marking RTP header extension of the original source | |||
Source packet frame markings may be useful when generating Redundancy | packet. Source packet frame markings may be useful when generating | |||
RTP Streams; for example, the I (Independent Frame) and D | Redundancy RTP Streams; for example, the I (Independent Frame) and D | |||
(Discardable Frame) bits, defined in Section 3.1, can be used to | (Discardable Frame) bits, defined in Section 3.1, can be used to | |||
generate extra or no redundancy, respectively, and redundancy schemes | generate extra or no redundancy, respectively, and redundancy schemes | |||
with source blocks can align source block boundaries with independent | with source blocks can align source block boundaries with independent | |||
frame boundaries as marked by the I bit. | frame boundaries as marked by the I bit. | |||
A frame, in the context of this specification, is the set of RTP | A frame, in the context of this specification, is the set of RTP | |||
packets with the same RTP timestamp from a specific RTP | packets with the same RTP timestamp from a specific RTP | |||
Synchronization Source (SSRC). A frame within a layer is the set of | Synchronization Source (SSRC). A frame within a layer is the set of | |||
RTP packets with the same RTP timestamp, SSRC, Temporal ID (TID), and | RTP packets with the same RTP timestamp, SSRC, Temporal-layer ID | |||
Layer ID (LID). | (TID), and Layer ID (LID). | |||
3.1. Long Extension for Scalable Streams | 3.1. Long Extension for Scalable Streams | |||
The following RTP header extension is RECOMMENDED for scalable | The following RTP header extension is RECOMMENDED for scalable | |||
streams. It MAY also be used for non-scalable streams, in which case | streams. It MAY also be used for non-scalable streams, in which case | |||
the TID, LID, and TL0PICIDX MUST be 0 or omitted. The ID is assigned | the TID, LID, and TL0PICIDX MUST be 0 or omitted. The ID is assigned | |||
per [RFC8285]. The length is encoded as follows: | per [RFC8285]. The length is encoded as follows: | |||
* L=2 to indicate 3 octets of data when nothing is omitted, | * L=2 to indicate 3 octets of data when nothing is omitted, | |||
skipping to change at line 220 ¶ | skipping to change at line 220 ¶ | |||
or | or | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ID=? | L=1 |S|E|I|D|B| TID | LID | (TL0PICIDX omitted) | | ID=? | L=1 |S|E|I|D|B| TID | LID | (TL0PICIDX omitted) | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
or | or | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ID=? | L=0 |S|E|I|D|B| TID | (LID and TL0PICIDX omitted) | | ID=? | L=0 |S|E|I|D|B| TID | (LID and TL0PICIDX omitted) | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
The following information is extracted from the media payload and | The following information is extracted from the media payload and | |||
sent in the Frame Marking RTP header extension. | sent in the Video Frame Marking RTP header extension. | |||
S: Start of Frame (1 bit) | S: Start of Frame (1 bit) | |||
MUST be 1 in the first packet in a frame within a layer; | MUST be 1 in the first packet in a frame within a layer; | |||
otherwise, MUST be 0. | otherwise, MUST be 0. | |||
E: End of Frame (1 bit) | E: End of Frame (1 bit) | |||
MUST be 1 in the last packet in a frame within a layer; otherwise, | MUST be 1 in the last packet in a frame within a layer; otherwise, | |||
MUST be 0. Note that the RTP header marker bit MAY be used to | MUST be 0. Note that the RTP header marker bit MAY be used to | |||
infer the last packet of the highest enhancement layer in payload | infer the last packet of the highest enhancement layer in payload | |||
formats with such semantics. | formats with such semantics. | |||
skipping to change at line 253 ¶ | skipping to change at line 253 ¶ | |||
MUST be 1 for a frame within a layer the sender knows can be | MUST be 1 for a frame within a layer the sender knows can be | |||
discarded and still provide a decodable media stream; otherwise, | discarded and still provide a decodable media stream; otherwise, | |||
MUST be 0. | MUST be 0. | |||
B: Base Layer Sync (1 bit) | B: Base Layer Sync (1 bit) | |||
When the TID is not 0, this MUST be 1 if the sender knows this | When the TID is not 0, this MUST be 1 if the sender knows this | |||
frame within a layer only depends on the base temporal layer; | frame within a layer only depends on the base temporal layer; | |||
otherwise, MUST be 0. When the TID is 0 or if no scalability is | otherwise, MUST be 0. When the TID is 0 or if no scalability is | |||
used, this MUST be 0. | used, this MUST be 0. | |||
TID: Temporal ID (3 bits) | TID: Temporal-layer ID (3 bits) | |||
Identifies the temporal layer/sub-layer encoded, starting with 0 | Identifies the temporal layer/sub-layer encoded, starting with 0 | |||
for the base layer and increasing with higher temporal fidelity. | for the base layer and increasing with higher temporal fidelity. | |||
If no scalability is used, this MUST be 0. It is implicitly 0 in | If no scalability is used, this MUST be 0. It is implicitly 0 in | |||
the short extension format. | the short extension format. | |||
LID: Layer ID (8 bits) | LID: Layer ID (8 bits) | |||
Identifies the spatial and quality layer encoded, starting with 0 | Identifies the spatial and quality layer encoded, starting with 0 | |||
for the base layer and increasing with higher fidelity. If no | for the base layer and increasing with higher fidelity. If no | |||
scalability is used, this MUST be 0 or omitted to reduce length. | scalability is used, this MUST be 0 or omitted to reduce length. | |||
When the LID is omitted, TL0PICIDX MUST also be omitted. It is | When the LID is omitted, TL0PICIDX MUST also be omitted. It is | |||
skipping to change at line 302 ¶ | skipping to change at line 302 ¶ | |||
With further information, for example, possible future RTCP source | With further information, for example, possible future RTCP source | |||
description (SDES) items that convey full layer structure | description (SDES) items that convey full layer structure | |||
information, it may be possible to map these TIDs and LIDs to | information, it may be possible to map these TIDs and LIDs to | |||
specific absolute frame rates, resolutions, bitrates, and explicit | specific absolute frame rates, resolutions, bitrates, and explicit | |||
dependencies between layers. Such additional layer information may | dependencies between layers. Such additional layer information may | |||
be useful for forwarding decisions in the RTP switch but is beyond | be useful for forwarding decisions in the RTP switch but is beyond | |||
the scope of this memo. The relative layer information is still | the scope of this memo. The relative layer information is still | |||
useful for many selective forwarding decisions, even without such | useful for many selective forwarding decisions, even without such | |||
additional layer information. | additional layer information. | |||
3.2. Short Extension for Non-scalable Streams | 3.2. Short Extension for Non-Scalable Streams | |||
The following RTP header extension is RECOMMENDED for non-scalable | The following RTP header extension is RECOMMENDED for non-scalable | |||
streams. It is identical to the shortest form of the extension for | streams. It is identical to the shortest form of the extension for | |||
scalable streams, except the last four bits (B and TID) are replaced | scalable streams, except the last four bits (B and TID) are replaced | |||
with zeros. It MAY also be used for scalable streams if the sender | with zeros. It MAY also be used for scalable streams if the sender | |||
has limited or no information about stream scalability. The ID is | has limited or no information about stream scalability. The ID is | |||
assigned per [RFC8285]; the length is encoded as L=0, which indicates | assigned per [RFC8285]; the length is encoded as L=0, which indicates | |||
1 octet of data. | 1 octet of data. | |||
0 1 | 0 1 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ID=? | L=0 |S|E|I|D|0 0 0 0| | | ID=? | L=0 |S|E|I|D|0 0 0 0| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
The following information is extracted from the media payload and | The following information is extracted from the media payload and | |||
sent in the Frame Marking RTP header extension. | sent in the Video Frame Marking RTP header extension. | |||
S: Start of Frame (1 bit) | S: Start of Frame (1 bit) | |||
MUST be 1 in the first packet in a frame; otherwise, MUST be 0. | MUST be 1 in the first packet in a frame; otherwise, MUST be 0. | |||
E: End of Frame (1 bit) | E: End of Frame (1 bit) | |||
MUST be 1 in the last packet in a frame; otherwise, MUST be 0. | MUST be 1 in the last packet in a frame; otherwise, MUST be 0. | |||
SHOULD match the RTP header marker bit in payload formats with | SHOULD match the RTP header marker bit in payload formats with | |||
such semantics for marking end of frame. | such semantics for marking end of frame. | |||
I: Independent Frame (1 bit) | I: Independent Frame (1 bit) | |||
skipping to change at line 341 ¶ | skipping to change at line 341 ¶ | |||
prior frames, e.g., intra-frame, VPX keyframe, H.264 IDR | prior frames, e.g., intra-frame, VPX keyframe, H.264 IDR | |||
[RFC6184], or H.265 IDR/CRA/BLA/IRAP [RFC7798]; otherwise, MUST be | [RFC6184], or H.265 IDR/CRA/BLA/IRAP [RFC7798]; otherwise, MUST be | |||
0. | 0. | |||
D: Discardable Frame (1 bit) | D: Discardable Frame (1 bit) | |||
MUST be 1 for frames the sender knows can be discarded and still | MUST be 1 for frames the sender knows can be discarded and still | |||
provide a decodable media stream; otherwise, MUST be 0. | provide a decodable media stream; otherwise, MUST be 0. | |||
The remaining (4 bits) | The remaining (4 bits) | |||
These are reserved/fixed values and not used for non-scalable | These are reserved/fixed values and not used for non-scalable | |||
streams; they MUST be set to 0 upon transmission and ignored upon | streams; they MUST be set to zero upon transmission and ignored | |||
reception. | upon reception. | |||
3.3. LID Mappings for Scalable Streams | 3.3. LID Mappings for Scalable Streams | |||
This section maps the specific Layer ID (LID) information contained | This section maps the specific Layer ID (LID) information contained | |||
in specific scalable codecs to the generic LID and TID fields. | in specific scalable codecs to the generic LID and TID fields. | |||
Note that non-scalable streams have no LID information; thus, they | Note that non-scalable streams have no LID information; thus, they | |||
have no mappings. | have no mappings. | |||
3.3.1. VP9 LID Mapping | 3.3.1. VP9 LID Mapping | |||
The VP9 [RFC9628] Spatial Layer ID (SID, 3 bits) and Temporal Layer | The VP9 [RFC9628] Spatial-layer ID (SID, 3 bits) and Temporal-layer | |||
ID (TID, 3 bits) in the VP9 payload descriptor are mapped to the | ID (TID, 3 bits) in the VP9 payload descriptor are mapped to the | |||
generic LID and TID fields in the header extension as shown in the | generic LID and TID fields in the header extension as shown in the | |||
following figure. | following figure. | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ID=? | L=2 |S|E|I|D|B| TID |0|0|0|0|0| SID | TL0PICIDX | | | ID=? | L=2 |S|E|I|D|B| TID |0|0|0|0|0| SID | TL0PICIDX | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
The S bit MUST match the B bit in the VP9 payload descriptor. | The S bit MUST match the B bit in the VP9 payload descriptor. | |||
The E bit MUST match the E bit in the VP9 payload descriptor. | The E bit MUST match the E bit in the VP9 payload descriptor. | |||
The I bit MUST match the inverse of the P bit in the VP9 payload | The I bit MUST match the inverse of the P bit in the VP9 payload | |||
descriptor. | descriptor. | |||
The D bit MUST be 1 if the refresh_frame_flags in the VP9 payload | The D bit MUST be 1 if the refresh_frame_flags bits in the VP9 | |||
uncompressed header are all 0; otherwise, it MUST be 0. | payload uncompressed header are all 0; otherwise, it MUST be 0. | |||
The B bit MUST be 0 if the TID is 0; if the TID is not 0, it MUST | The B bit MUST be 0 if the TID is 0; if the TID is not 0, it MUST | |||
match the U bit in the VP9 payload descriptor. Note: when using | match the U bit in the VP9 payload descriptor. | |||
temporally nested scalability structures as recommended in | ||||
Section 3.5.2, the B bit and VP9 U bit will always be 1 if the TID is | | Note: when using temporally nested scalability structures as | |||
not 0 since it is always possible to switch up to a higher temporal | | recommended in Section 3.5.2, the B bit and VP9 U bit will | |||
layer in such nested structures. | | always be 1 if the TID is not 0 since it is always possible to | |||
| switch up to a higher temporal layer in such nested structures. | ||||
The TID, SID, and TL0PICIDX MUST match the correspondingly named | The TID, SID, and TL0PICIDX MUST match the correspondingly named | |||
fields in the VP9 payload descriptor, with SID aligned in the least | fields in the VP9 payload descriptor, with SID aligned in the least | |||
significant 3 bits of the 8-bit LID field and zeros in the most | significant 3 bits of the 8-bit LID field and zeros in the most | |||
significant 5 bits. | significant 5 bits. | |||
3.3.2. H265 LID Mapping | 3.3.2. H265 LID Mapping | |||
The H265 [RFC7798] LayerID (6 bits), and TID (3 bits) from the | The H265 [RFC7798] layer ID (6 bits), and TID (3 bits) from the | |||
Network Abstraction Layer (NAL) unit header are mapped to the generic | Network Abstraction Layer (NAL) unit header are mapped to the generic | |||
LID and TID fields in the header extension as shown in the following | LID and TID fields in the header extension as shown in the following | |||
figure. | figure. | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ID=? | L=2 |S|E|I|D|B| TID |0|0| LayerID | TL0PICIDX | | | ID=? | L=2 |S|E|I|D|B| TID |0|0| layer ID | TL0PICIDX | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
The S and E bits MUST match the correspondingly named bits in | The S and E bits MUST match the correspondingly named bits in | |||
PACI:PHES:TSCI payload structures. | PACI:PHES:TSCI payload structures. | |||
The I bit MUST be 1 when the NAL unit type is 16-23 (inclusive) or | The I bit MUST be 1 when the NAL unit type is 16-23 (inclusive) or | |||
32-34 (inclusive), or an aggregation packet or fragmentation unit | 32-34 (inclusive), or an aggregation packet or fragmentation unit | |||
encapsulating any of these types; otherwise, it MUST be 0. These | encapsulating any of these types; otherwise, it MUST be 0. These | |||
ranges cover intra (IRAP) frames as well as critical parameter sets | ranges cover intra (IRAP) frames as well as critical parameter sets | |||
(Video Parameter Set (VPS), Sequence Parameter Set (SPS), Picture | (Video Parameter Set (VPS), Sequence Parameter Set (SPS), Picture | |||
Parameter Set (PPS)). | Parameter Set (PPS)). | |||
The D bit MUST be 1 when the NAL unit type is 0, 2, 4, 6, 8, 10, 12, | The D bit MUST be 1 if either: | |||
14, 38, or an aggregation packet or fragmentation unit encapsulating | ||||
only these types; otherwise, it MUST be 0. These ranges cover non- | * the payload's NAL unit header's NRI field is 0, or | |||
reference frames as well as filler data. | ||||
* the payload is an aggregation packet or fragmentation unit | ||||
encapsulating only NAL units with NRI = 0. | ||||
Otherwise, it MUST be 0. | ||||
These ranges cover non-reference frames as well as filler data. | ||||
The B bit cannot be determined reliably from simple inspection of | The B bit cannot be determined reliably from simple inspection of | |||
payload headers; therefore, it is determined by implementation- | payload headers; therefore, it is determined by implementation- | |||
specific means. For example, internal codec interfaces may provide | specific means. For example, internal codec interfaces may provide | |||
information to set this reliably. | information to set this reliably. | |||
The TID and LayerID MUST match the correspondingly named fields in | The TID and layer ID MUST match the correspondingly named fields in | |||
the H265 NAL unit header, with LayerID aligned in the least | the H265 NAL unit header, with layer ID aligned in the least | |||
significant 6 bits of the 8-bit LID field and zeros in the most | significant 6 bits of the 8-bit LID field and zeros in the most | |||
significant 2 bits. | significant 2 bits. | |||
3.3.3. H264 Scalable Video Coding (SVC) LID Mapping | 3.3.3. H264 Scalable Video Coding (SVC) LID Mapping | |||
The following shows H264-SVC [RFC6190] Layer encoding information (3 | The following shows H264-SVC [RFC6190] Layer encoding information (3 | |||
bits for spatial/dependency layer, 4 bits for quality layer, and 3 | bits for spatial/dependency layer, 4 bits for quality layer, and 3 | |||
bits for temporal layer) mapped to the generic LID and TID fields. | bits for temporal layer) mapped to the generic LID and TID fields. | |||
The S, E, I, and D bits MUST match the correspondingly named bits in | The S, E, I, and D bits MUST match the correspondingly named bits in | |||
Payload Content Scalability Information (PACSI) payload structures. | Payload Content Scalability Information (PACSI) payload structures. | |||
The I bit MUST be 1 when the NAL unit type is 5, 7, 8, 13, 15, or an | The I bit MUST be 1 when the NAL unit type is 5, 7, 8, 13, 15, or an | |||
aggregation packet or fragmentation unit encapsulating any of these | aggregation packet or fragmentation unit encapsulating any of these | |||
types; otherwise, it MUST be 0. These ranges cover intra (IDR) | types; otherwise, it MUST be 0. These ranges cover intra (IDR) | |||
frames as well as critical parameter sets (SPS/PPS variants). | frames as well as critical parameter sets (SPS/PPS variants). | |||
The D bit MUST be 1 when the NAL unit header Network Remote | The D bit MUST be 1 if either: | |||
Identification (NRI) field is 0, or an aggregation packet or | ||||
fragmentation unit encapsulating only NAL units with NRI=0; | * the payload's NAL unit header's NRI field is 0, or | |||
otherwise, it MUST be 0. The NRI=0 condition signals non-reference | ||||
frames. | * the payload is an aggregation packet or fragmentation unit | |||
encapsulating only NAL units with NRI = 0. | ||||
Otherwise, it MUST be 0. | ||||
The NRI = 0 condition signals non-reference frames. | ||||
The B bit cannot be determined reliably from simple inspection of | The B bit cannot be determined reliably from simple inspection of | |||
payload headers; therefore, it is determined by implementation- | payload headers; therefore, it is determined by implementation- | |||
specific means. For example, internal codec interfaces may provide | specific means. For example, internal codec interfaces may provide | |||
information to set this reliably. | information to set this reliably. | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ID=? | L=2 |S|E|I|D|B| TID |0| DID | QID | TL0PICIDX | | | ID=? | L=2 |S|E|I|D|B| TID |0| DID | QID | TL0PICIDX | | |||
skipping to change at line 472 ¶ | skipping to change at line 484 ¶ | |||
the timestamp in the prior RTP sequence number from the same SSRC; | the timestamp in the prior RTP sequence number from the same SSRC; | |||
otherwise, it MUST be 0. | otherwise, it MUST be 0. | |||
The E bit MUST match the M bit in the RTP header. | The E bit MUST match the M bit in the RTP header. | |||
The I bit MUST be 1 when the NAL unit type is 5, 7, or 8, or an | The I bit MUST be 1 when the NAL unit type is 5, 7, or 8, or an | |||
aggregation packet or fragmentation unit encapsulating any of these | aggregation packet or fragmentation unit encapsulating any of these | |||
types; otherwise, it MUST be 0. These ranges cover intra (IDR) | types; otherwise, it MUST be 0. These ranges cover intra (IDR) | |||
frames as well as critical parameter sets (SPS/PPS). | frames as well as critical parameter sets (SPS/PPS). | |||
The D bit MUST be 1 when the NAL unit header NRI field is 0, or an | The D bit MUST be 1 if either: | |||
aggregation packet or fragmentation unit encapsulating only NAL units | ||||
with NRI=0; otherwise, it MUST be 0. The NRI=0 condition signals | * the payload's NAL unit header's NRI field is 0, or | |||
non-reference frames. | ||||
* the payload is an aggregation packet or fragmentation unit | ||||
encapsulating only NAL units with NRI = 0. | ||||
Otherwise, it MUST be 0. | ||||
The NRI = 0 condition signals non-reference frames. | ||||
The B bit cannot be determined reliably from simple inspection of | The B bit cannot be determined reliably from simple inspection of | |||
payload headers; therefore, it is determined by implementation- | payload headers; therefore, it is determined by implementation- | |||
specific means. For example, internal codec interfaces may provide | specific means. For example, internal codec interfaces may provide | |||
information to set this reliably. | information to set this reliably. | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ID=? | L=2 |S|E|I|D|B| TID |0|0|0|0|0|0|0|0| TL0PICIDX | | | ID=? | L=2 |S|E|I|D|B| TID |0|0|0|0|0|0|0|0| TL0PICIDX | | |||
skipping to change at line 503 ¶ | skipping to change at line 521 ¶ | |||
The S bit MUST match the correspondingly named bit in the VP8 payload | The S bit MUST match the correspondingly named bit in the VP8 payload | |||
descriptor when PID=0; otherwise, it MUST be 0. | descriptor when PID=0; otherwise, it MUST be 0. | |||
The E bit MUST match the M bit in the RTP header. | The E bit MUST match the M bit in the RTP header. | |||
The I bit MUST match the inverse of the P bit in the VP8 payload | The I bit MUST match the inverse of the P bit in the VP8 payload | |||
header. | header. | |||
The D bit MUST match the N bit in the VP8 payload descriptor. | The D bit MUST match the N bit in the VP8 payload descriptor. | |||
The B bit MUST match the Y bit in the VP8 payload descriptor. Note: | The B bit MUST match the Y bit in the VP8 payload descriptor. | |||
when using temporally nested scalability structures as recommended in | ||||
Section 3.5.2, the B bit and VP8 Y bit will always be 1 if the TID is | | Note: when using temporally nested scalability structures as | |||
not 0 since it is always possible to switch up to a higher temporal | | recommended in Section 3.5.2, the B bit and VP8 Y bit will | |||
layer in such nested structures. | | always be 1 if the TID is not 0 since it is always possible to | |||
| switch up to a higher temporal layer in such nested structures. | ||||
The TID and TL0PICIDX MUST match the correspondingly named fields in | The TID and TL0PICIDX MUST match the correspondingly named fields in | |||
the VP8 payload descriptor. | the VP8 payload descriptor. | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ID=? | L=2 |S|E|I|D|B| TID |0|0|0|0|0|0|0|0| TL0PICIDX | | | ID=? | L=2 |S|E|I|D|B| TID |0|0|0|0|0|0|0|0| TL0PICIDX | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at line 539 ¶ | skipping to change at line 558 ¶ | |||
An example attribute line in SDP: | An example attribute line in SDP: | |||
a=extmap:3 urn:ietf:params:rtp-hdrext:framemarking | a=extmap:3 urn:ietf:params:rtp-hdrext:framemarking | |||
3.5. Usage Considerations | 3.5. Usage Considerations | |||
The header extension values MUST represent what is already in the RTP | The header extension values MUST represent what is already in the RTP | |||
payload. | payload. | |||
When an RTP switch needs to discard a received video frame due to | When an RTP switch needs to discard received video frames due to | |||
congestion control considerations, it is RECOMMENDED that it | congestion control considerations, it is RECOMMENDED that it drop: | |||
preferably drop frames marked with the D (Discardable) bit set, or | ||||
the highest values of TID and LID, which indicate the highest | * frames marked with the D bit set, or | |||
temporal and spatial/quality enhancement layers, since those | ||||
typically have fewer dependencies on them than lower layers. | * frames with the highest values of TID and LID (which indicate the | |||
highest temporal and spatial/quality enhancement layers) since | ||||
those typically have fewer dependencies on them than lower layers. | ||||
When an RTP switch wants to forward a new video stream to a receiver, | When an RTP switch wants to forward a new video stream to a receiver, | |||
it is RECOMMENDED to select the new video stream from the first | it is RECOMMENDED to select the new video stream from the first | |||
switching point with the I (Independent) bit set in all spatial | switching point with the I bit set in all spatial layers and forward | |||
layers and forward the same. An RTP switch can request that a media | the video stream from that point on. An RTP switch can request that | |||
source generate a switching point by sending Full Intra Request (RTCP | a media source generate a switching point by sending an RTCP Full | |||
FIR) as defined in [RFC5104], for example. | Intra Request (FIR) as defined in [RFC5104], for example. | |||
3.5.1. Relation to Layer Refresh Request (LRR) | 3.5.1. Relation to Layer Refresh Request (LRR) | |||
Receivers can use the Layer Refresh Request (LRR) [RFC9627] RTCP | Receivers can use the Layer Refresh Request (LRR) [RFC9627] RTCP | |||
feedback message to upgrade to a higher layer in scalable encodings. | feedback message to upgrade to a higher layer in scalable encodings. | |||
The TID/LID values and formats used in LRR messages MUST correspond | The TID/LID values and formats used in LRR messages MUST correspond | |||
to the same values and formats specified in Section 3.1. | to the same values and formats specified in Section 3.1. | |||
Because frame marking can only be used with temporally nested | Because frame marking can only be used with temporally nested | |||
streams, temporal-layer LRR refreshes are unnecessary for frame- | streams, temporal-layer refreshes requested with an LRR message are | |||
marked streams. Other refreshes can be detected based on the I bit | unnecessary for frame-marked streams. Other refreshes can be | |||
being set for the specific spatial layers. | detected based on the I bit being set for the specific spatial | |||
layers. | ||||
3.5.2. Scalability Structures | 3.5.2. Scalability Structures | |||
The LID and TID information is most useful for fixed scalability | The LID and TID information is most useful for fixed scalability | |||
structures, such as nested hierarchical temporal layering structures, | structures, such as nested hierarchical temporal layering structures, | |||
where each temporal layer only references lower temporal layers or | where each temporal layer only references lower temporal layers or | |||
the base temporal layer. The LID and TID information is less useful, | the base temporal layer. The LID and TID information is less useful, | |||
or even not useful at all, for complex, irregular scalability | or even not useful at all, for complex, irregular scalability | |||
structures that do not conform to common, fixed patterns of inter- | structures that do not conform to common, fixed patterns of inter- | |||
layer dependencies and referencing structures. Therefore, it is | layer dependencies and referencing structures. Therefore, it is | |||
skipping to change at line 640 ¶ | skipping to change at line 662 ¶ | |||
6. References | 6. References | |||
6.1. Normative References | 6.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
[RFC8285] Singer, D., Desineni, H., and R. Even, Ed., "A General | ||||
Mechanism for RTP Header Extensions", RFC 8285, | ||||
DOI 10.17487/RFC8285, October 2017, | ||||
<https://www.rfc-editor.org/info/rfc8285>. | ||||
[RFC6184] Wang, Y.-K., Even, R., Kristensen, T., and R. Jesup, "RTP | [RFC6184] Wang, Y.-K., Even, R., Kristensen, T., and R. Jesup, "RTP | |||
Payload Format for H.264 Video", RFC 6184, | Payload Format for H.264 Video", RFC 6184, | |||
DOI 10.17487/RFC6184, May 2011, | DOI 10.17487/RFC6184, May 2011, | |||
<https://www.rfc-editor.org/info/rfc6184>. | <https://www.rfc-editor.org/info/rfc6184>. | |||
[RFC6190] Wenger, S., Wang, Y.-K., Schierl, T., and A. | [RFC6190] Wenger, S., Wang, Y.-K., Schierl, T., and A. | |||
Eleftheriadis, "RTP Payload Format for Scalable Video | Eleftheriadis, "RTP Payload Format for Scalable Video | |||
Coding", RFC 6190, DOI 10.17487/RFC6190, May 2011, | Coding", RFC 6190, DOI 10.17487/RFC6190, May 2011, | |||
<https://www.rfc-editor.org/info/rfc6190>. | <https://www.rfc-editor.org/info/rfc6190>. | |||
[RFC7741] Westin, P., Lundin, H., Glover, M., Uberti, J., and F. | [RFC7741] Westin, P., Lundin, H., Glover, M., Uberti, J., and F. | |||
Galligan, "RTP Payload Format for VP8 Video", RFC 7741, | Galligan, "RTP Payload Format for VP8 Video", RFC 7741, | |||
DOI 10.17487/RFC7741, March 2016, | DOI 10.17487/RFC7741, March 2016, | |||
<https://www.rfc-editor.org/info/rfc7741>. | <https://www.rfc-editor.org/info/rfc7741>. | |||
[RFC7798] Wang, Y.-K., Sanchez, Y., Schierl, T., Wenger, S., and M. | [RFC7798] Wang, Y.-K., Sanchez, Y., Schierl, T., Wenger, S., and M. | |||
M. Hannuksela, "RTP Payload Format for High Efficiency | M. Hannuksela, "RTP Payload Format for High Efficiency | |||
Video Coding (HEVC)", RFC 7798, DOI 10.17487/RFC7798, | Video Coding (HEVC)", RFC 7798, DOI 10.17487/RFC7798, | |||
March 2016, <https://www.rfc-editor.org/info/rfc7798>. | March 2016, <https://www.rfc-editor.org/info/rfc7798>. | |||
6.2. Informative References | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
[RFC7656] Lennox, J., Gross, K., Nandakumar, S., Salgueiro, G., and | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
B. Burman, Ed., "A Taxonomy of Semantics and Mechanisms | ||||
for Real-Time Transport Protocol (RTP) Sources", RFC 7656, | ||||
DOI 10.17487/RFC7656, November 2015, | ||||
<https://www.rfc-editor.org/info/rfc7656>. | ||||
[RFC7667] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 7667, | [RFC8285] Singer, D., Desineni, H., and R. Even, Ed., "A General | |||
DOI 10.17487/RFC7667, November 2015, | Mechanism for RTP Header Extensions", RFC 8285, | |||
<https://www.rfc-editor.org/info/rfc7667>. | DOI 10.17487/RFC8285, October 2017, | |||
<https://www.rfc-editor.org/info/rfc8285>. | ||||
[RFC6464] Lennox, J., Ed., Ivov, E., and E. Marocco, "A Real-time | 6.2. Informative References | |||
Transport Protocol (RTP) Header Extension for Client-to- | ||||
Mixer Audio Level Indication", RFC 6464, | ||||
DOI 10.17487/RFC6464, December 2011, | ||||
<https://www.rfc-editor.org/info/rfc6464>. | ||||
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | |||
Jacobson, "RTP: A Transport Protocol for Real-Time | Jacobson, "RTP: A Transport Protocol for Real-Time | |||
Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, | Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, | |||
July 2003, <https://www.rfc-editor.org/info/rfc3550>. | July 2003, <https://www.rfc-editor.org/info/rfc3550>. | |||
[RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. | [RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. | |||
Norrman, "The Secure Real-time Transport Protocol (SRTP)", | Norrman, "The Secure Real-time Transport Protocol (SRTP)", | |||
RFC 3711, DOI 10.17487/RFC3711, March 2004, | RFC 3711, DOI 10.17487/RFC3711, March 2004, | |||
<https://www.rfc-editor.org/info/rfc3711>. | <https://www.rfc-editor.org/info/rfc3711>. | |||
[RFC5104] Wenger, S., Chandra, U., Westerlund, M., and B. Burman, | [RFC5104] Wenger, S., Chandra, U., Westerlund, M., and B. Burman, | |||
"Codec Control Messages in the RTP Audio-Visual Profile | "Codec Control Messages in the RTP Audio-Visual Profile | |||
with Feedback (AVPF)", RFC 5104, DOI 10.17487/RFC5104, | with Feedback (AVPF)", RFC 5104, DOI 10.17487/RFC5104, | |||
February 2008, <https://www.rfc-editor.org/info/rfc5104>. | February 2008, <https://www.rfc-editor.org/info/rfc5104>. | |||
[RFC6464] Lennox, J., Ed., Ivov, E., and E. Marocco, "A Real-time | ||||
Transport Protocol (RTP) Header Extension for Client-to- | ||||
Mixer Audio Level Indication", RFC 6464, | ||||
DOI 10.17487/RFC6464, December 2011, | ||||
<https://www.rfc-editor.org/info/rfc6464>. | ||||
[RFC7656] Lennox, J., Gross, K., Nandakumar, S., Salgueiro, G., and | ||||
B. Burman, Ed., "A Taxonomy of Semantics and Mechanisms | ||||
for Real-Time Transport Protocol (RTP) Sources", RFC 7656, | ||||
DOI 10.17487/RFC7656, November 2015, | ||||
<https://www.rfc-editor.org/info/rfc7656>. | ||||
[RFC7667] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 7667, | ||||
DOI 10.17487/RFC7667, November 2015, | ||||
<https://www.rfc-editor.org/info/rfc7667>. | ||||
[RFC8871] Jones, P., Benham, D., and C. Groves, "A Solution | [RFC8871] Jones, P., Benham, D., and C. Groves, "A Solution | |||
Framework for Private Media in Privacy-Enhanced RTP | Framework for Private Media in Privacy-Enhanced RTP | |||
Conferencing (PERC)", RFC 8871, DOI 10.17487/RFC8871, | Conferencing (PERC)", RFC 8871, DOI 10.17487/RFC8871, | |||
January 2021, <https://www.rfc-editor.org/info/rfc8871>. | January 2021, <https://www.rfc-editor.org/info/rfc8871>. | |||
[RFC9335] Uberti, J., Jennings, C., and S. Murillo, "Completely | [RFC9335] Uberti, J., Jennings, C., and S. Murillo, "Completely | |||
Encrypting RTP Header Extensions and Contributing | Encrypting RTP Header Extensions and Contributing | |||
Sources", RFC 9335, DOI 10.17487/RFC9335, January 2023, | Sources", RFC 9335, DOI 10.17487/RFC9335, January 2023, | |||
<https://www.rfc-editor.org/info/rfc9335>. | <https://www.rfc-editor.org/info/rfc9335>. | |||
[RFC9627] Lennox, J., Hong, D., Uberti, J., Holmer, S., and M. | [RFC9627] Lennox, J., Hong, D., Uberti, J., Holmer, S., and M. | |||
Flodman, "The Layer Refresh Request (LRR) RTCP Feedback | Flodman, "The Layer Refresh Request (LRR) RTCP Feedback | |||
Message", RFC 9627, DOI 10.17487/RFC9627, August 2024, | Message", RFC 9627, DOI 10.17487/RFC9627, February 2025, | |||
<https://www.rfc-editor.org/info/rfc9627>. | <https://www.rfc-editor.org/info/rfc9627>. | |||
[RFC9628] Uberti, J., Holmer, S., Flodman, M., Hong, D., and J. | [RFC9628] Uberti, J., Holmer, S., Flodman, M., Hong, D., and J. | |||
Lennox, "RTP Payload Format for VP9 Video", RFC 9628, | Lennox, "RTP Payload Format for VP9 Video", RFC 9628, | |||
DOI 10.17487/RFC9628, August 2024, | DOI 10.17487/RFC9628, February 2025, | |||
<https://www.rfc-editor.org/info/rfc9628>. | <https://www.rfc-editor.org/info/rfc9628>. | |||
Acknowledgements | Acknowledgements | |||
Many thanks to Bernard Aboba, Jonathan Lennox, Stephan Wenger, Dale | Many thanks to Bernard Aboba, Jonathan Lennox, Stephan Wenger, Dale | |||
Worley, and Magnus Westerlund for their inputs. | Worley, and Magnus Westerlund for their inputs. | |||
Authors' Addresses | Authors' Addresses | |||
Mo Zanaty | Mo Zanaty | |||
End of changes. 33 change blocks. | ||||
90 lines changed or deleted | 112 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |