| rfc9628xml2.original.xml | rfc9628.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" docName="draft-ietf- | |||
| <!ENTITY rfc2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | payload-vp9-16" number="9628" ipr="trust200902" obsoletes="" updates="" submissi | |||
| ce.RFC.2119.xml"> | onType="IETF" category="std" consensus="true" xml:lang="en" symRefs="true" sortR | |||
| <!ENTITY rfc3264 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | efs="true" tocInclude="true" prepTime="2025-03-27T17:04:31" indexInclude="true" | |||
| ce.RFC.3264.xml"> | scripts="Common,Latin" tocDepth="3"> | |||
| <!ENTITY rfc3550 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | <link href="https://datatracker.ietf.org/doc/draft-ietf-payload-vp9-16" rel="p | |||
| ce.RFC.3550.xml"> | rev"/> | |||
| <!ENTITY rfc3551 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | <link href="https://dx.doi.org/10.17487/rfc9628" rel="alternate"/> | |||
| ce.RFC.3551.xml"> | <link href="urn:issn:2070-1721" rel="alternate"/> | |||
| <!ENTITY rfc3711 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.3711.xml"> | ||||
| <!ENTITY rfc3984 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.3984.xml"> | ||||
| <!ENTITY rfc4855 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.4855.xml"> | ||||
| <!ENTITY rfc4585 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.4585.xml"> | ||||
| <!ENTITY rfc5104 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.5104.xml"> | ||||
| <!ENTITY rfc5124 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.5124.xml"> | ||||
| <!ENTITY rfc6386 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.6386.xml"> | ||||
| <!ENTITY rfc6838 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.6838.xml"> | ||||
| <!ENTITY rfc7201 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.7201.xml"> | ||||
| <!ENTITY rfc7202 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.7202.xml"> | ||||
| <!ENTITY rfc7667 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.7667.xml"> | ||||
| <!ENTITY rfc8174 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8174.xml"> | ||||
| <!ENTITY rfc8866 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8866.xml"> | ||||
| <!ENTITY lrr SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference. | ||||
| I-D.ietf-avtext-lrr.xml"> | ||||
| ]> | ||||
| <rfc category="std" docName="draft-ietf-payload-vp9-16" ipr="trust200902"> | ||||
| <?rfc symrefs="yes" ?> | ||||
| <?rfc sortrefs="yes" ?> | ||||
| <!-- alphabetize the references --> | ||||
| <?rfc comments="no"?> | ||||
| <!-- show comments --> | ||||
| <?rfc inline="yes" ?> | ||||
| <!-- comments are inline --> | ||||
| <?rfc toc="yes" ?> | ||||
| <!-- generate table of contents --> | ||||
| <front> | <front> | |||
| <title abbrev="RTP Payload Format for VP9">RTP Payload Format for VP9 | <title abbrev="RTP Payload Format for VP9">RTP Payload Format for VP9 Video< | |||
| Video</title> | /title> | |||
| <seriesInfo name="RFC" value="9628" stream="IETF"/> | ||||
| <author fullname="Justin Uberti" initials="J." surname="Uberti"> | <author fullname="Justin Uberti" initials="J." surname="Uberti"> | |||
| <organization abbrev="Google">Google, Inc.</organization> | <organization showOnFrontPage="true">OpenAI</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>747 6th Street South</street> | <street>1455 3rd St</street> | |||
| <city>San Francisco</city> | ||||
| <city>Kirkland</city> | <region>CA</region> | |||
| <code>94158</code> | ||||
| <region>WA</region> | <country>United States of America</country> | |||
| <code>98033</code> | ||||
| <country>USA</country> | ||||
| </postal> | </postal> | |||
| <email>justin@uberti.name</email> | <email>justin@uberti.name</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Stefan Holmer" initials="S." surname="Holmer"> | <author fullname="Stefan Holmer" initials="S." surname="Holmer"> | |||
| <organization abbrev="Google">Google, Inc.</organization> | <organization abbrev="Google" showOnFrontPage="true">Google, Inc.</organiz | |||
| <address> | ation> | |||
| <address> | ||||
| <postal> | <postal> | |||
| <street>Kungsbron 2</street> | <street>Kungsbron 2</street> | |||
| <code>111 22</code> | <code>111 22</code> | |||
| <city>Stockholm</city> | <city>Stockholm</city> | |||
| <country>Sweden</country> | <country>Sweden</country> | |||
| </postal> | </postal> | |||
| <email>holmer@google.com</email> | <email>holmer@google.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Magnus Flodman" initials="M." surname="Flodman"> | <author fullname="Magnus Flodman" initials="M." surname="Flodman"> | |||
| <organization abbrev="Google">Google, Inc.</organization> | <organization abbrev="Google" showOnFrontPage="true">Google, Inc.</organiz ation> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Kungsbron 2</street> | <street>Kungsbron 2</street> | |||
| <code>111 22</code> | <code>111 22</code> | |||
| <city>Stockholm</city> | <city>Stockholm</city> | |||
| <country>Sweden</country> | <country>Sweden</country> | |||
| </postal> | </postal> | |||
| <email>mflodman@google.com</email> | <email>mflodman@google.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Danny Hong" initials="D." surname="Hong"> | ||||
| <author fullname="Danny Hong" initials="D." surname="Hong"> | <organization abbrev="Google" showOnFrontPage="true">Google, Inc.</organiz | |||
| <organization abbrev="Google">Google, Inc.</organization> | ation> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>1585 Charleston Road</street> | <street>315 Hudson St.</street> | |||
| <city>New York</city> | ||||
| <city>Mountain View</city> | <region>NY</region> | |||
| <code>10013</code> | ||||
| <region>CA</region> | <country>United States of America</country> | |||
| <code>94043</code> | ||||
| <country>US</country> | ||||
| </postal> | </postal> | |||
| <email>dannyhong@google.com</email> | <email>dannyhong@google.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Jonathan Lennox" initials="J." surname="Lennox"> | <author fullname="Jonathan Lennox" initials="J." surname="Lennox"> | |||
| <organization abbrev="8x8 / Jitsi">8x8, Inc. / Jitsi</organization> | <organization abbrev="8x8 / Jitsi" showOnFrontPage="true">8x8, Inc. / Jits | |||
| i</organization> | ||||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street/> | <street/> | |||
| <city>Jersey City</city> | <city>Jersey City</city> | |||
| <region>NJ</region> | <region>NJ</region> | |||
| <code>07302</code> | <code>07302</code> | |||
| <country>United States of America</country> | ||||
| <country>US</country> | ||||
| </postal> | </postal> | |||
| <email>jonathan.lennox@8x8.com</email> | <email>jonathan.lennox@8x8.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="03" year="2025"/> | ||||
| <date/> | ||||
| <area>RAI</area> | <area>RAI</area> | |||
| <workgroup>AVTCore Working Group</workgroup> | <workgroup>AVTCore Working Group</workgroup> | |||
| <keyword>RFC</keyword> | ||||
| <keyword>Request for Comments</keyword> | ||||
| <keyword>RTP</keyword> | <keyword>RTP</keyword> | |||
| <keyword>VP9</keyword> | <keyword>VP9</keyword> | |||
| <keyword>WebM</keyword> | <keyword>WebM</keyword> | |||
| <abstract pn="section-abstract"> | ||||
| <abstract> | <t indent="0" pn="section-abstract-1">This specification describes an RTP | |||
| <t>This specification describes an RTP payload format for the VP9 video co | payload format for the VP9 video codec. | |||
| dec. | The payload format has wide applicability as it supports applications | |||
| The payload format has wide applicability, as it supports applications | from low bitrate peer-to-peer usage to high bitrate video | |||
| from low bit-rate peer-to-peer usage, to high bit-rate video | ||||
| conferences. It includes provisions for temporal and spatial scalability. </t> | conferences. It includes provisions for temporal and spatial scalability. </t> | |||
| </abstract> | </abstract> | |||
| <boilerplate> | ||||
| <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | ||||
| "exclude" pn="section-boilerplate.1"> | ||||
| <name slugifiedName="name-status-of-this-memo">Status of This Memo</name | ||||
| > | ||||
| <t indent="0" pn="section-boilerplate.1-1"> | ||||
| This is an Internet Standards Track document. | ||||
| </t> | ||||
| <t indent="0" pn="section-boilerplate.1-2"> | ||||
| This document is a product of the Internet Engineering Task Force | ||||
| (IETF). It represents the consensus of the IETF community. It has | ||||
| received public review and has been approved for publication by | ||||
| the Internet Engineering Steering Group (IESG). Further | ||||
| information on Internet Standards is available in Section 2 of | ||||
| RFC 7841. | ||||
| </t> | ||||
| <t indent="0" pn="section-boilerplate.1-3"> | ||||
| Information about the current status of this document, any | ||||
| errata, and how to provide feedback on it may be obtained at | ||||
| <eref target="https://www.rfc-editor.org/info/rfc9628" brackets="non | ||||
| e"/>. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | ||||
| ude" pn="section-boilerplate.2"> | ||||
| <name slugifiedName="name-copyright-notice">Copyright Notice</name> | ||||
| <t indent="0" pn="section-boilerplate.2-1"> | ||||
| Copyright (c) 2025 IETF Trust and the persons identified as the | ||||
| document authors. All rights reserved. | ||||
| </t> | ||||
| <t indent="0" pn="section-boilerplate.2-2"> | ||||
| This document is subject to BCP 78 and the IETF Trust's Legal | ||||
| Provisions Relating to IETF Documents | ||||
| (<eref target="https://trustee.ietf.org/license-info" brackets="none | ||||
| "/>) in effect on the date of | ||||
| publication of this document. Please review these documents | ||||
| carefully, as they describe your rights and restrictions with | ||||
| respect to this document. Code Components extracted from this | ||||
| document must include Revised BSD License text as described in | ||||
| Section 4.e of the Trust Legal Provisions and are provided without | ||||
| warranty as described in the Revised BSD License. | ||||
| </t> | ||||
| </section> | ||||
| </boilerplate> | ||||
| <toc> | ||||
| <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | ||||
| n="section-toc.1"> | ||||
| <name slugifiedName="name-table-of-contents">Table of Contents</name> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | ||||
| c.1-1"> | ||||
| <li pn="section-toc.1-1.1"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref der | ||||
| ivedContent="1" format="counter" sectionFormat="of" target="section-1"/>. <xref | ||||
| derivedContent="" format="title" sectionFormat="of" target="name-introduction"> | ||||
| Introduction</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref der | ||||
| ivedContent="2" format="counter" sectionFormat="of" target="section-2"/>. <xref | ||||
| derivedContent="" format="title" sectionFormat="of" target="name-conventions">C | ||||
| onventions</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.3"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref der | ||||
| ivedContent="3" format="counter" sectionFormat="of" target="section-3"/>. <xref | ||||
| derivedContent="" format="title" sectionFormat="of" target="name-media-format-d | ||||
| escription">Media Format Description</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4"> | ||||
| <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" form | ||||
| at="counter" sectionFormat="of" target="section-4"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-payload-format">Payload Format</xr | ||||
| ef></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.4.2"> | ||||
| <li pn="section-toc.1-1.4.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent= | ||||
| "4.1" format="counter" sectionFormat="of" target="section-4.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-rtp-header-usage">RTP | ||||
| Header Usage</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent= | ||||
| "4.2" format="counter" sectionFormat="of" target="section-4.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-vp9-payload-descriptor | ||||
| ">VP9 Payload Descriptor</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.4.2.2.2"> | ||||
| <li pn="section-toc.1-1.4.2.2.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.2.1.1"><xref derived | ||||
| Content="4.2.1" format="counter" sectionFormat="of" target="section-4.2.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-scalabilit | ||||
| y-structure-ss">Scalability Structure (SS)</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent= | ||||
| "4.3" format="counter" sectionFormat="of" target="section-4.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-frame-fragmentation">F | ||||
| rame Fragmentation</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.4.1"><xref derivedContent= | ||||
| "4.4" format="counter" sectionFormat="of" target="section-4.4"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-scalable-encoding-cons | ||||
| idera">Scalable Encoding Considerations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.5.1"><xref derivedContent= | ||||
| "4.5" format="counter" sectionFormat="of" target="section-4.5"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-example-of-a-vp9-rtp-s | ||||
| tream">Example of a VP9 RTP Stream</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.4.2.5.2"> | ||||
| <li pn="section-toc.1-1.4.2.5.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.5.2.1.1"><xref derived | ||||
| Content="4.5.1" format="counter" sectionFormat="of" target="section-4.5.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-reference- | ||||
| picture-use-for-s">Reference Picture Use for Scalable Structure</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5"> | ||||
| <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" form | ||||
| at="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-feedback-messages-and-heade">Feedb | ||||
| ack Messages and Header Extensions</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.5.2"> | ||||
| <li pn="section-toc.1-1.5.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent= | ||||
| "5.1" format="counter" sectionFormat="of" target="section-5.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-reference-picture-sele | ||||
| ction">Reference Picture Selection Indication (RPSI)</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent= | ||||
| "5.2" format="counter" sectionFormat="of" target="section-5.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-full-intra-request-fir | ||||
| ">Full Intra Request (FIR)</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent= | ||||
| "5.3" format="counter" sectionFormat="of" target="section-5.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-layer-refresh-request- | ||||
| lrr">Layer Refresh Request (LRR)</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6"> | ||||
| <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" form | ||||
| at="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-payload-format-parameters">Payload | ||||
| Format Parameters</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.6.2"> | ||||
| <li pn="section-toc.1-1.6.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent= | ||||
| "6.1" format="counter" sectionFormat="of" target="section-6.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-sdp-parameters">SDP Pa | ||||
| rameters</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.6.2.1.2"> | ||||
| <li pn="section-toc.1-1.6.2.1.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.1.2.1.1"><xref derived | ||||
| Content="6.1.1" format="counter" sectionFormat="of" target="section-6.1.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-mapping-of | ||||
| -media-subtype-pa">Mapping of Media Subtype Parameters to SDP</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6.2.1.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.1.2.2.1"><xref derived | ||||
| Content="6.1.2" format="counter" sectionFormat="of" target="section-6.1.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-offer-answ | ||||
| er-considerations">Offer/Answer Considerations</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7"> | ||||
| <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" form | ||||
| at="counter" sectionFormat="of" target="section-7"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-media-type-definition">Media Type | ||||
| Definition</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8"> | ||||
| <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" form | ||||
| at="counter" sectionFormat="of" target="section-8"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-security-considerations">Security | ||||
| Considerations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9"> | ||||
| <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" form | ||||
| at="counter" sectionFormat="of" target="section-9"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-congestion-control">Congestion Con | ||||
| trol</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.10"> | ||||
| <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" fo | ||||
| rmat="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" | ||||
| format="title" sectionFormat="of" target="name-iana-considerations">IANA Consid | ||||
| erations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11"> | ||||
| <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" fo | ||||
| rmat="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" | ||||
| format="title" sectionFormat="of" target="name-references">References</xref></t | ||||
| > | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.11.2"> | ||||
| <li pn="section-toc.1-1.11.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent | ||||
| ="11.1" format="counter" sectionFormat="of" target="section-11.1"/>. <xref deri | ||||
| vedContent="" format="title" sectionFormat="of" target="name-normative-reference | ||||
| s">Normative References</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent | ||||
| ="11.2" format="counter" sectionFormat="of" target="section-11.2"/>. <xref deri | ||||
| vedContent="" format="title" sectionFormat="of" target="name-informative-referen | ||||
| ces">Informative References</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.12"> | ||||
| <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgment | ||||
| s</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.13"> | ||||
| <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-authors-addresses">Authors' Add | ||||
| resses</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| </toc> | ||||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="intro" title="Introduction"> | <section anchor="intro" numbered="true" toc="include" removeInRFC="false" pn | |||
| <t>This specification describes an <xref target="RFC3550">RTP</xref> paylo | ="section-1"> | |||
| ad specification applicable to the | <name slugifiedName="name-introduction">Introduction</name> | |||
| transmission of video streams encoded using the VP9 video codec <xref | <t indent="0" pn="section-1-1">This document describes an <xref target="RF | |||
| target="VP9-BITSTREAM"/>. The format described in this document can be use | C3550" format="default" sectionFormat="of" derivedContent="RFC3550">RTP</xref> p | |||
| d | ayload specification applicable to the | |||
| both in peer-to-peer and video conferencing applications.</t> | transmission of video streams encoded using the VP9 video codec <xref targ | |||
| et="VP9-BITSTREAM" format="default" sectionFormat="of" derivedContent="VP9-BITST | ||||
| <t>The VP9 video codec was developed by Google, and is the | REAM"/>. The format described in this | |||
| successor to its earlier <xref target="RFC6386">VP8</xref> | document can be used both in peer-to-peer and video conferencing | |||
| codec. Above the compression improvements and other general | applications.</t> | |||
| enhancements above VP8, VP9 is also designed in a way that | <t indent="0" pn="section-1-2">The VP9 video codec was developed by Google | |||
| allows spatially-scalable video encoding.</t> | and is the successor to | |||
| its earlier <xref target="RFC6386" format="default" sectionFormat="of" der | ||||
| ivedContent="RFC6386">VP8</xref> codec. | ||||
| Above the compression improvements and other general enhancements to | ||||
| VP8, VP9 is also designed in a way that allows spatially scalable video | ||||
| encoding.</t> | ||||
| </section> | </section> | |||
| <section anchor="conventions" numbered="true" toc="include" removeInRFC="fal | ||||
| <section anchor="conventions" | se" pn="section-2"> | |||
| title="Conventions, Definitions and Acronyms"> | <name slugifiedName="name-conventions">Conventions</name> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", | <t indent="0" pn="section-2-1"> | |||
| "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
| interpreted as described in BCP 14 <xref target="RFC2119"/> | ", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
| <xref target="RFC8174"/> when, and only when, | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| they appear in all capitals, as shown here.</t> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | |||
| to be interpreted as described in BCP 14 <xref target="RFC2119" format="defa | ||||
| ult" sectionFormat="of" derivedContent="RFC2119"/> | ||||
| <xref target="RFC8174" format="default" sectionFormat="of" derivedConten | ||||
| t="RFC8174"/> when, and only when, they appear in all capitals, | ||||
| as shown here. | ||||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="mediaFormatDescription" numbered="true" toc="include" remov | ||||
| <section anchor="mediaFormatDescription" title="Media Format Description"> | eInRFC="false" pn="section-3"> | |||
| <t>The VP9 codec can maintain up to eight reference frames, of | <name slugifiedName="name-media-format-description">Media Format Descripti | |||
| on</name> | ||||
| <t indent="0" pn="section-3-1">The VP9 codec can maintain up to eight refe | ||||
| rence frames, of | ||||
| which up to three can be referenced by any new frame.</t> | which up to three can be referenced by any new frame.</t> | |||
| <t indent="0" pn="section-3-2">VP9 also allows a frame to use another fram | ||||
| <t>VP9 also allows a frame to use another frame of a different | e of a different | |||
| resolution as a reference frame. (Specifically, a frame may use | resolution as a reference frame. (Specifically, a frame may use | |||
| any references whose width and height are between 1/16th that of | any references whose width and height are between 1/16th that of | |||
| the current frame and twice that of the current frame, | the current frame and twice that of the current frame, | |||
| inclusive.) This allows internal resolution changes without | inclusive.) This allows internal resolution changes without | |||
| requiring the use of key frames.</t> | requiring the use of keyframes.</t> | |||
| <t indent="0" pn="section-3-3">These features together enable an encoder t | ||||
| <t>These features together enable an encoder to | o | |||
| implement various forms of coarse-grained scalability, | implement various forms of coarse-grained scalability, | |||
| including temporal, spatial and quality scalability modes, as | including temporal, spatial, and quality scalability modes, as | |||
| well as combinations of these, without the need for explicit | well as combinations of these, without the need for explicit | |||
| scalable coding tools.</t> | scalable coding tools.</t> | |||
| <t indent="0" pn="section-3-4">Temporal layers define different frame rate | ||||
| <t>Temporal layers define different frame rates of video; | s of video; | |||
| spatial and quality layers define different and possibly dependent | spatial and quality layers define different and possibly dependent | |||
| representations of a single input frame. Spatial layers allow | representations of a single input frame. Spatial layers allow | |||
| a frame to be encoded at different resolutions, whereas | a frame to be encoded at different resolutions, whereas | |||
| quality layers allow a frame to be encoded at the same | quality layers allow a frame to be encoded at the same | |||
| resolution but at different qualities (and thus with different | resolution but at different qualities (and, thus, with different | |||
| amounts of coding error). VP9 supports quality layers as | amounts of coding error). VP9 supports quality layers as | |||
| spatial layers without any resolution changes; hereinafter, | spatial layers without any resolution changes; hereinafter, | |||
| the term "spatial layer" is used to represent both spatial and | the term "spatial layer" is used to represent both spatial and | |||
| quality layers.</t> | quality layers.</t> | |||
| <t indent="0" pn="section-3-5">This payload format specification defines h | ||||
| <t>This payload format specification defines how such | ow such | |||
| temporal and spatial scalability layers can be described and | temporal and spatial scalability layers can be described and | |||
| communicated.</t> | communicated.</t> | |||
| <t indent="0" pn="section-3-6">Temporal and spatial scalability layers are | ||||
| <t>Temporal and spatial scalability layers are associated with | associated with | |||
| non-negative integer IDs. The lowest layer of either type has an | non-negative integer IDs. The lowest layer of either type has an | |||
| ID of 0, and is sometimes referred to as the "base" temporal or | ID of zero and is sometimes referred to as the "base" temporal or | |||
| spatial layer.</t> | spatial layer.</t> | |||
| <t indent="0" pn="section-3-7">Layers are designed, and <bcp14>MUST</bcp14 | ||||
| <t>Layers are designed, and MUST be encoded, such that if | > be encoded, such that if | |||
| any layer, and all higher layers, are removed from the bitstream | any layer, and all higher layers, are removed from the bitstream | |||
| along either the spatial or temporal dimension, the remaining bitstream is | along either the spatial or temporal dimension, the remaining bitstream is | |||
| still correctly decodable.</t> | still correctly decodable.</t> | |||
| <t indent="0" pn="section-3-8">For terminology, this document uses the ter | ||||
| <t>For terminology, this document uses the term "frame" to refer | m "frame" to refer to a | |||
| to a single encoded VP9 frame for a particular resolution/quality, and | single encoded VP9 frame for a particular resolution and/or quality, and | |||
| "picture" to refer to all the representations (frames) at a single | "picture" to refer to all the representations (frames) at a single | |||
| instant in time. A picture thus consists of one or more frames, | instant in time. Thus, a picture consists of one or more frames, | |||
| encoding different spatial layers.</t> | encoding different spatial layers.</t> | |||
| <t indent="0" pn="section-3-9">Within a picture, a frame with | ||||
| <t>Within a picture, a frame with spatial layer ID equal to SID, | spatial-layer ID equal to S, where S > 0, can depend on a frame | |||
| where SID > 0, can depend on a frame of the same picture with a lower spat | of the same picture with a lower spatial-layer ID. This "inter-layer" | |||
| ial layer ID. This | dependency can result in additional coding gain compared to the case | |||
| "inter-layer" dependency can result in additional coding gain | where only "inter-picture" dependency is used, where a frame | |||
| compared to the case where only | depends on a previously coded frame in time. For simplicity, this | |||
| traditional "inter-picture" dependency is used, where a frame depends on p | payload format assumes that, within a picture and if inter-layer | |||
| reviously | dependency is used, a spatial-layer S frame can depend only on the | |||
| coded frame in time. For simplicity, this payload format assumes that, | immediately previous spatial-layer S-1 frame, when S > 0. | |||
| within a picture and if inter-layer dependency is used, a spatial layer SI | Additionally, if inter-picture dependency is used, a spatial-layer S | |||
| D frame | frame is assumed to only depend on a previously coded spatial-layer S | |||
| can depend only on the immediately previous spatial layer SID-1 frame, whe | frame.</t> | |||
| n S > 0. Additionally, if | <t indent="0" pn="section-3-10">Given the above simplifications for inter- | |||
| inter-picture dependency is used, a spatial layer SID frame is assumed to | layer and inter-picture | |||
| only | dependencies, a flag (the D bit described below) is used to indicate | |||
| depend on a previously coded spatial layer SID frame.</t> | whether a spatial-layer SID frame depends on the spatial-layer SID-1 | |||
| frame. Given the D bit, a receiver only needs to additionally know the | ||||
| <t>Given above simplifications for inter-layer and inter-picture | inter-picture dependency structure for a given spatial-layer frame in | |||
| dependencies, a flag (the D bit described below) is used to indicate wheth | order to determine its decodability. Two modes of describing the | |||
| er a | inter-picture dependency structure are possible: "flexible mode" and | |||
| spatial layer SID frame depends on the spatial layer SID-1 frame. Given t | "non-flexible mode". An encoder can only switch between the two on the | |||
| he D bit, a receiver | first packet of a keyframe with a temporal-layer ID equal to zero.</t> | |||
| only needs to additionally know the inter-picture dependency structure for | <t indent="0" pn="section-3-11">In flexible mode, each packet can contain | |||
| a given | up to three reference indices, | |||
| spatial layer frame in order to determine its decodability. Two modes | which identify all frames referenced by the frame transmitted in the | |||
| of describing the inter-picture dependency structure are possible: | current packet for inter-picture prediction. This (along with the D | |||
| "flexible mode" and "non-flexible mode". An encoder can only switch | bit) enables a receiver to identify if a frame is decodable or not and | |||
| between the two on the first packet of a key frame with temporal | helps it understand the temporal-layer structure. Since this is | |||
| layer ID equal to 0.</t> | signaled in each packet, it makes it possible to have very flexible | |||
| temporal-layer hierarchies and scalability structures, which are | ||||
| <t>In flexible mode, each packet can contain up to 3 reference | changing dynamically.</t> | |||
| indices, which identify all frames referenced by the frame | <t indent="0" pn="section-3-12">In non-flexible mode, frames are encoded u | |||
| transmitted in the current packet for inter-picture prediction. | sing a fixed, recurring pattern of dependencies; | |||
| This (along with the D bit) enables a receiver to identify if a frame | the set of pictures that recur in this pattern is known as a "Picture Grou | |||
| is decodable or not and helps it understand the temporal layer | p" (or "PG"). | |||
| structure. | ||||
| Since this is signaled in | ||||
| each packet it makes it possible to have very flexible temporal layer | ||||
| hierarchies, and scalability structures which are changing dynamically.</t | ||||
| > | ||||
| <t>In non-flexible mode, frames are encoded using a fixed, recurring patte | ||||
| rn of dependencies; | ||||
| the set of pictures that recur in this pattern is known as a Picture Group | ||||
| (PG). | ||||
| In this mode, the inter-picture dependencies (the reference | In this mode, the inter-picture dependencies (the reference | |||
| indices) of the Picture Group MUST be pre-specified as part of the | indices) of the PG <bcp14>MUST</bcp14> be pre-specified as part of the | |||
| scalability structure (SS) data. | Scalability Structure (SS) data. | |||
| Each | Each | |||
| packet has an index to refer to one of the described pictures | packet has an index to refer to one of the described pictures | |||
| in the PG, from which the pictures referenced by the picture transmitted i n the current packet | in the PG from which the pictures referenced by the picture transmitted in the current packet | |||
| for inter-picture prediction can be identified.</t> | for inter-picture prediction can be identified.</t> | |||
| <aside pn="section-3-13"> | ||||
| <t>(Note: A "Picture Group", as used in this document, | <t indent="0" pn="section-3-13.1">Note: A "Picture Group" or "PG", as us | |||
| ed in this document, | ||||
| is not the same thing as the term "Group of Pictures" as | is not the same thing as the term "Group of Pictures" as | |||
| it is traditionally used in video coding, i.e. to mean an | it is commonly used in video coding, i.e., to mean an | |||
| independently-decoadable run of pictures beginning with a | independently decodable run of pictures beginning with a | |||
| keyframe.)</t> | keyframe.</t> | |||
| </aside> | ||||
| <t>The SS data can also be used to specify the resolution of each | <t indent="0" pn="section-3-14">The SS data can also be used to specify th | |||
| e resolution of each | ||||
| spatial layer present in the VP9 stream for both flexible and non-flexible modes.</t> | spatial layer present in the VP9 stream for both flexible and non-flexible modes.</t> | |||
| </section> | </section> | |||
| <section anchor="payloadFormat" numbered="true" toc="include" removeInRFC="f | ||||
| <section anchor="payloadFormat" title="Payload Format"> | alse" pn="section-4"> | |||
| <t>This section describes how the encoded VP9 bitstream is encapsulated | <name slugifiedName="name-payload-format">Payload Format</name> | |||
| in RTP. To handle network losses usage of RTP/AVPF <xref | <t indent="0" pn="section-4-1">This section describes how the encoded VP9 | |||
| target="RFC4585"/> is RECOMMENDED. All integer fields in the | bitstream is encapsulated | |||
| specifications are encoded as unsigned integers in network octet | in RTP. To handle network losses, usage of RTP/AVPF <xref target="RFC4585" | |||
| format="default" sectionFormat="of" derivedContent="RFC4585"/> is <bcp14>RECOMM | ||||
| ENDED</bcp14>. All integer fields in this | ||||
| specification are encoded as unsigned integers in network octet | ||||
| order.</t> | order.</t> | |||
| <section anchor="RTPHeaderUsage" numbered="true" toc="include" removeInRFC | ||||
| <section anchor="RTPHeaderUsage" title="RTP Header Usage"> | ="false" pn="section-4.1"> | |||
| <figure anchor="figureRTPHeader"> | <name slugifiedName="name-rtp-header-usage">RTP Header Usage</name> | |||
| <preamble>The general RTP payload format for VP9 is depicted | <t keepWithNext="true" indent="0" pn="section-4.1-1">The general RTP pay | |||
| below.</preamble> | load format for VP9 is depicted | |||
| below.</t> | ||||
| <artwork><![CDATA[ | <figure anchor="figureRTPHeader" align="left" suppress-title="false" pn= | |||
| "figure-1"> | ||||
| <name slugifiedName="name-general-rtp-payload-format-">General RTP Pay | ||||
| load Format for VP9</name> | ||||
| <artwork type="" align="left" alt="" pn="section-4.1-2.1"> | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |V=2|P|X| CC |M| PT | sequence number | | |V=2|P|X| CC |M| PT | sequence number | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | timestamp | | | timestamp | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | synchronization source (SSRC) identifier | | | synchronization source (SSRC) identifier | | |||
| +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | |||
| | contributing source (CSRC) identifiers | | | contributing source (CSRC) identifiers | | |||
| skipping to change at line 322 ¶ | skipping to change at line 380 ¶ | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | : | | | : | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | | |||
| + | | + | | |||
| : VP9 payload : | : VP9 payload : | |||
| | | | | | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | : OPTIONAL RTP padding | | | : OPTIONAL RTP padding | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | </artwork> | |||
| <postamble>The VP9 payload descriptor will be | ||||
| described in <xref target="VP9payloadDescriptor"/>; the VP9 payload is | ||||
| described | ||||
| in <xref target="VP9-BITSTREAM"/>. | ||||
| OPTIONAL RTP padding MUST NOT be included unless the P bi | ||||
| t is set.</postamble> | ||||
| </figure> | </figure> | |||
| <t keepWithPrevious="true" indent="0" pn="section-4.1-3">See <xref targe | ||||
| <t><list style="hanging"> | t="VP9payloadDescriptor" format="default" sectionFormat="of" derivedContent="Sec | |||
| <t hangText="Marker bit (M):">MUST be set to 1 for the final packet | tion 4.2"/> for more information on the VP9 payload descriptor; | |||
| of the highest spatial layer frame (the final packet of the picture) | the VP9 payload is described in <xref target="VP9-BITSTREAM" format="def | |||
| , | ault" sectionFormat="of" derivedContent="VP9-BITSTREAM"/>. <bcp14>OPTIONAL</bcp | |||
| and 0 otherwise. Unless spatial scalability is in use for this pict | 14> RTP padding <bcp14>MUST NOT</bcp14> be included unless the P bit is set.</t> | |||
| ure, | <dl newline="false" spacing="normal" indent="3" pn="section-4.1-4"> | |||
| this will have the same value as the E bit described below. Note th | <dt pn="section-4.1-4.1">Marker bit (M):</dt> | |||
| is bit | <dd pn="section-4.1-4.2">This bit <bcp14>MUST</bcp14> be set to one fo | |||
| MUST be set to 1 for the target spatial layer frame | r the final packet | |||
| if a stream is being rewritten to remove higher spatial layers.</t> | of the highest spatial-layer frame (the final packet of the picture) | |||
| ; otherwise, it is zero. Unless spatial scalability is in use for this picture, | ||||
| <t hangText="Payload Type (PT):">In line with the policy | this bit will have the same value as the E bit described in <xref ta | |||
| in Section 3 of <xref target='RFC3551'/>, applications | rget="VP9payloadDescriptor" format="default" sectionFormat="of" derivedContent=" | |||
| using the VP9 RTP payload | Section 4.2"/>. Note this bit | |||
| profile MUST assign a dynamic payload type number to be | <bcp14>MUST</bcp14> be set to one for the target spatial-layer frame | |||
| used in each RTP session and provide a mechanism to | if a stream is being rewritten to remove higher spatial layers.</dd> | |||
| indicate the mapping. See <xref target="SDPParameters" | <dt pn="section-4.1-4.3">Payload Type (PT):</dt> | |||
| /> for the mechanism | <dd pn="section-4.1-4.4">In line with the policy in <xref target="RFC3 | |||
| to be used with the <xref target='RFC8866'>Session | 551" sectionFormat="of" section="3" format="default" derivedLink="https://rfc-ed | |||
| Description Protocol (SDP)</xref>.</t> | itor.org/rfc/rfc3551#section-3" derivedContent="RFC3551"/>, applications using | |||
| the VP9 RTP payload profile <bcp14>MUST</bcp14> assign a dynamic | ||||
| <t hangText="Timestamp:">The <xref target="RFC3550">RTP timestamp</x | payload type number to be used in each RTP session and provide a | |||
| ref> indicates the time when | mechanism to indicate the mapping. See <xref target="SDPParameters" f | |||
| ormat="default" sectionFormat="of" derivedContent="Section 6.1"/> for the mechan | ||||
| ism to be used with the <xref target="RFC8866" format="default" sectionFormat="o | ||||
| f" derivedContent="RFC8866">Session Description Protocol | ||||
| (SDP)</xref>.</dd> | ||||
| <dt pn="section-4.1-4.5">Timestamp:</dt> | ||||
| <dd pn="section-4.1-4.6">The <xref target="RFC3550" format="default" s | ||||
| ectionFormat="of" derivedContent="RFC3550">RTP timestamp</xref> indicates the ti | ||||
| me when | ||||
| the input frame was sampled, at a clock rate of 90 kHz. If the | the input frame was sampled, at a clock rate of 90 kHz. If the | |||
| input picture is encoded with multiple layer frames, all of the | input picture is encoded with multiple frames, all of the | |||
| frames of the picture MUST have the same timestamp.</t> | frames of the picture <bcp14>MUST</bcp14> have the same timestamp.</ | |||
| dd> | ||||
| <t>If a frame has the VP9 show_frame field set to 0 (i.e. | <dt pn="section-4.1-4.7"/> | |||
| , it is meant only to | <dd pn="section-4.1-4.8">If a frame has the VP9 show_frame field set t | |||
| populate a reference buffer, without being output) its | o zero (i.e., it is | |||
| timestamp MAY alternatively be set | meant only to populate a reference buffer without being output), its | |||
| to be the same as the subsequent frame with show_frame | timestamp <bcp14>MAY</bcp14> alternatively be set to be the same as | |||
| equal to 1. (This will | the subsequent frame with show_frame equal to one. (This will be | |||
| be convenient for playing out pre-encoded content packa | convenient for playing out pre-encoded content packaged with VP9 | |||
| ged with VP9 "superframes", which | "superframes", which typically bundle show_frame==0 frames with a | |||
| typically bundle show_frame==0 frames with a subsequent | subsequent show_frame==1 frame.) Every picture containing a frame wit | |||
| show_frame==1 frame.) Every | h show_frame==1, | |||
| frame with show_frame==1, however, MUST have a unique t | however, <bcp14>MUST</bcp14> have a unique timestamp modulo the 2<sup> | |||
| imestamp modulo the 2^32 wrap of | 32</sup> | |||
| the field.</t> | wrap of the field.</dd> | |||
| </dl> | ||||
| </list></t> | <t indent="0" pn="section-4.1-5">The remaining RTP Fixed Header Fields ( | |||
| <t>The remaining RTP Fixed Header Fields (V, P, X, CC, | V, P, X, CC, sequence | |||
| sequence number, SSRC and CSRC identifiers) are used as | number, SSRC, and CSRC identifiers) are used as specified in <xref targe | |||
| specified in Section 5.1 of <xref | t="RFC3550" sectionFormat="of" section="5.1" format="default" derivedLink="https | |||
| target="RFC3550"/>.</t> | ://rfc-editor.org/rfc/rfc3550#section-5.1" derivedContent="RFC3550"/>.</t> | |||
| </section> | </section> | |||
| <section anchor="VP9payloadDescriptor" numbered="true" toc="include" remov | ||||
| <section anchor="VP9payloadDescriptor" title="VP9 Payload Descriptor"> | eInRFC="false" pn="section-4.2"> | |||
| <figure anchor="figureVP9payloadDescriptor"> | <name slugifiedName="name-vp9-payload-descriptor">VP9 Payload Descriptor | |||
| <preamble>In flexible mode (with the F bit below set to 1), the first | </name> | |||
| octets | <t keepWithNext="true" indent="0" pn="section-4.2-1">In flexible mode (w | |||
| ith the F bit below set to one), the first octets | ||||
| after the RTP header are the VP9 payload descriptor, with the followin g | after the RTP header are the VP9 payload descriptor, with the followin g | |||
| structure.</preamble> | structure.</t> | |||
| <figure anchor="figureVP9payloadDescriptor" align="left" suppress-title= | ||||
| <artwork><![CDATA[ | "false" pn="figure-2"> | |||
| <name slugifiedName="name-flexible-mode-format-for-vp">Flexible Mode F | ||||
| ormat for VP9 Payload Descriptor</name> | ||||
| <artwork name="" type="" align="left" alt="" pn="section-4.2-2.1"> | ||||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| |I|P|L|F|B|E|V|Z| (REQUIRED) | |I|P|L|F|B|E|V|Z| (REQUIRED) | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| I: |M| PICTURE ID | (REQUIRED) | I: |M| PICTURE ID | (REQUIRED) | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| M: | EXTENDED PID | (RECOMMENDED) | M: | EXTENDED PID | (RECOMMENDED) | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| L: | TID |U| SID |D| (Conditionally RECOMMENDED) | L: | TID |U| SID |D| (Conditionally RECOMMENDED) | |||
| +-+-+-+-+-+-+-+-+ -\ | +-+-+-+-+-+-+-+-+ -\ | |||
| P,F: | P_DIFF |N| (Conditionally REQUIRED) - up to 3 times | P,F: | P_DIFF |N| (Conditionally REQUIRED) - up to 3 times | |||
| +-+-+-+-+-+-+-+-+ -/ | +-+-+-+-+-+-+-+-+ -/ | |||
| V: | SS | | V: | SS | | |||
| | .. | | | .. | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| </artwork> | ||||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t keepWithNext="true" indent="0" pn="section-4.2-3">In non-flexible mod | ||||
| <figure anchor="figureVP9payloadDescriptorNonFlexible"> | e (with the F bit below set to zero), the first octets | |||
| <preamble>In non-flexible mode (with the F bit below set to 0), the fi | ||||
| rst octets | ||||
| after the RTP header are the VP9 payload descriptor, with the followin g | after the RTP header are the VP9 payload descriptor, with the followin g | |||
| structure.</preamble> | structure.</t> | |||
| <figure anchor="figureVP9payloadDescriptorNonFlexible" align="left" supp | ||||
| <artwork><![CDATA[ | ress-title="false" pn="figure-3"> | |||
| <name slugifiedName="name-non-flexible-mode-format-fo">Non-Flexible Mo | ||||
| de Format for VP9 Payload Descriptor</name> | ||||
| <artwork name="" type="" align="left" alt="" pn="section-4.2-4.1"> | ||||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| |I|P|L|F|B|E|V|Z| (REQUIRED) | |I|P|L|F|B|E|V|Z| (REQUIRED) | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| I: |M| PICTURE ID | (RECOMMENDED) | I: |M| PICTURE ID | (RECOMMENDED) | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| M: | EXTENDED PID | (RECOMMENDED) | M: | EXTENDED PID | (RECOMMENDED) | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| L: | TID |U| SID |D| (Conditionally RECOMMENDED) | L: | TID |U| SID |D| (Conditionally RECOMMENDED) | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| | TL0PICIDX | (Conditionally REQUIRED) | | TL0PICIDX | (Conditionally REQUIRED) | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| V: | SS | | V: | SS | | |||
| | .. | | | .. | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| </artwork> | ||||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t indent="0" pn="section-4.2-5">Except as noted, the following field de | ||||
| <t><list style="hanging"> | scriptions apply to the payload descriptor formats in both Figures <xref target= | |||
| <t hangText="I:">Picture ID (PID) present. When set to one, the | "figureVP9payloadDescriptor" format="counter" sectionFormat="of" derivedContent= | |||
| OPTIONAL PID MUST be present after the mandatory first octet and | "2"/> and <xref target="figureVP9payloadDescriptorNonFlexible" format="counter" | |||
| specified as below. Otherwise, PID MUST NOT be present. If the V bit | sectionFormat="of" derivedContent="3"/>.</t> | |||
| was set in the | <dl newline="false" spacing="normal" indent="3" pn="section-4.2-6"> | |||
| stream's most recent start of a keyframe (i.e. the SS field was presen | <dt pn="section-4.2-6.1">I:</dt> | |||
| t) and the F bit | <dd pn="section-4.2-6.2">Picture ID (PID) present. When set to one, th | |||
| is set to 0 (i.e. non-flexible scalability mode is in use), | e | |||
| then this bit MUST be set on every packet.</t> | <bcp14>OPTIONAL</bcp14> PID <bcp14>MUST</bcp14> be present after the | |||
| mandatory first octet and specified as below. Otherwise, PID | ||||
| <t hangText="P:">Inter-picture predicted frame. When set to zero, the | <bcp14>MUST NOT</bcp14> be present. If the V bit was set in the | |||
| frame does not utilize inter-picture prediction. In this case, | stream's most recent start of a keyframe (i.e., the SS field was | |||
| up-switching to a current spatial layer's frame is possible from direc | present) and the F bit is set to zero (i.e., non-flexible scalability | |||
| tly | mode is in use), then this bit <bcp14>MUST</bcp14> be set on every | |||
| lower spatial layer frame. P SHOULD also be set to zero when | packet.</dd> | |||
| encoding a layer synchronization frame in response to an <xref target= | <dt pn="section-4.2-6.3">P:</dt> | |||
| 'I-D.ietf-avtext-lrr'>LRR</xref> message (see <xref target='LRR'/>). | <dd pn="section-4.2-6.4">Inter-picture predicted frame. When set to z | |||
| When P is set to zero, the TID field (described below) MUST also | ero, the frame does | |||
| be set to 0 (if present). Note that the P bit does not | not utilize inter-picture prediction. In this case, up-switching to | |||
| forbid intra-picture, inter-layer prediction from earlier | a current spatial layer's frame is possible from a directly lower | |||
| frames of the same picture, if any.</t> | spatial-layer frame. P <bcp14>SHOULD</bcp14> also be set to zero when | |||
| encoding a layer synchronization frame in response to a <xref target=" | ||||
| <t hangText="L:">Layer indices present. When set to one, | RFC9627" format="default" sectionFormat="of" derivedContent="RFC9627">Layer Refr | |||
| the one or two octets following the mandatory first octet and the PID | esh Request (LRR)</xref> | |||
| (if present) is as described by "Layer indices" below. If the F bit ( | message (see <xref target="LRR" format="default" sectionFormat="of" de | |||
| described below) | rivedContent="Section 5.3"/>). When P is set | |||
| is set to 1 (indicating flexible mode), then only one octet is present | to zero, the Temporal-layer ID (TID) field (described below) <bcp14>MU | |||
| for the | ST</bcp14> also be | |||
| layer indices. Otherwise if the F bit is set to 0 (indicating non-flex | set to zero (if present). Note that the P bit does not forbid | |||
| ible mode), | intra-picture, inter-layer prediction from earlier frames of the | |||
| then two octets are present for the layer indices.</t> | same picture, if any.</dd> | |||
| <dt pn="section-4.2-6.5">L:</dt> | ||||
| <t hangText="F:">Flexible mode. F set to one indicates | <dd pn="section-4.2-6.6">Layer indices present. When set to one, the | |||
| flexible mode and if the P bit is also set to one, then the octets fol | one or two octets | |||
| lowing | following the mandatory first octet and the PID (if present) is as | |||
| the mandatory first octet, the PID, and layer indices (if present) are | described by "Layer indices" below. If the F bit (described below) | |||
| as described by "Reference indices" below. This MUST only be set to 1 | is set to one (indicating flexible mode), then only one octet is | |||
| if the I | present for the layer indices. Otherwise, if the F bit is set to zero | |||
| bit is also set to one; if the I bit is set to zero, then this MUST al | (indicating non-flexible mode), then two octets are present for the | |||
| so be | layer indices.</dd> | |||
| set to zero and ignored by receivers. (Flexible mode's Reference indic | <dt pn="section-4.2-6.7">F:</dt> | |||
| es are defined as offsets | <dd pn="section-4.2-6.8">Flexible mode. When set to one, this indicat | |||
| from the Picture ID field, so they would have no meaning if I were not | es flexible mode; if the | |||
| set.) | P bit is also set to one, then the octets following the mandatory | |||
| The value of this F | first octet, the PID, and layer indices (if present) are as | |||
| bit MUST only change | described by "reference indices" below. This bit <bcp14>MUST</bcp14> | |||
| on the first packet of a key picture. A key picture is a | only be set to one if the I bit is also set to one; if the I bit is | |||
| picture whose base spatial layer frame is a key frame, and | set to zero, then this bit <bcp14>MUST</bcp14> also be set to zero and | |||
| which thus completely resets the encoder state. This | ignored by receivers. (Flexible mode's reference indices are defined | |||
| packet will have its P bit | as offsets from the Picture ID field, so they would have no meaning | |||
| equal to zero, SID or L bit (described below) equal to zero, and B bit | if I were not set.) The value of the F bit <bcp14>MUST</bcp14> | |||
| (described below) | only change on the first packet of a key picture. A "key picture" is | |||
| equal to 1.</t> | a picture whose base spatial-layer frame is a keyframe, and thus one w | |||
| hich | ||||
| <t hangText="B:">Start of a frame. MUST be set to 1 if | completely resets the encoder state. This packet will have its | |||
| P bit equal to zero, SID or L bit (described below) equal to zero, | ||||
| and B bit (described below) equal to one.</dd> | ||||
| <dt pn="section-4.2-6.9">B:</dt> | ||||
| <dd pn="section-4.2-6.10">Start of Frame. This bit <bcp14>MUST</bcp14> | ||||
| be set to one if | ||||
| the first payload octet of the RTP packet is the beginning of a | the first payload octet of the RTP packet is the beginning of a | |||
| new VP9 frame, and MUST NOT be 1 otherwise. Note that this | new VP9 frame; otherwise, it <bcp14>MUST NOT</bcp14> be one. Note that | |||
| frame might not be the first frame of a picture.</t> | this | |||
| frame might not be the first frame of a picture.</dd> | ||||
| <t hangText="E:">End of a frame. MUST be set to 1 for the final | <dt pn="section-4.2-6.11">E:</dt> | |||
| RTP packet of a VP9 frame, and 0 otherwise. This enables a | <dd pn="section-4.2-6.12">End of Frame. This bit <bcp14>MUST</bcp14> | |||
| be set to one for the final | ||||
| RTP packet of a VP9 frame; otherwise, it is zero. This enables a | ||||
| decoder to finish decoding the frame, where it otherwise may need to | decoder to finish decoding the frame, where it otherwise may need to | |||
| wait for the next packet to explicitly know that the frame is complete . | wait for the next packet to explicitly know that the frame is complete . | |||
| Note that, if spatial scalability is in use, more frames from the | Note that, if spatial scalability is in use, more frames from the | |||
| same picture may follow; see the description of the B bit above.</t> | same picture may follow; see the description of the B bit above.</dd> | |||
| <dt pn="section-4.2-6.13">V:</dt> | ||||
| <t hangText="V:">Scalability structure (SS) data present. When set | <dd pn="section-4.2-6.14">Scalability Structure (SS) data present. Whe | |||
| to one, the OPTIONAL SS data MUST be present in the payload descriptor | n set | |||
| . | to one, the <bcp14>OPTIONAL</bcp14> SS data <bcp14>MUST</bcp14> be pre | |||
| Otherwise, the SS data MUST NOT be present.</t> | sent in the payload descriptor. | |||
| Otherwise, the SS data <bcp14>MUST NOT</bcp14> be present.</dd> | ||||
| <t hangText="Z:">Not a reference frame for upper spatial | <dt pn="section-4.2-6.15">Z:</dt> | |||
| layers. If set to 1, indicates that frames with higher | <dd pn="section-4.2-6.16">Not a reference frame for upper spatial laye | |||
| spatial layers SID+1 and greater of the current and following pictures | rs. If set to one, | |||
| do not depend on the current spatial layer SID frame. This | indicates that frames with higher spatial layers SID+1 and greater | |||
| enables a decoder which is targeting a higher spatial layer | of the current and following pictures do not depend on the current | |||
| to know that it can safely discard this packet's frame | spatial-layer SID frame. This enables a decoder that is targeting a | |||
| without processing it, without having to wait for the "D" | higher spatial layer to know that it can safely discard this | |||
| bit in the higher-layer frame (see below).</t> | packet's frame without processing it, without having to wait for the | |||
| </list></t> | D bit in the higher-layer frame (see below).</dd> | |||
| </dl> | ||||
| <t>The mandatory first octet is followed by the extension data fields th | <t indent="0" pn="section-4.2-7">The mandatory first octet is followed b | |||
| at | y the extension data fields that | |||
| are enabled:<list style="hanging"> | are enabled:</t> | |||
| <t hangText="M:">The most significant bit of the first octet is an | <dl newline="false" spacing="normal" indent="3" pn="section-4.2-8"> | |||
| extension flag. The field MUST be present if the I bit is equal to | <dt pn="section-4.2-8.1">M:</dt> | |||
| one. If M is set, the PID field MUST contain 15 bits; otherwise, it MU | <dd pn="section-4.2-8.2">The most significant bit of the first octet i | |||
| ST | s an extension | |||
| contain 7 bits. See PID below.</t> | flag. The field <bcp14>MUST</bcp14> be present if the I bit is equal | |||
| to one. If M is set, the PID field <bcp14>MUST</bcp14> contain 15 | ||||
| <t hangText="Picture ID (PID):">Picture ID represented in 7 or 15 bits | bits; otherwise, it <bcp14>MUST</bcp14> contain 7 bits. See PID | |||
| , | below.</dd> | |||
| depending on the M bit. This is a running index of the pictures, where | <dt pn="section-4.2-8.3">Picture ID (PID):</dt> | |||
| the | <dd pn="section-4.2-8.4">Picture ID represented in 7 or 15 bits, depen | |||
| sender increments the value by 1 for each picture it sends. (Note how | ding on the M | |||
| ever that | bit. This is a running index of the pictures, where the sender | |||
| because a middlebox can discard pictures where permitted by the scalab | increments the value by one for each picture it sends. (Note, | |||
| ility structure, Picture IDs | however, that because a middlebox can discard pictures where | |||
| as received by a receiver might not be contiguous.) This | permitted by the SS, Picture IDs as received by a | |||
| field MUST be present if the I bit is equal to one. If M is set to zer | receiver might not be contiguous.) This field <bcp14>MUST</bcp14> | |||
| o, | be present if the I bit is equal to one. If M is set to zero, 7 bits | |||
| 7 bits carry the PID; else if M is set to one, 15 bits carry | carry the PID; else, if M is set to one, 15 bits carry the PID in | |||
| the PID in network byte order. | network byte order. The sender may choose between a 7- or 15-bit | |||
| The sender may choose between a 7- or 15-bit index. The PID SHOULD sta | index. The PID <bcp14>SHOULD</bcp14> start on a random number and | |||
| rt on a | <bcp14>MUST</bcp14> wrap after reaching the maximum ID (0x7f or | |||
| random number, and MUST wrap after reaching the maximum ID (0x7f or 0x | 0x7fff depending on the index size chosen). The receiver <bcp14>MUST N | |||
| 7fff depending on | OT</bcp14> assume that the number of bits in the PID stays the same | |||
| the index size chosen). The receiver | through the session. If this field transitions from 7 bits to 15 | |||
| MUST NOT assume that the number of bits in PID stay the same through t | bits, the value is zero-extended (i.e., the value after 0x6e is | |||
| he | 0x006f); if the field transitions from 15 bits to 7 bits, it is | |||
| session. If this field transitions from 7-bits to 15-bits, the value | truncated (i.e., the value after 0x1bbe is 0x3f). | |||
| is zero-extended | </dd> | |||
| (i.e. the value after 0x6e is 0x006f); if the field transitions from 1 | <dt pn="section-4.2-8.5"/> | |||
| 5 bits to 7 bits, | <dd pn="section-4.2-8.6">In the non-flexible mode (when the F bit is s | |||
| it is truncated (i.e. the value after 0x1bbe is 0xbf). | et to zero), this PID | |||
| </t> | is used as an index to the PG specified in the SS | |||
| data below. In this mode, the PID of the keyframe corresponds to | ||||
| <t>In the non-flexible mode (when the F bit is set to 0), this PID is | the first specified frame in the PG. Then subsequent PIDs are | |||
| used | mapped to subsequently specified frames in the PG (modulo N_G, | |||
| as an index to the picture group (PG) specified in the SS data below. | specified in the SS data below), respectively.</dd> | |||
| In this mode, the | <dt pn="section-4.2-8.7"/> | |||
| PID of the key frame corresponds to the first specified frame in the | <dd pn="section-4.2-8.8">All frames of the same picture <bcp14>MUST</b | |||
| PG. Then subsequent PIDs are mapped to subsequently specified frames | cp14> have the same | |||
| in | PID value.</dd> | |||
| the PG (modulo N_G, specified in the SS data below), respectively.</t> | <dt pn="section-4.2-8.9"/> | |||
| <dd pn="section-4.2-8.10">Frames (and their corresponding pictures) wi | ||||
| <t>All frames of the same picture MUST have the same PID value. | th the VP9 | |||
| </t> | show_frame field equal to zero <bcp14>MUST</bcp14> have distinct PID | |||
| values from subsequent pictures with show_frame equal to one. Thus, a | ||||
| <t>Frames (and their corresponding pictures) with the VP9 show_ | picture (as defined in this specification) is different than a VP9 | |||
| frame field equal to 0 MUST | superframe.</dd> | |||
| have distinct PID values from subsequent pictures with sh | <dt pn="section-4.2-8.11"/> | |||
| ow_frame equal to 1. Thus, | <dd pn="section-4.2-8.12">All frames of the same picture <bcp14>MUST</ | |||
| a Picture as defined in this specification is different t | bcp14> have the same | |||
| han a VP9 Superframe.</t> | value for show_frame.</dd> | |||
| <dt pn="section-4.2-8.13">Layer indices:</dt> | ||||
| <t>All frames of the same picture MUST have the same value for | <dd pn="section-4.2-8.14">This field is optional but <bcp14>RECOMMENDE | |||
| show_frame.</t> | D</bcp14> | |||
| whenever encoding with layers. For both flexible and non-flexible | ||||
| <t hangText="Layer indices:">This information is optional but RECOMMEN | modes, one octet is used to specify a layer frame's Temporal-layer | |||
| DED | ID (TID) and Spatial-layer ID (SID) as shown both in Figures <xref tar | |||
| whenever encoding with layers. For both flexible and non-flexible mod | get="figureVP9payloadDescriptor" format="counter" sectionFormat="of" derivedCont | |||
| es, | ent="2"/> and <xref target="figureVP9payloadDescriptorNonFlexible" format="count | |||
| one octet is used to specify a layer frame's temporal layer ID (TID) a | er" sectionFormat="of" derivedContent="3"/>. | |||
| nd spatial layer ID (SID) | Additionally, a bit (U) is used to indicate that the current frame | |||
| as shown both in <xref target="figureVP9payloadDescriptor"/> and <xref | is a "switching up point" frame. Another bit (D) is used to | |||
| target="figureVP9payloadDescriptorNonFlexible"/>. | indicate whether inter-layer prediction is used for the current | |||
| Additionally, a bit (U) is used to indicate that the current frame is | frame.</dd> | |||
| a | <dt pn="section-4.2-8.15"/> | |||
| "switching up point" frame. Another bit (D) is used to indicate wheth | <dd pn="section-4.2-8.16">In the non-flexible mode (when the F bit is | |||
| er inter-layer | set to zero), another | |||
| prediction is used for the current frame.</t> | octet is used to represent the Temporal Layer 0 Picture Index (8 bits) | |||
| (TL0PICIDX), as | ||||
| <t>In the non-flexible mode (when the F bit is set to 0), another octe | depicted in <xref target="figureVP9payloadDescriptorNonFlexible" forma | |||
| t is used | t="default" sectionFormat="of" derivedContent="Figure 3"/>. The TL0PICIDX is pr | |||
| to represent temporal layer 0 index (TL0PICIDX), as depicted in <xref | esent so that all minimally | |||
| target="figureVP9payloadDescriptorNonFlexible"/>. | required frames (the base temporal-layer frames) can be | |||
| The TL0PICIDX is present so that all minimally required frames - the b | tracked.</dd> | |||
| ase temporal layer frames - can be tracked.</t> | <dt pn="section-4.2-8.17"/> | |||
| <dd pn="section-4.2-8.18"> | ||||
| <t>The TID and SID fields indicate the temporal and spatial layers and | <t indent="0" pn="section-4.2-8.18.1">The TID and SID fields indicat | |||
| can help middleboxes and | e the temporal and spatial layers | |||
| endpoints quickly identify which layer a packet belongs to. | and can help middleboxes and endpoints quickly identify which | |||
| layer a packet belongs to. | ||||
| <list style="hanging"> | ||||
| <t hangText="TID:">The temporal layer ID of current frame. In the c | ||||
| ase of non-flexible mode, | ||||
| if PID is mapped to a picture in a specified PG, then | ||||
| the value of TID MUST match the corresponding TID value of the mappe | ||||
| d picture in the PG.</t> | ||||
| <t hangText="U:">Switching up point. If this bit is set to 1 for th | ||||
| e current picture with temporal | ||||
| layer ID equal to TID, then "switch up" to a higher frame rate is po | ||||
| ssible as subsequent higher temporal | ||||
| layer pictures will not depend on any picture before the current pic | ||||
| ture (in coding order) with temporal layer | ||||
| ID greater than TID.</t> | ||||
| <t hangText="SID:">The spatial layer ID of current frame. Note that | ||||
| frames with spatial layer SID > 0 | ||||
| may be dependent on decoded spatial layer SID-1 frame within the sam | ||||
| e picture. Different | ||||
| frames of the same picture MUST have distinct spatial lay | ||||
| er IDs, and frames' spatial layers | ||||
| MUST appear in increasing order within the frame.</t> | ||||
| <t hangText="D:">Inter-layer dependency used. MUST be set to one if | ||||
| and only if the current spatial layer SID frame | ||||
| depends on spatial layer SID-1 frame of the same picture, otherwise | ||||
| MUST be set to zero. For the base layer frame | ||||
| (with SID equal to 0), this D bit MUST be set to zero.</t> | ||||
| <t hangText="TL0PICIDX:">8 bits temporal layer zero index. TL0PICIDX | ||||
| is only present | ||||
| in the non-flexible mode (F = 0). This is a running index for the t | ||||
| emporal | ||||
| base layer pictures, i.e., the pictures with TID set to 0. If TID i | ||||
| s larger than 0, | ||||
| TL0PICIDX indicates which temporal base layer picture the current pi | ||||
| cture depends on. TL0PICIDX MUST be | ||||
| incremented by 1 when TID is equal to 0. The index SHOULD start on | ||||
| a random number, and MUST restart | ||||
| at 0 after reaching the maximum number 255.</t> | ||||
| </list></t> | ||||
| <t hangText="Reference indices:">When P and F are both set to one, ind | ||||
| icating a non-key frame in | ||||
| flexible mode, then at least | ||||
| one reference index MUST be specified as below. Additional reference | ||||
| indices (total of up to | ||||
| 3 reference indices are allowed) may be specified using the N bit belo | ||||
| w. When either P or F is | ||||
| set to zero, then no reference index is specified. | ||||
| <list style="hanging"> | ||||
| <t hangText="P_DIFF:">The reference index (in 7 bits) specified as t | ||||
| he | ||||
| relative PID from the current picture. For example, when P_DIFF=3 | ||||
| on a packet containing the picture with PID 112 means | ||||
| that the picture refers back to the picture with PID | ||||
| 109. This calculation is done modulo the size of the PID field, | ||||
| i.e., either 7 or 15 bits. A P_DIFF value of 0 is invalid.</t> | ||||
| <t hangText="N:">1 if there is additional P_DIFF following the curre | ||||
| nt P_DIFF.</t> | ||||
| </list></t> | ||||
| </list></t> | ||||
| <section anchor="VP9payloadDescriptorSS" title="Scalability Structure (SS) | </t> | |||
| :"> | <dl newline="false" spacing="normal" indent="3" pn="section-4.2-8.18 | |||
| <t>The scalability structure (SS) data describes the resolution of | .2"> | |||
| each frame within a picture as well as the inter-picture dependencies | <dt pn="section-4.2-8.18.2.1">TID:</dt> | |||
| for a picture group (PG). If the VP9 payload descriptor's "V" | <dd pn="section-4.2-8.18.2.2">The temporal-layer ID of the current | |||
| bit is set, the SS data is present in the position indicated in | frame. In the case of | |||
| <xref target="figureVP9payloadDescriptor"/> and <xref target="figureVP9p | non-flexible mode, if a PID is mapped to a picture in a specified | |||
| ayloadDescriptorNonFlexible"/>.</t> | PG, then the value of the TID <bcp14>MUST</bcp14> match the | |||
| <figure anchor="figureVP9ScalabilityStructure"> | corresponding TID value of the mapped picture in the PG.</dd> | |||
| <artwork><![CDATA[ | <dt pn="section-4.2-8.18.2.3">U:</dt> | |||
| <dd pn="section-4.2-8.18.2.4">Switching up point. When this bit i | ||||
| s set to one, if the current picture has a temporal-layer ID equal to value T, t | ||||
| hen subsequent pictures with temporal-layer ID values higher than T will not dep | ||||
| end on any picture before | ||||
| the current picture (in decode order) with a temporal-layer ID | ||||
| value greater than T.</dd> | ||||
| <dt pn="section-4.2-8.18.2.5">SID:</dt> | ||||
| <dd pn="section-4.2-8.18.2.6">The spatial-layer ID of the current | ||||
| frame. Note that frames | ||||
| with spatial-layer SID > 0 may be dependent on decoded | ||||
| spatial-layer SID-1 frame within the same picture. Different | ||||
| frames of the same picture <bcp14>MUST</bcp14> have distinct | ||||
| spatial-layer IDs, and frames' spatial layers | ||||
| <bcp14>MUST</bcp14> appear in increasing order within the | ||||
| frame.</dd> | ||||
| <dt pn="section-4.2-8.18.2.7">D:</dt> | ||||
| <dd pn="section-4.2-8.18.2.8">Inter-layer dependency is used. D <b | ||||
| cp14>MUST</bcp14> be | ||||
| set to one if and only if the current spatial-layer SID frame | ||||
| depends on spatial-layer SID-1 frame of the same picture; | ||||
| otherwise, it <bcp14>MUST</bcp14> be set to zero. For the | ||||
| base-layer frame (with SID equal to zero), the D bit | ||||
| <bcp14>MUST</bcp14> be set to zero.</dd> | ||||
| <dt pn="section-4.2-8.18.2.9">TL0PICIDX:</dt> | ||||
| <dd pn="section-4.2-8.18.2.10">Temporal Layer 0 Picture Index (8 b | ||||
| its). TL0PICIDX is only present | ||||
| in the non-flexible mode (F = 0). This is a running index for | ||||
| the temporal base-layer pictures, i.e., the pictures with a TID | ||||
| set to zero. If the TID is larger than zero, TL0PICIDX indicates | ||||
| which | ||||
| temporal base-layer picture the current picture depends on. | ||||
| TL0PICIDX <bcp14>MUST</bcp14> be incremented by one when the TID i | ||||
| s | ||||
| equal to zero. The index <bcp14>SHOULD</bcp14> start on a random | ||||
| number and <bcp14>MUST</bcp14> restart at zero after reaching the | ||||
| maximum number 255.</dd> | ||||
| </dl> | ||||
| </dd> | ||||
| <dt pn="section-4.2-8.19">Reference indices:</dt> | ||||
| <dd pn="section-4.2-8.20"> | ||||
| <t indent="0" pn="section-4.2-8.20.1">When P and F are both set to o | ||||
| ne, indicating a non-keyframe in | ||||
| flexible mode, then at least one reference index | ||||
| <bcp14>MUST</bcp14> be specified as below. Additional reference | ||||
| indices (a total of up to three reference indices are allowed) may b | ||||
| e | ||||
| specified using the N bit below. When either P or F is set to zero, | ||||
| then no reference index is specified. | ||||
| </t> | ||||
| <dl newline="false" spacing="normal" indent="3" pn="section-4.2-8.20 | ||||
| .2"> | ||||
| <dt pn="section-4.2-8.20.2.1">P_DIFF:</dt> | ||||
| <dd pn="section-4.2-8.20.2.2">The reference index (in 7 bits) spec | ||||
| ified as the relative | ||||
| PID from the current picture. For example, when P_DIFF=3 on a | ||||
| packet containing the picture with PID 112 means that the | ||||
| picture refers back to the picture with PID 109. This | ||||
| calculation is done modulo the size of the PID field, i.e., | ||||
| either 7 or 15 bits. A P_DIFF value of zero is invalid.</dd> | ||||
| <dt pn="section-4.2-8.20.2.3">N:</dt> | ||||
| <dd pn="section-4.2-8.20.2.4">1 if there is additional P_DIFF foll | ||||
| owing the current P_DIFF.</dd> | ||||
| </dl> | ||||
| </dd> | ||||
| </dl> | ||||
| <section anchor="VP9payloadDescriptorSS" numbered="true" toc="include" r | ||||
| emoveInRFC="false" pn="section-4.2.1"> | ||||
| <name slugifiedName="name-scalability-structure-ss">Scalability Struct | ||||
| ure (SS)</name> | ||||
| <t indent="0" pn="section-4.2.1-1">The SS data describes the resolutio | ||||
| n of | ||||
| each frame within a picture as well as the inter-picture | ||||
| dependencies for a PG. If the VP9 payload | ||||
| descriptor's V bit is set, the SS data is present in the position | ||||
| indicated in Figures <xref format="counter" target="figureVP9payloadDe | ||||
| scriptor" sectionFormat="of" derivedContent="2"/> and <xref target="figureVP9pay | ||||
| loadDescriptorNonFlexible" format="counter" sectionFormat="of" derivedContent="3 | ||||
| "/>.</t> | ||||
| <figure anchor="figureVP9ScalabilityStructure" align="left" suppress-t | ||||
| itle="false" pn="figure-4"> | ||||
| <name slugifiedName="name-vp9-scalability-structure">VP9 Scalability | ||||
| Structure</name> | ||||
| <artwork name="" type="" align="left" alt="" pn="section-4.2.1-2.1"> | ||||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| V: | N_S |Y|G|-|-|-| | V: | N_S |Y|G|-|-|-| | |||
| +-+-+-+-+-+-+-+-+ -\ | +-+-+-+-+-+-+-+-+ -\ | |||
| Y: | WIDTH | (OPTIONAL) . | Y: | WIDTH | (OPTIONAL) . | |||
| + + . | + + . | |||
| | | (OPTIONAL) . | | | (OPTIONAL) . | |||
| +-+-+-+-+-+-+-+-+ . - N_S + 1 times | +-+-+-+-+-+-+-+-+ . - N_S + 1 times | |||
| | HEIGHT | (OPTIONAL) . | | HEIGHT | (OPTIONAL) . | |||
| + + . | + + . | |||
| | | (OPTIONAL) . | | | (OPTIONAL) . | |||
| +-+-+-+-+-+-+-+-+ -/ | +-+-+-+-+-+-+-+-+ -/ | |||
| G: | N_G | (OPTIONAL) | G: | N_G | (OPTIONAL) | |||
| +-+-+-+-+-+-+-+-+ -\ | +-+-+-+-+-+-+-+-+ -\ | |||
| N_G: | TID |U| R |-|-| (OPTIONAL) . | N_G: | TID |U| R |-|-| (OPTIONAL) . | |||
| +-+-+-+-+-+-+-+-+ -\ . - N_G times | +-+-+-+-+-+-+-+-+ -\ . - N_G times | |||
| | P_DIFF | (OPTIONAL) . - R times . | | P_DIFF | (OPTIONAL) . - R times . | |||
| +-+-+-+-+-+-+-+-+ -/ -/ | +-+-+-+-+-+-+-+-+ -/ -/ | |||
| ]]></artwork> | </artwork> | |||
| </figure> | </figure> | |||
| <dl newline="false" spacing="normal" indent="3" pn="section-4.2.1-3"> | ||||
| <t><list style="hanging"> | <dt pn="section-4.2.1-3.1">N_S:</dt> | |||
| <t hangText="N_S:">N_S + 1 indicates the number of spatial | <dd pn="section-4.2.1-3.2">Number of Spatial Layers Minus 1. N_S + | |||
| layers present in the VP9 stream.</t> | 1 indicates the number of spatial | |||
| layers present in the VP9 stream.</dd> | ||||
| <t hangText="Y:">Each spatial layer's frame resolution present. | <dt pn="section-4.2.1-3.3">Y:</dt> | |||
| When set to one, the OPTIONAL WIDTH (2 octets) and HEIGHT | <dd pn="section-4.2.1-3.4">Each spatial layer's frame resolution is | |||
| (2 octets) MUST be present for each layer frame. Otherwise, the | present. | |||
| resolution MUST NOT be present.</t> | When set to one, the <bcp14>OPTIONAL</bcp14> WIDTH (2 octets) and HEIG | |||
| HT | ||||
| <t hangText="G:">PG description present flag.</t> | (2 octets) <bcp14>MUST</bcp14> be present for each layer frame. Other | |||
| wise, the | ||||
| <t hangText="-:">Bit reserved for future use. MUST be set to | resolution <bcp14>MUST NOT</bcp14> be present.</dd> | |||
| zero and MUST be ignored by the receiver.</t> | <dt pn="section-4.2.1-3.5">G:</dt> | |||
| <dd pn="section-4.2.1-3.6">The PG description present flag.</dd> | ||||
| <t hangText="N_G:">N_G indicates the number of pictures in a | <dt pn="section-4.2.1-3.7">-:</dt> | |||
| Picture Group (PG). | <dd pn="section-4.2.1-3.8">A bit reserved for future use. It <bcp14> | |||
| If N_G is greater than 0, then the SS data allows | MUST</bcp14> be set | |||
| the inter-picture dependency structure of the VP9 stream to | to zero and <bcp14>MUST</bcp14> be ignored by the receiver.</dd> | |||
| be pre-declared, rather than indicating it on the fly with | <dt pn="section-4.2.1-3.9">N_G:</dt> | |||
| every packet. If N_G is greater than 0, then for N_G | <dd pn="section-4.2.1-3.10">N_G indicates the number of pictures in | |||
| pictures in the PG, each picture's temporal layer ID (TID), switch up | a PG. | |||
| point (U), | If N_G is greater than zero, then the SS data allows the | |||
| and the Reference indices (P_DIFFs) are specified.</t> | inter-picture dependency structure of the VP9 stream to be | |||
| pre-declared, rather than indicating it on the fly with every | ||||
| <t>The first picture specified in the PG MUST have TID set to 0.</t> | packet. If N_G is greater than zero, then for N_G pictures in the | |||
| PG, each picture's Temporal-layer ID (TID), switch up point (U), | ||||
| <t>G set to 0 or N_G set to 0 indicates that either there is only one | and reference indices (P_DIFFs) are specified.</dd> | |||
| temporal | <dt pn="section-4.2.1-3.11"/> | |||
| layer (for non-flexible mode) or no fixed inter-picture dependency inf | <dd pn="section-4.2.1-3.12">The first picture specified in the PG <b | |||
| ormation is present | cp14>MUST</bcp14> have a TID set to zero.</dd> | |||
| (for flexible mode) going forward in the bitstream.</t> | <dt pn="section-4.2.1-3.13"/> | |||
| <dd pn="section-4.2.1-3.14">G set to zero or N_G set to zero indicat | ||||
| <t>Note that for a given picture, all frames follow the | es that either there is only | |||
| same inter-picture dependency structure. However, the frame rate | one temporal layer (for non-flexible mode) or no fixed | |||
| of each spatial layer can be different from each other and this can | inter-picture dependency information is present (for flexible | |||
| be described with the use of the D bit described above. The | mode) going forward in the bitstream.</dd> | |||
| specified dependency structure in the SS data MUST be for the highest | <dt pn="section-4.2.1-3.15"/> | |||
| frame rate layer.</t> | <dd pn="section-4.2.1-3.16">Note that for a given picture, all frame | |||
| </list></t> | s follow the same | |||
| inter-picture dependency structure. However, the frame rate of | ||||
| <t>In a scalable stream sent with a fixed pattern, the SS data | each spatial layer can be different from each other; this can | |||
| SHOULD be included in the first packet of every key frame. This is a pac | be described with the use of the D bit described above. The | |||
| ket | specified dependency structure in the SS data <bcp14>MUST</bcp14> | |||
| with P bit equal to zero, SID or L bit equal to zero, and B bit equal to | be for the highest frame rate layer.</dd> | |||
| 1. | <dt pn="section-4.2.1-3.17">R:</dt> | |||
| The SS data MUST only be changed on the picture that corresponds to the | <dd pn="section-4.2.1-3.18">The number of P_DIFF fields that are pre | |||
| first picture specified in the previous SS data's PG | sent.</dd> | |||
| (if the previous SS data's N_G was greater than 0).</t> | </dl> | |||
| <t indent="0" pn="section-4.2.1-4">In a scalable stream sent with a fi | ||||
| xed pattern, the SS data | ||||
| <bcp14>SHOULD</bcp14> be included in the first packet of every key | ||||
| frame. This is a packet with the P bit equal to zero, SID or L bit equ | ||||
| al | ||||
| to zero, and B bit equal to one. The SS data <bcp14>MUST</bcp14> only | ||||
| be changed on the picture that corresponds to the first picture | ||||
| specified in the previous SS data's PG (if the previous SS data's | ||||
| N_G was greater than zero).</t> | ||||
| </section> | ||||
| </section> | </section> | |||
| </section> | <section numbered="true" toc="include" removeInRFC="false" pn="section-4.3 | |||
| "> | ||||
| <section title="Frame Fragmentation"> | <name slugifiedName="name-frame-fragmentation">Frame Fragmentation</name | |||
| <t>VP9 frames are fragmented into packets, in RTP sequence | > | |||
| number order, beginning with a | <t indent="0" pn="section-4.3-1">VP9 frames are fragmented into packets | |||
| packet with the B bit set, and ending with a packet with the | in RTP sequence number | |||
| E bit set. There is no mechanism for finer-grained | order: beginning with a packet with the B bit set and ending with a | |||
| access to parts of a VP9 frame.</t> | packet with the E bit set. There is no mechanism for finer-grained | |||
| access to parts of a VP9 frame.</t> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-4.4 | ||||
| <section title="Scalable encoding considerations"> | "> | |||
| <name slugifiedName="name-scalable-encoding-considera">Scalable Encoding | ||||
| <t>In addition to the use of reference frames, VP9 has several | Considerations</name> | |||
| <t indent="0" pn="section-4.4-1">In addition to the use of reference fra | ||||
| mes, VP9 has several | ||||
| additional forms of inter-frame dependencies, largely | additional forms of inter-frame dependencies, largely | |||
| involving probability tables for the entropy and tree | involving probability tables for the entropy and tree | |||
| encoders. In VP9 syntax, the syntax element | encoders. In VP9 syntax, the syntax element | |||
| "error_resilient_mode" resets this additional inter-frame | "error_resilient_mode" resets this additional inter-frame | |||
| data, allowing a frame's syntax to be decoded | data, allowing a frame's syntax to be decoded | |||
| independently.</t> | independently.</t> | |||
| <t indent="0" pn="section-4.4-2">Due to the requirements of scalable str | ||||
| <t>Due to the requirements of scalable streams, a VP9 encoder | eams, a VP9 encoder | |||
| producing a scalable stream needs to ensure that a frame does | producing a scalable stream needs to ensure that a frame does | |||
| not depend on a previous frame (of the same or a previous | not depend on a previous frame (of the same or a previous | |||
| picture) that can legitimately be removed from the stream. | picture) that can legitimately be removed from the stream. | |||
| Thus, a frame that follows a frame that might be removed (in full decode | Thus, a frame that follows a frame that might be removed (in full decode | |||
| order) MUST be encoded with "error_resilient_mode" set to | order) <bcp14>MUST</bcp14> be encoded with "error_resilient_mode" set to | |||
| true.</t> | true.</t> | |||
| <t indent="0" pn="section-4.4-3">For spatially scalable streams, this me | ||||
| <t>For spatially-scalable streams, this means that | ans that | |||
| "error_resilient_mode" needs to be turned on for the base | "error_resilient_mode" needs to be turned on for the base | |||
| spatial layer; it can however be turned off for higher spatial | spatial layer; however, it can be turned off for higher spatial | |||
| layers, assuming they are sent with inter-layer dependency | layers, assuming they are sent with inter-layer dependency | |||
| (i.e. with the "D" bit set). For streams that are only | (i.e., with the D bit set). For streams that are only | |||
| temporally-scalable without spatial scalability, | temporally scalable without spatial scalability, | |||
| "error_resilient_mode" can additionally be turned off for any | "error_resilient_mode" can additionally be turned off for any | |||
| picture that immediately follows a temporal layer 0 frame.</t> | picture that immediately follows a temporal-layer 0 frame.</t> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="include" removeInRFC="false" pn="section-4.5 | |||
| "> | ||||
| <section title="Examples of VP9 RTP Stream"> | <name slugifiedName="name-example-of-a-vp9-rtp-stream">Example of a VP9 | |||
| <section title="Reference picture use for scalable structure"> | RTP Stream</name> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-4 | ||||
| <t>As discussed in <xref target="mediaFormatDescription"/>, the | .5.1"> | |||
| <name slugifiedName="name-reference-picture-use-for-s">Reference Pictu | ||||
| re Use for Scalable Structure</name> | ||||
| <t indent="0" pn="section-4.5.1-1">As discussed in <xref target="media | ||||
| FormatDescription" format="default" sectionFormat="of" derivedContent="Section 3 | ||||
| "/>, the | ||||
| VP9 codec can maintain up to eight reference frames, of | VP9 codec can maintain up to eight reference frames, of | |||
| which up to three can be referenced or updated by any new | which up to three can be referenced or updated by any new | |||
| frame. This section illustrates one way that a scalable | frame. This section illustrates one way that a scalable | |||
| structure (with three spatial layers and three temporal | structure (with three spatial layers and three temporal | |||
| layers) can be constructed using these reference | layers) can be constructed using these reference | |||
| frames.</t> | frames.</t> | |||
| <table align="center" pn="table-1"> | ||||
| <texttable title="Example scalability structure"> | <name slugifiedName="name-example-scalability-structu">Example Scala | |||
| bility Structure</name> | ||||
| <ttcol align="center">Temporal</ttcol> | <thead> | |||
| <ttcol align="center">Spatial</ttcol> | <tr> | |||
| <ttcol align="center">References</ttcol> | <th align="center" colspan="1" rowspan="1">Temporal</th> | |||
| <ttcol align="center">Updates</ttcol> | <th align="center" colspan="1" rowspan="1">Spatial</th> | |||
| <c>0</c><c>0</c><c>0</c><c>0</c> | <th align="center" colspan="1" rowspan="1">References</th> | |||
| <c>0</c><c>1</c><c>0,1</c><c>1</c> | <th align="center" colspan="1" rowspan="1">Updates</th> | |||
| <c>0</c><c>2</c><c>1,2</c><c>2</c> | </tr> | |||
| <c>2</c><c>0</c><c>0</c><c>6</c> | </thead> | |||
| <c>2</c><c>1</c><c>1,6</c><c>7</c> | <tbody> | |||
| <c>2</c><c>2</c><c>2,7</c><c>-</c> | <tr> | |||
| <c>1</c><c>0</c><c>0</c><c>3</c> | <td align="center" colspan="1" rowspan="1">0</td> | |||
| <c>1</c><c>1</c><c>1,3</c><c>4</c> | <td align="center" colspan="1" rowspan="1">0</td> | |||
| <c>1</c><c>2</c><c>2,4</c><c>5</c> | <td align="center" colspan="1" rowspan="1">0</td> | |||
| <c>2</c><c>0</c><c>3</c><c>6</c> | <td align="center" colspan="1" rowspan="1">0</td> | |||
| <c>2</c><c>1</c><c>4,6</c><c>7</c> | </tr> | |||
| <c>2</c><c>2</c><c>5,7</c><c>-</c> | <tr> | |||
| <td align="center" colspan="1" rowspan="1">0</td> | ||||
| </texttable> | <td align="center" colspan="1" rowspan="1">1</td> | |||
| <td align="center" colspan="1" rowspan="1">0,1</td> | ||||
| <t>This structure is constructed such that the "U" bit can | <td align="center" colspan="1" rowspan="1">1</td> | |||
| </tr> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">0</td> | ||||
| <td align="center" colspan="1" rowspan="1">2</td> | ||||
| <td align="center" colspan="1" rowspan="1">1,2</td> | ||||
| <td align="center" colspan="1" rowspan="1">2</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">2</td> | ||||
| <td align="center" colspan="1" rowspan="1">0</td> | ||||
| <td align="center" colspan="1" rowspan="1">0</td> | ||||
| <td align="center" colspan="1" rowspan="1">6</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">2</td> | ||||
| <td align="center" colspan="1" rowspan="1">1</td> | ||||
| <td align="center" colspan="1" rowspan="1">1,6</td> | ||||
| <td align="center" colspan="1" rowspan="1">7</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">2</td> | ||||
| <td align="center" colspan="1" rowspan="1">2</td> | ||||
| <td align="center" colspan="1" rowspan="1">2,7</td> | ||||
| <td align="center" colspan="1" rowspan="1">-</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">1</td> | ||||
| <td align="center" colspan="1" rowspan="1">0</td> | ||||
| <td align="center" colspan="1" rowspan="1">0</td> | ||||
| <td align="center" colspan="1" rowspan="1">3</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">1</td> | ||||
| <td align="center" colspan="1" rowspan="1">1</td> | ||||
| <td align="center" colspan="1" rowspan="1">1,3</td> | ||||
| <td align="center" colspan="1" rowspan="1">4</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">1</td> | ||||
| <td align="center" colspan="1" rowspan="1">2</td> | ||||
| <td align="center" colspan="1" rowspan="1">2,4</td> | ||||
| <td align="center" colspan="1" rowspan="1">5</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">2</td> | ||||
| <td align="center" colspan="1" rowspan="1">0</td> | ||||
| <td align="center" colspan="1" rowspan="1">3</td> | ||||
| <td align="center" colspan="1" rowspan="1">6</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">2</td> | ||||
| <td align="center" colspan="1" rowspan="1">1</td> | ||||
| <td align="center" colspan="1" rowspan="1">4,6</td> | ||||
| <td align="center" colspan="1" rowspan="1">7</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">2</td> | ||||
| <td align="center" colspan="1" rowspan="1">2</td> | ||||
| <td align="center" colspan="1" rowspan="1">5,7</td> | ||||
| <td align="center" colspan="1" rowspan="1">-</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t indent="0" pn="section-4.5.1-3">This structure is constructed such | ||||
| that the U bit can | ||||
| always be set.</t> | always be set.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="Feedback" numbered="true" toc="include" removeInRFC="false" | ||||
| <section anchor="Feedback" title="Feedback Messages and Header Extensions"> | pn="section-5"> | |||
| <section anchor="RPSI" title="Reference Picture Selection Indication (RPSI | <name slugifiedName="name-feedback-messages-and-heade">Feedback Messages a | |||
| )"> | nd Header Extensions</name> | |||
| <t>The reference picture selection index is a payload-specific | <section anchor="RPSI" numbered="true" toc="include" removeInRFC="false" p | |||
| n="section-5.1"> | ||||
| <name slugifiedName="name-reference-picture-selection">Reference Picture | ||||
| Selection Indication (RPSI)</name> | ||||
| <t indent="0" pn="section-5.1-1">The RPSI is a payload-specific | ||||
| feedback message defined within the RTCP-based feedback format. The | feedback message defined within the RTCP-based feedback format. The | |||
| RPSI message is generated by a receiver and can be used in two ways. | RPSI message is generated by a receiver and can be used in two ways: | |||
| Either it can signal a preferred reference picture when a loss has | either it can signal a preferred reference picture when a loss has | |||
| been detected by the decoder -- preferably then a reference that the | been detected by the decoder (preferably a reference that the decoder | |||
| decoder knows is perfect -- or, it can be used as positive feedback | knows is perfect) or it can be used as positive feedback information | |||
| information to acknowledge correct decoding of certain reference | to acknowledge correct decoding of certain reference pictures. The | |||
| pictures. The positive feedback method is useful for VP9 used for | positive feedback method is useful for VP9 used for point-to-point | |||
| point to point (unicast) communication. The use of RPSI for VP9 is prefe | (unicast) communication. The use of RPSI for VP9 is preferably | |||
| rably combined with a special | combined with a special update pattern of the codec's two special | |||
| update pattern of the codec's two special reference frames -- the | reference frames -- the golden frame and the altref frame -- in which th | |||
| golden frame and the altref frame -- in which they are updated in an | ey | |||
| alternating leapfrog fashion. When a receiver has received and | are updated in an alternating leapfrog fashion. When a receiver has | |||
| correctly decoded a golden or altref frame, and that frame had a | received and correctly decoded a golden or altref frame, and that | |||
| Picture ID in the payload descriptor, the receiver can acknowledge this | frame had a Picture ID in the payload descriptor, the receiver can | |||
| simply by sending an RPSI message back to the sender. The message body | acknowledge this simply by sending an RPSI message back to the | |||
| (i.e., the "native RPSI bit string" in <xref target="RFC4585"/>) is | sender. The message body (i.e., the "native RPSI bit string" in <xref ta | |||
| simply the (7 or 15 bit) Picture ID of the received frame.</t> | rget="RFC4585" format="default" sectionFormat="of" derivedContent="RFC4585"/>) i | |||
| s simply the (7- or 15-bit) | ||||
| <t>Note: because all frames of the same picture must have the | Picture ID of the received frame.</t> | |||
| <aside pn="section-5.1-2"> | ||||
| <t indent="0" pn="section-5.1-2.1">Note: because all frames of the sam | ||||
| e picture must have the | ||||
| same inter-picture reference structure, there is no need for a | same inter-picture reference structure, there is no need for a | |||
| message to specify which frame is being selected.</t> | message to specify which frame is being selected.</t> | |||
| </aside> | ||||
| </section> | </section> | |||
| <section anchor="FIR" numbered="true" toc="include" removeInRFC="false" pn | ||||
| <section title='Full Intra Request (FIR)' anchor="FIR"> | ="section-5.2"> | |||
| <name slugifiedName="name-full-intra-request-fir">Full Intra Request (FI | ||||
| <t>The <xref target='RFC5104'>Full Intra Request (FIR)</xref> | R)</name> | |||
| <t indent="0" pn="section-5.2-1">The <xref target="RFC5104" format="defa | ||||
| ult" sectionFormat="of" derivedContent="RFC5104">Full Intra Request (FIR)</xref> | ||||
| RTCP feedback message allows a receiver to request a full state r efresh of an encoded stream.</t> | RTCP feedback message allows a receiver to request a full state r efresh of an encoded stream.</t> | |||
| <t indent="0" pn="section-5.2-2">Upon receipt of a FIR request, a VP9 se | ||||
| <t>Upon receipt of an FIR request, a VP9 sender MUST send a | nder <bcp14>MUST</bcp14> | |||
| picture with a keyframe for its spatial layer 0 layer | send a picture with a keyframe for its spatial-layer 0 layer frame and | |||
| frame, and then send frames without inter-picture prediction | then send frames without inter-picture prediction (P=0) for any | |||
| (P=0) for any higher layer frames.</t> | higher-layer frames.</t> | |||
| </section> | ||||
| </section> | <section anchor="LRR" numbered="true" toc="include" removeInRFC="false" pn | |||
| ="section-5.3"> | ||||
| <section title="Layer Refresh Request (LRR)" anchor="LRR"> | <name slugifiedName="name-layer-refresh-request-lrr">Layer Refresh Reque | |||
| <t>The <xref target="I-D.ietf-avtext-lrr">Layer Refresh Request ( | st (LRR)</name> | |||
| LRR)</xref> | <t indent="0" pn="section-5.3-1">The <xref target="RFC9627" format="defa | |||
| allows a receiver to request a single layer of a spatially or | ult" sectionFormat="of" derivedContent="RFC9627">Layer Refresh Request | |||
| temporally encoded stream to be refreshed, without necessarily | (LRR)</xref> allows a receiver to request a single layer of a | |||
| affecting the stream's other layers.</t> | spatially or temporally encoded stream to be refreshed without | |||
| necessarily affecting the stream's other layers.</t> | ||||
| <figure anchor="figureLRRIndexFormat"> | <figure anchor="figureLRRIndexFormat" align="left" suppress-title="false | |||
| <artwork><![CDATA[ | " pn="figure-5"> | |||
| <name slugifiedName="name-lrr-index-format">LRR Index Format</name> | ||||
| <artwork name="" type="" align="left" alt="" pn="section-5.3-2.1"> | ||||
| +---------------+---------------+ | +---------------+---------------+ | |||
| |0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7| | |0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7| | |||
| +---------------+---------+-----+ | +---------------+---------+-----+ | |||
| | RES | TID | RES | SID | | | RES | TID | RES | SID | | |||
| +---------------+---------+-----+ | +---------------+---------+-----+ | |||
| ]]></artwork> | </artwork> | |||
| </figure> | </figure> | |||
| <t indent="0" pn="section-5.3-3"><xref target="figureLRRIndexFormat" for | ||||
| <t><xref target="figureLRRIndexFormat"/> shows the format | mat="default" sectionFormat="of" derivedContent="Figure 5"/> shows the format | |||
| of LRR's layer index fields for VP9 streams. The two "RES" | of an LRR's layer index fields for VP9 streams. The two "RES" | |||
| fields MUST be set to 0 on transmission and ingnored on | fields <bcp14>MUST</bcp14> be set to zero on transmission and ign | |||
| reception. See <xref target="VP9payloadDescriptor"/> for | ored on | |||
| reception. See <xref target="VP9payloadDescriptor" format="defau | ||||
| lt" sectionFormat="of" derivedContent="Section 4.2"/> for | ||||
| details on the TID and SID fields.</t> | details on the TID and SID fields.</t> | |||
| <t indent="0" pn="section-5.3-4">Identification of a layer refresh frame | ||||
| <t>Identification of a layer refresh frame can be derived from the | can be derived from | |||
| reference IDs of each frame by backtracking the dependency chain | the reference IDs of each frame by backtracking the dependency | |||
| until reaching a point where only decodable frames are being | chain until reaching a point where only decodable frames are | |||
| referenced. Therefore it's recommended for both the | being referenced. Therefore, it's recommended for both the | |||
| flexible and the non-flexible mode that, when switching up points are | flexible and the non-flexible mode that, when switching up | |||
| being encoded in response to a LRR, those packets should contain | points are being encoded in response to an LRR, those packets | |||
| layer indices and the reference field(s) so that the decoder or a | contain layer indices and the reference field or fields so | |||
| <xref target='RFC7667'>selective forwarding | that the decoder or <xref target="RFC7667" format="default" secti | |||
| middleboxes</xref> can make this derivation.</t> | onFormat="of" derivedContent="RFC7667">selective forwarding middleboxes</xref> c | |||
| an | ||||
| <t>Example:</t> | make this derivation.</t> | |||
| <t>LRR {1,0}, {2,1} is sent by an MCU when it is currently | <t indent="0" pn="section-5.3-5">Example:</t> | |||
| relaying {1,0} to a receiver and which wants to upgrade to | <t indent="0" pn="section-5.3-6">LRR {1,0}, {2,1} is sent by a Multipoin | |||
| {2,1}. In response the encoder should encode the next frames | t Control | |||
| Unit (MCU) when it is currently | ||||
| relaying {1,0} to a receiver that wants to upgrade to | ||||
| {2,1}. In response, the encoder should encode the next frames | ||||
| in layers {1,1} and {2,1} by only referring to frames in | in layers {1,1} and {2,1} by only referring to frames in | |||
| {1,0}, or {0,0}.</t> | {1,0} or {0,0}.</t> | |||
| <t indent="0" pn="section-5.3-7">In the non-flexible mode, periodic upgr | ||||
| <t>In the non-flexible mode, periodic upgrade frames can be | ade frames can be defined by | |||
| defined by the layer structure of the SS, thus periodic upgrade | the layer structure of the SS; thus, periodic upgrade frames can be | |||
| frames can be automatically identified by the picture ID.</t> | automatically identified by the Picture ID.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="payloadFormatParameters" numbered="true" toc="include" remo | ||||
| <section anchor="payloadFormatParameters" | veInRFC="false" pn="section-6"> | |||
| title="Payload Format Parameters"> | <name slugifiedName="name-payload-format-parameters">Payload Format Parame | |||
| <t>This payload format has three optional parameters, "max-fr", "max-fs", | ters</name> | |||
| and "profile-id".</t> | <t indent="0" pn="section-6-1">This payload format has three optional para | |||
| meters: max-fr, | ||||
| <t>The max-fr and max-fs | max-fs, and profile-id.</t> | |||
| parameters are used to signal the capabilities of a receiver | <t indent="0" pn="section-6-2">The max-fr and max-fs parameters are used t | |||
| implementation. If the implementation is willing to | o signal the capabilities | |||
| receive media, both parameters MUST be provided. These parameters MU | of a receiver implementation. If the implementation is willing to | |||
| ST | receive media, both parameters <bcp14>MUST</bcp14> be provided. These | |||
| NOT be used for any other purpose. A media sender SHOULD NOT send | parameters <bcp14>MUST NOT</bcp14> be used for any other purpose. A | |||
| media with a frame rate or frame size exceeding the max-fr and max-f | media sender <bcp14>SHOULD NOT</bcp14> send media with a frame rate or | |||
| s | frame size exceeding the max-fr and max-fs values signaled. (There may | |||
| values signaled. (There may be scenarios, such as pre-encoded | be scenarios, such as pre-encoded media or <xref target="RFC7667" format=" | |||
| media or <xref target='RFC7667'>selective forwarding | default" sectionFormat="of" derivedContent="RFC7667">selective forwarding middle | |||
| middleboxes</xref>, where a media sender does not have media availab | boxes</xref>, where a media | |||
| le | sender does not have media available that fits within a receiver's | |||
| that fits within a receivers max-fs and max-fr value; in such | max-fs and max-fr values; in such scenarios, a sender <bcp14>MAY</bcp14> | |||
| scenarios, a sender MAY exceed the signaled values.) | exceed the signaled values.) | |||
| <list style="hanging"> | </t> | |||
| <t hangText="max-fr:">The value of max-fr is an integer | <dl newline="false" spacing="normal" indent="3" pn="section-6-3"> | |||
| <dt pn="section-6-3.1">max-fr:</dt> | ||||
| <dd pn="section-6-3.2">The value of max-fr is an integer | ||||
| indicating the maximum frame rate in units of frames per | indicating the maximum frame rate in units of frames per | |||
| second that the decoder is capable of decoding.</t> | second that the decoder is capable of decoding.</dd> | |||
| <dt pn="section-6-3.3">max-fs:</dt> | ||||
| <t hangText="max-fs:">The value of max-fs is an integer | <dd pn="section-6-3.4">The value of max-fs is an integer | |||
| indicating the maximum frame size in units of macroblocks that | indicating the maximum frame size in units of macroblocks that | |||
| the decoder is capable of decoding.</t> | the decoder is capable of decoding.</dd> | |||
| <dt pn="section-6-3.5"/> | ||||
| <t>The decoder is capable of decoding this frame size as long | <dd pn="section-6-3.6">The decoder is capable of decoding this frame siz | |||
| as the width and height of the frame in macroblocks are less | e as long | |||
| than int(sqrt(max-fs * 8)) - for instance, a max-fs of 1200 | as the width and height of the frame in macroblocks are each les | |||
| s | ||||
| than int(sqrt(max-fs * 8)); for instance, a max-fs of 1200 | ||||
| (capable of supporting 640x480 resolution) will support widths | (capable of supporting 640x480 resolution) will support widths | |||
| and heights up to 1552 pixels (97 macroblocks).</t> | and heights up to 1552 pixels (97 macroblocks).</dd> | |||
| <dt pn="section-6-3.7">profile-id:</dt> | ||||
| <t hangText="profile-id:">The value of profile-id is an integer | <dd pn="section-6-3.8">The value of profile-id is an integer indicating | |||
| indicating the default coding profile, the subset of coding | the default | |||
| tools that may have been used to generate the stream or that the | coding profile (the subset of coding tools that may have been used to | |||
| receiver supports). <xref target="TableOfProfileIds"/> lists all | generate the stream or that the receiver supports). <xref target="TableO | |||
| of the profiles defined in section 7.2 of <xref target="VP9-BITST | fProfileIds" format="default" sectionFormat="of" derivedContent="Table 2"/> list | |||
| REAM"/> | s all of the | |||
| and the corresponding integer values to be used.</t> | profiles defined in Section 7.2 of <xref target="VP9-BITSTREAM" format=" | |||
| default" sectionFormat="of" derivedContent="VP9-BITSTREAM"/> and the correspondi | ||||
| <t>If no profile-id is present, Profile 0 MUST be inferred. (The | ng integer values to be | |||
| used.</dd> | ||||
| <dt pn="section-6-3.9"/> | ||||
| <dd pn="section-6-3.10">If no profile-id is present, Profile 0 <bcp14>MU | ||||
| ST</bcp14> be inferred. (The | ||||
| profile-id parameter was added relatively late in the developmen t of this | profile-id parameter was added relatively late in the developmen t of this | |||
| specification, so some existing implementations may not send it. ) | specification, so some existing implementations may not send it. ) | |||
| </t> | </dd> | |||
| <dt pn="section-6-3.11"/> | ||||
| <t>Informative note: See <xref target="TableOfProfiles"/> for cap | <dd pn="section-6-3.12">Informative note: See <xref target="TableOfProfi | |||
| abilities | les" format="default" sectionFormat="of" derivedContent="Table 3"/> for capabili | |||
| of coding profiles defined in section 7.2 of <xref target="VP9-BI | ties of coding profiles defined in Section 7.2 of | |||
| TSTREAM"/>.</t> | <xref target="VP9-BITSTREAM" format="default" sectionFormat="of" derived | |||
| </list></t> | Content="VP9-BITSTREAM"/>.</dd> | |||
| </dl> | ||||
| <t>A receiver MUST ignore any parameter unspecified in this | <t indent="0" pn="section-6-4">A receiver <bcp14>MUST</bcp14> ignore any p | |||
| specification.</t> | arameter unspecified in this | |||
| specification.</t> | ||||
| <texttable anchor="TableOfProfileIds" title="Table of profile-id | <table anchor="TableOfProfileIds" align="center" pn="table-2"> | |||
| integer values representing the VP9 profile corresponding to the set of | <name slugifiedName="name-correspondence-between-prof">Correspondence be | |||
| coding tools supported."> | tween profile-id to VP9 Profile Integer</name> | |||
| <ttcol align="center">Profile</ttcol> | <thead> | |||
| <ttcol align="center">profile-id</ttcol> | <tr> | |||
| <c>0</c><c>0</c> | <th align="center" colspan="1" rowspan="1">Profile</th> | |||
| <c>1</c><c>1</c> | <th align="center" colspan="1" rowspan="1">profile-id</th> | |||
| <c>2</c><c>2</c> | </tr> | |||
| <c>3</c><c>3</c> | </thead> | |||
| </texttable> | <tbody> | |||
| <tr> | ||||
| <texttable anchor="TableOfProfiles" title="Table of profile | <td align="center" colspan="1" rowspan="1">0</td> | |||
| capabilities."> | <td align="center" colspan="1" rowspan="1">0</td> | |||
| <ttcol align="center">Profile</ttcol> | </tr> | |||
| <ttcol align="center">Bit Depth</ttcol> | <tr> | |||
| <ttcol align="center">SRGB Colorspace</ttcol> | <td align="center" colspan="1" rowspan="1">1</td> | |||
| <ttcol align="center">Chroma Subsampling</ttcol> | <td align="center" colspan="1" rowspan="1">1</td> | |||
| <c>0</c><c>8</c><c>No</c><c>YUV 4:2:0</c> | </tr> | |||
| <c>1</c><c>8</c><c>Yes</c><c>YUV 4:2:2,4:4:0 or 4:4:4</c> | <tr> | |||
| <c>2</c><c>10 or 12</c><c>No</c><c>YUV 4:2:0</c> | <td align="center" colspan="1" rowspan="1">2</td> | |||
| <c>3</c><c>10 or 12</c><c>Yes</c><c>YUV 4:2:2,4:4:0 or 4:4:4</c> | <td align="center" colspan="1" rowspan="1">2</td> | |||
| </texttable> | </tr> | |||
| <tr> | ||||
| <section anchor="SDPParameters" title="SDP Parameters"> | <td align="center" colspan="1" rowspan="1">3</td> | |||
| <section title="Mapping of Media Subtype Parameters to SDP"> | <td align="center" colspan="1" rowspan="1">3</td> | |||
| <t>The media type video/VP9 string is mapped to fields in the | </tr> | |||
| Session Description Protocol (SDP) <xref target="RFC8866"/> as | </tbody> | |||
| follows: <list style="symbols"> | </table> | |||
| <t>The media name in the "m=" line of SDP MUST be video.</t> | <table anchor="TableOfProfiles" align="center" pn="table-3"> | |||
| <name slugifiedName="name-profile-capabilities">Profile Capabilities</na | ||||
| <t>The encoding name in the "a=rtpmap" line of SDP MUST be VP9 | me> | |||
| (the media subtype).</t> | <thead> | |||
| <tr> | ||||
| <t>The clock rate in the "a=rtpmap" line MUST be 90000.</t> | <th align="center" colspan="1" rowspan="1">Profile</th> | |||
| <th align="center" colspan="1" rowspan="1">Bit Depth</th> | ||||
| <t>The parameters "max-fr" and "max-fs" MUST be included in | <th align="center" colspan="1" rowspan="1">SRGB Colorspace</th> | |||
| <th align="center" colspan="1" rowspan="1">Chroma Subsampling</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">0</td> | ||||
| <td align="center" colspan="1" rowspan="1">8</td> | ||||
| <td align="center" colspan="1" rowspan="1">No</td> | ||||
| <td align="center" colspan="1" rowspan="1">YUV 4:2:0</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">1</td> | ||||
| <td align="center" colspan="1" rowspan="1">8</td> | ||||
| <td align="center" colspan="1" rowspan="1">Yes</td> | ||||
| <td align="center" colspan="1" rowspan="1">YUV 4:2:2,4:4:0 or 4:4:4< | ||||
| /td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">2</td> | ||||
| <td align="center" colspan="1" rowspan="1">10 or 12</td> | ||||
| <td align="center" colspan="1" rowspan="1">No</td> | ||||
| <td align="center" colspan="1" rowspan="1">YUV 4:2:0</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center" colspan="1" rowspan="1">3</td> | ||||
| <td align="center" colspan="1" rowspan="1">10 or 12</td> | ||||
| <td align="center" colspan="1" rowspan="1">Yes</td> | ||||
| <td align="center" colspan="1" rowspan="1">YUV 4:2:2,4:4:0 or 4:4:4< | ||||
| /td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <aside pn="section-6-7"> | ||||
| <t keepWithPrevious="true" indent="0" pn="section-6-7.1">Note: SRGB (oft | ||||
| en sRGB) = Standard Red-Green-Blue</t> | ||||
| </aside> | ||||
| <section anchor="SDPParameters" numbered="true" toc="include" removeInRFC= | ||||
| "false" pn="section-6.1"> | ||||
| <name slugifiedName="name-sdp-parameters">SDP Parameters</name> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-6 | ||||
| .1.1"> | ||||
| <name slugifiedName="name-mapping-of-media-subtype-pa">Mapping of Medi | ||||
| a Subtype Parameters to SDP</name> | ||||
| <t indent="0" pn="section-6.1.1-1">The media type video/vp9 string is | ||||
| mapped to fields in the | ||||
| Session Description Protocol (SDP) <xref target="RFC8866" format="defa | ||||
| ult" sectionFormat="of" derivedContent="RFC8866"/> as | ||||
| follows: </t> | ||||
| <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | ||||
| -6.1.1-2"> | ||||
| <li pn="section-6.1.1-2.1">The media name in the "m=" line of SDP <b | ||||
| cp14>MUST</bcp14> be video.</li> | ||||
| <li pn="section-6.1.1-2.2">The encoding name in the "a=rtpmap" line | ||||
| of SDP | ||||
| <bcp14>MUST</bcp14> be VP9 (the media subtype).</li> | ||||
| <li pn="section-6.1.1-2.3">The clock rate in the "a=rtpmap" line <bc | ||||
| p14>MUST</bcp14> be 90000.</li> | ||||
| <li pn="section-6.1.1-2.4">The parameters max-fr and max-fs <bcp14>M | ||||
| UST</bcp14> be included in | ||||
| the "a=fmtp" line of SDP if the receiver wishes to declare its rec eiver | the "a=fmtp" line of SDP if the receiver wishes to declare its rec eiver | |||
| capabilities. These parameters are expressed as a media subtype | capabilities. These parameters are expressed as a media subtype | |||
| string, in the form of a semicolon separated list of | string in the form of a semicolon-separated list of | |||
| parameter=value pairs.</t> | parameter=value pairs.</li> | |||
| <li pn="section-6.1.1-2.5">The <bcp14>OPTIONAL</bcp14> parameter pro | ||||
| <t>The OPTIONAL parameter profile-id, when present, SHOULD be | file-id, when present, <bcp14>SHOULD</bcp14> be | |||
| included in the "a=fmtp" line of SDP. This parameter is expressed | included in the "a=fmtp" line of SDP. This parameter is expressed | |||
| as a media subtype string, in the form of a parameter=value | as a media subtype string in the form of a parameter=value | |||
| pair. When the parameter is not present, a value of 0 MUST be | pair. When the parameter is not present, a value of 0 <bcp14>MUST</ | |||
| inferred for profile-id.</t> | bcp14> be | |||
| </list></t> | inferred for profile-id.</li> | |||
| </ul> | ||||
| <section title="Example"> | <section numbered="true" toc="exclude" removeInRFC="false" pn="section | |||
| <t>An example of media representation in SDP is as follows:</t> | -6.1.1.1"> | |||
| <name slugifiedName="name-example">Example</name> | ||||
| <figure> | <t indent="0" pn="section-6.1.1.1-1">An example of media representat | |||
| <artwork>m=video 49170 RTP/AVPF 98 | ion in SDP is as follows:</t> | |||
| <sourcecode type="sdp" markers="false" pn="section-6.1.1.1-2">m=vide | ||||
| o 49170 RTP/AVPF 98 | ||||
| a=rtpmap:98 VP9/90000 | a=rtpmap:98 VP9/90000 | |||
| a=fmtp:98 max-fr=30;max-fs=3600;profile-id=0 | a=fmtp:98 max-fr=30;max-fs=3600;profile-id=0 | |||
| </artwork> | </sourcecode> | |||
| </figure> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-6 | ||||
| <section title="Offer/Answer Considerations"> | .1.2"> | |||
| <t>When VP9 is offered over RTP using SDP in an Offer/Answer model | <name slugifiedName="name-offer-answer-considerations">Offer/Answer Co | |||
| <xref target="RFC3264"/> for negotiation for unicast usage, the follow | nsiderations</name> | |||
| ing | <t indent="0" pn="section-6.1.2-1">When VP9 is offered over RTP using | |||
| limitations and rules apply: <list style="symbols"> | SDP in an Offer/Answer model | |||
| <t>The parameter identifying a media format configuration for VP9 i | <xref target="RFC3264" format="default" sectionFormat="of" derivedCont | |||
| s | ent="RFC3264"/> for negotiation for unicast usage, the following | |||
| profile-id. This media format configuration parameter MUST be used | limitations and rules apply: </t> | |||
| symmetrically; that is, the answerer MUST either maintain this | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| -6.1.2-2"> | ||||
| <li pn="section-6.1.2-2.1">The parameter identifying a media format | ||||
| configuration for VP9 is | ||||
| profile-id. This media format configuration parameter <bcp14>MUST</ | ||||
| bcp14> be used | ||||
| symmetrically; that is, the answerer <bcp14>MUST</bcp14> either mai | ||||
| ntain this | ||||
| configuration parameter or remove the media format (payload type) | configuration parameter or remove the media format (payload type) | |||
| completely if it is not supported.</t> | completely if it is not supported.</li> | |||
| <li pn="section-6.1.2-2.2">The max-fr and max-fs parameters are used | ||||
| <t>The max-fr and max-fs parameters are used declaratively to | declaratively to | |||
| describe receiver capabilities, even in the Offer/Answer model. | describe receiver capabilities, even in the Offer/Answer model. | |||
| The values in an answer are used to describe the answerer's | The values in an answer are used to describe the answerer's | |||
| capabilities, and thus their values are set independently of the | capabilities; thus, their values are set independently of the | |||
| values in the offer.</t> | values in the offer.</li> | |||
| <li pn="section-6.1.2-2.3">To simplify the handling and matching of | ||||
| <t>To simplify the handling and matching of these configurations, | these configurations, the | |||
| the | same RTP payload type number used in the offer <bcp14>SHOULD</bcp1 | |||
| same RTP payload type number used in the offer SHOULD also be used | 4> also be used | |||
| in the answer and in a subsequent offer, as specified in <xref | in the answer and in a subsequent offer, as specified in <xref tar | |||
| target="RFC3264"/>. An answer or subsequent offer | get="RFC3264" format="default" sectionFormat="of" derivedContent="RFC3264"/>. An | |||
| MUST NOT contain the payload type number used in the offer unless t | answer or subsequent offer | |||
| he | <bcp14>MUST NOT</bcp14> contain the payload type number used in the | |||
| offer unless the | ||||
| profile-id value is exactly the same as in the original offer. | profile-id value is exactly the same as in the original offer. | |||
| However, max-fr and max-fs parameters MAY be changed in subsequent | However, max-fr and max-fs parameters <bcp14>MAY</bcp14> be change d in subsequent | |||
| offers and answers, with the same payload type number, if an endpo int | offers and answers, with the same payload type number, if an endpo int | |||
| wishes to change its declared receiver capabilities.</t> | wishes to change its declared receiver capabilities.</li> | |||
| </list></t> | </ul> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="mediaTypeRegistration" numbered="true" toc="include" remove | ||||
| <section anchor="mediaTypeRegistration" title="Media Type Definition"> | InRFC="false" pn="section-7"> | |||
| <t>This registration is done using the template defined in <xref | <name slugifiedName="name-media-type-definition">Media Type Definition</na | |||
| target="RFC6838"/> and following <xref target="RFC4855"/>. <list | me> | |||
| style="hanging"> | <t indent="0" pn="section-7-1">This registration uses the template defined | |||
| <t hangText="Type name:">video</t> | in <xref target="RFC6838" format="default" sectionFormat="of" derivedContent="R | |||
| FC6838"/> and following <xref target="RFC4855" format="default" sectionFormat="o | ||||
| <t hangText="Subtype name:">VP9</t> | f" derivedContent="RFC4855"/>. </t> | |||
| <dl newline="false" spacing="normal" indent="3" pn="section-7-2"> | ||||
| <t hangText="Required parameters:">N/A.</t> | <dt pn="section-7-2.1">Type name:</dt> | |||
| <dd pn="section-7-2.2">video</dd> | ||||
| <t hangText="Optional parameters:"><vspace blankLines="0"/> | <dt pn="section-7-2.3">Subtype name:</dt> | |||
| There are three optional parameters, "max-fr", "max-fs", and "profil | <dd pn="section-7-2.4">VP9</dd> | |||
| e-id". | <dt pn="section-7-2.5">Required parameters:</dt> | |||
| See <xref target='payloadFormatParameters' /> for their definition. | <dd pn="section-7-2.6">N/A</dd> | |||
| </t> | <dt pn="section-7-2.7">Optional parameters:</dt> | |||
| <dd pn="section-7-2.8"> | ||||
| <t hangText="Encoding considerations:"><vspace blankLines="0"/> | There are three optional parameters: max-fr, max-fs, and profile-id. | |||
| See <xref target="payloadFormatParameters" format="default" sectionF | ||||
| ormat="of" derivedContent="Section 6"/> for their definition. | ||||
| </dd> | ||||
| <dt pn="section-7-2.9">Encoding considerations:</dt> | ||||
| <dd pn="section-7-2.10"> | ||||
| This media type is framed in RTP and contains binary data; see | This media type is framed in RTP and contains binary data; see | |||
| Section 4.8 of <xref target="RFC6838"/>.</t> | <xref target="RFC6838" sectionFormat="of" section="4.8" format="defa | |||
| ult" derivedLink="https://rfc-editor.org/rfc/rfc6838#section-4.8" derivedContent | ||||
| <t hangText="Security considerations:">See <xref | ="RFC6838"/>.</dd> | |||
| target="securityConsiderations"/> of RFC xxxx. <vspace | <dt pn="section-7-2.11">Security considerations:</dt> | |||
| blankLines="0"/> [RFC Editor: Upon publication as an RFC, please | <dd pn="section-7-2.12"> | |||
| replace "XXXX" with the number assigned to this document and | <t indent="0" pn="section-7-2.12.1">See <xref target="securityConsider | |||
| remove this note.]</t> | ations" format="default" sectionFormat="of" derivedContent="Section 8"/> of RFC | |||
| 9628. </t> | ||||
| <t hangText="Interoperability considerations:">None.</t> | </dd> | |||
| <dt pn="section-7-2.13">Interoperability considerations:</dt> | ||||
| <t hangText="Published specification:">VP9 bitstream format <xref | <dd pn="section-7-2.14">None</dd> | |||
| target="VP9-BITSTREAM"/> and RFC XXXX. <vspace blankLines="0"/> [RFC | <dt pn="section-7-2.15">Published specification:</dt> | |||
| Editor: Upon publication as an RFC, please replace "XXXX" with the | <dd pn="section-7-2.16"> | |||
| number assigned to this document and remove this note.] <vspace | <t indent="0" pn="section-7-2.16.1">VP9 bitstream format <xref target= | |||
| blankLines="0"/></t> | "VP9-BITSTREAM" format="default" sectionFormat="of" derivedContent="VP9-BITSTREA | |||
| M"/> and RFC 9628. </t> | ||||
| <t hangText="Applications which use this media type:"><vspace | </dd> | |||
| blankLines="0"/> For example: Video over IP, video | <dt pn="section-7-2.17">Applications that use this media type:</dt> | |||
| conferencing.</t> | <dd pn="section-7-2.18"> For example, video over IP, video | |||
| conferencing.</dd> | ||||
| <t hangText="Fragment identifier considerations:">N/A.</t | <dt pn="section-7-2.19">Fragment identifier considerations:</dt> | |||
| > | <dd pn="section-7-2.20">N/A</dd> | |||
| <dt pn="section-7-2.21">Additional information:</dt> | ||||
| <t hangText="Additional information:">None.</t> | <dd pn="section-7-2.22">None</dd> | |||
| <dt pn="section-7-2.23">Person & email address to contact for furthe | ||||
| <t | r information:</dt> | |||
| hangText="Person & email address to contact for further informat | <dd pn="section-7-2.24"> | |||
| ion:"><vspace | <t indent="0" pn="section-7-2.24.1"><contact fullname="Jonathan Lennox | |||
| blankLines="0"/> Jonathan Lennox <jonathan.lennox@8x8.com></t> | "/> <jonathan.lennox@8x8.com></t> | |||
| </dd> | ||||
| <t hangText="Intended usage:">COMMON</t> | <dt pn="section-7-2.25">Intended usage:</dt> | |||
| <dd pn="section-7-2.26">COMMON</dd> | ||||
| <t hangText="Restrictions on usage:"><vspace blankLines="0"/> This | <dt pn="section-7-2.27">Restrictions on usage:</dt> | |||
| media type depends on RTP framing, and hence is only defined for | <dd pn="section-7-2.28"> This media type depends on RTP framing; hence, | |||
| transfer via RTP <xref target="RFC3550"/>.</t> | it is only defined | |||
| for transfer via RTP <xref target="RFC3550" format="default" sectionForm | ||||
| <t hangText="Author:">Jonathan Lennox <jonathan.lennox@8x8.com> | at="of" derivedContent="RFC3550"/>.</dd> | |||
| ;</t> | <dt pn="section-7-2.29">Author:</dt> | |||
| <dd pn="section-7-2.30"> | ||||
| <t hangText="Change controller:"><vspace blankLines="0"/> IETF | <t indent="0" pn="section-7-2.30.1"><contact fullname="Jonathan Lennox | |||
| AVTCore Working Group delegated from the IESG.</t> | "/> <jonathan.lennox@8x8.com></t> | |||
| </list></t> | </dd> | |||
| </section> | <dt pn="section-7-2.31">Change controller:</dt> | |||
| <dd pn="section-7-2.32"> IETF | ||||
| <section anchor="securityConsiderations" title="Security Considerations" | AVTCore Working Group delegated from the IETF.</dd> | |||
| > | </dl> | |||
| <t>RTP packets using the payload format defined in this specification | </section> | |||
| <section anchor="securityConsiderations" numbered="true" toc="include" remov | ||||
| eInRFC="false" pn="section-8"> | ||||
| <name slugifiedName="name-security-considerations">Security Considerations | ||||
| </name> | ||||
| <t indent="0" pn="section-8-1">RTP packets using the payload format define | ||||
| d in this specification | ||||
| are subject to the security considerations discussed in the RTP | are subject to the security considerations discussed in the RTP | |||
| specification <xref target="RFC3550"/>, and in any applicable RTP | specification <xref target="RFC3550" format="default" sectionFormat="of" d | |||
| profile such | erivedContent="RFC3550"/>, and in any | |||
| as <xref target='RFC3551'>RTP/AVP</xref>, <xref target='RFC4585'>RTP/AVPF< | applicable RTP profile such as <xref target="RFC3551" format="default" sec | |||
| /xref>, | tionFormat="of" derivedContent="RFC3551">RTP/AVP</xref>, <xref target="RFC4585" | |||
| <xref target='RFC3711'>RTP/SAVP</xref>, | format="default" sectionFormat="of" derivedContent="RFC4585">RTP/AVPF</xref>, <x | |||
| or <xref target='RFC5124'>RTP/SAVPF</xref>. | ref target="RFC3711" format="default" sectionFormat="of" derivedContent="RFC3711 | |||
| However, as <xref target='RFC7202'>"Securing the RTP Protocol | ">RTP/SAVP</xref>, or <xref target="RFC5124" format="default" sectionFormat="of" | |||
| Framework: Why RTP Does Not Mandate a Single Media | derivedContent="RFC5124">RTP/SAVPF</xref>. However, as "<xref target="RFC7202" | |||
| Security Solution"</xref> discusses, it is not an RTP payload format's res | format="title" sectionFormat="of" derivedContent="Securing the RTP Framework: W | |||
| ponsibility to | hy RTP Does Not Mandate a Single Media Security Solution"/>" <xref target="RFC72 | |||
| discuss or mandate what solutions are used to meet the | 02" format="default" sectionFormat="of" derivedContent="RFC7202"/> discusses, it | |||
| basic security goals like confidentiality, integrity and source | is not an RTP | |||
| authenticity for RTP in general. This responsibility lays on | payload format's responsibility to discuss or mandate what solutions are | |||
| used to meet the basic security goals like confidentiality, integrity, | ||||
| and source authenticity for RTP in general. This responsibility lies with | ||||
| anyone using RTP in an application. They can find guidance on available | anyone using RTP in an application. They can find guidance on available | |||
| security mechanisms in <xref target='RFC7201'>Options for Securing | security mechanisms in "<xref target="RFC7201" format="title" sectionForma | |||
| RTP Sessions</xref>. Applications SHOULD use one or more appropriate | t="of" derivedContent="Options for Securing RTP Sessions"/>" <xref target="RFC72 | |||
| strong security mechanisms. The rest of this security | 01" format="default" sectionFormat="of" derivedContent="RFC7201"/>. Application | |||
| consideration section discusses the security impacting properties of the | s <bcp14>SHOULD</bcp14> | |||
| payload format itself.</t> | use one or more appropriate strong security mechanisms.</t> | |||
| <t indent="0" pn="section-8-2">Implementations of this RTP payload format | ||||
| <t>Implementations of this RTP payload format need to take appropriate sec | need to take appropriate | |||
| urity | security considerations into account. It is extremely important for the | |||
| considerations into account. It is extremely important for the decoder to | decoder to be robust against malicious or malformed payloads and ensure | |||
| be | that they do not cause the decoder to overrun its allocated memory or | |||
| robust against malicious or malformed payloads and ensure that they do not | otherwise misbehave. An overrun in allocated memory could lead to | |||
| cause the decoder | arbitrary code execution by an attacker. The same applies to the | |||
| to overrun its allocated memory or otherwise mis-behave. An overrun in al | encoder, even though problems in encoders are (typically) rarer.</t> | |||
| located memory could lead to | <t indent="0" pn="section-8-3">This RTP payload format and its media decod | |||
| arbitrary code execution by an attacker. The same applies to the encoder, | er do not exhibit any | |||
| even | significant non-uniformity in the receiver-side computational complexity | |||
| though problems in encoders are typically rarer.</t> | for packet processing; thus, they are unlikely to pose a denial-of-service | |||
| threat due to the receipt of pathological data. Nor does the RTP payload | ||||
| <t>This RTP payload | format contain any active content.</t> | |||
| format and its media decoder do not exhibit any significant | ||||
| non-uniformity in the receiver-side computational complexity for packet | ||||
| processing, and thus are unlikely to pose a denial-of-service threat due | ||||
| to the receipt of pathological data. Nor does the RTP payload format | ||||
| contain any active content.</t> | ||||
| </section> | </section> | |||
| <section anchor="congestionControl" numbered="true" toc="include" removeInRF | ||||
| <section anchor="congestionControl" title="Congestion Control"> | C="false" pn="section-9"> | |||
| <t>Congestion control for RTP SHALL be used in accordance with RFC 3550 | <name slugifiedName="name-congestion-control">Congestion Control</name> | |||
| <xref target="RFC3550"/>, and with any applicable RTP profile; e.g., RFC | <t indent="0" pn="section-9-1">Congestion control for RTP <bcp14>SHALL</bc | |||
| 3551 <xref target="RFC3551"/>. The congestion control mechanism can, in | p14> be used in accordance | |||
| a real-time encoding scenario, adapt the transmission rate by | with <xref target="RFC3550" format="default" sectionFormat="of" derivedCon | |||
| instructing the encoder to encode at a certain target rate. Media aware | tent="RFC3550"/>, and with any | |||
| network elements MAY use the information in the VP9 payload descriptor | applicable RTP profile, e.g., <xref target="RFC3551" format="default" sect | |||
| in <xref target="VP9payloadDescriptor"/> to identify non-reference | ionFormat="of" derivedContent="RFC3551"/>. The congestion control mechanism can, | |||
| frames and discard them in order to reduce network congestion. Note that | in a real-time | |||
| discarding of non-reference frames cannot be done if the stream is | encoding scenario, adapt the transmission rate by instructing the | |||
| encrypted (because the non-reference marker is encrypted).</t> | encoder to encode at a certain target rate. Media-aware network elements | |||
| <bcp14>MAY</bcp14> use the information in the VP9 payload descriptor in | ||||
| <xref target="VP9payloadDescriptor" format="default" sectionFormat="of" de | ||||
| rivedContent="Section 4.2"/> to identify | ||||
| non-reference frames and discard them in order to reduce network | ||||
| congestion. Note that discarding of non-reference frames cannot be done | ||||
| if the stream is encrypted (because the non-reference marker is | ||||
| encrypted).</t> | ||||
| </section> | </section> | |||
| <section anchor="IANAConsiderations" numbered="true" toc="include" removeInR | ||||
| <section anchor="IANAConsiderations" title="IANA Considerations"> | FC="false" pn="section-10"> | |||
| <t>The IANA is requested to register the media type registration | <name slugifiedName="name-iana-considerations">IANA Considerations</name> | |||
| "video/vp9" as specified in <xref | <t indent="0" pn="section-10-1">IANA has registered the media type "video/ | |||
| target="mediaTypeRegistration"/>. The media type is also | vp9" | |||
| requested to | as specified in <xref target="mediaTypeRegistration" format="default" sect | |||
| be added to the IANA registry for "RTP Payload Format MIME types" | ionFormat="of" derivedContent="Section 7"/>. | |||
| <http://www.iana.org/assignments/rtp-parameters>.</t> | The media type has also been added to the | |||
| "RTP Payload Format Media Types" registry of the "Real-Time Transport Prot | ||||
| ocol (RTP) Parameters" registry group (<eref target="https://www.iana.org/assign | ||||
| ments/rtp-parameters" brackets="none"/>) as follows.</t> | ||||
| <dl spacing="compact" indent="3" newline="false" pn="section-10-2"> | ||||
| <dt pn="section-10-2.1">Media Type:</dt> | ||||
| <dd pn="section-10-2.2">video</dd> | ||||
| <dt pn="section-10-2.3">Subtype:</dt> | ||||
| <dd pn="section-10-2.4">VP9</dd> | ||||
| <dt pn="section-10-2.5">Clock Rate (Hz):</dt> | ||||
| <dd pn="section-10-2.6">90000</dd> | ||||
| <dt pn="section-10-2.7">Reference:</dt> | ||||
| <dd pn="section-10-2.8">RFC 9628</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| <section title="Acknowledgments"> | ||||
| <t>Alex Eleftheriadis, Yuki Ito, Won Kap Jang, Sergio Garcia | ||||
| Murillo, Roi Sasson, Timothy Terriberry, Emircan Uysaler, and | ||||
| Thomas Volkert commented on the development of this document and | ||||
| provided helpful comments and feedback.</t> | ||||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title='Normative References'> | <references pn="section-11"> | |||
| <name slugifiedName="name-references">References</name> | ||||
| <reference anchor='VP9-BITSTREAM' target='https://storage.googleapis.co | <references pn="section-11.1"> | |||
| m/downloads.webmproject.org/docs/vp9/vp9-bitstream-specification-v0.6-20160331-d | <name slugifiedName="name-normative-references">Normative References</na | |||
| raft.pdf'> | me> | |||
| <front> | <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | |||
| <title>VP9 Bitstream & Decoding Process Specification</titl | 119" quoteTitle="true" derivedAnchor="RFC2119"> | |||
| e> | <front> | |||
| <title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
| <author initials='A' surname='Grange' fullname='Adrian Grange'> | le> | |||
| <organization>Google</organization> | <author fullname="S. Bradner" initials="S." surname="Bradner"/> | |||
| </author> | <date month="March" year="1997"/> | |||
| <author initials='P' surname='de Rivaz' fullname='Peter de Riva | <abstract> | |||
| z'> | <t indent="0">In many standards track documents several words are | |||
| <organization>Argon Design</organization> | used to signify the requirements in the specification. These words are often cap | |||
| </author> | italized. This document defines these words as they should be interpreted in IET | |||
| <author initials='J' surname='Hunt' fullname='Jonathan Hunt'> | F documents. This document specifies an Internet Best Current Practices for the | |||
| <organization>Argon Design</organization> | Internet Community, and requests discussion and suggestions for improvements.</t | |||
| </author> | > | |||
| <date month='March' day='31' year='2016' /> | </abstract> | |||
| <abstract> | </front> | |||
| <t> | <seriesInfo name="BCP" value="14"/> | |||
| <seriesInfo name="RFC" value="2119"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3264" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 264" quoteTitle="true" derivedAnchor="RFC3264"> | ||||
| <front> | ||||
| <title>An Offer/Answer Model with Session Description Protocol (SDP) | ||||
| </title> | ||||
| <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/> | ||||
| <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne | ||||
| "/> | ||||
| <date month="June" year="2002"/> | ||||
| <abstract> | ||||
| <t indent="0">This document defines a mechanism by which two entit | ||||
| ies can make use of the Session Description Protocol (SDP) to arrive at a common | ||||
| view of a multimedia session between them. In the model, one participant offers | ||||
| the other a description of the desired session from their perspective, and the | ||||
| other participant answers with the desired session from their perspective. This | ||||
| offer/answer model is most useful in unicast sessions where information from bot | ||||
| h participants is needed for the complete view of the session. The offer/answer | ||||
| model is used by protocols like the Session Initiation Protocol (SIP). [STANDARD | ||||
| S-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3264"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3264"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3550" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 550" quoteTitle="true" derivedAnchor="RFC3550"> | ||||
| <front> | ||||
| <title>RTP: A Transport Protocol for Real-Time Applications</title> | ||||
| <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne | ||||
| "/> | ||||
| <author fullname="S. Casner" initials="S." surname="Casner"/> | ||||
| <author fullname="R. Frederick" initials="R." surname="Frederick"/> | ||||
| <author fullname="V. Jacobson" initials="V." surname="Jacobson"/> | ||||
| <date month="July" year="2003"/> | ||||
| <abstract> | ||||
| <t indent="0">This memorandum describes RTP, the real-time transpo | ||||
| rt protocol. RTP provides end-to-end network transport functions suitable for ap | ||||
| plications transmitting real-time data, such as audio, video or simulation data, | ||||
| over multicast or unicast network services. RTP does not address resource reser | ||||
| vation and does not guarantee quality-of- service for real-time services. The da | ||||
| ta transport is augmented by a control protocol (RTCP) to allow monitoring of th | ||||
| e data delivery in a manner scalable to large multicast networks, and to provide | ||||
| minimal control and identification functionality. RTP and RTCP are designed to | ||||
| be independent of the underlying transport and network layers. The protocol supp | ||||
| orts the use of RTP-level translators and mixers. Most of the text in this memor | ||||
| andum is identical to RFC 1889 which it obsoletes. There are no changes in the p | ||||
| acket formats on the wire, only changes to the rules and algorithms governing ho | ||||
| w the protocol is used. The biggest change is an enhancement to the scalable tim | ||||
| er algorithm for calculating when to send RTCP packets in order to minimize tran | ||||
| smission in excess of the intended rate when many participants join a session si | ||||
| multaneously. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="STD" value="64"/> | ||||
| <seriesInfo name="RFC" value="3550"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3550"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4585" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 585" quoteTitle="true" derivedAnchor="RFC4585"> | ||||
| <front> | ||||
| <title>Extended RTP Profile for Real-time Transport Control Protocol | ||||
| (RTCP)-Based Feedback (RTP/AVPF)</title> | ||||
| <author fullname="J. Ott" initials="J." surname="Ott"/> | ||||
| <author fullname="S. Wenger" initials="S." surname="Wenger"/> | ||||
| <author fullname="N. Sato" initials="N." surname="Sato"/> | ||||
| <author fullname="C. Burmeister" initials="C." surname="Burmeister"/ | ||||
| > | ||||
| <author fullname="J. Rey" initials="J." surname="Rey"/> | ||||
| <date month="July" year="2006"/> | ||||
| <abstract> | ||||
| <t indent="0">Real-time media streams that use RTP are, to some de | ||||
| gree, resilient against packet losses. Receivers may use the base mechanisms of | ||||
| the Real-time Transport Control Protocol (RTCP) to report packet reception stati | ||||
| stics and thus allow a sender to adapt its transmission behavior in the mid-term | ||||
| . This is the sole means for feedback and feedback-based error repair (besides a | ||||
| few codec-specific mechanisms). This document defines an extension to the Audio | ||||
| -visual Profile (AVP) that enables receivers to provide, statistically, more imm | ||||
| ediate feedback to the senders and thus allows for short-term adaptation and eff | ||||
| icient feedback-based repair mechanisms to be implemented. This early feedback p | ||||
| rofile (AVPF) maintains the AVP bandwidth constraints for RTCP and preserves sca | ||||
| lability to large groups. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4585"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4585"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4855" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 855" quoteTitle="true" derivedAnchor="RFC4855"> | ||||
| <front> | ||||
| <title>Media Type Registration of RTP Payload Formats</title> | ||||
| <author fullname="S. Casner" initials="S." surname="Casner"/> | ||||
| <date month="February" year="2007"/> | ||||
| <abstract> | ||||
| <t indent="0">This document specifies the procedure to register RT | ||||
| P payload formats as audio, video, or other media subtype names. This is useful | ||||
| in a text-based format description or control protocol to identify the type of a | ||||
| n RTP transmission. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4855"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4855"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5104" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 104" quoteTitle="true" derivedAnchor="RFC5104"> | ||||
| <front> | ||||
| <title>Codec Control Messages in the RTP Audio-Visual Profile with F | ||||
| eedback (AVPF)</title> | ||||
| <author fullname="S. Wenger" initials="S." surname="Wenger"/> | ||||
| <author fullname="U. Chandra" initials="U." surname="Chandra"/> | ||||
| <author fullname="M. Westerlund" initials="M." surname="Westerlund"/ | ||||
| > | ||||
| <author fullname="B. Burman" initials="B." surname="Burman"/> | ||||
| <date month="February" year="2008"/> | ||||
| <abstract> | ||||
| <t indent="0">This document specifies a few extensions to the mess | ||||
| ages defined in the Audio-Visual Profile with Feedback (AVPF). They are helpful | ||||
| primarily in conversational multimedia scenarios where centralized multipoint fu | ||||
| nctionalities are in use. However, some are also usable in smaller multicast env | ||||
| ironments and point-to-point calls.</t> | ||||
| <t indent="0">The extensions discussed are messages related to the | ||||
| ITU-T Rec. H.271 Video Back Channel, Full Intra Request, Temporary Maximum Medi | ||||
| a Stream Bit Rate, and Temporal-Spatial Trade-off. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5104"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5104"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6838" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 838" quoteTitle="true" derivedAnchor="RFC6838"> | ||||
| <front> | ||||
| <title>Media Type Specifications and Registration Procedures</title> | ||||
| <author fullname="N. Freed" initials="N." surname="Freed"/> | ||||
| <author fullname="J. Klensin" initials="J." surname="Klensin"/> | ||||
| <author fullname="T. Hansen" initials="T." surname="Hansen"/> | ||||
| <date month="January" year="2013"/> | ||||
| <abstract> | ||||
| <t indent="0">This document defines procedures for the specificati | ||||
| on and registration of media types for use in HTTP, MIME, and other Internet pro | ||||
| tocols. This memo documents an Internet Best Current Practice.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="13"/> | ||||
| <seriesInfo name="RFC" value="6838"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6838"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 174" quoteTitle="true" derivedAnchor="RFC8174"> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
| tle> | ||||
| <author fullname="B. Leiba" initials="B." surname="Leiba"/> | ||||
| <date month="May" year="2017"/> | ||||
| <abstract> | ||||
| <t indent="0">RFC 2119 specifies common key words that may be used | ||||
| in protocol specifications. This document aims to reduce the ambiguity by clari | ||||
| fying that only UPPERCASE usage of the key words have the defined special meanin | ||||
| gs.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="8174"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8866" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 866" quoteTitle="true" derivedAnchor="RFC8866"> | ||||
| <front> | ||||
| <title>SDP: Session Description Protocol</title> | ||||
| <author fullname="A. Begen" initials="A." surname="Begen"/> | ||||
| <author fullname="P. Kyzivat" initials="P." surname="Kyzivat"/> | ||||
| <author fullname="C. Perkins" initials="C." surname="Perkins"/> | ||||
| <author fullname="M. Handley" initials="M." surname="Handley"/> | ||||
| <date month="January" year="2021"/> | ||||
| <abstract> | ||||
| <t indent="0">This memo defines the Session Description Protocol ( | ||||
| SDP). SDP is intended for describing multimedia sessions for the purposes of ses | ||||
| sion announcement, session invitation, and other forms of multimedia session ini | ||||
| tiation. This document obsoletes RFC 4566.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8866"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8866"/> | ||||
| </reference> | ||||
| <reference anchor="RFC9627" target="https://www.rfc-editor.org/info/rfc9 | ||||
| 627" quoteTitle="true" derivedAnchor="RFC9627"> | ||||
| <front> | ||||
| <title>The Layer Refresh Request (LRR) RTCP Feedback Message</title> | ||||
| <author initials="J." surname="Lennox" fullname="Jonathan Lennox"> | ||||
| <organization showOnFrontPage="true">8x8, Inc. / Jitsi</organizati | ||||
| on> | ||||
| </author> | ||||
| <author initials="D." surname="Hong" fullname="Danny Hong"> | ||||
| <organization showOnFrontPage="true">Google, Inc.</organization> | ||||
| </author> | ||||
| <author initials="J." surname="Uberti" fullname="Justin Uberti"> | ||||
| <organization showOnFrontPage="true">OpenAI</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Holmer" fullname="Stefan Holmer"> | ||||
| <organization showOnFrontPage="true">Google, Inc.</organization> | ||||
| </author> | ||||
| <author initials="M." surname="Flodman" fullname="Magnus Flodman"> | ||||
| <organization showOnFrontPage="true">Google, Inc.</organization> | ||||
| </author> | ||||
| <date month="March" year="2025"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9627"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9627"/> | ||||
| </reference> | ||||
| <reference anchor="VP9-BITSTREAM" target="https://storage.googleapis.com | ||||
| /downloads.webmproject.org/docs/vp9/vp9-bitstream-specification-v0.6-20160331-dr | ||||
| aft.pdf" quoteTitle="true" derivedAnchor="VP9-BITSTREAM"> | ||||
| <front> | ||||
| <title>VP9 Bitstream & Decoding Process Specification</title> | ||||
| <author initials="A" surname="Grange" fullname="Adrian Grange"> | ||||
| <organization showOnFrontPage="true">Google</organization> | ||||
| </author> | ||||
| <author initials="P" surname="de Rivaz" fullname="Peter de Rivaz"> | ||||
| <organization showOnFrontPage="true">Argon Design</organization> | ||||
| </author> | ||||
| <author initials="J" surname="Hunt" fullname="Jonathan Hunt"> | ||||
| <organization showOnFrontPage="true">Argon Design</organization> | ||||
| </author> | ||||
| <date month="March" day="31" year="2016"/> | ||||
| <abstract> | ||||
| <t indent="0"> | ||||
| This document defines the bitstream format and decoding process for the | This document defines the bitstream format and decoding process for the | |||
| Google VP9 video codec. | Google VP9 video codec. | |||
| </t> | </t> | |||
| </abstract> | </abstract> | |||
| </front> | ||||
| </front> | <seriesInfo name="Version" value="0.6"/> | |||
| <seriesInfo name='Version' value='0.6' /> | </reference> | |||
| </reference> | </references> | |||
| <references pn="section-11.2"> | ||||
| &rfc2119; | <name slugifiedName="name-informative-references">Informative References | |||
| </name> | ||||
| &rfc8174; | <reference anchor="RFC3551" target="https://www.rfc-editor.org/info/rfc3 | |||
| 551" quoteTitle="true" derivedAnchor="RFC3551"> | ||||
| &rfc4585; | <front> | |||
| <title>RTP Profile for Audio and Video Conferences with Minimal Cont | ||||
| &rfc3550; | rol</title> | |||
| <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne | ||||
| &rfc8866; | "/> | |||
| <author fullname="S. Casner" initials="S." surname="Casner"/> | ||||
| &rfc6838; | <date month="July" year="2003"/> | |||
| <abstract> | ||||
| &rfc4855; | <t indent="0">This document describes a profile called "RTP/AVP" f | |||
| or the use of the real-time transport protocol (RTP), version 2, and the associa | ||||
| &rfc5104; | ted control protocol, RTCP, within audio and video multiparticipant conferences | |||
| with minimal control. It provides interpretations of generic fields within the R | ||||
| &lrr; | TP specification suitable for audio and video conferences. In particular, this d | |||
| ocument defines a set of default mappings from payload type numbers to encodings | ||||
| &rfc3264; | . This document also describes how audio and video data may be carried within RT | |||
| P. It defines a set of standard encodings and their names when used within RTP. | ||||
| The descriptions provide pointers to reference implementations and the detailed | ||||
| standards. This document is meant as an aid for implementors of audio, video and | ||||
| other real-time multimedia applications. This memorandum obsoletes RFC 1890. It | ||||
| is mostly backwards-compatible except for functions removed because two interop | ||||
| erable implementations were not found. The additions to RFC 1890 codify existing | ||||
| practice in the use of payload formats under this profile and include new paylo | ||||
| ad formats defined since RFC 1890 was published. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="STD" value="65"/> | ||||
| <seriesInfo name="RFC" value="3551"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3551"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3711" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 711" quoteTitle="true" derivedAnchor="RFC3711"> | ||||
| <front> | ||||
| <title>The Secure Real-time Transport Protocol (SRTP)</title> | ||||
| <author fullname="M. Baugher" initials="M." surname="Baugher"/> | ||||
| <author fullname="D. McGrew" initials="D." surname="McGrew"/> | ||||
| <author fullname="M. Naslund" initials="M." surname="Naslund"/> | ||||
| <author fullname="E. Carrara" initials="E." surname="Carrara"/> | ||||
| <author fullname="K. Norrman" initials="K." surname="Norrman"/> | ||||
| <date month="March" year="2004"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes the Secure Real-time Transpo | ||||
| rt Protocol (SRTP), a profile of the Real-time Transport Protocol (RTP), which c | ||||
| an provide confidentiality, message authentication, and replay protection to the | ||||
| RTP traffic and to the control traffic for RTP, the Real-time Transport Control | ||||
| Protocol (RTCP). [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3711"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3711"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5124" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 124" quoteTitle="true" derivedAnchor="RFC5124"> | ||||
| <front> | ||||
| <title>Extended Secure RTP Profile for Real-time Transport Control P | ||||
| rotocol (RTCP)-Based Feedback (RTP/SAVPF)</title> | ||||
| <author fullname="J. Ott" initials="J." surname="Ott"/> | ||||
| <author fullname="E. Carrara" initials="E." surname="Carrara"/> | ||||
| <date month="February" year="2008"/> | ||||
| <abstract> | ||||
| <t indent="0">An RTP profile (SAVP) for secure real-time communica | ||||
| tions and another profile (AVPF) to provide timely feedback from the receivers t | ||||
| o a sender are defined in RFC 3711 and RFC 4585, respectively. This memo specifi | ||||
| es the combination of both profiles to enable secure RTP communications with fee | ||||
| dback. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5124"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5124"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6386" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 386" quoteTitle="true" derivedAnchor="RFC6386"> | ||||
| <front> | ||||
| <title>VP8 Data Format and Decoding Guide</title> | ||||
| <author fullname="J. Bankoski" initials="J." surname="Bankoski"/> | ||||
| <author fullname="J. Koleszar" initials="J." surname="Koleszar"/> | ||||
| <author fullname="L. Quillio" initials="L." surname="Quillio"/> | ||||
| <author fullname="J. Salonen" initials="J." surname="Salonen"/> | ||||
| <author fullname="P. Wilkins" initials="P." surname="Wilkins"/> | ||||
| <author fullname="Y. Xu" initials="Y." surname="Xu"/> | ||||
| <date month="November" year="2011"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes the VP8 compressed video dat | ||||
| a format, together with a discussion of the decoding procedure for the format. T | ||||
| his document is not an Internet Standards Track specification; it is published f | ||||
| or informational purposes.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6386"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6386"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7201" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 201" quoteTitle="true" derivedAnchor="RFC7201"> | ||||
| <front> | ||||
| <title>Options for Securing RTP Sessions</title> | ||||
| <author fullname="M. Westerlund" initials="M." surname="Westerlund"/ | ||||
| > | ||||
| <author fullname="C. Perkins" initials="C." surname="Perkins"/> | ||||
| <date month="April" year="2014"/> | ||||
| <abstract> | ||||
| <t indent="0">The Real-time Transport Protocol (RTP) is used in a | ||||
| large number of different application domains and environments. This heterogenei | ||||
| ty implies that different security mechanisms are needed to provide services suc | ||||
| h as confidentiality, integrity, and source authentication of RTP and RTP Contro | ||||
| l Protocol (RTCP) packets suitable for the various environments. The range of so | ||||
| lutions makes it difficult for RTP-based application developers to pick the most | ||||
| suitable mechanism. This document provides an overview of a number of security | ||||
| solutions for RTP and gives guidance for developers on how to choose the appropr | ||||
| iate security mechanism.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7201"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7201"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7202" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 202" quoteTitle="true" derivedAnchor="RFC7202"> | ||||
| <front> | ||||
| <title>Securing the RTP Framework: Why RTP Does Not Mandate a Single | ||||
| Media Security Solution</title> | ||||
| <author fullname="C. Perkins" initials="C." surname="Perkins"/> | ||||
| <author fullname="M. Westerlund" initials="M." surname="Westerlund"/ | ||||
| > | ||||
| <date month="April" year="2014"/> | ||||
| <abstract> | ||||
| <t indent="0">This memo discusses the problem of securing real-tim | ||||
| e multimedia sessions. It also explains why the Real-time Transport Protocol (RT | ||||
| P) and the associated RTP Control Protocol (RTCP) do not mandate a single media | ||||
| security mechanism. This is relevant for designers and reviewers of future RTP e | ||||
| xtensions to ensure that appropriate security mechanisms are mandated and that a | ||||
| ny such mechanisms are specified in a manner that conforms with the RTP architec | ||||
| ture.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7202"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7202"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7667" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 667" quoteTitle="true" derivedAnchor="RFC7667"> | ||||
| <front> | ||||
| <title>RTP Topologies</title> | ||||
| <author fullname="M. Westerlund" initials="M." surname="Westerlund"/ | ||||
| > | ||||
| <author fullname="S. Wenger" initials="S." surname="Wenger"/> | ||||
| <date month="November" year="2015"/> | ||||
| <abstract> | ||||
| <t indent="0">This document discusses point-to-point and multi-end | ||||
| point topologies used in environments based on the Real-time Transport Protocol | ||||
| (RTP). In particular, centralized topologies commonly employed in the video conf | ||||
| erencing industry are mapped to the RTP terminology.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7667"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7667"/> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section numbered="false" toc="include" removeInRFC="false" pn="section-appe | ||||
| <references title='Informative References'> | ndix.a"> | |||
| <name slugifiedName="name-acknowledgments">Acknowledgments</name> | ||||
| &rfc3551; | <t indent="0" pn="section-appendix.a-1"><contact fullname="Alex Eleftheria | |||
| dis"/>, <contact fullname="Yuki Ito"/>, <contact fullname="Won Kap Jang"/> | ||||
| &rfc5124; | , <contact fullname="Sergio Garcia"/> <contact fullname="Murillo"/>, <cont | |||
| act fullname="Roi Sasson"/>, <contact fullname="Timothy Terriberry"/>, <co | ||||
| &rfc6386; | ntact fullname="Emircan Uysaler"/>, and <contact fullname="Thomas Volkert"/> | |||
| commented on the development of this document and provided helpful | ||||
| &rfc7201; | feedback.</t> | |||
| </section> | ||||
| &rfc7202; | <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | |||
| ="include" pn="section-appendix.b"> | ||||
| &rfc7667; | <name slugifiedName="name-authors-addresses">Authors' Addresses</name> | |||
| <author fullname="Justin Uberti" initials="J." surname="Uberti"> | ||||
| &rfc3711; | <organization showOnFrontPage="true">OpenAI</organization> | |||
| <address> | ||||
| </references> | <postal> | |||
| <street>1455 3rd St</street> | ||||
| <city>San Francisco</city> | ||||
| <region>CA</region> | ||||
| <code>94158</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>justin@uberti.name</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Stefan Holmer" initials="S." surname="Holmer"> | ||||
| <organization abbrev="Google" showOnFrontPage="true">Google, Inc.</organ | ||||
| ization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>Kungsbron 2</street> | ||||
| <code>111 22</code> | ||||
| <city>Stockholm</city> | ||||
| <country>Sweden</country> | ||||
| </postal> | ||||
| <email>holmer@google.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Magnus Flodman" initials="M." surname="Flodman"> | ||||
| <organization abbrev="Google" showOnFrontPage="true">Google, Inc.</organ | ||||
| ization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>Kungsbron 2</street> | ||||
| <code>111 22</code> | ||||
| <city>Stockholm</city> | ||||
| <country>Sweden</country> | ||||
| </postal> | ||||
| <email>mflodman@google.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Danny Hong" initials="D." surname="Hong"> | ||||
| <organization abbrev="Google" showOnFrontPage="true">Google, Inc.</organ | ||||
| ization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>315 Hudson St.</street> | ||||
| <city>New York</city> | ||||
| <region>NY</region> | ||||
| <code>10013</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>dannyhong@google.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Jonathan Lennox" initials="J." surname="Lennox"> | ||||
| <organization abbrev="8x8 / Jitsi" showOnFrontPage="true">8x8, Inc. / Ji | ||||
| tsi</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street/> | ||||
| <city>Jersey City</city> | ||||
| <region>NJ</region> | ||||
| <code>07302</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>jonathan.lennox@8x8.com</email> | ||||
| </address> | ||||
| </author> | ||||
| </section> | ||||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| <!-- LocalWords: PictureID DCT Hadamard WHT SSRC CSRC pyld hdr FI VER RPSI | ||||
| --> | ||||
| <!-- LocalWords: stPartitionSize SDP AVPF SRTP IANA PID PICIDX TID | ||||
| --> | ||||
| End of changes. 113 change blocks. | ||||
| 1054 lines changed or deleted | 1876 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||