| rfc9924.original.xml | rfc9924.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc [ | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" do | |||
| <!ENTITY nbsp " "> | cName="draft-lim-apv-09" number="9924" category="info" submissionType="independe | |||
| <!ENTITY zwsp "​"> | nt" tocInclude="true" sortRefs="true" symRefs="true" updates="" obsoletes="" xml | |||
| <!ENTITY nbhy "‑"> | :lang="en" prepTime="2026-02-10T13:57:11" indexInclude="true" scripts="Common,La | |||
| <!ENTITY wj "⁠"> | tin" tocDepth="3"> | |||
| ]> | <link href="https://datatracker.ietf.org/doc/draft-lim-apv-09" rel="prev"/> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | <link href="https://dx.doi.org/10.17487/rfc9924" rel="alternate"/> | |||
| <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2. | <link href="urn:issn:2070-1721" rel="alternate"/> | |||
| 3) --> | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | ||||
| -lim-apv-09" category="info" submissionType="IETF" tocInclude="true" sortRefs="t | ||||
| rue" symRefs="true" version="3"> | ||||
| <!-- xml2rfc v2v3 conversion 3.31.0 --> | ||||
| <front> | <front> | |||
| <title abbrev="APV">Advanced Professional Video</title> | <title abbrev="APV">Advanced Professional Video</title> | |||
| <seriesInfo name="Internet-Draft" value="draft-lim-apv-09"/> | <seriesInfo name="RFC" value="9924" stream="independent"/> | |||
| <author initials="Y." surname="Lim" fullname="Youngkwon Lim"> | <author initials="Y." surname="Lim" fullname="Youngkwon Lim"> | |||
| <organization>Samsung Electronics</organization> | <organization showOnFrontPage="true">Samsung Electronics</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>6105 Tennyson Pkwy, Ste 300</street> | <street>6105 Tennyson Pkwy, Ste 300</street> | |||
| <city>Plano, TX</city> | <city>Plano</city> | |||
| <region>TX</region> | ||||
| <code>75024</code> | <code>75024</code> | |||
| <country>USA</country> | <country>United States of America</country> | |||
| </postal> | </postal> | |||
| <email>yklwhite@gmail.com</email> | <email>yklwhite@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="M." surname="Park" fullname="Minwoo Park"> | <author initials="M." surname="Park" fullname="Minwoo Park"> | |||
| <organization>Samsung Electronics</organization> | <organization showOnFrontPage="true">Samsung Electronics</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>34, Seongchon-gil, Seocho-gu</street> | <street>34, Seongchon-gil, Seocho-gu</street> | |||
| <city>Seoul</city> | <city>Seoul</city> | |||
| <code>3573</code> | <code>3573</code> | |||
| <country>Republic of Korea</country> | <country>Republic of Korea</country> | |||
| </postal> | </postal> | |||
| <email>m.w.park@samsung.com</email> | <email>m.w.park@samsung.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="M." surname="Budagavi" fullname="Madhukar Budagavi"> | <author initials="M." surname="Budagavi" fullname="Madhukar Budagavi"> | |||
| <organization>Samsung Electronics</organization> | <organization showOnFrontPage="true">Samsung Electronics</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>6105 Tennyson Pkwy, Ste 300</street> | <street>6105 Tennyson Pkwy, Ste 300</street> | |||
| <city>Plano, TX</city> | <city>Plano</city> | |||
| <region>TX</region> | ||||
| <code>75024</code> | <code>75024</code> | |||
| <country>USA</country> | <country>United States of America</country> | |||
| </postal> | </postal> | |||
| <email>m.budagavi@samsung.com</email> | <email>m.budagavi@samsung.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="R." surname="Joshi" fullname="Rajan Joshi"> | <author initials="R." surname="Joshi" fullname="Rajan Joshi"> | |||
| <organization>Samsung Electronics</organization> | <organization showOnFrontPage="true">Samsung Electronics</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>11488 Tree Hollow Ln</street> | <street>11488 Tree Hollow Ln</street> | |||
| <city>San Diego, CA</city> | <city>San Diego</city> | |||
| <region>CA</region> | ||||
| <code>92128</code> | <code>92128</code> | |||
| <country>USA</country> | <country>United States of America</country> | |||
| </postal> | </postal> | |||
| <email>rajan_joshi@ieee.org</email> | <email>rajan_joshi@ieee.org</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="K." surname="Choi" fullname="Kwang Pyo Choi"> | <author initials="K." surname="Choi" fullname="Kwang Pyo Choi"> | |||
| <organization>Samsung Electronics</organization> | <organization showOnFrontPage="true">Samsung Electronics</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>34 Seongchon-gil Seocho-gu</street> | <street>34 Seongchon-gil Seocho-gu</street> | |||
| <city>Seoul</city> | <city>Seoul</city> | |||
| <code>3573</code> | <code>3573</code> | |||
| <country>Republic of Korea</country> | <country>Republic of Korea</country> | |||
| </postal> | </postal> | |||
| <email>kwangpyo.choi@gmail.com</email> | <email>kwangpyo.choi@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2025" month="October" day="20"/> | <date month="02" year="2026"/> | |||
| <area>General</area> | ||||
| <workgroup>Independent Submission</workgroup> | ||||
| <keyword>mezzanine codec</keyword> | <keyword>mezzanine codec</keyword> | |||
| <keyword>visually lossless compression</keyword> | <keyword>visually lossless compression</keyword> | |||
| <abstract> | <keyword>APV</keyword> | |||
| <?line 125?> | <abstract pn="section-abstract"> | |||
| <t indent="0" pn="section-abstract-1">This document describes the bitstrea | ||||
| <t>This document describes the bitstream format of Advanced Professional Video ( | m format of Advanced Professional Video (APV) and its decoding process. APV is a | |||
| APV) and its decoding process. APV is a professional video codec providing visua | professional video codec providing visually lossless compression mainly for rec | |||
| lly lossless compression mainly for recording and post production.</t> | ording and post production.</t> | |||
| </abstract> | </abstract> | |||
| </front> | <boilerplate> | |||
| <middle> | <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | |||
| <?line 129?> | "exclude" pn="section-boilerplate.1"> | |||
| <name slugifiedName="name-status-of-this-memo">Status of This Memo</name | ||||
| <section anchor="introduction"> | > | |||
| <name>Introduction</name> | <t indent="0" pn="section-boilerplate.1-1"> | |||
| <t>This document defines the bitstream format and decoding process for Ad | This document is not an Internet Standards Track specification; it i | |||
| vanced Professional Video (APV) Codec. APV codec is a professional video codec t | s | |||
| hat was developed in response to the need for professional level high quality vi | published for informational purposes. | |||
| deo recording and post production. The primary purpose of the APV codec is for u | </t> | |||
| se in professional video recording and editing workflows for various types of co | <t indent="0" pn="section-boilerplate.1-2"> | |||
| ntent. This specification is neither the product of the IETF nor a consensus vi | This is a contribution to the RFC Series, independently of any | |||
| ew of the community.</t> | other RFC stream. The RFC Editor has chosen to publish this | |||
| <t>The APV codec supports the following features:</t> | document at its discretion and makes no statement about its value | |||
| <ul spacing="normal"> | for implementation or deployment. Documents approved for | |||
| <li> | publication by the RFC Editor are not candidates for any level of | |||
| <t>Perceptually lossless video quality that is close to the original, | Internet Standard; see Section 2 of RFC 7841. | |||
| uncompressed quality;</t> | </t> | |||
| </li> | <t indent="0" pn="section-boilerplate.1-3"> | |||
| <li> | Information about the current status of this document, any | |||
| <t>Low complexity and high throughput intra frame only coding without | errata, and how to provide feedback on it may be obtained at | |||
| inter frame coding;</t> | <eref target="https://www.rfc-editor.org/info/rfc9924" brackets="non | |||
| </li> | e"/>. | |||
| <li> | </t> | |||
| <t>Intra frame coding without prediction between pixel values but betw | </section> | |||
| een transformed values for low delay encoding;</t> | <section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | |||
| </li> | ude" pn="section-boilerplate.2"> | |||
| <li> | <name slugifiedName="name-copyright-notice">Copyright Notice</name> | |||
| <t>High bit-rates of up to a few Gbps for 2K, 4K and 8K resolution con | <t indent="0" pn="section-boilerplate.2-1"> | |||
| tent, enabled by a lightweight entropy coding scheme;</t> | Copyright (c) 2026 IETF Trust and the persons identified as the | |||
| </li> | document authors. All rights reserved. | |||
| <li> | </t> | |||
| <t>Frame tiling for immersive content and for enabling parallel encodi | <t indent="0" pn="section-boilerplate.2-2"> | |||
| ng and decoding;</t> | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| </li> | Provisions Relating to IETF Documents | |||
| <li> | (<eref target="https://trustee.ietf.org/license-info" brackets="none | |||
| <t>Various chroma sampling formats from 4:0:0 to 4:4:4:4, and bit dept | "/>) in effect on the date of | |||
| hs from 10 to 16 (Note: Only the profiles supporting 10 bit and 12 bit are curre | publication of this document. Please review these documents | |||
| ntly defined);</t> | carefully, as they describe your rights and restrictions with | |||
| </li> | respect to this document. | |||
| <li> | </t> | |||
| <t>Multiple decoding and re-encoding without severe visual quality deg | </section> | |||
| radation; and</t> | </boilerplate> | |||
| </li> | <toc> | |||
| <li> | <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | |||
| <t>Various metadata including HDR10/10+ and user-defined format.</t> | n="section-toc.1"> | |||
| </li> | <name slugifiedName="name-table-of-contents">Table of Contents</name> | |||
| </ul> | <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | |||
| </section> | c.1-1"> | |||
| <section anchor="terms"> | <li pn="section-toc.1-1.1"> | |||
| <name>Terms</name> | <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref der | |||
| <section anchor="terms-and-definitions"> | ivedContent="1" format="counter" sectionFormat="of" target="section-1"/>. <xref | |||
| <name>Terms and definitions</name> | derivedContent="" format="title" sectionFormat="of" target="name-introduction"> | |||
| <ul spacing="normal"> | Introduction</xref></t> | |||
| <li> | ||||
| <t>access unit (AU): a collection of primitive bitstream units (PBU) | ||||
| including various types of frames, metadata, filler, and access unit informatio | ||||
| n, associated with a specific time</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>band: a defined set of constraints on the value of the maximum co | ||||
| ded data rate of each level</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>block: MxN (M-column by N-row) array of samples, or an MxN array | ||||
| of transform coefficients</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>byte-aligned: a position in a bitstream that is an integer multip | ||||
| le of 8 bits from the position of the first bit in the bitstream</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>chroma: a sample array or single sample representing one of the t | ||||
| wo color difference signals related to the primary colors, represented by the sy | ||||
| mbols Cb and Cr in 4:2:2 or 4:4:4 color format</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>coded frame: a coded representation of a frame containing all mac | ||||
| roblocks of the frame</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>coded representation: a data element as represented in its coded | ||||
| form</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>component: an array or a single sample from one of the three arra | ||||
| ys (luma and two chroma) that compose a frame in 4:2:2, or 4:4:4 color format, o | ||||
| r an array or a single sample from an array that compose a frame in 4:0:0 color | ||||
| format, or an array or a single sample from one of the four arrays that compose | ||||
| a frame in 4:4:4:4 color format.</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>decoded frame: a frame derived by decoding a coded frame</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>decoder: an embodiment of a decoding process</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>decoding process: a process specified that reads a bitstream and | ||||
| derives decoded frames from it</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>encoder: an embodiment of an encoding process</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>encoding process: a process that produces a bitstream conforming | ||||
| to this document</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>flag: a variable or single-bit syntax element that can take one o | ||||
| f the two possible values: 0 and 1</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>frame: an array of luma samples and two corresponding arrays of c | ||||
| hroma samples in 4:2:2, and 4:4:4 color format, or an array of samples in 4:0:0 | ||||
| color format, or four arrays of samples in 4:4:4:4 color format</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>level: a defined set of constraints on the values that are taken | ||||
| by the syntax elements and variables of this document, or the value of a transfo | ||||
| rm coefficient prior to scaling</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>luma: a sample array or single sample representing the monochrome | ||||
| signal related to the primary colors, represented by the symbol or subscript Y | ||||
| or L</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>macroblock (MB): a square block of luma samples and two correspon | ||||
| ding blocks of chroma samples of a frame in 4:2:2 or 4:4:4 color format, or a sq | ||||
| uare block of samples of a frame in 4:0:0 color format, or four square blocks of | ||||
| samples of a frame in 4:4:4:4 color format</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>metadata: data describing various characteristics related to a bi | ||||
| tstream wihtout directly affecting decoding process of it.</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>partitioning: a division of a set into subsets such that each ele | ||||
| ment of the set is in exactly one of the subsets</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>prediction: an embodiment of the prediction process</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>prediction process: use of a predictor to provide an estimate of | ||||
| the data element currently being decoded</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.2"> | |||
| <t>predictor: a combination of specified values or previously decode | <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" form | |||
| d data elements used in the decoding process of subsequent data elements</t> | at="counter" sectionFormat="of" target="section-2"/>. <xref derivedContent="" f | |||
| ormat="title" sectionFormat="of" target="name-terms">Terms</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.2.2"> | ||||
| <li pn="section-toc.1-1.2.2.1"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1">< | ||||
| xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2. | ||||
| 1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-te | ||||
| rms-and-definitions">Terms and Definitions</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2.2.2"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.2.1">< | ||||
| xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2. | ||||
| 2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-ab | ||||
| breviated-terms">Abbreviated Terms</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.3"> | |||
| <t>primitive bitstream unit (PBU): a data structure to construct an | <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" form | |||
| access unit with frame and metadata</t> | at="counter" sectionFormat="of" target="section-3"/>. <xref derivedContent="" f | |||
| ormat="title" sectionFormat="of" target="name-conventions-used-in-this-do">Conve | ||||
| ntions Used in This Document</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.3.2"> | ||||
| <li pn="section-toc.1-1.3.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent= | ||||
| "3.1" format="counter" sectionFormat="of" target="section-3.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-general">General</xref | ||||
| ></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.3.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent= | ||||
| "3.2" format="counter" sectionFormat="of" target="section-3.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-operators">Operators</ | ||||
| xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.3.2.2.2"> | ||||
| <li pn="section-toc.1-1.3.2.2.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.3.2.2.2.1.1"><xref derived | ||||
| Content="3.2.1" format="counter" sectionFormat="of" target="section-3.2.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-arithmetic | ||||
| -operators">Arithmetic Operators</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.3.2.2.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.3.2.2.2.2.1"><xref derived | ||||
| Content="3.2.2" format="counter" sectionFormat="of" target="section-3.2.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-bitwise-op | ||||
| erators">Bitwise Operators</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.3.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent= | ||||
| "3.3" format="counter" sectionFormat="of" target="section-3.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-range-notation">Range | ||||
| Notation</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.3.2.3.2"> | ||||
| <li pn="section-toc.1-1.3.2.3.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.3.2.3.2.1.1"><xref derived | ||||
| Content="3.3.1" format="counter" sectionFormat="of" target="section-3.3.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-order-of-o | ||||
| perations-precede">Order of Operations Precedence</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.3.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.3.2.4.1"><xref derivedContent= | ||||
| "3.4" format="counter" sectionFormat="of" target="section-3.4"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-variables-syntax-eleme | ||||
| nts-a">Variables, Syntax Elements, and Tables</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.3.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.3.2.5.1"><xref derivedContent= | ||||
| "3.5" format="counter" sectionFormat="of" target="section-3.5"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-processes">Processes</ | ||||
| xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.4"> | |||
| <t>profile: a specified subset of the syntax of this document</t> | <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-formats-and-processes-used-">Forma | ||||
| ts and Processes Used in This Document</xref></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-bitstream-formats">Bit | ||||
| stream Formats</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-source-decoded-and-out | ||||
| put-f">Source, Decoded, and Output Frame Formats</xref></t> | ||||
| </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-partitioning-of-a-fram | ||||
| e">Partitioning of a Frame</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.4.2.3.2"> | ||||
| <li pn="section-toc.1-1.4.2.3.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.3.2.1.1"><xref derived | ||||
| Content="4.3.1" format="counter" sectionFormat="of" target="section-4.3.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-partitioni | ||||
| ng-of-a-frame-int">Partitioning of a Frame into Tiles</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.3.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.3.2.2.1"><xref derived | ||||
| Content="4.3.2" format="counter" sectionFormat="of" target="section-4.3.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-spatial-or | ||||
| -component-wise-p">Spatial or Component-Wise Partitioning</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </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-scanning-processes">Sc | ||||
| anning Processes</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.4.2.4.2"> | ||||
| <li pn="section-toc.1-1.4.2.4.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.4.2.1.1"><xref derived | ||||
| Content="4.4.1" format="counter" sectionFormat="of" target="section-4.4.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-zig-zag-sc | ||||
| an">Zig-Zag Scan</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.4.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.4.2.2.1"><xref derived | ||||
| Content="4.4.2" format="counter" sectionFormat="of" target="section-4.4.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-inverse-sc | ||||
| an">Inverse Scan</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.5"> | |||
| <t>quantization parameter (QP): a variable used by the decoding proc | <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" form | |||
| ess for scaling value of transform coefficients</t> | at="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" f | |||
| ormat="title" sectionFormat="of" target="name-syntax-and-semantics">Syntax and S | ||||
| emantics</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-method-of-specifying-s | ||||
| yntax">Method of Specifying Syntax</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-syntax-functions-and-d | ||||
| escri">Syntax Functions and Descriptors</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.5.2.2.2"> | ||||
| <li pn="section-toc.1-1.5.2.2.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.2.2.1.1"><xref derived | ||||
| Content="5.2.1" format="counter" sectionFormat="of" target="section-5.2.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-byte_align | ||||
| ed">byte_aligned()</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.2.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.2.2.2.1"><xref derived | ||||
| Content="5.2.2" format="counter" sectionFormat="of" target="section-5.2.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-more_data_ | ||||
| in_tile">more_data_in_tile()</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.2.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.2.2.3.1"><xref derived | ||||
| Content="5.2.3" format="counter" sectionFormat="of" target="section-5.2.3"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-next_bitsn | ||||
| ">next_bits(n)</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.2.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.2.2.4.1"><xref derived | ||||
| Content="5.2.4" format="counter" sectionFormat="of" target="section-5.2.4"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-read_bitsn | ||||
| ">read_bits(n)</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.2.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.2.2.5.1"><xref derived | ||||
| Content="5.2.5" format="counter" sectionFormat="of" target="section-5.2.5"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-syntax-ele | ||||
| ment-processing-f">Syntax Element Processing Functions</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </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-list-of-syntax-and-sem | ||||
| antic">List of Syntax and Semantics</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.5.2.3.2"> | ||||
| <li pn="section-toc.1-1.5.2.3.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.1.1"><xref derived | ||||
| Content="5.3.1" format="counter" sectionFormat="of" target="section-5.3.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-access-uni | ||||
| t">Access Unit</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.2.1"><xref derived | ||||
| Content="5.3.2" format="counter" sectionFormat="of" target="section-5.3.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-primitive- | ||||
| bitstream-unit">Primitive Bitstream Unit</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.3.1"><xref derived | ||||
| Content="5.3.3" format="counter" sectionFormat="of" target="section-5.3.3"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-primitive- | ||||
| bitstream-unit-he">Primitive Bitstream Unit Header</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.4.1"><xref derived | ||||
| Content="5.3.4" format="counter" sectionFormat="of" target="section-5.3.4"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-frame">Fra | ||||
| me</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.5.1"><xref derived | ||||
| Content="5.3.5" format="counter" sectionFormat="of" target="section-5.3.5"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-frame-head | ||||
| er">Frame Header</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.6"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.6.1"><xref derived | ||||
| Content="5.3.6" format="counter" sectionFormat="of" target="section-5.3.6"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-frame-info | ||||
| rmation">Frame Information</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.7"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.7.1"><xref derived | ||||
| Content="5.3.7" format="counter" sectionFormat="of" target="section-5.3.7"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-quantizati | ||||
| on-matrix">Quantization Matrix</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.8"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.8.1"><xref derived | ||||
| Content="5.3.8" format="counter" sectionFormat="of" target="section-5.3.8"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-tile-info" | ||||
| >Tile Info</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.9"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.9.1"><xref derived | ||||
| Content="5.3.9" format="counter" sectionFormat="of" target="section-5.3.9"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-access-uni | ||||
| t-information">Access Unit Information</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.10"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.10.1"><xref derive | ||||
| dContent="5.3.10" format="counter" sectionFormat="of" target="section-5.3.10"/>. | ||||
| <xref derivedContent="" format="title" sectionFormat="of" target="name-metadata | ||||
| ">Metadata</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.11"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.11.1"><xref derive | ||||
| dContent="5.3.11" format="counter" sectionFormat="of" target="section-5.3.11"/>. | ||||
| <xref derivedContent="" format="title" sectionFormat="of" target="name-filler"> | ||||
| Filler</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.12"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.12.1"><xref derive | ||||
| dContent="5.3.12" format="counter" sectionFormat="of" target="section-5.3.12"/>. | ||||
| <xref derivedContent="" format="title" sectionFormat="of" target="name-tile">Ti | ||||
| le</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.13"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.13.1"><xref derive | ||||
| dContent="5.3.13" format="counter" sectionFormat="of" target="section-5.3.13"/>. | ||||
| <xref derivedContent="" format="title" sectionFormat="of" target="name-tile-hea | ||||
| der">Tile Header</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.14"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.14.1"><xref derive | ||||
| dContent="5.3.14" format="counter" sectionFormat="of" target="section-5.3.14"/>. | ||||
| <xref derivedContent="" format="title" sectionFormat="of" target="name-tile-dat | ||||
| a">Tile Data</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.15"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.15.1"><xref derive | ||||
| dContent="5.3.15" format="counter" sectionFormat="of" target="section-5.3.15"/>. | ||||
| <xref derivedContent="" format="title" sectionFormat="of" target="name-macroblo | ||||
| ck-layer">Macroblock Layer</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.16"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.16.1"><xref derive | ||||
| dContent="5.3.16" format="counter" sectionFormat="of" target="section-5.3.16"/>. | ||||
| <xref derivedContent="" format="title" sectionFormat="of" target="name-ac-coeff | ||||
| icient-coding">AC Coefficient Coding</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.17"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.17.1"><xref derive | ||||
| dContent="5.3.17" format="counter" sectionFormat="of" target="section-5.3.17"/>. | ||||
| <xref derivedContent="" format="title" sectionFormat="of" target="name-byte-ali | ||||
| gnment">Byte Alignment</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.6"> | |||
| <t>raster scan: a mapping of a rectangular two-dimensional pattern t | <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" form | |||
| o a one-dimensional pattern such that the first entries in the one-dimensional p | at="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" f | |||
| attern are from the top row of the two-dimensional pattern scanned from left to | ormat="title" sectionFormat="of" target="name-decoding-process">Decoding Process | |||
| right, followed by the second, third, etc., rows of the pattern each scanned fro | </xref></t> | |||
| m left to right</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-mb-decoding-process">M | ||||
| B Decoding Process</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent= | ||||
| "6.2" format="counter" sectionFormat="of" target="section-6.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-block-reconstruction-p | ||||
| roces">Block Reconstruction Process</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent= | ||||
| "6.3" format="counter" sectionFormat="of" target="section-6.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-scaling-and-transforma | ||||
| tion-">Scaling and Transformation Process</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.6.2.3.2"> | ||||
| <li pn="section-toc.1-1.6.2.3.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.3.2.1.1"><xref derived | ||||
| Content="6.3.1" format="counter" sectionFormat="of" target="section-6.3.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-scaling-pr | ||||
| ocess-for-transfo">Scaling Process for Transform Coefficients</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6.2.3.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.3.2.2.1"><xref derived | ||||
| Content="6.3.2" format="counter" sectionFormat="of" target="section-6.3.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-process-fo | ||||
| r-scaled-transfor">Process for Scaled Transform Coefficients</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.7"> | |||
| <t>raw bitstream: an encapsulation of a sequence of access units whe | <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" form | |||
| re a field indicating the size of an access unit precedes each access unit as de | at="counter" sectionFormat="of" target="section-7"/>. <xref derivedContent="" f | |||
| fined in <xref target="appendix-rawbitstream"/></t> | ormat="title" sectionFormat="of" target="name-parsing-process">Parsing Process</ | |||
| xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.7.2"> | ||||
| <li pn="section-toc.1-1.7.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent= | ||||
| "7.1" format="counter" sectionFormat="of" target="section-7.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-process-for-syntax-ele | ||||
| ment-">Process for Syntax Element Type h(v)</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.7.2.1.2"> | ||||
| <li pn="section-toc.1-1.7.2.1.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.1.2.1.1"><xref derived | ||||
| Content="7.1.1" format="counter" sectionFormat="of" target="section-7.1.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-process-fo | ||||
| r-abs_dc_coeff_di">Process for abs_dc_coeff_diff</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.1.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.1.2.2.1"><xref derived | ||||
| Content="7.1.2" format="counter" sectionFormat="of" target="section-7.1.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-process-fo | ||||
| r-coeff_zero_run">Process for coeff_zero_run</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.1.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.1.2.3.1"><xref derived | ||||
| Content="7.1.3" format="counter" sectionFormat="of" target="section-7.1.3"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-process-fo | ||||
| r-abs_ac_coeff_mi">Process for abs_ac_coeff_minus1</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.1.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.1.2.4.1"><xref derived | ||||
| Content="7.1.4" format="counter" sectionFormat="of" target="section-7.1.4"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-process-fo | ||||
| r-variable-length">Process for Variable-Length Codes</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent= | ||||
| "7.2" format="counter" sectionFormat="of" target="section-7.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-codeword-generation-pr | ||||
| ocess">Codeword Generation Process for h(v) (Informative)</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.7.2.2.2"> | ||||
| <li pn="section-toc.1-1.7.2.2.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.2.2.1.1"><xref derived | ||||
| Content="7.2.1" format="counter" sectionFormat="of" target="section-7.2.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-process-fo | ||||
| r-abs_dc_coeff_dif">Process for abs_dc_coeff_diff</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.2.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.2.2.2.1"><xref derived | ||||
| Content="7.2.2" format="counter" sectionFormat="of" target="section-7.2.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-process-fo | ||||
| r-coeff_zero_run-2">Process for coeff_zero_run</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.2.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.2.2.3.1"><xref derived | ||||
| Content="7.2.3" format="counter" sectionFormat="of" target="section-7.2.3"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-process-fo | ||||
| r-abs_ac_coeff_min">Process for abs_ac_coeff_minus1</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7.2.2.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.2.2.4.1"><xref derived | ||||
| Content="7.2.4" format="counter" sectionFormat="of" target="section-7.2.4"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-process-fo | ||||
| r-variable-length-">Process for Variable-Length Codes</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.8"> | |||
| <t>source: a term used to describe the video material or some of its | <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" form | |||
| attributes before encoding process</t> | at="counter" sectionFormat="of" target="section-8"/>. <xref derivedContent="" f | |||
| ormat="title" sectionFormat="of" target="name-metadata-information">Metadata Inf | ||||
| ormation</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.8.2"> | ||||
| <li pn="section-toc.1-1.8.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent= | ||||
| "8.1" format="counter" sectionFormat="of" target="section-8.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-metadata-payload">Meta | ||||
| data Payload</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent= | ||||
| "8.2" format="counter" sectionFormat="of" target="section-8.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-list-of-metadata-synta | ||||
| x-and">List of Metadata Syntax and Semantics</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.8.2.2.2"> | ||||
| <li pn="section-toc.1-1.8.2.2.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.2.2.1.1"><xref derived | ||||
| Content="8.2.1" format="counter" sectionFormat="of" target="section-8.2.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-filler-met | ||||
| adata">Filler Metadata</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.2.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.2.2.2.1"><xref derived | ||||
| Content="8.2.2" format="counter" sectionFormat="of" target="section-8.2.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-recommenda | ||||
| tion-itu-t-t35-me">Recommendation ITU-T T.35 Metadata</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.2.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.2.2.3.1"><xref derived | ||||
| Content="8.2.3" format="counter" sectionFormat="of" target="section-8.2.3"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-mastering- | ||||
| display-color-vol">Mastering Display Color Volume Metadata</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.2.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.2.2.4.1"><xref derived | ||||
| Content="8.2.4" format="counter" sectionFormat="of" target="section-8.2.4"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-content-li | ||||
| ght-level-informa">Content Light-Level Information Metadata</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.2.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.2.2.5.1"><xref derived | ||||
| Content="8.2.5" format="counter" sectionFormat="of" target="section-8.2.5"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-user-defin | ||||
| ed-metadata">User-Defined Metadata</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.2.2.6"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.2.2.6.1"><xref derived | ||||
| Content="8.2.6" format="counter" sectionFormat="of" target="section-8.2.6"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-undefined- | ||||
| metadata">Undefined Metadata</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.9"> | |||
| <t>syntax element: an element of data represented in the bitstream</ | <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" form | |||
| t> | at="counter" sectionFormat="of" target="section-9"/>. <xref derivedContent="" f | |||
| ormat="title" sectionFormat="of" target="name-profiles-levels-and-bands">Profile | ||||
| s, Levels, and Bands</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.9.2"> | ||||
| <li pn="section-toc.1-1.9.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent= | ||||
| "9.1" format="counter" sectionFormat="of" target="section-9.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-overview-of-profiles-l | ||||
| evels">Overview of Profiles, Levels, and Bands</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent= | ||||
| "9.2" format="counter" sectionFormat="of" target="section-9.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-requirements-on-video- | ||||
| decod">Requirements on Video Decoder Capability</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.3.1"><xref derivedContent= | ||||
| "9.3" format="counter" sectionFormat="of" target="section-9.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-profiles">Profiles</xr | ||||
| ef></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.9.2.3.2"> | ||||
| <li pn="section-toc.1-1.9.2.3.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.3.2.1.1"><xref derived | ||||
| Content="9.3.1" format="counter" sectionFormat="of" target="section-9.3.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-general-3" | ||||
| >General</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.3.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.3.2.2.1"><xref derived | ||||
| Content="9.3.2" format="counter" sectionFormat="of" target="section-9.3.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-422-10-pro | ||||
| file">422-10 Profile</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.3.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.3.2.3.1"><xref derived | ||||
| Content="9.3.3" format="counter" sectionFormat="of" target="section-9.3.3"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-422-12-pro | ||||
| file">422-12 Profile</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.3.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.3.2.4.1"><xref derived | ||||
| Content="9.3.4" format="counter" sectionFormat="of" target="section-9.3.4"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-444-10-pro | ||||
| file">444-10 Profile</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.3.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.3.2.5.1"><xref derived | ||||
| Content="9.3.5" format="counter" sectionFormat="of" target="section-9.3.5"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-444-12-pro | ||||
| file">444-12 Profile</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.3.2.6"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.3.2.6.1"><xref derived | ||||
| Content="9.3.6" format="counter" sectionFormat="of" target="section-9.3.6"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-4444-10-pr | ||||
| ofile">4444-10 Profile</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.3.2.7"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.3.2.7.1"><xref derived | ||||
| Content="9.3.7" format="counter" sectionFormat="of" target="section-9.3.7"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-4444-12-pr | ||||
| ofile">4444-12 Profile</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.3.2.8"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.3.2.8.1"><xref derived | ||||
| Content="9.3.8" format="counter" sectionFormat="of" target="section-9.3.8"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-400-10-pro | ||||
| file">400-10 Profile</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.4.1"><xref derivedContent= | ||||
| "9.4" format="counter" sectionFormat="of" target="section-9.4"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-levels-and-bands">Leve | ||||
| ls and Bands</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.9.2.4.2"> | ||||
| <li pn="section-toc.1-1.9.2.4.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.4.2.1.1"><xref derived | ||||
| Content="9.4.1" format="counter" sectionFormat="of" target="section-9.4.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-general-4" | ||||
| >General</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.4.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.4.2.2.1"><xref derived | ||||
| Content="9.4.2" format="counter" sectionFormat="of" target="section-9.4.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-limits-of- | ||||
| levels-and-bands">Limits of Levels and Bands</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.10"> | |||
| <t>syntax structure: zero or more syntax elements present together i | <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" fo | |||
| n a bitstream in a specified order</t> | rmat="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" | |||
| format="title" sectionFormat="of" target="name-security-considerations">Securit | ||||
| y Considerations</xref></t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.11"> | |||
| <t>tile: a rectangular region of MBs within a particular tile column | <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" fo | |||
| and a particular tile row in a frame</t> | rmat="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" | |||
| format="title" sectionFormat="of" target="name-iana-considerations">IANA Consid | ||||
| erations</xref></t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.12"> | |||
| <t>tile column: a rectangular region of MBs having a height equal to | <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="12" fo | |||
| the height of the frame and width specified by syntax elements in the frame hea | rmat="counter" sectionFormat="of" target="section-12"/>. <xref derivedContent="" | |||
| der</t> | 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.12.2"> | ||||
| <li pn="section-toc.1-1.12.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.12.2.1.1"><xref derivedContent | ||||
| ="12.1" format="counter" sectionFormat="of" target="section-12.1"/>. <xref deri | ||||
| vedContent="" format="title" sectionFormat="of" target="name-normative-reference | ||||
| s">Normative References</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.12.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.12.2.2.1"><xref derivedContent | ||||
| ="12.2" format="counter" sectionFormat="of" target="section-12.2"/>. <xref deri | ||||
| vedContent="" format="title" sectionFormat="of" target="name-informative-referen | ||||
| ces">Informative References</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.13"> | |||
| <t>tile row: a rectangular region of MBs having a height specified b | <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="Append | |||
| y syntax elements in the frame header and a width equal to the width of the fram | ix A" format="default" sectionFormat="of" target="section-appendix.a"/>. <xref | |||
| e</t> | derivedContent="" format="title" sectionFormat="of" target="name-raw-bitstream-f | |||
| ormat">Raw Bitstream Format</xref></t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.14"> | |||
| <t>tile scan: a specific sequential ordering of MBs partitioning a f | <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="Append | |||
| rame in which the MBs are ordered consecutively in MB raster scan in a tile and | ix B" format="default" sectionFormat="of" target="section-appendix.b"/>. <xref | |||
| the tiles in a frame are ordered consecutively in a raster scan of the tiles of | derivedContent="" format="title" sectionFormat="of" target="name-apv-implementat | |||
| the frame</t> | ions">APV Implementations</xref></t> | |||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.14.2"> | ||||
| <li pn="section-toc.1-1.14.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.14.2.1.1"><xref derivedContent | ||||
| ="B.1" format="counter" sectionFormat="of" target="section-appendix.b.1"/>. <xr | ||||
| ef derivedContent="" format="title" sectionFormat="of" target="name-openapv-open | ||||
| -source-project">OpenAPV Open Source Project</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.14.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.14.2.2.1"><xref derivedContent | ||||
| ="B.2" format="counter" sectionFormat="of" target="section-appendix.b.2"/>. <xr | ||||
| ef derivedContent="" format="title" sectionFormat="of" target="name-android-open | ||||
| -source-project">Android Open Source Project</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.14.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.14.2.3.1"><xref derivedContent | ||||
| ="B.3" format="counter" sectionFormat="of" target="section-appendix.b.3"/>. <xr | ||||
| ef derivedContent="" format="title" sectionFormat="of" target="name-ffmpeg-open- | ||||
| source-project">FFmpeg Open Source Project</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-toc.1-1.15"> | |||
| <t>transform coefficient: a scalar quantity, considered to be in a f | <t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="" form | |||
| requency domain, that is associated with a particular one-dimensional or two-dim | at="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent=" | |||
| ensional index</t> | " format="title" sectionFormat="of" target="name-authors-addresses">Authors' Add | |||
| resses</xref></t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="abbreviated-terms"> | </toc> | |||
| <name>Abbreviated terms</name> | </front> | |||
| <ul spacing="normal"> | <middle> | |||
| <li> | <section anchor="introduction" numbered="true" removeInRFC="false" toc="incl | |||
| <t>I: intra</t> | ude" pn="section-1"> | |||
| </li> | <name slugifiedName="name-introduction">Introduction</name> | |||
| <li> | <t indent="0" pn="section-1-1">This document defines the bitstream format | |||
| <t>LSB: least significant bit</t> | and decoding process for the Advanced Professional Video (APV) codec. The APV c | |||
| </li> | odec is a professional video codec that was developed in response to the need fo | |||
| <li> | r professional-level, high-quality video recording and post production. The prim | |||
| <t>MSB: most significant bit</t> | ary purpose of the APV codec is for use in professional video recording and edit | |||
| </li> | ing workflows for various types of content. This specification is neither the p | |||
| <li> | roduct of the IETF nor a consensus view of the community.</t> | |||
| <t>RGB: Red, Green and Blue</t> | <t indent="0" pn="section-1-2">The APV codec supports the following featur | |||
| </li> | es:</t> | |||
| </ul> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1-3 | |||
| "> | ||||
| <li pn="section-1-3.1"> | ||||
| <t indent="0" pn="section-1-3.1.1">Perceptually lossless video quality | ||||
| that is close to the original, uncompressed quality;</t> | ||||
| </li> | ||||
| <li pn="section-1-3.2"> | ||||
| <t indent="0" pn="section-1-3.2.1">Low complexity and high throughput | ||||
| intra frame only coding without inter frame coding;</t> | ||||
| </li> | ||||
| <li pn="section-1-3.3"> | ||||
| <t indent="0" pn="section-1-3.3.1">Intra frame coding without predicti | ||||
| on between pixel values but with prediction between transformed values for low d | ||||
| elay encoding;</t> | ||||
| </li> | ||||
| <li pn="section-1-3.4"> | ||||
| <t indent="0" pn="section-1-3.4.1">High bit rates of up to a few Gbps | ||||
| for 2K, 4K, and 8K resolution content, enabled by a lightweight entropy coding s | ||||
| cheme;</t> | ||||
| </li> | ||||
| <li pn="section-1-3.5"> | ||||
| <t indent="0" pn="section-1-3.5.1">Frame tiling for immersive content | ||||
| and for enabling parallel encoding and decoding;</t> | ||||
| </li> | ||||
| <li pn="section-1-3.6"> | ||||
| <t indent="0" pn="section-1-3.6.1">Various chroma sampling formats fro | ||||
| m 4:0:0 to 4:4:4:4, and bit depths from 10 to 16 (Note: Only the profiles suppor | ||||
| ting 10 bits and 12 bits are currently defined);</t> | ||||
| </li> | ||||
| <li pn="section-1-3.7"> | ||||
| <t indent="0" pn="section-1-3.7.1">The ability to decode and re-encode | ||||
| multiple times without severe visual quality degradation; and</t> | ||||
| </li> | ||||
| <li pn="section-1-3.8"> | ||||
| <t indent="0" pn="section-1-3.8.1">Various metadata including HDR10/10 | ||||
| + and user-defined formats.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="terms" numbered="true" removeInRFC="false" toc="include" pn | ||||
| ="section-2"> | ||||
| <name slugifiedName="name-terms">Terms</name> | ||||
| <section anchor="terms-and-definitions" numbered="true" removeInRFC="false | ||||
| " toc="include" pn="section-2.1"> | ||||
| <name slugifiedName="name-terms-and-definitions">Terms and Definitions</ | ||||
| name> | ||||
| <dl spacing="normal" newline="false" indent="3" pn="section-2.1-1"> | ||||
| <dt pn="section-2.1-1.1">access unit (AU):</dt> | ||||
| <dd pn="section-2.1-1.2">a collection of primitive bitstream | ||||
| units (PBU) including various types of frames, metadata, filler, and | ||||
| access unit information, associated with a specific time</dd> | ||||
| <dt pn="section-2.1-1.3">band:</dt> | ||||
| <dd pn="section-2.1-1.4">a defined set of constraints on the value of | ||||
| the | ||||
| maximum coded data rate of each level</dd> | ||||
| <dt pn="section-2.1-1.5">block:</dt> | ||||
| <dd pn="section-2.1-1.6">MxN (M-column by N-row) array of samples, or | ||||
| an MxN array of transform coefficients</dd> | ||||
| <dt pn="section-2.1-1.7">byte-aligned:</dt> | ||||
| <dd pn="section-2.1-1.8">a position in a bitstream that is an | ||||
| integer multiple of 8 bits from the position of the first bit in the | ||||
| bitstream</dd> | ||||
| <dt pn="section-2.1-1.9">chroma:</dt> | ||||
| <dd pn="section-2.1-1.10">a sample array or single sample representing | ||||
| one | ||||
| of the two color difference signals related to the primary colors, | ||||
| represented by the symbols Cb and Cr in 4:2:2 or 4:4:4 color | ||||
| format</dd> | ||||
| <dt pn="section-2.1-1.11">coded frame:</dt> | ||||
| <dd pn="section-2.1-1.12">a coded representation of a frame | ||||
| containing all macroblocks of the frame</dd> | ||||
| <dt pn="section-2.1-1.13">coded representation:</dt> | ||||
| <dd pn="section-2.1-1.14">a data element as represented in its coded f | ||||
| orm</dd> | ||||
| <dt pn="section-2.1-1.15">component:</dt> | ||||
| <dd pn="section-2.1-1.16">an array or a single sample from one of the | ||||
| three arrays (luma and two chroma) that compose a frame in 4:2:2, or | ||||
| 4:4:4 color format, or an array or a single sample from an array | ||||
| that compose a frame in 4:0:0 color format, or an array or a single | ||||
| sample from one of the four arrays that compose a frame in 4:4:4:4 | ||||
| color format.</dd> | ||||
| <dt pn="section-2.1-1.17">decoded frame:</dt> | ||||
| <dd pn="section-2.1-1.18">a frame derived by decoding a coded frame</d | ||||
| d> | ||||
| <dt pn="section-2.1-1.19">decoder:</dt> | ||||
| <dd pn="section-2.1-1.20">an embodiment of a decoding process</dd> | ||||
| <dt pn="section-2.1-1.21">decoding process:</dt> | ||||
| <dd pn="section-2.1-1.22">a process specified that reads a | ||||
| bitstream and derives decoded frames from it</dd> | ||||
| <dt pn="section-2.1-1.23">encoder:</dt> | ||||
| <dd pn="section-2.1-1.24">an embodiment of an encoding process</dd> | ||||
| <dt pn="section-2.1-1.25">encoding process:</dt> | ||||
| <dd pn="section-2.1-1.26">a process that produces a bitstream conformi | ||||
| ng to this document</dd> | ||||
| <dt pn="section-2.1-1.27">flag:</dt> | ||||
| <dd pn="section-2.1-1.28">a variable or single-bit syntax element that | ||||
| can take one of the two possible values: 0 and 1</dd> | ||||
| <dt pn="section-2.1-1.29">frame:</dt> | ||||
| <dd pn="section-2.1-1.30">an array of luma samples and two correspondi | ||||
| ng arrays of chroma samples in 4:2:2 and 4:4:4 color format, or an array of samp | ||||
| les in 4:0:0 color format, or four arrays of samples in 4:4:4:4 color format</dd | ||||
| > | ||||
| <dt pn="section-2.1-1.31">level:</dt> | ||||
| <dd pn="section-2.1-1.32">a defined set of constraints on the values t | ||||
| hat are taken by the syntax elements and variables of this document, or the valu | ||||
| e of a transform coefficient prior to scaling</dd> | ||||
| <dt pn="section-2.1-1.33">luma:</dt> | ||||
| <dd pn="section-2.1-1.34">a sample array or single sample representing | ||||
| the monochrome signal related to the primary colors, represented by the symbol | ||||
| or subscript Y or L</dd> | ||||
| <dt pn="section-2.1-1.35">macroblock (MB):</dt> | ||||
| <dd pn="section-2.1-1.36">a square block of luma samples and two corre | ||||
| sponding blocks of chroma samples of a frame in 4:2:2 or 4:4:4 color format, or | ||||
| a square block of samples of a frame in 4:0:0 color format, or four square block | ||||
| s of samples of a frame in 4:4:4:4 color format</dd> | ||||
| <dt pn="section-2.1-1.37">metadata:</dt> | ||||
| <dd pn="section-2.1-1.38">data describing various characteristics rela | ||||
| ted to a bitstream without directly affecting the decoding process of it.</dd> | ||||
| <dt pn="section-2.1-1.39">partitioning:</dt> | ||||
| <dd pn="section-2.1-1.40">a division of a set into subsets such that e | ||||
| ach element of the set is in exactly one of the subsets</dd> | ||||
| <dt pn="section-2.1-1.41">prediction:</dt> | ||||
| <dd pn="section-2.1-1.42">an embodiment of the prediction process</dd> | ||||
| <dt pn="section-2.1-1.43">prediction process:</dt> | ||||
| <dd pn="section-2.1-1.44">use of a predictor to provide an estimate of | ||||
| the data element currently being decoded</dd> | ||||
| <dt pn="section-2.1-1.45">predictor:</dt> | ||||
| <dd pn="section-2.1-1.46">a combination of specified values or previou | ||||
| sly decoded data elements used in the decoding process of subsequent data elemen | ||||
| ts</dd> | ||||
| <dt pn="section-2.1-1.47">primitive bitstream unit (PBU):</dt> | ||||
| <dd pn="section-2.1-1.48">a data structure to construct an access unit | ||||
| with frame and metadata</dd> | ||||
| <dt pn="section-2.1-1.49">profile:</dt> | ||||
| <dd pn="section-2.1-1.50">a specified subset of the syntax of this doc | ||||
| ument</dd> | ||||
| <dt pn="section-2.1-1.51">quantization parameter (QP):</dt> | ||||
| <dd pn="section-2.1-1.52">a variable used by the decoding process for | ||||
| the scaling value of transform coefficients</dd> | ||||
| <dt pn="section-2.1-1.53">raster scan:</dt> | ||||
| <dd pn="section-2.1-1.54">a mapping of a rectangular two-dimensional p | ||||
| attern to a one-dimensional pattern such that the first entries in the one-dimen | ||||
| sional pattern are from the top row of the two-dimensional pattern scanned from | ||||
| left to right, followed by the second, third, etc., rows of the pattern each sca | ||||
| nned from left to right</dd> | ||||
| <dt pn="section-2.1-1.55">raw bitstream:</dt> | ||||
| <dd pn="section-2.1-1.56">an encapsulation of a sequence of access uni | ||||
| ts where a field indicating the size of an access unit precedes each access unit | ||||
| as defined in <xref target="appendix-rawbitstream" format="default" sectionForm | ||||
| at="of" derivedContent="Appendix A"/></dd> | ||||
| <dt pn="section-2.1-1.57">source:</dt> | ||||
| <dd pn="section-2.1-1.58">a term used to describe the video material o | ||||
| r some of its attributes before the encoding process</dd> | ||||
| <dt pn="section-2.1-1.59">syntax element:</dt> | ||||
| <dd pn="section-2.1-1.60">an element of data represented in the bitstr | ||||
| eam</dd> | ||||
| <dt pn="section-2.1-1.61">syntax structure:</dt> | ||||
| <dd pn="section-2.1-1.62">zero or more syntax elements present togethe | ||||
| r in a bitstream in a specified order</dd> | ||||
| <dt pn="section-2.1-1.63">tile:</dt> | ||||
| <dd pn="section-2.1-1.64">a rectangular region of MBs within a particu | ||||
| lar tile column and a particular tile row in a frame</dd> | ||||
| <dt pn="section-2.1-1.65">tile column:</dt> | ||||
| <dd pn="section-2.1-1.66">a rectangular region of MBs having a height | ||||
| equal to the height of the frame and width specified by syntax elements in the f | ||||
| rame header</dd> | ||||
| <dt pn="section-2.1-1.67">tile row:</dt> | ||||
| <dd pn="section-2.1-1.68">a rectangular region of MBs having a height | ||||
| specified by syntax elements in the frame header and a width equal to the width | ||||
| of the frame</dd> | ||||
| <dt pn="section-2.1-1.69">tile scan:</dt> | ||||
| <dd pn="section-2.1-1.70">a specific sequential ordering of MBs partit | ||||
| ioning a frame in which the MBs are ordered consecutively in MB raster scan in a | ||||
| tile and the tiles in a frame are ordered consecutively in a raster scan of the | ||||
| tiles of the frame</dd> | ||||
| <dt pn="section-2.1-1.71">transform coefficient:</dt> | ||||
| <dd pn="section-2.1-1.72">a scalar quantity, considered to be in a fre | ||||
| quency domain, that is associated with a particular one-dimensional or two-dimen | ||||
| sional index</dd> | ||||
| </dl> | ||||
| </section> | ||||
| <section anchor="abbreviated-terms" numbered="true" removeInRFC="false" to | ||||
| c="include" pn="section-2.2"> | ||||
| <name slugifiedName="name-abbreviated-terms">Abbreviated Terms</name> | ||||
| <dl spacing="normal" newline="false" indent="3" pn="section-2.2-1"> | ||||
| <dt pn="section-2.2-1.1">LSB:</dt> | ||||
| <dd pn="section-2.2-1.2">least significant bit</dd> | ||||
| <dt pn="section-2.2-1.3">MSB:</dt> | ||||
| <dd pn="section-2.2-1.4">most significant bit</dd> | ||||
| <dt pn="section-2.2-1.5">RGB:</dt> | ||||
| <dd pn="section-2.2-1.6">Red, Green and Blue</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="conventions"> | <section anchor="conventions" numbered="true" removeInRFC="false" toc="inclu | |||
| <name>Conventions used in this document</name> | de" pn="section-3"> | |||
| <section anchor="general"> | <name slugifiedName="name-conventions-used-in-this-do">Conventions Used in | |||
| <name>General</name> | This Document</name> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", " | <section anchor="general" numbered="true" removeInRFC="false" toc="include | |||
| SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTION | " pn="section-3.1"> | |||
| AL" in this document are to be interpreted as described in BCP 14 <xref target=" | <name slugifiedName="name-general">General</name> | |||
| RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capi | <t indent="0" pn="section-3.1-1"> | |||
| tals, as shown here.</t> | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | ||||
| ", | ||||
| "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
| "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
| be | ||||
| interpreted as described in BCP 14 <xref target="RFC2119" format="default" s | ||||
| ectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="defa | ||||
| ult" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they app | ||||
| ear in all capitals, as | ||||
| shown here. | ||||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="operators"> | <section anchor="operators" numbered="true" removeInRFC="false" toc="inclu | |||
| <name>Operators</name> | de" pn="section-3.2"> | |||
| <t>The operators and the order of precedence are the same as used in the | <name slugifiedName="name-operators">Operators</name> | |||
| C programming language <xref target="ISO9899"/>, with the exception of the oper | <t indent="0" pn="section-3.2-1">The operators and the order of preceden | |||
| ators described in the <xref target="arith-operator"/> and <xref target="bit-ope | ce are the same as used in the C programming language <xref target="ISO9899" for | |||
| rator"/> following widely used industry practices for video codecs.</t> | mat="default" sectionFormat="of" derivedContent="ISO9899"/>. However, there are | |||
| <section anchor="arith-operator"> | some exceptions for the operators described in the <xref target="arith-operator" | |||
| <name>Arithmetic operators</name> | format="default" sectionFormat="of" derivedContent="Section 3.2.1"/> and <xref | |||
| <ul spacing="normal"> | target="bit-operator" format="default" sectionFormat="of" derivedContent="Sectio | |||
| <li> | n 3.2.2"/>, which follows widely used industry practices for video codecs.</t> | |||
| <t>// : an integer division with rounding of the result toward zer | <section anchor="arith-operator" numbered="true" removeInRFC="false" toc | |||
| o. For example, 7//4 and -7//-4 are rounded to 1 and -7//4 and 7//-4 are rounded | ="include" pn="section-3.2.1"> | |||
| to -1</t> | <name slugifiedName="name-arithmetic-operators">Arithmetic Operators</ | |||
| </li> | name> | |||
| <li> | <dl spacing="normal" newline="true" indent="3" pn="section-3.2.1-1"> | |||
| <t>/ or div(x,y) : a division in mathematical equations where no t | <dt pn="section-3.2.1-1.1">//</dt> | |||
| runcation or rounding is intended</t> | <dd pn="section-3.2.1-1.2">an integer division with rounding of the | |||
| </li> | result toward | |||
| <li> | zero. For example, 7//4 and -7//-4 are rounded to 1 and -7//4 and | |||
| <t>min(x,y) : the minimum value of the values x and y</t> | 7//-4 are rounded to -1</dd> | |||
| </li> | <dt pn="section-3.2.1-1.3">/ or div(x,y)</dt> | |||
| <li> | <dd pn="section-3.2.1-1.4">a division in mathematical equations wher | |||
| <t>max(x,y) : the maximum value of the values x and y</t> | e no truncation or rounding is intended</dd> | |||
| </li> | <dt pn="section-3.2.1-1.5">min(x,y)</dt> | |||
| <li> | <dd pn="section-3.2.1-1.6">the minimum value of the values x and y</ | |||
| <t>ceil(x) : the smallest integer value that is larger than or equ | dd> | |||
| al to x</t> | <dt pn="section-3.2.1-1.7">max(x,y)</dt> | |||
| </li> | <dd pn="section-3.2.1-1.8">the maximum value of the values x and y</ | |||
| <li> | dd> | |||
| <t>clip(x,y,z) : clip(x,y,z)=max(x,min(z,y))</t> | <dt pn="section-3.2.1-1.9">ceil(x)</dt> | |||
| </li> | <dd pn="section-3.2.1-1.10">the smallest integer value that is large | |||
| <li> | r than or equal to x</dd> | |||
| <t>sum (i=x, y, f(i)) : a summation of f(i) with i taking all inte | <dt pn="section-3.2.1-1.11">clip(x,y,z)</dt> | |||
| ger values from x up to and including y</t> | <dd pn="section-3.2.1-1.12">clip(x,y,z)=max(x,min(z,y))</dd> | |||
| </li> | <dt pn="section-3.2.1-1.13">sum (i=x, y, f(i))</dt> | |||
| <li> | <dd pn="section-3.2.1-1.14">a summation of f(i) with i taking all in | |||
| <t>log2(x) : the base-2 logarithm of x</t> | teger values from x up to and including y</dd> | |||
| </li> | <dt pn="section-3.2.1-1.15">log2(x)</dt> | |||
| </ul> | <dd pn="section-3.2.1-1.16">the base-2 logarithm of x</dd> | |||
| </dl> | ||||
| </section> | </section> | |||
| <section anchor="bit-operator"> | <section anchor="bit-operator" numbered="true" removeInRFC="false" toc=" | |||
| <name>Bitwise operators</name> | include" pn="section-3.2.2"> | |||
| <ul spacing="normal"> | <name slugifiedName="name-bitwise-operators">Bitwise Operators</name> | |||
| <li> | <dl spacing="normal" newline="true" indent="3" pn="section-3.2.2-1"> | |||
| <t>& (bit-wise "and") : When operating on integer arguments, o | <dt pn="section-3.2.2-1.1">& (bitwise "and")</dt> | |||
| perates on a two's complement representation of the integer value. When operatin | <dd pn="section-3.2.2-1.2">When operating on integer arguments, oper | |||
| g on arguments with unequal bit depths, the bit depths are equalized by adding z | ates on a two's complement representation of the integer value. When operating o | |||
| eros in significant positions to the argument with lower bit depth.</t> | n arguments with unequal bit depths, the bit depths are equalized by adding zero | |||
| </li> | s in significant positions to the argument with lower bit depth.</dd> | |||
| <li> | <dt pn="section-3.2.2-1.3">| (bitwise "or")</dt> | |||
| <t>| (bit-wise "or") : When operating on integer arguments, operat | <dd pn="section-3.2.2-1.4">When operating on integer arguments, oper | |||
| es on a two's complement representation of the integer value. When operating on | ates on a two's complement representation of the integer value. When operating o | |||
| arguments with unequal bit depths, the bit depths are equalized by adding zeros | n arguments with unequal bit depths, the bit depths are equalized by adding zero | |||
| in significant positions to the argument with lower bit depth.</t> | s in significant positions to the argument with lower bit depth.</dd> | |||
| </li> | <dt pn="section-3.2.2-1.5">x >> y</dt> | |||
| <li> | <dd pn="section-3.2.2-1.6">arithmetic right shift of a two's complem | |||
| <t>x >> y : arithmetic right shift of a two's complement int | ent integer representation of x by y binary digits. This function is defined onl | |||
| eger representation of x by y binary digits. This function is defined only for n | y for non-negative integer values of y. Bits shifted into the most significant b | |||
| on-negative integer values of y. Bits shifted into the most significant bits (MS | its (MSBs) as a result of the right shift have a value equal to the MSB of x pri | |||
| Bs) as a result of the right shift have a value equal to the MSB of x prior to t | or to the shift operation.</dd> | |||
| he shift operation.</t> | <dt pn="section-3.2.2-1.7">x << y</dt> | |||
| </li> | <dd pn="section-3.2.2-1.8">arithmetic left shift of a two's compleme | |||
| <li> | nt integer representation of x by y binary digits. This function is defined only | |||
| <t>x << y : arithmetic left shift of a two's complement inte | for non-negative integer values of y. Bits shifted into the least significant b | |||
| ger representation of x by y binary digits. This function is defined only for no | its (LSBs) as a result of the left shift have a value equal to 0.</dd> | |||
| n-negative integer values of y. Bits shifted into the least significant bits (LS | </dl> | |||
| Bs) as a result of the left shift have a value equal to 0.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="range-notation"> | <section anchor="range-notation" numbered="true" removeInRFC="false" toc=" | |||
| <name>Range notation</name> | include" pn="section-3.3"> | |||
| <ul spacing="normal"> | <name slugifiedName="name-range-notation">Range Notation</name> | |||
| <li> | <dl spacing="normal" newline="true" indent="3" pn="section-3.3-1"> | |||
| <t>x = y..z</t> | <dt pn="section-3.3-1.1">x = y..z</dt> | |||
| </li> | <dd pn="section-3.3-1.2">x takes on integer values starting from y to | |||
| </ul> | z, inclusive, with x, y, and z being integer numbers and z being greater than y. | |||
| <ul empty="true"> | </dd> | |||
| <li> | </dl> | |||
| <t>x takes on integer values starting from y to z, inclusive, with x | <section anchor="order-of-operations-precedence" numbered="true" removeI | |||
| , y, and z being integer numbers and z being greater than y.</t> | nRFC="false" toc="include" pn="section-3.3.1"> | |||
| </li> | <name slugifiedName="name-order-of-operations-precede">Order of Operat | |||
| </ul> | ions Precedence</name> | |||
| <section anchor="order-of-operations-precedence"> | <t indent="0" pn="section-3.3.1-1">When order of precedence is not ind | |||
| <name>Order of operations precedence</name> | icated explicitly by use of parentheses, operations are evaluated in the followi | |||
| <t>When order of precedence is not indicated explicitly by use of pare | ng order.</t> | |||
| ntheses, operations are evaluated in the following order.</t> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <ul spacing="normal"> | -3.3.1-2"> | |||
| <li> | <li pn="section-3.3.1-2.1"> | |||
| <t>Operations of a higher precedence are evaluated before any oper | <t indent="0" pn="section-3.3.1-2.1.1">Operations of a higher prec | |||
| ation of a lower precedence. <xref target="_table-operation_order"/> specifies t | edence are evaluated before any operation of a lower precedence. <xref target="_ | |||
| he precedence of operations from highest to lowest; operations closer to the top | table-operation_order" format="default" sectionFormat="of" derivedContent="Table | |||
| of the table indicates a higher precedence.</t> | 1"/> specifies the precedence of operations from highest to lowest; operations | |||
| closer to the top of the table indicate a higher precedence.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-3.3.1-2.2"> | |||
| <t>Operations of the same precedence are evaluated sequentially fr | <t indent="0" pn="section-3.3.1-2.2.1">Operations of the same prec | |||
| om left to right.</t> | edence are evaluated sequentially from left to right.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <table anchor="_table-operation_order"> | <table anchor="_table-operation_order" align="center" pn="table-1"> | |||
| <name>Operation precedence from highest (top of the table) to lowest | <name slugifiedName="name-operation-precedence-from-h">Operation pre | |||
| (bottom of the table)</name> | cedence from highest (top of the table) to lowest (bottom of the table)</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">operations (with operands x, y, and z)</th> | <th align="left" colspan="1" rowspan="1">operations (with operan ds x, y, and z)</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">"x++", "x--"</td> | <td align="left" colspan="1" rowspan="1">"x++", "x--"</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"!x", "-x" (as a unary prefix operator)</td> | <td align="left" colspan="1" rowspan="1">"!x", "-x" (as a unary prefix operator)</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">x^y (power)</td> | <td align="left" colspan="1" rowspan="1">x^y (power)</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"x * y", "x / y", "x // y", "x % y"</td> | <td align="left" colspan="1" rowspan="1">"x * y", "x / y", "x // y", "x % y"</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"x + y", "x - y", "sum (i=x, y, f(i))"</td> | <td align="left" colspan="1" rowspan="1">"x + y", "x - y", "sum (i=x, y, f(i))"</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"x << y", "x >> y"</td> | <td align="left" colspan="1" rowspan="1">"x << y", "x > > y"</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"x < y", "x <= y", "x > y", "x >= y "</td> | <td align="left" colspan="1" rowspan="1">"x < y", "x <= y" , "x > y", "x >= y"</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"x == y", "x != y"</td> | <td align="left" colspan="1" rowspan="1">"x == y", "x != y"</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"x & y"</td> | <td align="left" colspan="1" rowspan="1">"x & y"</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"x | y"</td> | <td align="left" colspan="1" rowspan="1">"x | y"</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"x && y"</td> | <td align="left" colspan="1" rowspan="1">"x && y"</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"x || y"</td> | <td align="left" colspan="1" rowspan="1">"x || y"</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"x ? y : z"</td> | <td align="left" colspan="1" rowspan="1">"x ? y : z"</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"x..y"</td> | <td align="left" colspan="1" rowspan="1">"x..y"</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"x = y", "x += y", "x -= y"</td> | <td align="left" colspan="1" rowspan="1">"x = y", "x += y", "x - = y"</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="variables-syntax-elements-and-tables"> | <section anchor="variables-syntax-elements-and-tables" numbered="true" rem | |||
| <name>Variables, syntax elements and tables</name> | oveInRFC="false" toc="include" pn="section-3.4"> | |||
| <t>Each syntax element is described by its name in all lowercase letters | <name slugifiedName="name-variables-syntax-elements-a">Variables, Syntax | |||
| and its type is provided next to the syntax code in each row. Each syntax eleme | Elements, and Tables</name> | |||
| nt and multi-byte integers are written in big endian format. The decoding proces | <t indent="0" pn="section-3.4-1">Each syntax element is described by its | |||
| s behaves according to the value of the syntax element and to the values of prev | name in all lowercase letters and its type is provided next to the syntax code | |||
| iously decoded syntax elements.</t> | in each row. Each syntax element and multi-byte integers are written in big endi | |||
| <t>In some cases, the syntax tables may use the values of other variable | an format. The decoding process behaves according to the value of the syntax ele | |||
| s derived from syntax elements values. Such variables appear in the syntax table | ment and to the values of previously decoded syntax elements.</t> | |||
| s, or text, named by a mixture of lower case and uppercase letters and without a | <t indent="0" pn="section-3.4-2">In some cases, the syntax tables may us | |||
| ny underscore characters. Variables with names starting with an uppercase letter | e the values of other variables derived from syntax elements values. Such variab | |||
| are derived for the decoding of the current syntax structure and all dependent | les appear in the syntax tables or text, named by a mixture of lower case and up | |||
| syntax structures. Variables with names starting with an uppercase letter may be | percase letters and without any underscore characters. Variables with names star | |||
| used in the decoding process for later syntax structures without mentioning the | ting with an uppercase letter are derived for the decoding of the current syntax | |||
| originating syntax structure of the variable. Variables with names starting wit | structure and all dependent syntax structures. Variables with names starting wi | |||
| h a lowercase letter are only used within the section in which they are derived. | th an uppercase letter may be used in the decoding process for later syntax stru | |||
| </t> | ctures without mentioning the originating syntax structure of the variable. Vari | |||
| <t>Functions that specify properties of the current position in the bits | ables with names starting with a lowercase letter are only used within the secti | |||
| tream are referred to as syntax functions. These functions are specified in <xre | on in which they are derived.</t> | |||
| f target="syntax-func"/> and assume the existence of a bitstream pointer with an | <t indent="0" pn="section-3.4-3">Functions that specify properties of th | |||
| indication of the position of the next bit to be read by the decoding process f | e current position in the bitstream are referred to as syntax functions. These f | |||
| rom the bitstream.</t> | unctions are specified in <xref target="syntax-func" format="default" sectionFor | |||
| <t>A one-dimensional array is referred to as a list. A two-dimensional a | mat="of" derivedContent="Section 5.2"/> and assume the existence of a bitstream | |||
| rray is referred to as a matrix. Arrays can either be syntax elements or variabl | pointer with an indication of the position of the next bit to be read by the dec | |||
| es. Square parentheses are used for the indexing of arrays. In reference to a vi | oding process from the bitstream.</t> | |||
| sual depiction of a matrix, the first square bracket is used as a column (horizo | <t indent="0" pn="section-3.4-4">A one-dimensional array is referred to | |||
| ntal) index and the second square bracket is used as a row (vertical) index.</t> | as a list. A two-dimensional array is referred to as a matrix. Arrays can either | |||
| <t>A specification of values of the entries in rows and columns of an ar | be syntax elements or variables. Square brackets are used for the indexing of a | |||
| ray may be denoted by {{...}{...}}, where each inner pair of brackets specifies | rrays. In reference to a visual depiction of a matrix, the first square bracket | |||
| the values of the elements within a row in increasing column order and the rows | is used as a column (horizontal) index and the second square bracket is used as | |||
| are ordered in increasing row order. Thus, setting a matrix s equal to {{1 6}{4 | a row (vertical) index.</t> | |||
| 9}} specifies that s[0][0] is set equal to 1, s[1][0] is set equal to 6, s[0][1] | <t indent="0" pn="section-3.4-5">A specification of values of the entrie | |||
| is set equal to 4, and s[1][1] is set equal to 9.</t> | s in rows and columns of an array may be denoted by {{...}{...}}, where each inn | |||
| <t>Binary notation is indicated by enclosing the string of bit values by | er pair of brackets specifies the values of the elements within a row in increas | |||
| single quote marks. For example, '0b01000001' represents an eight-bit string ha | ing column order and the rows are ordered in increasing row order. Thus, setting | |||
| ving only its second and its last bits (counted from the most to the least signi | a matrix s equal to {{1 6}{4 9}} specifies that s[0][0] is set equal to 1, s[1] | |||
| ficant bit) equal to 1.</t> | [0] is set equal to 6, s[0][1] is set equal to 4, and s[1][1] is set equal to 9. | |||
| <t>Hexadecimal notation, indicated by prefixing the hexadecimal number b | </t> | |||
| y "0x", may be used instead of binary notation when the number of bits is an int | <t indent="0" pn="section-3.4-6">Binary notation is indicated by enclosi | |||
| eger multiple of 4. For example, 0x41 represents an eight-bit string having only | ng the string of bit values in single quote marks. For example, '0b01000001' rep | |||
| its second and its last bits (counted from the most to the least significant bi | resents an eight-bit string having only its second and its last bits (counted fr | |||
| t) equal to 1.</t> | om the most to the least significant bit) equal to 1.</t> | |||
| <t>A value equal to 0 represents a FALSE condition in a test statement. | <t indent="0" pn="section-3.4-7">Hexadecimal notation, indicated by pref | |||
| The value TRUE is represented by any value different from zero.</t> | ixing the hexadecimal number by "0x", may be used instead of binary notation whe | |||
| n the number of bits is an integer multiple of 4. For example, 0x41 represents a | ||||
| n eight-bit string having only its second and its last bits (counted from the mo | ||||
| st to the least significant bit) equal to 1.</t> | ||||
| <t indent="0" pn="section-3.4-8">A value equal to 0 represents a FALSE c | ||||
| ondition in a test statement. The value TRUE is represented by any value differe | ||||
| nt from zero.</t> | ||||
| </section> | </section> | |||
| <section anchor="processes"> | <section anchor="processes" numbered="true" removeInRFC="false" toc="inclu | |||
| <name>Processes</name> | de" pn="section-3.5"> | |||
| <t>Processes are used to describe the decoding of syntax elements. A pro | <name slugifiedName="name-processes">Processes</name> | |||
| cess has a separate specification and invoking. | <t indent="0" pn="section-3.5-1">Processes are used to describe the deco | |||
| ding of syntax elements. A process has a separate specification and invoking. | ||||
| When invoking a process, the assignment of variables is specified as follows:</t > | When invoking a process, the assignment of variables is specified as follows:</t > | |||
| <ul spacing="normal"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3 | |||
| <li> | .5-2"> | |||
| <t>If the variables at the invoking and the process specification do | <li pn="section-3.5-2.1"> | |||
| not have the same name, the variables are explicitly assigned to lower case inp | <t indent="0" pn="section-3.5-2.1.1">If the variables at the invokin | |||
| ut or output variables of the process specification.</t> | g and the process specification do not have the same name, the variables are exp | |||
| licitly assigned to lower case input or output variables of the process specific | ||||
| ation.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-3.5-2.2"> | |||
| <t>Otherwise (the variables at the invoking and the process specific | <t indent="0" pn="section-3.5-2.2.1">Otherwise (the variables at the | |||
| ation have the same name), the assignment is implied.</t> | invoking and the process specification have the same name), the assignment is i | |||
| mplied.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>In the specification of a process, a specific coding block is referre d to by the variable name having a value equal to the address of the specific co ding block.</t> | <t indent="0" pn="section-3.5-3">In the specification of a process, a sp ecific coding block is referred to by the variable name having a value equal to the address of the specific coding block.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="Formats"> | <section anchor="Formats" numbered="true" removeInRFC="false" toc="include" | |||
| <name>Formats and processes used in this document</name> | pn="section-4"> | |||
| <section anchor="bitstream-formats"> | <name slugifiedName="name-formats-and-processes-used-">Formats and Process | |||
| <name>Bitstream formats</name> | es Used in This Document</name> | |||
| <t>This section specifies the bitstream format of the Advanced Professio | <section anchor="bitstream-formats" numbered="true" removeInRFC="false" to | |||
| nal Video (APV) Codec.</t> | c="include" pn="section-4.1"> | |||
| <t>A raw bitstream format consists of a sequence of AUs where the field | <name slugifiedName="name-bitstream-formats">Bitstream Formats</name> | |||
| indicating the size of access units precedes each of them. The raw bitstream for | <t indent="0" pn="section-4.1-1">This section specifies the bitstream fo | |||
| mat is specified in <xref target="appendix-rawbitstream"/>.</t> | rmat of the Advanced Professional Video (APV) codec.</t> | |||
| <t indent="0" pn="section-4.1-2">A raw bitstream format consists of a se | ||||
| quence of AUs where the field indicating the size of access units precedes each | ||||
| of them. The raw bitstream format is specified in <xref target="appendix-rawbits | ||||
| tream" format="default" sectionFormat="of" derivedContent="Appendix A"/>.</t> | ||||
| </section> | </section> | |||
| <section anchor="source-decoded-and-output-frame-formats"> | <section anchor="source-decoded-and-output-frame-formats" numbered="true" | |||
| <name>Source, decoded and output frame formats</name> | removeInRFC="false" toc="include" pn="section-4.2"> | |||
| <t>This section specifies the relationship between the source and decode | <name slugifiedName="name-source-decoded-and-output-f">Source, Decoded, | |||
| d frames.</t> | and Output Frame Formats</name> | |||
| <t>The video source that is represented by the bitstream is a sequence o | <t indent="0" pn="section-4.2-1">This section specifies the relationship | |||
| f frames.</t> | between the source and decoded frames.</t> | |||
| <t>Source and decoded frames are each comprised of one or more sample ar | <t indent="0" pn="section-4.2-2">The video source that is represented by | |||
| rays:</t> | the bitstream is a sequence of frames.</t> | |||
| <ul spacing="normal"> | <t indent="0" pn="section-4.2-3">Source and decoded frames are each comp | |||
| <li> | rised of one or more sample arrays:</t> | |||
| <t>Monochrome (for example, Luma only)</t> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4 | |||
| .2-4"> | ||||
| <li pn="section-4.2-4.1"> | ||||
| <t indent="0" pn="section-4.2-4.1.1">Monochrome (for example, Luma o | ||||
| nly)</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.2-4.2"> | |||
| <t>Luma and two chroma (for example, YCbCr or YCgCo as specified in | <t indent="0" pn="section-4.2-4.2.1">Luma and two chroma (for exampl | |||
| <xref target="H273"/>).</t> | e, YCbCr or YCgCo as specified in <xref target="H273" format="default" sectionFo | |||
| rmat="of" derivedContent="H273"/>).</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.2-4.3"> | |||
| <t>Green, blue, and red (GBR, also known as RGB).</t> | <t indent="0" pn="section-4.2-4.3.1">Green, blue, and red (GBR, also | |||
| known as RGB).</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.2-4.4"> | |||
| <t>Arrays representing other unspecified tri-stimulus color sampling | <t indent="0" pn="section-4.2-4.4.1">Arrays representing other unspe | |||
| s (for example, YZX, also known as XYZ as specified in <xref target="CIE15"/>).< | cified tri-stimulus color samplings (for example, YZX, also known as XYZ as spec | |||
| /t> | ified in <xref target="CIE15" format="default" sectionFormat="of" derivedContent | |||
| ="CIE15"/>).</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.2-4.5"> | |||
| <t>Arrays representing other unspecified four color samplings</t> | <t indent="0" pn="section-4.2-4.5.1">Arrays representing other unspe | |||
| cified four color samplings</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>For the convenience of notation and terminology in this document, the | <t indent="0" pn="section-4.2-5">For the convenience of notation and ter | |||
| variables and terms associated with these arrays can be referred to as luma and | minology in this document, the variables and terms associated with these arrays | |||
| chroma regardless of the actual color representation method in use.</t> | can be referred to as luma and chroma regardless of the actual color representat | |||
| <t>The variables SubWidthC, SubHeightC and NumComps are specified in <xr | ion method in use.</t> | |||
| ef target="_table-chroma_format_idc"/>, depending on the chroma format sampling | <t indent="0" pn="section-4.2-6">The values of the variables SubWidthC, | |||
| structure, which is specified through chroma_format_idc. Other values of chroma_ | SubHeightC, and NumComps depend on the chroma format sampling structure as speci | |||
| format_idc, SubWidthC, SubHeightC and NumComps may be specified in the future ve | fied in <xref target="_table-chroma_format_idc" format="default" sectionFormat=" | |||
| rions of this document.</t> | of" derivedContent="Table 2"/>. The chroma format sampling structure is signaled | |||
| <table anchor="_table-chroma_format_idc"> | through chroma_format_idc. Other values of chroma_format_idc, SubWidthC, SubHei | |||
| <name>SubWidthC, SubHeightC and NumComps values derived from chroma_fo | ghtC, and NumComps may be specified in future versions of this document.</t> | |||
| rmat_idc</name> | <table anchor="_table-chroma_format_idc" align="center" pn="table-2"> | |||
| <name slugifiedName="name-subwidthc-subheightc-and-nu">SubWidthC, SubH | ||||
| eightC, and NumComps values derived from chroma_format_idc</name> | ||||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="center">chroma_format_idc</th> | <th align="center" colspan="1" rowspan="1">chroma_format_idc</th> | |||
| <th align="center">Chroma format</th> | <th align="center" colspan="1" rowspan="1">Chroma format</th> | |||
| <th align="center">SubWidthC</th> | <th align="center" colspan="1" rowspan="1">SubWidthC</th> | |||
| <th align="center">SubHeightC</th> | <th align="center" colspan="1" rowspan="1">SubHeightC</th> | |||
| <th align="center">NumComps</th> | <th align="center" colspan="1" rowspan="1">NumComps</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="center">0</td> | <td align="center" colspan="1" rowspan="1">0</td> | |||
| <td align="center">4:0:0</td> | <td align="center" colspan="1" rowspan="1">4:0:0</td> | |||
| <td align="center">1</td> | <td align="center" colspan="1" rowspan="1">1</td> | |||
| <td align="center">1</td> | <td align="center" colspan="1" rowspan="1">1</td> | |||
| <td align="center">1</td> | <td align="center" colspan="1" rowspan="1">1</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">1</td> | <td align="center" colspan="1" rowspan="1">1</td> | |||
| <td align="center">reserved</td> | <td align="center" colspan="1" rowspan="1">reserved</td> | |||
| <td align="center">reserved</td> | <td align="center" colspan="1" rowspan="1">reserved</td> | |||
| <td align="center">reserved</td> | <td align="center" colspan="1" rowspan="1">reserved</td> | |||
| <td align="center">reserved</td> | <td align="center" colspan="1" rowspan="1">reserved</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">2</td> | <td align="center" colspan="1" rowspan="1">2</td> | |||
| <td align="center">4:2:2</td> | <td align="center" colspan="1" rowspan="1">4:2:2</td> | |||
| <td align="center">2</td> | <td align="center" colspan="1" rowspan="1">2</td> | |||
| <td align="center">1</td> | <td align="center" colspan="1" rowspan="1">1</td> | |||
| <td align="center">3</td> | <td align="center" colspan="1" rowspan="1">3</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">3</td> | <td align="center" colspan="1" rowspan="1">3</td> | |||
| <td align="center">4:4:4</td> | <td align="center" colspan="1" rowspan="1">4:4:4</td> | |||
| <td align="center">1</td> | <td align="center" colspan="1" rowspan="1">1</td> | |||
| <td align="center">1</td> | <td align="center" colspan="1" rowspan="1">1</td> | |||
| <td align="center">3</td> | <td align="center" colspan="1" rowspan="1">3</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">4</td> | <td align="center" colspan="1" rowspan="1">4</td> | |||
| <td align="center">4:4:4:4</td> | <td align="center" colspan="1" rowspan="1">4:4:4:4</td> | |||
| <td align="center">1</td> | <td align="center" colspan="1" rowspan="1">1</td> | |||
| <td align="center">1</td> | <td align="center" colspan="1" rowspan="1">1</td> | |||
| <td align="center">4</td> | <td align="center" colspan="1" rowspan="1">4</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">5..7</td> | <td align="center" colspan="1" rowspan="1">5..7</td> | |||
| <td align="center">reserved</td> | <td align="center" colspan="1" rowspan="1">reserved</td> | |||
| <td align="center">reserved</td> | <td align="center" colspan="1" rowspan="1">reserved</td> | |||
| <td align="center">reserved</td> | <td align="center" colspan="1" rowspan="1">reserved</td> | |||
| <td align="center">reserved</td> | <td align="center" colspan="1" rowspan="1">reserved</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| <t>In 4:0:0 sampling, there is only one sample array that can be conside | <t indent="0" pn="section-4.2-8">In 4:0:0 sampling, there is only one sa | |||
| red as the luma array.</t> | mple array that can be considered as the luma array.</t> | |||
| <t>In 4:2:2 sampling, each of the two chroma arrays has the same height | <t indent="0" pn="section-4.2-9">In 4:2:2 sampling, each of the two chro | |||
| and half the width of the luma array.</t> | ma arrays has the same height and half the width of the luma array.</t> | |||
| <t>In 4:4:4 sampling and 4:4:4:4 sampling, all the sample arrays have th | <t indent="0" pn="section-4.2-10">In 4:4:4 sampling and 4:4:4:4 sampling | |||
| e same height and width as the luma array.</t> | , all the sample arrays have the same height and width as the luma array.</t> | |||
| <t>The number of bits necessary for the representation of each of the sa | <t indent="0" pn="section-4.2-11">The number of bits necessary for the r | |||
| mples in the luma and chroma arrays in a video sequence is in the range of 10 to | epresentation of each of the samples in the luma and chroma arrays in a video se | |||
| 16, inclusive.</t> | quence is in the range of 10 to 16, inclusive.</t> | |||
| <t>When the value of chroma_format_idc is equal to 2, the chroma samples | <t indent="0" pn="section-4.2-12">When the value of chroma_format_idc is | |||
| are co-sited with the corresponding luma samples and the nominal locations in a | equal to 2, the chroma samples are co-sited with the corresponding luma samples | |||
| frame are as shown in <xref target="_figure-format420"/>.</t> | ; the nominal locations in a frame are as shown in <xref target="_figure-format4 | |||
| <figure anchor="_figure-format420"> | 20" format="default" sectionFormat="of" derivedContent="Figure 1"/>.</t> | |||
| <name>Nominal vertical and horizontal locations of 4:2:2 luma and chro | <figure anchor="_figure-format420" align="left" suppress-title="false" p | |||
| ma samples in a frame</name> | n="figure-1"> | |||
| <artwork><![CDATA[ | <name slugifiedName="name-nominal-vertical-and-horizo">Nominal vertica | |||
| & * & * & * & * & * ... | l and horizontal locations of 4:2:2 luma and chroma samples in a frame</name> | |||
| <artwork align="left" pn="section-4.2-13.1"> | ||||
| & * & * & * & * & * ... | & * & * & * & * & * ... | |||
| & * & * & * & * & * ... | & * & * & * & * & * ... | |||
| & * & * & * & * & * ... | & * & * & * & * & * ... | |||
| ... | & * & * & * & * & * ... | |||
| & - location where both luma and chroma sample exist | ... | |||
| * - location where only luma sample exist | & - location where both luma and chroma sample exist | |||
| ]]></artwork> | * - location where only luma sample exist</artwork> | |||
| </figure> | </figure> | |||
| <t>When the value of chroma_format_idc is equal to 3 or 4, for each fram | <t indent="0" pn="section-4.2-14">For each frame, when the value of chro | |||
| e, all the array samples are co-sited and the nominal locations in a frame are a | ma_format_idc is equal to 3 or 4, all of the array samples are co-sited; the nom | |||
| s shown in <xref target="_figure-format444"/>.</t> | inal locations in a frame are as shown in <xref target="_figure-format444" forma | |||
| <figure anchor="_figure-format444"> | t="default" sectionFormat="of" derivedContent="Figure 2"/>.</t> | |||
| <name>Nominal vertical and horizontal locations of 4:4:4 and 4:4:4:4 l | <figure anchor="_figure-format444" align="left" suppress-title="false" p | |||
| uma and chroma samples in a frame</name> | n="figure-2"> | |||
| <artwork><![CDATA[ | <name slugifiedName="name-nominal-vertical-and-horizon">Nominal vertic | |||
| & & & & & & & & & & ... | al and horizontal locations of 4:4:4 and 4:4:4:4 luma and chroma samples in a fr | |||
| ame</name> | ||||
| <artwork align="left" pn="section-4.2-15.1"> | ||||
| & & & & & & & & & & ... | ||||
| & & & & & & & & & & ... | & & & & & & & & & & ... | |||
| & & & & & & & & & & ... | & & & & & & & & & & ... | |||
| & & & & & & & & & & ... | & & & & & & & & & & ... | |||
| ... | ... | |||
| & - location where both luma and chroma sample exist | & - location where both luma and chroma sample exist</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>Samples are processed in units of MBs. The variables MbWidth and MbHe | <t indent="0" pn="section-4.2-16">Samples are processed in units of MBs. | |||
| ight, which specify the width and height of the luma arrays for each MB, are def | The variables MbWidth and MbHeight, which specify the width and height of the l | |||
| ined as follows:</t> | uma arrays for each MB, are defined as follows:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4 | |||
| <li> | .2-17"> | |||
| <t>MbWidth = 16</t> | <li pn="section-4.2-17.1"> | |||
| <t indent="0" pn="section-4.2-17.1.1">MbWidth = 16</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.2-17.2"> | |||
| <t>MbHeight = 16</t> | <t indent="0" pn="section-4.2-17.2.1">MbHeight = 16</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>The variables MbWidthC and MbHeightC, that specify the width and heig | <t indent="0" pn="section-4.2-18">The variables MbWidthC and MbHeightC, | |||
| ht of the chroma arrays for each MB, are derived as follows:</t> | which specify the width and height of the chroma arrays for each MB, are derived | |||
| <ul spacing="normal"> | as follows:</t> | |||
| <li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4 | |||
| <t>MbWidthC = MbWidth // SubWidthC</t> | .2-19"> | |||
| <li pn="section-4.2-19.1"> | ||||
| <t indent="0" pn="section-4.2-19.1.1">MbWidthC = MbWidth // SubWidth | ||||
| C</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.2-19.2"> | |||
| <t>MbHeightC = MbHeight // SubHeightC</t> | <t indent="0" pn="section-4.2-19.2.1">MbHeightC = MbHeight // SubHei | |||
| ghtC</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="partitioning-of-a-frame"> | <section anchor="partitioning-of-a-frame" numbered="true" removeInRFC="fal | |||
| <name>Partitioning of a frame</name> | se" toc="include" pn="section-4.3"> | |||
| <section anchor="partitioning-of-a-frame-into-tiles"> | <name slugifiedName="name-partitioning-of-a-frame">Partitioning of a Fra | |||
| <name>Partitioning of a frame into tiles</name> | me</name> | |||
| <t>This section specifies how a frame is partitioned into tiles.</t> | <section anchor="partitioning-of-a-frame-into-tiles" numbered="true" rem | |||
| <t>A frame is divided into tiles. A tile is a group of MBs that cover | oveInRFC="false" toc="include" pn="section-4.3.1"> | |||
| a rectangular region of a frame and is processed independently of other tiles. E | <name slugifiedName="name-partitioning-of-a-frame-int">Partitioning of | |||
| very tile has the same width and height, except possibly tiles at the right or b | a Frame into Tiles</name> | |||
| ottom frame boundary when the frame width or height is not a multiple of the til | <t indent="0" pn="section-4.3.1-1">This section specifies how a frame | |||
| e width or height, respectively. The tiles in a frame are scanned in raster orde | is partitioned into tiles.</t> | |||
| r. Within a tile, the MBs are scanned in raster order. Each MB is comprised of o | <t indent="0" pn="section-4.3.1-2">A frame is divided into tiles. A ti | |||
| ne (MbWidth) x (MbHeight) luma array and zero, two, or three corresponding chrom | le is a group of MBs that cover a rectangular region of a frame and is processed | |||
| a sample arrays.</t> | independently of other tiles. Every tile has the same width and height, except | |||
| <t>For example, a frame is divided into 6 tiles (3 tile columns and 2 | possibly tiles at the right or bottom frame boundary when the frame width or hei | |||
| tile rows) as shown in <xref target="_figure-tile_examaple"/>: Frame with 10 by | ght is not a multiple of the tile width or height, respectively. The tiles in a | |||
| 8 MBs that is partitioned into 6 tiles. In this example, the tile size is define | frame are scanned in raster order. Within a tile, the MBs are scanned in raster | |||
| d as 4 column MBs and 4 row MBs. In case of the third and sixth tiles (in raster | order. Each MB is comprised of one (MbWidth) x (MbHeight) luma array and zero, t | |||
| order), the tile size is 2 column MBs and 4 row MBs since the frame width is no | wo, or three corresponding chroma sample arrays.</t> | |||
| t multiple of the tile width.</t> | <t indent="0" pn="section-4.3.1-3">For example, a frame is divided int | |||
| <figure anchor="_figure-tile_examaple"> | o 6 tiles (3 tile columns and 2 tile rows) as shown in <xref target="_figure-til | |||
| <name>Frame with 10 by 8 MBs that is partitioned into 6 tiles</name> | e_examaple" format="default" sectionFormat="of" derivedContent="Figure 3"/>. In | |||
| <artwork><![CDATA[ | this example, the tile size is defined as 4 column MBs and 4 row MBs. In case of | |||
| +===================+===================+=========+ | the third and sixth tiles (in raster order), the tile size is 2 column MBs and | |||
| # | | | # MB | MB | MB | MB # MB | MB # | 4 row MBs since the frame width is not a multiple of the tile width.</t> | |||
| +-------------------+-------------------+---------+ | <figure anchor="_figure-tile_examaple" align="left" suppress-title="fa | |||
| # | | | # MB | MB | MB | MB # MB | MB # | lse" pn="figure-3"> | |||
| +----- tile -----+-------------------+---------+ | <name slugifiedName="name-frame-with-10-by-8-mbs-that">Frame with 10 | |||
| # | | | # MB | MB | MB | MB # MB | MB # | by 8 MBs that is partitioned into 6 tiles</name> | |||
| +-------------------+-------------------+---------+ | <artwork align="left" pn="section-4.3.1-4.1"> | |||
| # | | | # MB | MB | MB | MB # MB | MB # | +===================+===================+=========+ | |||
| +===================+===================+=========+ | # | | | # MB | MB | MB | MB # MB | MB # | |||
| # MB | MB | MB | MB # MB | MB | MB | MB # MB | MB # | +-------------------+-------------------+---------+ | |||
| +-------------------+-------------------+---------+ | # | | | # MB | MB | MB | MB # MB | MB # | |||
| # MB | MB | MB | MB # MB | MB | MB | MB # MB | MB # | +----- tile -----+-------------------+---------+ | |||
| +-------------------+-------------------+---------+ | # | | | # MB | MB | MB | MB # MB | MB # | |||
| # MB | MB | MB | MB # MB | MB | MB | MB # MB | MB # | +-------------------+-------------------+---------+ | |||
| +-------------------+-------------------+---------+ | # | | | # MB | MB | MB | MB # MB | MB # | |||
| # MB | MB | MB | MB # MB | MB | MB | MB # MB | MB # | +===================+===================+=========+ | |||
| +===================+===================+=========+ | # MB | MB | MB | MB # MB | MB | MB | MB # MB | MB # | |||
| +-------------------+-------------------+---------+ | ||||
| #,= tile boundary | # MB | MB | MB | MB # MB | MB | MB | MB # MB | MB # | |||
| +-------------------+-------------------+---------+ | ||||
| # MB | MB | MB | MB # MB | MB | MB | MB # MB | MB # | ||||
| +-------------------+-------------------+---------+ | ||||
| # MB | MB | MB | MB # MB | MB | MB | MB # MB | MB # | ||||
| +===================+===================+=========+ | ||||
| |,- MB boundary | ===================+===================+=========+ | |||
| ]]></artwork> | #,= tile boundary | |||
| |,- MB boundary | ||||
| </artwork> | ||||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="spatial-or-component-wise-partitioning"> | <section anchor="spatial-or-component-wise-partitioning" numbered="true" | |||
| <name>Spatial or component-wise partitioning</name> | removeInRFC="false" toc="include" pn="section-4.3.2"> | |||
| <t>The following divisions of processing elements form spatial or comp | <name slugifiedName="name-spatial-or-component-wise-p">Spatial or Comp | |||
| onent-wise partitioning:</t> | onent-Wise Partitioning</name> | |||
| <ul spacing="normal"> | <t indent="0" pn="section-4.3.2-1">The following divisions of processi | |||
| <li> | ng elements form spatial or component-wise partitioning:</t> | |||
| <t>the division of each frame into components;</t> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| -4.3.2-2"> | ||||
| <li pn="section-4.3.2-2.1"> | ||||
| <t indent="0" pn="section-4.3.2-2.1.1">the division of each frame | ||||
| into components;</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.3.2-2.2"> | |||
| <t>the division of each frame into tile columns;</t> | <t indent="0" pn="section-4.3.2-2.2.1">the division of each frame | |||
| into tile columns;</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.3.2-2.3"> | |||
| <t>the division of each frame into tile rows;</t> | <t indent="0" pn="section-4.3.2-2.3.1">the division of each frame | |||
| into tile rows;</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.3.2-2.4"> | |||
| <t>the division of each tile column into tiles;</t> | <t indent="0" pn="section-4.3.2-2.4.1">the division of each tile c | |||
| olumn into tiles;</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.3.2-2.5"> | |||
| <t>the division of each tile row into tiles;</t> | <t indent="0" pn="section-4.3.2-2.5.1">the division of each tile r | |||
| ow into tiles;</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.3.2-2.6"> | |||
| <t>the division of each tile into color components;</t> | <t indent="0" pn="section-4.3.2-2.6.1">the division of each tile i | |||
| nto color components;</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.3.2-2.7"> | |||
| <t>the division of each tile into MBs;</t> | <t indent="0" pn="section-4.3.2-2.7.1">the division of each tile i | |||
| nto MBs;</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.3.2-2.8"> | |||
| <t>the division of each MB into blocks.</t> | <t indent="0" pn="section-4.3.2-2.8.1">the division of each MB int | |||
| o blocks.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="scanning-processes"> | <section anchor="scanning-processes" numbered="true" removeInRFC="false" t | |||
| <name>Scanning processes</name> | oc="include" pn="section-4.4"> | |||
| <section anchor="zig-zag"> | <name slugifiedName="name-scanning-processes">Scanning Processes</name> | |||
| <name>Zig-zag scan</name> | <section anchor="zig-zag" numbered="true" removeInRFC="false" toc="inclu | |||
| <t>This process converts a two dimensional array into an one dimension | de" pn="section-4.4.1"> | |||
| al array. The process starts at the top-left position in the block then moves di | <name slugifiedName="name-zig-zag-scan">Zig-Zag Scan</name> | |||
| agonally, changing direction at the edges of the block until it reaches the bott | <t indent="0" pn="section-4.4.1-1">This process converts a two dimensi | |||
| om-right position. <xref target="_figure-zz"/> shows an example of scanning orde | onal array into an one-dimensional array. The process starts at the top-left pos | |||
| r for 4x4 size block.</t> | ition in the block and then moves diagonally, changing direction at the edges of | |||
| <figure anchor="_figure-zz"> | the block until it reaches the bottom-right position. <xref target="_figure-zz" | |||
| <name>Example of zig-zag scanning order for 4x4 block</name> | format="default" sectionFormat="of" derivedContent="Figure 4"/> shows an exampl | |||
| <artwork><![CDATA[ | e of scanning order for 4x4 size block.</t> | |||
| +===================+ | <figure anchor="_figure-zz" align="left" suppress-title="false" pn="fi | |||
| # 00 | 01 | 05 | 06 # | gure-4"> | |||
| +-------------------+ | <name slugifiedName="name-example-of-zig-zag-scanning">Example of zi | |||
| # 02 | 04 | 07 | 12 # | g-zag scanning order for 4x4 block</name> | |||
| +-------------------+ | <artwork align="left" pn="section-4.4.1-2.1"> | |||
| # 03 | 08 | 11 | 13 # | +===================+ | |||
| +-------------------+ | # 00 | 01 | 05 | 06 # | |||
| # 09 | 10 | 14 | 15 # | +-------------------+ | |||
| +===================+ | # 02 | 04 | 07 | 12 # | |||
| ]]></artwork> | +-------------------+ | |||
| # 03 | 08 | 11 | 13 # | ||||
| +-------------------+ | ||||
| # 09 | 10 | 14 | 15 # | ||||
| +===================+ | ||||
| </artwork> | ||||
| </figure> | </figure> | |||
| <t>Inputs to this process are:</t> | <t indent="0" pn="section-4.4.1-3">Inputs to this process are:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <li> | -4.4.1-4"> | |||
| <t>a variable blkWidth specifying the width of a block, and</t> | <li pn="section-4.4.1-4.1"> | |||
| <t indent="0" pn="section-4.4.1-4.1.1">a variable blkWidth specify | ||||
| ing the width of a block, and</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.4.1-4.2"> | |||
| <t>a variable blkHeight specifying the height of a block.</t> | <t indent="0" pn="section-4.4.1-4.2.1">a variable blkHeight specif | |||
| ying the height of a block.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Output of this process is the array zigZagScan[sPos].</t> | <t indent="0" pn="section-4.4.1-5">Output of this process is the array | |||
| <t>The array index sPos specifies the scan position ranging from 0 to | zigZagScan[sPos].</t> | |||
| (blkWidth * blkHeight)-1. Depending on the value of blkWidth and blkHeight, the | <t indent="0" pn="section-4.4.1-6">The array index sPos specifies the | |||
| array zigZagScan is derived as follows:</t> | scan position ranging from 0 to (blkWidth * blkHeight)-1. Depending on the value | |||
| <figure anchor="_figure-zzscan"> | of blkWidth and blkHeight, the array zigZagScan is derived as follows:</t> | |||
| <name>Pseudo-code for zig-zag scan</name> | <figure anchor="_figure-zzscan" align="left" suppress-title="false" pn | |||
| <artwork><![CDATA[ | ="figure-5"> | |||
| <name slugifiedName="name-pseudocode-for-zig-zag-scan">Pseudocode fo | ||||
| r zig-zag scan</name> | ||||
| <artwork align="left" pn="section-4.4.1-7.1"> | ||||
| pos = 0 | pos = 0 | |||
| zigZagScan[pos] = 0 | zigZagScan[pos] = 0 | |||
| pos++ | pos++ | |||
| for(line = 1; line < (blkWidth + blkHeight - 1); line++){ | for(line = 1; line < (blkWidth + blkHeight - 1); line++){ | |||
| if(line % 2){ | if(line % 2){ | |||
| x = min(line, blkWidth - 1) | x = min(line, blkWidth - 1) | |||
| y = max(0, line - (blkWidth - 1)) | y = max(0, line - (blkWidth - 1)) | |||
| while(x >=0 && y < blkHeight){ | while(x >=0 && y < blkHeight){ | |||
| zigZagScan[pos] = y * blkWidth + x | zigZagScan[pos] = y * blkWidth + x | |||
| pos++ | pos++ | |||
| x-- | x-- | |||
| y++ | y++ | |||
| } | } | |||
| } | } | |||
| else{ | else{ | |||
| y = min(line, blkHeight - 1) | y = min(line, blkHeight - 1) | |||
| x = max(0, line - (blkHeight - 1)) | x = max(0, line - (blkHeight - 1)) | |||
| while(y >= 0 && x < blkWidth){ | while(y >= 0 && x < blkWidth){ | |||
| zigZagScan[pos] = y * blkWidth + x | zigZagScan[pos] = y * blkWidth + x | |||
| pos++ | pos++ | |||
| x++ | x++ | |||
| y-- | y-- | |||
| } | } | |||
| } | } | |||
| } | }</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="inverse-scan"> | <section anchor="inverse-scan" numbered="true" removeInRFC="false" toc=" | |||
| <name>Inverse scan</name> | include" pn="section-4.4.2"> | |||
| <t>Inputs to this process are:</t> | <name slugifiedName="name-inverse-scan">Inverse Scan</name> | |||
| <ul spacing="normal"> | <t indent="0" pn="section-4.4.2-1">Inputs to this process are:</t> | |||
| <li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <t>a variable blkWidth specifying the width of a block, and</t> | -4.4.2-2"> | |||
| <li pn="section-4.4.2-2.1"> | ||||
| <t indent="0" pn="section-4.4.2-2.1.1">a variable blkWidth specify | ||||
| ing the width of a block, and</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.4.2-2.2"> | |||
| <t>a variable blkHeight specifying the height of a block.</t> | <t indent="0" pn="section-4.4.2-2.2.1">a variable blkHeight specif | |||
| ying the height of a block.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Output of this process is the array inverseScan[rPos].</t> | <t indent="0" pn="section-4.4.2-3">Output of this process is the array | |||
| <t>The array index rPos specifies the raster scan position ranging fro | inverseScan[rPos].</t> | |||
| m 0 to (blkWidth * blkHeight)-1. Depending on the value of blkWidth and blkHeigh | <t indent="0" pn="section-4.4.2-4">The array index rPos specifies the | |||
| t, the array inverseScan is derived as follows:</t> | raster scan position ranging from 0 to (blkWidth * blkHeight)-1. Depending on th | |||
| <ul spacing="normal"> | e value of blkWidth and blkHeight, the array inverseScan is derived as follows:< | |||
| <li> | /t> | |||
| <t>The variable forwardScan is derived by invoking zig-zag scan or | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| der 1D array initialization process as specified in <xref target="zig-zag"/> wit | -4.4.2-5"> | |||
| h input parameters blkWidth and blkHeight.</t> | <li pn="section-4.4.2-5.1"> | |||
| <t indent="0" pn="section-4.4.2-5.1.1">The variable forwardScan is | ||||
| derived by invoking the zig-zag scan order initialization process as specified | ||||
| in <xref target="zig-zag" format="default" sectionFormat="of" derivedContent="Se | ||||
| ction 4.4.1"/> with input parameters blkWidth and blkHeight.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-4.4.2-5.2"> | |||
| <t>The output variable inverseScan is derived as follows:</t> | <t indent="0" pn="section-4.4.2-5.2.1">The output variable inverse | |||
| Scan is derived as follows:</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <figure anchor="_figure-inv_zzscan"> | <figure anchor="_figure-inv_zzscan" align="left" suppress-title="false | |||
| <name>Pseudo-code for inverse zig-zag scan</name> | " pn="figure-6"> | |||
| <artwork><![CDATA[ | <name slugifiedName="name-pseudocode-for-inverse-zig-">Pseudocode fo | |||
| for(pos = 0; pos < blkWidth * blkHeight; pos++){ | r inverse zig-zag scan</name> | |||
| <artwork align="left" pn="section-4.4.2-6.1"> | ||||
| for(pos = 0; pos < blkWidth * blkHeight; pos++){ | ||||
| inverseScan[forwardScan[pos]] = pos | inverseScan[forwardScan[pos]] = pos | |||
| } | }</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="syntax"> | <section anchor="syntax" numbered="true" removeInRFC="false" toc="include" p | |||
| <name>Syntax and semantics</name> | n="section-5"> | |||
| <section anchor="method-of-specifying-syntax"> | <name slugifiedName="name-syntax-and-semantics">Syntax and Semantics</name | |||
| <name>Method of specifying syntax</name> | > | |||
| <t>The syntax tables specify a superset of the syntax of all allowed bit | <section anchor="method-of-specifying-syntax" numbered="true" removeInRFC= | |||
| streams. Note that a decoder MUST implement some means for identifying entry poi | "false" toc="include" pn="section-5.1"> | |||
| nts into the bitstream and some means to identify and handle non-conforming bits | <name slugifiedName="name-method-of-specifying-syntax">Method of Specify | |||
| treams. The methods for identifying and handling errors and other such situation | ing Syntax</name> | |||
| s are not specified in this document.</t> | <t indent="0" pn="section-5.1-1">The syntax tables specify a superset of | |||
| <t>The APV bitstream is described in this document using syntax code bas | the syntax of all allowed bitstreams. Note that a decoder <bcp14>MUST</bcp14> i | |||
| ed on the C programming language <xref target="ISO9899"/> and uses its if/else, | mplement some means for identifying entry points into the bitstream and some mea | |||
| while, and for keywords as well as functions defined within this document.</t> | ns to identify and handle non-conforming bitstreams. The methods for identifying | |||
| <t>The syntax table in syntax code is presented in a two-column format s | and handling errors and other such situations are not specified in this documen | |||
| uch as shown in <xref target="syntax-examplecode"/>. In this form, the type colu | t.</t> | |||
| mn provides a type referenced in that same line of syntax code by using syntax e | <t indent="0" pn="section-5.1-2">The APV bitstream is described using sy | |||
| lements processing function defined in <xref target="syntax-process-func"/>.</t> | ntax code based on the C programming language <xref target="ISO9899" format="def | |||
| <figure anchor="syntax-examplecode"> | ault" sectionFormat="of" derivedContent="ISO9899"/> -- including use of if/else, | |||
| <name>A depiction of type-labeled syntax code for syntax description i | while, and for -- as well as functions defined within this document.</t> | |||
| n this document</name> | <t indent="0" pn="section-5.1-3">The syntax table in syntax code is pres | |||
| <artwork><![CDATA[ | ented in a two-column format such as shown in <xref target="syntax-examplecode" | |||
| format="default" sectionFormat="of" derivedContent="Figure 7"/>. In this form, t | ||||
| he type column provides a type referenced in that same line of syntax code by us | ||||
| ing the syntax elements processing functions defined in <xref target="syntax-pro | ||||
| cess-func" format="default" sectionFormat="of" derivedContent="Section 5.2.5"/>. | ||||
| </t> | ||||
| <figure anchor="syntax-examplecode" align="left" suppress-title="false" | ||||
| pn="figure-7"> | ||||
| <name slugifiedName="name-a-depiction-of-type-labeled">A depiction of | ||||
| type-labeled syntax code for syntax description in this document</name> | ||||
| <artwork align="left" pn="section-5.1-4.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| ExampleSyntaxCode(){ | | ExampleSyntaxCode(){ | | |||
| operations | | operations | | |||
| syntax_element | u(n) | syntax_element | u(n) | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="syntax-func"> | <section anchor="syntax-func" numbered="true" removeInRFC="false" toc="inc | |||
| <name>Syntax functions and descriptors</name> | lude" pn="section-5.2"> | |||
| <t>The functions presented in this document are used in the syntactical | <name slugifiedName="name-syntax-functions-and-descri">Syntax Functions | |||
| description. These functions are expressed in terms of the value of a bitstream | and Descriptors</name> | |||
| pointer that indicates the position of the next bit to be read by the decoding p | <t indent="0" pn="section-5.2-1">The functions presented in this documen | |||
| rocess from the bitstream.</t> | t are used in the syntactical description. These functions are expressed in term | |||
| <section anchor="bytealigned"> | s of the value of a bitstream pointer that indicates the position of the next bi | |||
| <name>byte_aligned()</name> | t to be read by the decoding process from the bitstream.</t> | |||
| <ul spacing="normal"> | <section anchor="bytealigned" numbered="true" removeInRFC="false" toc="i | |||
| <li> | nclude" pn="section-5.2.1"> | |||
| <t>If the current position in the bitstream is on the last bit of | <name slugifiedName="name-byte_aligned">byte_aligned()</name> | |||
| a byte, i.e., the next bit in the bitstream is the first bit in a byte, the retu | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| rn value of byte_aligned() is equal to TRUE.</t> | -5.2.1-1"> | |||
| <li pn="section-5.2.1-1.1"> | ||||
| <t indent="0" pn="section-5.2.1-1.1.1">If the current position in | ||||
| the bitstream is on the last bit of a byte, i.e., the next bit in the bitstream | ||||
| is the first bit in a byte, the return value of byte_aligned() is equal to TRUE. | ||||
| </t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-5.2.1-1.2"> | |||
| <t>Otherwise, the return value of byte_aligned() is equal to FALSE | <t indent="0" pn="section-5.2.1-1.2.1">Otherwise, the return value | |||
| .</t> | of byte_aligned() is equal to FALSE.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="moredataintile"> | <section anchor="moredataintile" numbered="true" removeInRFC="false" toc | |||
| <name>more_data_in_tile()</name> | ="include" pn="section-5.2.2"> | |||
| <ul spacing="normal"> | <name slugifiedName="name-more_data_in_tile">more_data_in_tile()</name | |||
| <li> | > | |||
| <t>If the current position in the i-th tile() syntax structure is | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| less than TileSize[i] in bytes from the beginning of the tile_header() syntax st | -5.2.2-1"> | |||
| ructure of the i-th tile, the return value of more_data_in_tile() is equal to TR | <li pn="section-5.2.2-1.1"> | |||
| UE.</t> | <t indent="0" pn="section-5.2.2-1.1.1">If the current position in | |||
| the i-th tile() syntax structure is less than TileSize[i] in bytes from the begi | ||||
| nning of the tile_header() syntax structure of the i-th tile, the return value o | ||||
| f more_data_in_tile() is equal to TRUE.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-5.2.2-1.2"> | |||
| <t>Otherwise, the return value of more_data_in_tile() is equal to | <t indent="0" pn="section-5.2.2-1.2.1">Otherwise, the return value | |||
| FALSE.</t> | of more_data_in_tile() is equal to FALSE.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="nextbitsn"> | <section anchor="nextbitsn" numbered="true" removeInRFC="false" toc="inc | |||
| <name>next_bits(n)</name> | lude" pn="section-5.2.3"> | |||
| <t>This function provides the next n bits in the bitstream for compari | <name slugifiedName="name-next_bitsn">next_bits(n)</name> | |||
| son purposes, without advancing the bitstream pointer.</t> | <t indent="0" pn="section-5.2.3-1">This function provides the next n b | |||
| its in the bitstream for comparison purposes, without advancing the bitstream po | ||||
| inter.</t> | ||||
| </section> | </section> | |||
| <section anchor="readbitsn"> | <section anchor="readbitsn" numbered="true" removeInRFC="false" toc="inc | |||
| <name>read_bits(n)</name> | lude" pn="section-5.2.4"> | |||
| <t>This function indicates to read the next n bits from the bitstream | <name slugifiedName="name-read_bitsn">read_bits(n)</name> | |||
| and advances the bitstream pointer by n bit positions. When n is equal to 0, rea | <t indent="0" pn="section-5.2.4-1">This function indicates that the ne | |||
| d_bits(n) is specified to return a value equal to 0 and to not advance the bitst | xt n bits from the bitstream are to be read and it advances the bitstream pointe | |||
| ream pointer.</t> | r by n bit positions. When n is equal to 0, read_bits(n) is specified to return | |||
| a value equal to 0 and to not advance the bitstream pointer.</t> | ||||
| </section> | </section> | |||
| <section anchor="syntax-process-func"> | <section anchor="syntax-process-func" numbered="true" removeInRFC="false | |||
| <name>Syntax element processing functions</name> | " toc="include" pn="section-5.2.5"> | |||
| <ul spacing="normal"> | <name slugifiedName="name-syntax-element-processing-f">Syntax Element | |||
| <li> | Processing Functions</name> | |||
| <t>b(8): byte having any pattern of bit string (8 bits). The parsi | <dl spacing="normal" newline="false" indent="3" pn="section-5.2.5-1"> | |||
| ng process for this descriptor is specified by the return value of the function | <dt pn="section-5.2.5-1.1">b(8):</dt> | |||
| read_bits(8).</t> | <dd pn="section-5.2.5-1.2">byte having any pattern of bit string (8 | |||
| </li> | bits). The parsing process for this descriptor is specified by the | |||
| <li> | return value of the function read_bits(8).</dd> | |||
| <t>f(n): fixed-pattern bit string using n bits written (from left | <dt pn="section-5.2.5-1.3">f(n):</dt> | |||
| to right) with the left bit first, i.e. big endian format. The parsing process f | <dd pn="section-5.2.5-1.4">fixed-pattern bit string using n bits wri | |||
| or this descriptor is specified by the return value of the function read_bits(n) | tten | |||
| .</t> | (from left to right) with the left bit first, i.e., big endian | |||
| </li> | format. The parsing process for this descriptor is specified by | |||
| <li> | the return value of the function read_bits(n).</dd> | |||
| <t>u(n): unsigned integer using n bits. The parsing process for th | <dt pn="section-5.2.5-1.5">u(n):</dt> | |||
| is descriptor is specified by the return value of the function read_bits(n) inte | <dd pn="section-5.2.5-1.6">unsigned integer using n bits. The parsin | |||
| rpreted as a binary representation of an unsigned integer with most significant | g | |||
| bit written first.</t> | process for this descriptor is specified by the return value of | |||
| </li> | the function read_bits(n) interpreted as a binary representation | |||
| <li> | of an unsigned integer with the most significant bit written | |||
| <t>h(v): variable-length entropy coded syntax element with the lef | first.</dd> | |||
| t bit first, i.e. big endian format. The parsing process for this descriptor is | <dt pn="section-5.2.5-1.7">h(v):</dt> | |||
| specified in <xref target="process_h"/>.</t> | <dd pn="section-5.2.5-1.8">variable-length entropy coded syntax elem | |||
| </li> | ent | |||
| </ul> | with the left bit first, i.e., big endian format. The parsing | |||
| process for this descriptor is specified in <xref target="process_h" | ||||
| format="default" sectionFormat="of" derivedContent="Section 7.1"/>.</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="list-of-syntax-and-semantics"> | <section anchor="list-of-syntax-and-semantics" numbered="true" removeInRFC | |||
| <name>List of syntax and semantics</name> | ="false" toc="include" pn="section-5.3"> | |||
| <section anchor="access-unit"> | <name slugifiedName="name-list-of-syntax-and-semantic">List of Syntax an | |||
| <name>Access unit</name> | d Semantics</name> | |||
| <figure anchor="syntaxcode-access_unit"> | <section anchor="access-unit" numbered="true" removeInRFC="false" toc="i | |||
| <name>access unit syntax code</name> | nclude" pn="section-5.3.1"> | |||
| <artwork><![CDATA[ | <name slugifiedName="name-access-unit">Access Unit</name> | |||
| <figure anchor="syntaxcode-access_unit" align="left" suppress-title="f | ||||
| alse" pn="figure-8"> | ||||
| <name slugifiedName="name-access-unit-syntax-code">access unit synta | ||||
| x code</name> | ||||
| <artwork align="left" pn="section-5.3.1-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| access_unit(au_size){ | | access_unit(au_size){ | | |||
| signature | f(32) | signature | f(32) | |||
| currReadSize = 4 | | currReadSize = 4 | | |||
| do(){ | | do(){ | | |||
| pbu_size | u(32) | pbu_size | u(32) | |||
| currReadSize += 4 | | currReadSize += 4 | | |||
| pbu() | | pbu() | | |||
| currReadSize += pbu_size | | currReadSize += pbu_size | | |||
| } while (au_size > currReadSize) | | } while (au_size > currReadSize) | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.1-2"> | |||
| <li> | <dt pn="section-5.3.1-2.1">signature</dt> | |||
| <t>signature</t> | <dd pn="section-5.3.1-2.2">A four-character code that identifies the | |||
| </li> | bitstream as an APV AU. The value <bcp14>MUST</bcp14> be 'aPv1' (0x61507631).</ | |||
| </ul> | dd> | |||
| <ul empty="true"> | <dt pn="section-5.3.1-2.3">pbu_size</dt> | |||
| <li> | <dd pn="section-5.3.1-2.4">the size of a primitive bitstream unit in | |||
| <t>A four-character code that identifies the bitstream as an APV A | bytes. A value of 0 is prohibited and the value of 0xFFFFFFFF for pbu_size is r | |||
| U. The value MUST be 'aPv1' (0x61507631).</t> | eserved for future use.</dd> | |||
| </li> | </dl> | |||
| </ul> | <t indent="0" pn="section-5.3.1-3">Note: An AU consists of one primary | |||
| <ul spacing="normal"> | frame, zero or more non-primary frames such as a frame for additional view, zer | |||
| <li> | o or more alpha frames, zero or more depth frames, zero or more preview frames s | |||
| <t>pbu_size</t> | uch as a frame with smaller resolution, zero or more metadata, and zero or more | |||
| </li> | fillers.</t> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>the size of a primitive bitstream unit in bytes. A value of 0 i | ||||
| s prohibited and the value of 0xFFFFFFFF for pbu_size is reserved for future use | ||||
| .</t> | ||||
| </li> | ||||
| </ul> | ||||
| <t>Note: An AU consists of one primary frame, zero or more non-primary | ||||
| frames such as a frame for additional view, zero or more alpha frames, zero or | ||||
| more depth frames, zero or more preview frame such as a frame with smaller resol | ||||
| ution, zero or more metadatas, and zero or more fillers.</t> | ||||
| </section> | </section> | |||
| <section anchor="pbu"> | <section anchor="pbu" numbered="true" removeInRFC="false" toc="include" | |||
| <name>Primitive bitstream unit</name> | pn="section-5.3.2"> | |||
| <figure anchor="syntaxcode-pbu"> | <name slugifiedName="name-primitive-bitstream-unit">Primitive Bitstrea | |||
| <name>primitive bitstream unit syntax code</name> | m Unit</name> | |||
| <artwork><![CDATA[ | <figure anchor="syntaxcode-pbu" align="left" suppress-title="false" pn | |||
| ="figure-9"> | ||||
| <name slugifiedName="name-primitive-bitstream-unit-sy">primitive bit | ||||
| stream unit syntax code</name> | ||||
| <artwork align="left" pn="section-5.3.2-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| pbu(){ | | pbu(){ | | |||
| pbu_header() | | pbu_header() | | |||
| if((1 <= pbu_type && pbu_type <=2) || | | if((1 <= pbu_type && pbu_type <=2) || | | |||
| (25 <= pbu_type && pbu_type <= 27)) | | (25 <= pbu_type && pbu_type <= 27)) | | |||
| frame() | | frame() | | |||
| else if(pbu_type == 65) | | else if(pbu_type == 65) | | |||
| au_info() | | au_info() | | |||
| else if(pbu_type == 66) | | else if(pbu_type == 66) | | |||
| metadata() | | metadata() | | |||
| else if (pbu_type == 67) | | else if (pbu_type == 67) | | |||
| filler() | | filler() | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="pbu-header"> | <section anchor="pbu-header" numbered="true" removeInRFC="false" toc="in | |||
| <name>Primitive bitstream unit header</name> | clude" pn="section-5.3.3"> | |||
| <figure anchor="syntaxcode-pbu_header"> | <name slugifiedName="name-primitive-bitstream-unit-he">Primitive Bitst | |||
| <name>primitive bitstream unit header syntax code</name> | ream Unit Header</name> | |||
| <artwork><![CDATA[ | <figure anchor="syntaxcode-pbu_header" align="left" suppress-title="fa | |||
| lse" pn="figure-10"> | ||||
| <name slugifiedName="name-primitive-bitstream-unit-hea">primitive bi | ||||
| tstream unit header syntax code</name> | ||||
| <artwork align="left" pn="section-5.3.3-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| pbu_header(){ | | pbu_header(){ | | |||
| pbu_type | u(8) | pbu_type | u(8) | |||
| group_id | u(16) | group_id | u(16) | |||
| reserved_zero_8bits | u(8) | reserved_zero_8bits | u(8) | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.3-2"> | |||
| <li> | <dt pn="section-5.3.3-2.1">pbu_type</dt> | |||
| <t>pbu_type</t> | <dd pn="section-5.3.3-2.2"> | |||
| </li> | <t indent="0" pn="section-5.3.3-2.2.1">indicates the type of data | |||
| </ul> | in a PBU listed in <xref target="_table-pbu_type" format="default" sectionFormat | |||
| <ul empty="true"> | ="of" derivedContent="Table 3"/>. Other values of pbu_type are reserved | |||
| <li> | for future use.</t> | |||
| <t>indicates the type of data in a PBU listed in <xref target="_ta | <table anchor="_table-pbu_type" align="center" pn="table-3"> | |||
| ble-pbu_type"/>. Other values of pbu_type are reserved for future use.</t> | <name slugifiedName="name-list-of-pbu-types">List of PBU types</ | |||
| </li> | name> | |||
| </ul> | <thead> | |||
| <table anchor="_table-pbu_type"> | <tr> | |||
| <name>List of PBU types</name> | <th align="center" colspan="1" rowspan="1">pbu_type</th> | |||
| <thead> | <th align="center" colspan="1" rowspan="1">meaning</th> | |||
| <tr> | <th align="center" colspan="1" rowspan="1">notes</th> | |||
| <th align="center">pbu_type</th> | </tr> | |||
| <th align="center">meaning</th> | </thead> | |||
| <th align="center">notes</th> | <tbody> | |||
| </tr> | <tr> | |||
| </thead> | <td align="center" colspan="1" rowspan="1">0</td> | |||
| <tbody> | <td align="center" colspan="1" rowspan="1">reserved</td> | |||
| <tr> | <td align="center" colspan="1" rowspan="1"> </td> | |||
| <td align="center">0</td> | </tr> | |||
| <td align="center">reserved</td> | <tr> | |||
| <td align="center"> </td> | <td align="center" colspan="1" rowspan="1">1</td> | |||
| </tr> | <td align="center" colspan="1" rowspan="1">primary frame</td | |||
| <tr> | > | |||
| <td align="center">1</td> | <td align="center" colspan="1" rowspan="1"> </td> | |||
| <td align="center">primary frame</td> | </tr> | |||
| <td align="center"> </td> | <tr> | |||
| </tr> | <td align="center" colspan="1" rowspan="1">2</td> | |||
| <tr> | <td align="center" colspan="1" rowspan="1">non-primary frame | |||
| <td align="center">2</td> | </td> | |||
| <td align="center">non-primary frame</td> | <td align="center" colspan="1" rowspan="1"> </td> | |||
| <td align="center"> </td> | </tr> | |||
| </tr> | <tr> | |||
| <tr> | <td align="center" colspan="1" rowspan="1">3...24</td> | |||
| <td align="center">3...24</td> | <td align="center" colspan="1" rowspan="1">reserved</td> | |||
| <td align="center">reserved</td> | <td align="center" colspan="1" rowspan="1"> </td> | |||
| <td align="center"> </td> | </tr> | |||
| </tr> | <tr> | |||
| <tr> | <td align="center" colspan="1" rowspan="1">25</td> | |||
| <td align="center">25</td> | <td align="center" colspan="1" rowspan="1">preview frame</td | |||
| <td align="center">preview frame</td> | > | |||
| <td align="center"> </td> | <td align="center" colspan="1" rowspan="1"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">26</td> | <td align="center" colspan="1" rowspan="1">26</td> | |||
| <td align="center">depth frame</td> | <td align="center" colspan="1" rowspan="1">depth frame</td> | |||
| <td align="center"> </td> | <td align="center" colspan="1" rowspan="1"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">27</td> | <td align="center" colspan="1" rowspan="1">27</td> | |||
| <td align="center">alpha frame</td> | <td align="center" colspan="1" rowspan="1">alpha frame</td> | |||
| <td align="center"> </td> | <td align="center" colspan="1" rowspan="1"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">28...64</td> | <td align="center" colspan="1" rowspan="1">28...64</td> | |||
| <td align="center">reserved</td> | <td align="center" colspan="1" rowspan="1">reserved</td> | |||
| <td align="center"> </td> | <td align="center" colspan="1" rowspan="1"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">65</td> | <td align="center" colspan="1" rowspan="1">65</td> | |||
| <td align="center">access unit information</td> | <td align="center" colspan="1" rowspan="1">access unit infor | |||
| <td align="center"> </td> | mation</td> | |||
| </tr> | <td align="center" colspan="1" rowspan="1"> </td> | |||
| <tr> | </tr> | |||
| <td align="center">66</td> | <tr> | |||
| <td align="center">metadata</td> | <td align="center" colspan="1" rowspan="1">66</td> | |||
| <td align="center"> </td> | <td align="center" colspan="1" rowspan="1">metadata</td> | |||
| </tr> | <td align="center" colspan="1" rowspan="1"> </td> | |||
| <tr> | </tr> | |||
| <td align="center">67</td> | <tr> | |||
| <td align="center">filler</td> | <td align="center" colspan="1" rowspan="1">67</td> | |||
| <td align="center"> </td> | <td align="center" colspan="1" rowspan="1">filler</td> | |||
| </tr> | <td align="center" colspan="1" rowspan="1"> </td> | |||
| <tr> | </tr> | |||
| <td align="center">68...255</td> | <tr> | |||
| <td align="center">reserved</td> | <td align="center" colspan="1" rowspan="1">68...255</td> | |||
| <td align="center"> </td> | <td align="center" colspan="1" rowspan="1">reserved</td> | |||
| </tr> | <td align="center" colspan="1" rowspan="1"> </td> | |||
| </tbody> | </tr> | |||
| </table> | </tbody> | |||
| <ul empty="true"> | </table> | |||
| <li> | <t indent="0" pn="section-5.3.3-2.2.3">Note: A PBU with pbu_type e | |||
| <t>Note: A PBU with pbu_type equal to 65 (access unit information) | qual to 65 (access unit information) may happen in an AU. If it exists, it <bcp1 | |||
| may happen in an AU. If it exists, it MUST be the first PBU in an AU, and it ca | 4>MUST</bcp14> be the first PBU in an AU, and it can be ignored by a decoder.</t | |||
| n be ignored by a decoder.</t> | > | |||
| </li> | </dd> | |||
| </ul> | <dt pn="section-5.3.3-2.3">group_id</dt> | |||
| <ul spacing="normal"> | <dd pn="section-5.3.3-2.4">indicates the identifier to associate a c | |||
| <li> | oded frame with metadata. More than two frames can have the same group_id in a s | |||
| <t>group_id</t> | ingle AU. A primary frame and a non-primary frame <bcp14>MUST</bcp14> have diffe | |||
| </li> | rent group_id values, and two non-primary frames <bcp14>MUST</bcp14> have differ | |||
| </ul> | ent group_id values. When the value of group_id is equal to 0, the value of pbu_ | |||
| <ul empty="true"> | type <bcp14>MUST</bcp14> be greater than 64. The value of 0xFFFF for group_id is | |||
| <li> | reserved for future use.</dd> | |||
| <t>indicates the identifier to associate coded frame with metadata | <dt pn="section-5.3.3-2.5">reserved_zero_8bits</dt> | |||
| . More than two frame can have the same group_id in a single AU. A primary frame | <dd pn="section-5.3.3-2.6"> | |||
| and a non-primary frame MUST have different group_id value and two non-primary | <bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to the | |||
| frames MUST have different group_id values. When the value of group_id is equal | profiles specified in <xref target="appendix-profile-level-band" format="default | |||
| to 0, the value of pbu_type MUST be greater than 64. The value of 0xFFFF for gro | " sectionFormat="of" derivedContent="Section 9"/>. Values of reserved_zero_8bits | |||
| up_id is reserved for future use.</t> | greater than 0 are reserved for future use. Decoders conforming to the profiles | |||
| </li> | specified in <xref target="appendix-profile-level-band" format="default" sectio | |||
| </ul> | nFormat="of" derivedContent="Section 9"/> <bcp14>MUST</bcp14> ignore PBU with va | |||
| <ul spacing="normal"> | lues of reserved_zero_8bits greater than 0.</dd> | |||
| <li> | </dl> | |||
| <t>reserved_zero_8bits</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>MUST be equal to 0 in bitstreams conforming to the profiles spe | ||||
| cified in <xref target="appendix-profile-level-band"/> of this version of docume | ||||
| nt. Values of reserved_zero_8bits greater than 0 are reserved for future use. De | ||||
| coders conforming to the profiles specified in <xref target="appendix-profile-le | ||||
| vel-band"/> of this version of document MUST ignore PBU with values of reserved_ | ||||
| zero_8bits greater than 0.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="frame"> | <section anchor="frame" numbered="true" removeInRFC="false" toc="include | |||
| <name>Frame</name> | " pn="section-5.3.4"> | |||
| <figure anchor="syntaxcode-frame"> | <name slugifiedName="name-frame">Frame</name> | |||
| <name>frame() syntax code</name> | <figure anchor="syntaxcode-frame" align="left" suppress-title="false" | |||
| <artwork><![CDATA[ | pn="figure-11"> | |||
| <name slugifiedName="name-frame-syntax-code">frame() syntax code</na | ||||
| me> | ||||
| <artwork align="left" pn="section-5.3.4-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| frame(){ | | frame(){ | | |||
| frame_header() | | frame_header() | | |||
| for(i = 0; i < NumTiles; i++){ | | for(i = 0; i < NumTiles; i++){ | | |||
| tile_size[i] | u(32) | tile_size[i] | u(32) | |||
| tile(i) | | tile(i) | | |||
| } | | } | | |||
| filler() | | filler() | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.4-2"> | |||
| <li> | <dt pn="section-5.3.4-2.1">tile_size[i]</dt> | |||
| <t>tile_size[i]</t> | <dd pn="section-5.3.4-2.2"> | |||
| </li> | <t indent="0" pn="section-5.3.4-2.2.1">indicates the size in bytes | |||
| </ul> | of i-th tile data (i.e., | |||
| <ul empty="true"> | tile(i)) in raster order in a frame. The value of 0 for | |||
| <li> | tile_size[i] is reserved for future use.</t> | |||
| <t>indicates the size in bytes of i-th tile data (i.e., tile(i)) i | <t indent="0" pn="section-5.3.4-2.2.2">The variable TileSize[i] is | |||
| n raster order in a frame. The value of 0 for tile_size[i] is reserved for futur | set equal to tile_size[i].</t> | |||
| e use.</t> | </dd> | |||
| </li> | </dl> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>The variable TileSize[i] is set equal to tile_size[i].</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="frame-header"> | <section anchor="frame-header" numbered="true" removeInRFC="false" toc=" | |||
| <name>Frame header</name> | include" pn="section-5.3.5"> | |||
| <figure anchor="syntaxcode-frame_header"> | <name slugifiedName="name-frame-header">Frame Header</name> | |||
| <name>frame_header() syntax code</name> | <figure anchor="syntaxcode-frame_header" align="left" suppress-title=" | |||
| <artwork><![CDATA[ | false" pn="figure-12"> | |||
| <name slugifiedName="name-frame_header-syntax-code">frame_header() s | ||||
| yntax code</name> | ||||
| <artwork align="left" pn="section-5.3.5-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| frame_header(){ | | frame_header(){ | | |||
| frame_info() | | frame_info() | | |||
| reserved_zero_8bits | u(8) | reserved_zero_8bits | u(8) | |||
| color_description_present_flag | u(1) | color_description_present_flag | u(1) | |||
| if(color_description_present_flag){ | | if(color_description_present_flag){ | | |||
| color_primaries | u(8) | color_primaries | u(8) | |||
| transfer_characteristics | u(8) | transfer_characteristics | u(8) | |||
| matrix_coefficients | u(8) | matrix_coefficients | u(8) | |||
| full_range_flag | u(1) | full_range_flag | u(1) | |||
| } | | } | | |||
| use_q_matrix | u(1) | use_q_matrix | u(1) | |||
| if(use_q_matrix){ | | if(use_q_matrix){ | | |||
| quantization_matrix() | | quantization_matrix() | | |||
| } | | } | | |||
| tile_info() | | tile_info() | | |||
| reserved_zero_8bits | u(8) | reserved_zero_8bits | u(8) | |||
| byte_alignment() | | byte_alignment() | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.5-2"> | |||
| <li> | <dt pn="section-5.3.5-2.1">reserved_zero_8bits</dt> | |||
| <t>reserved_zero_8bits</t> | <dd pn="section-5.3.5-2.2"> | |||
| </li> | <bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to | |||
| </ul> | the profiles specified in <xref target="appendix-profile-level-band" | |||
| <ul empty="true"> | format="default" sectionFormat="of" derivedContent="Section 9"/>. Values of res | |||
| <li> | erved_zero_8bits greater than 0 are | |||
| <t>MUST be equal to 0 in bitstreams conforming to the profiles spe | reserved for future use. Decoders conforming to the profiles | |||
| cified in <xref target="appendix-profile-level-band"/> of this version of docume | specified in <xref target="appendix-profile-level-band" format="defa | |||
| nt. Values of reserved_zero_8bits greater than 0 are reserved for future use. De | ult" sectionFormat="of" derivedContent="Section 9"/> <bcp14>MUST</bcp14> ignore | |||
| coders conforming to the profiles specified in <xref target="appendix-profile-le | PBU with values of | |||
| vel-band"/> of this version of document MUST ignore PBU with values of reserved_ | reserved_zero_8bits greater than 0.</dd> | |||
| zero_8bits greater than 0.</t> | <dt pn="section-5.3.5-2.3">color_description_present_flag equal to 1 | |||
| </li> | </dt> | |||
| </ul> | <dd pn="section-5.3.5-2.4">specifies that color_primaries, transfer_ | |||
| <ul spacing="normal"> | characteristics, and | |||
| <li> | matrix_coefficients are present. color_description_present_flag | |||
| <t>color_description_present_flag equal to 1</t> | equal to 0 specifies that color_primaries, | |||
| </li> | transfer_characteristics, and matrix_coefficients are not | |||
| </ul> | present.</dd> | |||
| <ul empty="true"> | <dt pn="section-5.3.5-2.5">color_primaries</dt> | |||
| <li> | <dd pn="section-5.3.5-2.6"> | |||
| <t>specifies that color_primaries, transfer_characteristics and ma | <bcp14>MUST</bcp14> have the semantics of ColourPrimaries as | |||
| trix_coefficients are present. color_description_present_flag equal to 0 specifi | specified in <xref target="H273" format="default" sectionFormat="of" | |||
| es that color_primaries, transfer_characteristics and matrix_coefficients are no | derivedContent="H273"/>. When the color_primaries | |||
| t present.</t> | syntax element is not present, the value of color_primaries is | |||
| </li> | inferred to be equal to 2.</dd> | |||
| </ul> | <dt pn="section-5.3.5-2.7">transfer_characteristics</dt> | |||
| <ul spacing="normal"> | <dd pn="section-5.3.5-2.8"> | |||
| <li> | <bcp14>MUST</bcp14> have the semantics of | |||
| <t>color_primaries</t> | TransferCharacteristics as specified in <xref target="H273" format=" | |||
| </li> | default" sectionFormat="of" derivedContent="H273"/>. When the transfer_character | |||
| </ul> | istics syntax element | |||
| <ul empty="true"> | is not present, the value of transfer_characteristics is inferred | |||
| <li> | to be equal to 2.</dd> | |||
| <t>MUST have the semantics of ColourPrimaries as specified in <xre | <dt pn="section-5.3.5-2.9">matrix_coefficients</dt> | |||
| f target="H273"/>. When the color_primaries syntax element is not present, the v | <dd pn="section-5.3.5-2.10"> | |||
| alue of color_primaries is inferred to be equal to 2.</t> | <bcp14>MUST</bcp14> have the semantics of MatrixCoefficients | |||
| </li> | as specified in <xref target="H273" format="default" sectionFormat=" | |||
| </ul> | of" derivedContent="H273"/>. When the | |||
| <ul spacing="normal"> | matrix_coefficients syntax element is not present, the value of | |||
| <li> | matrix_coefficients is inferred to be equal to 2.</dd> | |||
| <t>transfer_characteristics</t> | <dt pn="section-5.3.5-2.11">full_range_flag</dt> | |||
| </li> | <dd pn="section-5.3.5-2.12"> | |||
| </ul> | <bcp14>MUST</bcp14> have the semantics of VideoFullRangeFlag | |||
| <ul empty="true"> | as specified in <xref target="H273" format="default" sectionFormat=" | |||
| <li> | of" derivedContent="H273"/>. When the full_range_flag | |||
| <t>MUST have the semantics of TransferCharacteristics as specified | syntax element is not present, the value of full_range_flag is | |||
| in <xref target="H273"/>. When the transfer_characteristics syntax element is n | inferred to be equal to 0.</dd> | |||
| ot present, the value of transfer_characteristics is inferred to be equal to 2.< | <dt pn="section-5.3.5-2.13">use_q_matrix</dt> | |||
| /t> | <dd pn="section-5.3.5-2.14">with a value of 1 specifies that the qua | |||
| </li> | ntization matrices are | |||
| </ul> | present. A value of 0 specifies that the quantization matrices are | |||
| <ul spacing="normal"> | not present.</dd> | |||
| <li> | <dt pn="section-5.3.5-2.15">reserved_zero_8bits</dt> | |||
| <t>matrix_coefficients</t> | <dd pn="section-5.3.5-2.16"> | |||
| </li> | <bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to | |||
| </ul> | the profiles specified in <xref target="appendix-profile-level-band" | |||
| <ul empty="true"> | format="default" sectionFormat="of" derivedContent="Section 9"/>. Values of res | |||
| <li> | erved_zero_8bits greater than 0 are | |||
| <t>MUST have the semantics of MatrixCoefficients as specified in < | reserved for future use. Decoders conforming to the profiles | |||
| xref target="H273"/>. When the matrix_coefficients syntax element is not present | specified in <xref target="appendix-profile-level-band" format="defa | |||
| , the value of matrix_coefficients is inferred to be equal to 2.</t> | ult" sectionFormat="of" derivedContent="Section 9"/> <bcp14>MUST</bcp14> ignore | |||
| </li> | PBU with values of | |||
| </ul> | reserved_zero_8bits greater than 0.</dd> | |||
| <ul spacing="normal"> | </dl> | |||
| <li> | ||||
| <t>full_range_flag</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>MUST have the semantics of VideoFullRangeFlag as specified in < | ||||
| xref target="H273"/>. When the full_range_flag syntax element is not present, th | ||||
| e value of full_range_flag is inferred to be equal to 0.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>use_q_matrix</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>A value of 1 specifies that the quantization matrices are prese | ||||
| nt. A value of 0 specifies that the quantization matrices are not present.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>reserved_zero_8bits</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>MUST be equal to 0 in bitstreams conforming to the profiles spe | ||||
| cified in <xref target="appendix-profile-level-band"/> of this version of docume | ||||
| nt. Values of reserved_zero_8bits greater than 0 are reserved for future use. De | ||||
| coders conforming to the profiles specified in <xref target="appendix-profile-le | ||||
| vel-band"/> of this version of document MUST ignore PBU with values of reserved_ | ||||
| zero_8bits greater than 0.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="frame-info"> | <section anchor="frame-info" numbered="true" removeInRFC="false" toc="in | |||
| <name>Frame information</name> | clude" pn="section-5.3.6"> | |||
| <figure anchor="syntaxcode-frame_info"> | <name slugifiedName="name-frame-information">Frame Information</name> | |||
| <name>frame_info() syntax code</name> | <figure anchor="syntaxcode-frame_info" align="left" suppress-title="fa | |||
| <artwork><![CDATA[ | lse" pn="figure-13"> | |||
| <name slugifiedName="name-frame_info-syntax-code">frame_info() synta | ||||
| x code</name> | ||||
| <artwork align="left" pn="section-5.3.6-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| frame_info(){ | | frame_info(){ | | |||
| profile_idc | u(8) | profile_idc | u(8) | |||
| level_idc | u(8) | level_idc | u(8) | |||
| band_idc | u(3) | band_idc | u(3) | |||
| reserved_zero_5bits | u(5) | reserved_zero_5bits | u(5) | |||
| frame_width | u(24) | frame_width | u(24) | |||
| frame_height | u(24) | frame_height | u(24) | |||
| chroma_format_idc | u(4) | chroma_format_idc | u(4) | |||
| bit_depth_minus8 | u(4) | bit_depth_minus8 | u(4) | |||
| capture_time_distance | u(8) | capture_time_distance | u(8) | |||
| reserved_zero_8bits | u(8) | reserved_zero_8bits | u(8) | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.6-2"> | |||
| <li> | <dt pn="section-5.3.6-2.1">profile_idc</dt> | |||
| <t>profile_idc</t> | <dd pn="section-5.3.6-2.2">indicates a profile to which the coded fr | |||
| </li> | ame conforms as | |||
| </ul> | specified in <xref target="appendix-profile-level-band" format="defa | |||
| <ul empty="true"> | ult" sectionFormat="of" derivedContent="Section 9"/>. Bitstreams <bcp14>SHALL NO | |||
| <li> | T</bcp14> contain values of profiles_idc other than those | |||
| <t>indicates a profile to which the coded frame conforms to as spe | specified in <xref target="appendix-profile-level-band" format="defa | |||
| cified in <xref target="appendix-profile-level-band"/>. Bitstreams SHALL NOT con | ult" sectionFormat="of" derivedContent="Section 9"/>. Other | |||
| tain values of profiles_idc other than those specified in <xref target="appendix | values of profile_idc are reserved for future use.</dd> | |||
| -profile-level-band"/>. Other values of profile_idc are reserved for future use. | <dt pn="section-5.3.6-2.3">level_idc</dt> | |||
| </t> | <dd pn="section-5.3.6-2.4">indicates a level to which the coded fram | |||
| </li> | e conforms as | |||
| </ul> | specified in <xref target="appendix-profile-level-band" format="defa | |||
| <ul spacing="normal"> | ult" sectionFormat="of" derivedContent="Section 9"/>. Bitstreams <bcp14>SHALL NO | |||
| <li> | T</bcp14> contain values of level_idc other than those specified | |||
| <t>level_idc</t> | in <xref target="appendix-profile-level-band" format="default" secti | |||
| </li> | onFormat="of" derivedContent="Section 9"/>. Other values of | |||
| </ul> | level_idc are reserved for future use.</dd> | |||
| <ul empty="true"> | <dt pn="section-5.3.6-2.5">band_idc</dt> | |||
| <li> | <dd pn="section-5.3.6-2.6">specifies a maximum coded data rate of le | |||
| <t>indicates a level to which the coded frame conforms to as speci | vel_idc as specified | |||
| fied in <xref target="appendix-profile-level-band"/>. Bitstreams SHALL NOT conta | in <xref target="appendix-profile-level-band" format="default" secti | |||
| in values of level_idc other than those specified in <xref target="appendix-prof | onFormat="of" derivedContent="Section 9"/>. Bitstreams | |||
| ile-level-band"/>. Other values of level_idc are reserved for future use.</t> | <bcp14>SHALL NOT</bcp14> contain values of band_idc other than | |||
| </li> | those specified in <xref target="appendix-profile-level-band" format | |||
| </ul> | ="default" sectionFormat="of" derivedContent="Section 9"/>. The value of band_id | |||
| <ul spacing="normal"> | c | |||
| <li> | <bcp14>MUST</bcp14> be in the range of 0 to 3. Other values of | |||
| <t>band_idc</t> | band_idc are reserved for future use.</dd> | |||
| </li> | <dt pn="section-5.3.6-2.7">reserved_zero_5bits</dt> | |||
| </ul> | <dd pn="section-5.3.6-2.8"> | |||
| <ul empty="true"> | <bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to | |||
| <li> | the profiles specified in <xref target="appendix-profile-level-band" | |||
| <t>specifies a maximum coded data rate of level_idc as specified i | format="default" sectionFormat="of" derivedContent="Section 9"/>. Values of res | |||
| n <xref target="appendix-profile-level-band"/>. Bitstreams SHALL NOT contain val | erved_zero_8bits greater than 0 are | |||
| ues of band_idc other than those specified in <xref target="appendix-profile-lev | reserved for future use. Decoders conforming to the profiles | |||
| el-band"/>. The value of band_idc MUST be in the range of 0 to 3. Other values o | specified in <xref target="appendix-profile-level-band" format="defa | |||
| f band_idc are reserved for future use.</t> | ult" sectionFormat="of" derivedContent="Section 9"/> <bcp14>MUST</bcp14> ignore | |||
| </li> | PBU with values of | |||
| </ul> | reserved_zero_8bits greater than 0.</dd> | |||
| <ul spacing="normal"> | <dt pn="section-5.3.6-2.9">frame_width</dt> | |||
| <li> | <dd pn="section-5.3.6-2.10">specifies the width of the frame in unit | |||
| <t>reserved_zero_5bits</t> | s of luma | |||
| </li> | samples. frame_width <bcp14>MUST</bcp14> be a multiple of 2 when | |||
| </ul> | chroma_format_idc has a value of 2. The value 0 is reserved for | |||
| <ul empty="true"> | future use.</dd> | |||
| <li> | <dt pn="section-5.3.6-2.11">frame_height</dt> | |||
| <t>MUST be equal to 0 in bitstreams conforming to the profiles spe | <dd pn="section-5.3.6-2.12">specifies the height of the frame in uni | |||
| cified in <xref target="appendix-profile-level-band"/> of this version of docume | ts of luma samples. The value 0 is reserved for future use.</dd> | |||
| nt. Values of reserved_zero_8bits greater than 0 are reserved for future use. De | <dt pn="section-5.3.6-2.13">The variables FrameWidthInMbsY, FrameHei | |||
| coders conforming to the profiles specified in <xref target="appendix-profile-le | ghtInMbsY, | |||
| vel-band"/> of this version of document MUST ignore PBU with values of reserved_ | FrameWidthInSamplesY, FrameHeightInSamplesY, FrameWidthInSamplesC, | |||
| zero_8bits greater than 0.</t> | FrameHeightInSamplesC, FrameSizeInMbsY, and FrameSizeInSamplesY | |||
| </li> | are derived as follows:</dt> | |||
| </ul> | <dd pn="section-5.3.6-2.14"> | |||
| <ul spacing="normal"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="sec | |||
| <li> | tion-5.3.6-2.14.1"> | |||
| <t>frame_width</t> | <li pn="section-5.3.6-2.14.1.1">FrameWidthInSamplesY = frame_wid | |||
| </li> | th</li> | |||
| </ul> | <li pn="section-5.3.6-2.14.1.2">FrameHeightInSamplesY = frame_he | |||
| <ul empty="true"> | ight</li> | |||
| <li> | <li pn="section-5.3.6-2.14.1.3">FrameWidthInMbsY = ceil(FrameWid | |||
| <t>specifies the width of frame in units of luma samples. frame_wi | thInSamplesY / MbWidth)</li> | |||
| dth MUST be a multiple of 2 when chroma_format_idc has a value of 2. The value o | <li pn="section-5.3.6-2.14.1.4">FrameHeightInMbsY = ceil(FrameHe | |||
| f 0 is reserved for future use.</t> | ightInSamplesY / MbHeight)</li> | |||
| </li> | <li pn="section-5.3.6-2.14.1.5">FrameWidthInSamplesC = FrameWidt | |||
| </ul> | hInSamplesY // SubWidthC</li> | |||
| <ul spacing="normal"> | <li pn="section-5.3.6-2.14.1.6">FrameHeightInSamplesC = FrameHei | |||
| <li> | ghtInSamplesY // SubHeightC</li> | |||
| <t>frame_height</t> | <li pn="section-5.3.6-2.14.1.7">FrameSizeInMbsY = FrameWidthInMb | |||
| </li> | sY * FrameHeightInMbsY</li> | |||
| </ul> | <li pn="section-5.3.6-2.14.1.8">FrameSizeInSamplesY = FrameWidth | |||
| <ul empty="true"> | InSamplesY * FrameHeightInSamplesY</li> | |||
| <li> | ||||
| <t>specifies the height of frame in units of luma samples. The val | ||||
| ue of 0 is reserved for future use.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>The variables FrameWidthInMbsY, FrameHeightInMbsY, FrameWidthIn | ||||
| SamplesY, FrameHeightInSamplesY, FrameWidthInSamplesC, FrameHeightInSamplesC, Fr | ||||
| ameSizeInMbsY, and FrameSizeInSamplesY are derived as follows:</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>FrameWidthInSamplesY = frame_width</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>FrameHeightInSamplesY = frame_height</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>FrameWidthInMbsY = ceil(FrameWidthInSamplesY / MbWidth)</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>FrameHeightInMbsY = ceil(FrameHeightInSamplesY / MbHeight)< | ||||
| /t> | ||||
| </li> | ||||
| <li> | ||||
| <t>FrameWidthInSamplesC = FrameWidthInSamplesY // SubWidthC</t | ||||
| > | ||||
| </li> | ||||
| <li> | ||||
| <t>FrameHeightInSamplesC = FrameHeightInSamplesY // SubHeightC | ||||
| </t> | ||||
| </li> | ||||
| <li> | ||||
| <t>FrameSizeInMbsY = FrameWidthInMbsY * FrameHeightInMbsY</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>FrameSizeInSamplesY = FrameWidthInSamplesY * FrameHeightInS | ||||
| amplesY</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>chroma_format_idc</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>specifies the chroma sampling relative to the luma sampling as | ||||
| specified in <xref target="_table-chroma_format_idc"/> The value of chroma_forma | ||||
| t_idc MUST be 0, 2, 3, or 4. Other values are reserved for future use.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>bit_depth_minus8</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>specifies the bit depth of the samples. The variables BitDepth | ||||
| and QpBdOffset are derived as follows:</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>BitDepth = bit_depth_minus8 + 8</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | </ul> | |||
| </li> | </dd> | |||
| </ul> | <dt pn="section-5.3.6-2.15">chroma_format_idc</dt> | |||
| <ul empty="true"> | <dd pn="section-5.3.6-2.16">specifies the chroma sampling relative t | |||
| <li> | o the luma sampling as | |||
| <ul empty="true"> | specified in <xref target="_table-chroma_format_idc" format="default | |||
| <li> | " sectionFormat="of" derivedContent="Table 2"/>. The value | |||
| <ul spacing="normal"> | of chroma_format_idc <bcp14>MUST</bcp14> be 0, 2, 3, or 4. Other | |||
| <li> | values are reserved for future use.</dd> | |||
| <t>QpBdOffset = bit_depth_minus8 * 6</t> | <dt pn="section-5.3.6-2.17">bit_depth_minus8</dt> | |||
| </li> | <dd pn="section-5.3.6-2.18"> | |||
| </ul> | <t indent="0" pn="section-5.3.6-2.18.1">specifies the bit depth of | |||
| </li> | the samples. The variables BitDepth and QpBdOffset are derived as follows:</t> | |||
| <ul spacing="normal" bare="false" empty="false" indent="3" pn="sec | ||||
| tion-5.3.6-2.18.2"> | ||||
| <li pn="section-5.3.6-2.18.2.1">BitDepth = bit_depth_minus8 + 8< | ||||
| /li> | ||||
| <li pn="section-5.3.6-2.18.2.2">QpBdOffset = bit_depth_minus8 * | ||||
| 6</li> | ||||
| </ul> | </ul> | |||
| </li> | <t indent="0" pn="section-5.3.6-2.18.3">bit_depth_minus8 <bcp14>MU | |||
| </ul> | ST</bcp14> be in the range of 2 to 8, inclusive. Other values are reserved for f | |||
| <ul empty="true"> | uture use.</t> | |||
| <li> | </dd> | |||
| <t>bit_depth_minus8 MUST be in the range of 2 to 8, inclusive. Oth | <dt pn="section-5.3.6-2.19">capture_time_distance</dt> | |||
| er values are reserved for future use.</t> | <dd pn="section-5.3.6-2.20">indicates the time difference between th | |||
| </li> | e capture time of the | |||
| </ul> | frames in the previous access unit and frames in the current | |||
| <ul spacing="normal"> | access unit in milliseconds if there has been any access unit | |||
| <li> | preceding the access unit this frame belongs to.</dd> | |||
| <t>capture_time_distance</t> | <dt pn="section-5.3.6-2.21">reserved_zero_8bits</dt> | |||
| </li> | <dd pn="section-5.3.6-2.22"> | |||
| </ul> | <bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to | |||
| <ul empty="true"> | the profiles specified in <xref target="appendix-profile-level-band" | |||
| <li> | format="default" sectionFormat="of" derivedContent="Section 9"/>. Values of res | |||
| <t>indicates time difference between the capture time of the frame | erved_zero_8bits greater than 0 are | |||
| s in the previous access unit and frames in the current access unit in milliseco | reserved for future use. Decoders conforming to the profiles | |||
| nds if there has been any access unit preceding the access unit this frame belon | specified in <xref target="appendix-profile-level-band" format="defa | |||
| gs to.</t> | ult" sectionFormat="of" derivedContent="Section 9"/> <bcp14>MUST</bcp14> ignore | |||
| </li> | PBU with values of | |||
| </ul> | reserved_zero_8bits greater than 0.</dd> | |||
| <ul spacing="normal"> | </dl> | |||
| <li> | ||||
| <t>reserved_zero_8bits</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>MUST be equal to 0 in bitstreams conforming to the profiles spe | ||||
| cified in <xref target="appendix-profile-level-band"/> of this version of docume | ||||
| nt. Values of reserved_zero_8bits greater than 0 are reserved for future use. De | ||||
| coders conforming to the profiles specified in <xref target="appendix-profile-le | ||||
| vel-band"/> of this version of document MUST ignore PBU with values of reserved_ | ||||
| zero_8bits greater than 0.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="quantization-matrix"> | <section anchor="quantization-matrix" numbered="true" removeInRFC="false | |||
| <name>Quantization matrix</name> | " toc="include" pn="section-5.3.7"> | |||
| <figure anchor="syntaxcode-quantization_matrix"> | <name slugifiedName="name-quantization-matrix">Quantization Matrix</na | |||
| <name>quantization_matrix() syntax code</name> | me> | |||
| <artwork><![CDATA[ | <figure anchor="syntaxcode-quantization_matrix" align="left" suppress- | |||
| title="false" pn="figure-14"> | ||||
| <name slugifiedName="name-quantization_matrix-syntax-">quantization_ | ||||
| matrix() syntax code</name> | ||||
| <artwork align="left" pn="section-5.3.7-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| quantization_matrix(){ | | quantization_matrix(){ | | |||
| for(i = 0; i < NumComps; i++){ | | for(i = 0; i < NumComps; i++){ | | |||
| for(y = 0; y < 8; y++){ | | for(y = 0; y < 8; y++){ | | |||
| for(x = 0; x < 8; x++){ | | for(x = 0; x < 8; x++){ | | |||
| q_matrix[i][x][y] | u(8) | q_matrix[i][x][y] | u(8) | |||
| } | | } | | |||
| } | | } | | |||
| } | | } | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.7-2"> | |||
| <li> | <dt pn="section-5.3.7-2.1">q_matrix[i][x][y]</dt> | |||
| <t>q_matrix[i][x][y]</t> | <dd pn="section-5.3.7-2.2"> | |||
| </li> | <t indent="0" pn="section-5.3.7-2.2.1">specifies a scaling value i | |||
| </ul> | n the quantization matrices. When | |||
| <ul empty="true"> | q_matrix[i][x][y] is not present, it is inferred to be equal to | |||
| <li> | 16. The array index i specifies an indicator for the color | |||
| <t>specifies a scaling value in the quantization matrices. When q_ | component; when chroma_format_idc is equal to 2 or 3, the value of t | |||
| matrix[i][x][y] is not present, it is inferred to be equal to 16. The array inde | he index i is equal to 0 for Y component, 1 | |||
| x i specifies an indicator for the color component; when chroma_format_idc is eq | for Cb, and 2 for Cr. The value of 0 for q_matrix[i][x][y] is | |||
| ual to 2 or 3, 0 for Y, 1 for Cb and 2 for Cr. The value of 0 for q_matrix[i][x] | reserved for future use.</t> | |||
| [y] is reserved for future use.</t> | <t indent="0" pn="section-5.3.7-2.2.2">The quantization matrix, QM | |||
| </li> | atrix[i][x][y], is derived as follows:</t> | |||
| </ul> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="sec | |||
| <ul empty="true"> | tion-5.3.7-2.2.3"> | |||
| <li> | <li pn="section-5.3.7-2.2.3.1">QMatrix[i][x][y] = q_matrix[i][x] | |||
| <t>The quantization matrix, QMatrix[i][x][y], is derived as follow | [y]</li> | |||
| s:</t> | </ul> | |||
| </li> | </dd> | |||
| </ul> | </dl> | |||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>QMatrix[i][x][y] = q_matrix[i][x][y]</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="tile-info"> | <section anchor="tile-info" numbered="true" removeInRFC="false" toc="inc | |||
| <name>Tile info</name> | lude" pn="section-5.3.8"> | |||
| <figure anchor="syntaxcode-tile_info"> | <name slugifiedName="name-tile-info">Tile Info</name> | |||
| <name>tile_info() syntax code</name> | <figure anchor="syntaxcode-tile_info" align="left" suppress-title="fal | |||
| <artwork><![CDATA[ | se" pn="figure-15"> | |||
| <name slugifiedName="name-tile_info-syntax-code">tile_info() syntax | ||||
| code</name> | ||||
| <artwork align="left" pn="section-5.3.8-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| tile_info(){ | | tile_info(){ | | |||
| tile_width_in_mbs | u(20) | tile_width_in_mbs | u(20) | |||
| tile_height_in_mbs | u(20) | tile_height_in_mbs | u(20) | |||
| startMb = 0 | | startMb = 0 | | |||
| for(i = 0; startMb < FrameWidthInMbsY; i++){ | | for(i = 0; startMb < FrameWidthInMbsY; i++){ | | |||
| ColStarts[i] = startMb * MbWidth | | ColStarts[i] = startMb * MbWidth | | |||
| startMb += tile_width_in_mbs | | startMb += tile_width_in_mbs | | |||
| } | | } | | |||
| ColStarts[i] = FrameWidthInMbsY*MbWidth | | ColStarts[i] = FrameWidthInMbsY*MbWidth | | |||
| TileCols = i | | TileCols = i | | |||
| startMb = 0 | | startMb = 0 | | |||
| for(i = 0; startMb < FrameHeightInMbsY; i++){ | | for(i = 0; startMb < FrameHeightInMbsY; i++){ | | |||
| RowStarts[i] = startMb * MbHeight | | RowStarts[i] = startMb * MbHeight | | |||
| startMb += tile_height_in_mbs | | startMb += tile_height_in_mbs | | |||
| } | | } | | |||
| RowStarts[i] = FrameHeightInMbsY*MbHeight | | RowStarts[i] = FrameHeightInMbsY*MbHeight | | |||
| TileRows = i | | TileRows = i | | |||
| NumTiles = TileCols * TileRows | | NumTiles = TileCols * TileRows | | |||
| tile_size_present_in_fh_flag | u(1) | tile_size_present_in_fh_flag | u(1) | |||
| if(tile_size_present_in_fh_flag){ | | if(tile_size_present_in_fh_flag){ | | |||
| for(i = 0; i < NumTiles; i++){ | | for(i = 0; i < NumTiles; i++){ | | |||
| tile_size_in_fh[i] | u(32) | tile_size_in_fh[i] | u(32) | |||
| } | | } | | |||
| } | | } | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.8-2"> | |||
| <li> | <dt pn="section-5.3.8-2.1">tile_width_in_mbs</dt> | |||
| <t>tile_width_in_mbs</t> | <dd pn="section-5.3.8-2.2">specifies the width of a tile in units of | |||
| </li> | MBs.</dd> | |||
| </ul> | <dt pn="section-5.3.8-2.3">tile_height_in_mbs</dt> | |||
| <ul empty="true"> | <dd pn="section-5.3.8-2.4">specifies the height of a tile in units o | |||
| <li> | f MBs.</dd> | |||
| <t>specifies the width of a tile in units of MBs.</t> | <dt pn="section-5.3.8-2.5">tile_size_present_in_fh_flag</dt> | |||
| </li> | <dd pn="section-5.3.8-2.6">equal to 1 specifies that tile_size_in_fh | |||
| </ul> | [i] is present in the | |||
| <ul spacing="normal"> | frame header. tile_size_present_in_fh_flag equal to 0 specifies | |||
| <li> | that tile_size_in_fh[i] is not present in the frame header.</dd> | |||
| <t>tile_height_in_mbs</t> | <dt pn="section-5.3.8-2.7">tile_size_in_fh[i]</dt> | |||
| </li> | <dd pn="section-5.3.8-2.8">indicates the size in bytes of i-th tile | |||
| </ul> | data in raster order | |||
| <ul empty="true"> | in a frame. The value of tile_size_in_fh[i] <bcp14>MUST</bcp14> | |||
| <li> | have the same value with tile_size[i]. When it is not present, the | |||
| <t>specifies the height of a tile in units of MBs.</t> | value of tile_size_in_fh[i] is inferred to be equal to | |||
| </li> | tile_size[i]. The value of 0 for tile_size_in_fh[i] is reserved | |||
| </ul> | for future use.</dd> | |||
| <ul spacing="normal"> | </dl> | |||
| <li> | ||||
| <t>tile_size_present_in_fh_flag</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>equal to 1 specifies that tile_size_in_fh[i] is present in Fram | ||||
| e header. tile_size_present_in_fh_flag equal to 0 specifies that tile_size_in_fh | ||||
| [i] is not present in Frame header.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>tile_size_in_fh[i]</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>indicates the size in bytes of i-th tile data in raster order i | ||||
| n a frame. The value of tile_size_in_fh[i] MUST have the same value with tile_si | ||||
| ze[i]. When it is not present, the value of tile_size_in_fh[i] is inferred to be | ||||
| equal to tile_size[i]. The value of 0 for tile_size_in_fh[i] is reserved for fu | ||||
| ture use.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="au-info"> | <section anchor="au-info" numbered="true" removeInRFC="false" toc="inclu | |||
| <name>Access unit information</name> | de" pn="section-5.3.9"> | |||
| <figure anchor="syntaxcode-au_info"> | <name slugifiedName="name-access-unit-information">Access Unit Informa | |||
| <name>au_info() syntax code</name> | tion</name> | |||
| <artwork><![CDATA[ | <figure anchor="syntaxcode-au_info" align="left" suppress-title="false | |||
| " pn="figure-16"> | ||||
| <name slugifiedName="name-au_info-syntax-code">au_info() syntax code | ||||
| </name> | ||||
| <artwork align="left" pn="section-5.3.9-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| au_info(){ | | au_info(){ | | |||
| num_frames | u(16) | num_frames | u(16) | |||
| for(i = 0; i < num_frames; i++){ | | for(i = 0; i < num_frames; i++){ | | |||
| pbu_type | u(8) | pbu_type | u(8) | |||
| group_id | u(16) | group_id | u(16) | |||
| reserved_zero_8bits | u(8) | reserved_zero_8bits | u(8) | |||
| frame_info() | | frame_info() | | |||
| } | | } | | |||
| reserved_zero_8bits | u(8) | reserved_zero_8bits | u(8) | |||
| byte_alignment() | | byte_alignment() | | |||
| filler() | | filler() | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.9-2"> | |||
| <li> | <dt pn="section-5.3.9-2.1">num_frames</dt> | |||
| <t>num_frames</t> | <dd pn="section-5.3.9-2.2">indicates the number of frames contained | |||
| </li> | in the current AU.</dd> | |||
| </ul> | <dt pn="section-5.3.9-2.3">pbu_type</dt> | |||
| <ul empty="true"> | <dd pn="section-5.3.9-2.4"> | |||
| <li> | <t indent="0" pn="section-5.3.9-2.4.1">has the same semantics as p | |||
| <t>indicates the number of frames contained in the current AU.</t> | bu_type in the pbu_header() syntax.</t> | |||
| </li> | <t indent="0" pn="section-5.3.9-2.4.2">Note: The value of pbu_type | |||
| </ul> | <bcp14>MUST</bcp14> be 1, 2, 25, | |||
| <ul spacing="normal"> | 26, or 27 in bitstreams conforming to this document.</t> | |||
| <li> | </dd> | |||
| <t>pbu_type</t> | <dt pn="section-5.3.9-2.5">group_id</dt> | |||
| </li> | <dd pn="section-5.3.9-2.6">has the same semantics as group_id in the | |||
| </ul> | pbu_header() syntax.</dd> | |||
| <ul empty="true"> | <dt pn="section-5.3.9-2.7">reserved_zero_8bits</dt> | |||
| <li> | <dd pn="section-5.3.9-2.8"> | |||
| <t>has the same semantics as pbu_type in the pbu_header() syntax. | <bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to | |||
| Note: The value of pbu_type MUST be 1, 2, 25, 26, or 27 in bitstreams conforming | the profiles specified in <xref target="appendix-profile-level-band" | |||
| to this version of document.</t> | format="default" sectionFormat="of" derivedContent="Section 9"/>. Values of res | |||
| </li> | erved_zero_8bits greater than 0 are | |||
| </ul> | reserved for future use. Decoders conforming to the profiles | |||
| <ul spacing="normal"> | specified in <xref target="appendix-profile-level-band" format="defa | |||
| <li> | ult" sectionFormat="of" derivedContent="Section 9"/> <bcp14>MUST</bcp14> ignore | |||
| <t>group_id</t> | PBU with values of | |||
| </li> | reserved_zero_8bits greater than 0.</dd> | |||
| </ul> | </dl> | |||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>has the same semantics as group_id in the pbu_header() syntax.< | ||||
| /t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>reserved_zero_8bits</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>MUST be equal to 0 in bitstreams conforming to the profiles spe | ||||
| cified in <xref target="appendix-profile-level-band"/> of this version of docume | ||||
| nt. Values of reserved_zero_8bits greater than 0 are reserved for future use. De | ||||
| coders conforming to the profiles specified in <xref target="appendix-profile-le | ||||
| vel-band"/> of this version of document MUST ignore PBU with values of reserved_ | ||||
| zero_8bits greater than 0.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="metadata"> | <section anchor="metadata" numbered="true" removeInRFC="false" toc="incl | |||
| <name>Metadata</name> | ude" pn="section-5.3.10"> | |||
| <figure anchor="syntaxcode-metadata"> | <name slugifiedName="name-metadata">Metadata</name> | |||
| <name>metadata() syntax code</name> | <figure anchor="syntaxcode-metadata" align="left" suppress-title="fals | |||
| <artwork><![CDATA[ | e" pn="figure-17"> | |||
| <name slugifiedName="name-metadata-syntax-code">metadata() syntax co | ||||
| de</name> | ||||
| <artwork align="left" pn="section-5.3.10-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| metadata(){ | | metadata(){ | | |||
| metadata_size | u(32) | metadata_size | u(32) | |||
| currReadSize = 0 | | currReadSize = 0 | | |||
| do{ | | do{ | | |||
| payloadType = 0 | | payloadType = 0 | | |||
| while(next_bits(8) == 0xFF){ | | while(next_bits(8) == 0xFF){ | | |||
| ff_byte | f(8) | ff_byte | f(8) | |||
| payloadType += ff_byte | | payloadType += ff_byte | | |||
| skipping to change at line 1515 ¶ | skipping to change at line 1638 ¶ | |||
| ff_byte | f(8) | ff_byte | f(8) | |||
| payloadSize += ff_byte | | payloadSize += ff_byte | | |||
| currReadSize++ | | currReadSize++ | | |||
| } | | } | | |||
| metadata_payload_size | u(8) | metadata_payload_size | u(8) | |||
| payloadSize += metadata_payload_size | | payloadSize += metadata_payload_size | | |||
| currReadSize++ | | currReadSize++ | | |||
| | | | | |||
| metadata_payload(payloadType, payloadSize) | | metadata_payload(payloadType, payloadSize) | | |||
| currReadSize += payloadSize | | currReadSize += payloadSize | | |||
| } while(metadata_size > currReadSize) | | } while(metadata_size > currReadSize) | | |||
| filler() | | filler() | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.10-2"> | |||
| <li> | <dt pn="section-5.3.10-2.1">metadata_size</dt> | |||
| <t>metadata_size</t> | <dd pn="section-5.3.10-2.2">specifies the size of metadata before fi | |||
| </li> | ller() in the current PBU.</dd> | |||
| </ul> | <dt pn="section-5.3.10-2.3">ff_byte</dt> | |||
| <ul empty="true"> | <dd pn="section-5.3.10-2.4">is a byte equal to 0xFF.</dd> | |||
| <li> | <dt pn="section-5.3.10-2.5">metadata_payload_type</dt> | |||
| <t>specifies the size of metadata before filler() in the current P | <dd pn="section-5.3.10-2.6">specifies the last byte of the payload t | |||
| BU.</t> | ype of a metadata.</dd> | |||
| </li> | <dt pn="section-5.3.10-2.7">metadata_payload_size</dt> | |||
| </ul> | <dd pn="section-5.3.10-2.8">specifies the last byte of the payload s | |||
| <ul spacing="normal"> | ize of a metadata.</dd> | |||
| <li> | </dl> | |||
| <t>ff_byte</t> | <t indent="0" pn="section-5.3.10-3">Syntax and semantics of metadata_p | |||
| </li> | ayload() are specified in <xref target="appendix-metadata" format="default" sect | |||
| </ul> | ionFormat="of" derivedContent="Section 8"/>.</t> | |||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>is a byte equal to 0xFF.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>metadata_payload_type</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>specifies the last byte of the payload type of a metadata</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>metadata_payload_size</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>specifies the last byte of the payload size of a metadata</t> | ||||
| </li> | ||||
| </ul> | ||||
| <t>Syntax and semantics of metadata_payload() are specified in <xref t | ||||
| arget="appendix-metadata"/>.</t> | ||||
| </section> | </section> | |||
| <section anchor="filler"> | <section anchor="filler" numbered="true" removeInRFC="false" toc="includ | |||
| <name>Filler</name> | e" pn="section-5.3.11"> | |||
| <figure anchor="syntaxcode-filler"> | <name slugifiedName="name-filler">Filler</name> | |||
| <name>filler() syntax code</name> | <figure anchor="syntaxcode-filler" align="left" suppress-title="false" | |||
| <artwork><![CDATA[ | pn="figure-18"> | |||
| <name slugifiedName="name-filler-syntax-code">filler() syntax code</ | ||||
| name> | ||||
| <artwork align="left" pn="section-5.3.11-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| filler(){ | | filler(){ | | |||
| while(next_bits(8) == 0xFF) | | while(next_bits(8) == 0xFF) | | |||
| ff_byte | f(8) | ff_byte | f(8) | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.11-2"> | |||
| <li> | <dt pn="section-5.3.11-2.1">ff_byte</dt> | |||
| <t>ff_byte</t> | <dd pn="section-5.3.11-2.2">is a byte equal to 0xFF.</dd> | |||
| </li> | </dl> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>is a byte equal to 0xFF.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="tile"> | <section anchor="tile" numbered="true" removeInRFC="false" toc="include" | |||
| <name>Tile</name> | pn="section-5.3.12"> | |||
| <figure anchor="syntaxcode-tile"> | <name slugifiedName="name-tile">Tile</name> | |||
| <name>tile() syntax code</name> | <figure anchor="syntaxcode-tile" align="left" suppress-title="false" p | |||
| <artwork><![CDATA[ | n="figure-19"> | |||
| <name slugifiedName="name-tile-syntax-code">tile() syntax code</name | ||||
| > | ||||
| <artwork align="left" pn="section-5.3.12-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| tile(tileIdx){ | | tile(tileIdx){ | | |||
| tile_header(tileIdx) | | tile_header(tileIdx) | | |||
| for(i = 0; i < NumComps; i++){ | | for(i = 0; i < NumComps; i++){ | | |||
| tile_data(tileIdx, i) | | tile_data(tileIdx, i) | | |||
| } | | } | | |||
| while(more_data_in_tile()){ | | while(more_data_in_tile()){ | | |||
| tile_dummy_byte | b(8) | tile_dummy_byte | b(8) | |||
| } | | } | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.12-2"> | |||
| <li> | <dt pn="section-5.3.12-2.1">tile_dummy_byte</dt> | |||
| <t>tile_dummy_byte</t> | <dd pn="section-5.3.12-2.2">has any pattern of 8-bit string.</dd> | |||
| </li> | </dl> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>has any pattern of 8-bit string.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="tile-header"> | <section anchor="tile-header" numbered="true" removeInRFC="false" toc="i | |||
| <name>Tile header</name> | nclude" pn="section-5.3.13"> | |||
| <figure anchor="syntaxcode-tileheader"> | <name slugifiedName="name-tile-header">Tile Header</name> | |||
| <name>tile_header() syntax code</name> | <figure anchor="syntaxcode-tileheader" align="left" suppress-title="fa | |||
| <artwork><![CDATA[ | lse" pn="figure-20"> | |||
| <name slugifiedName="name-tile_header-syntax-code">tile_header() syn | ||||
| tax code</name> | ||||
| <artwork align="left" pn="section-5.3.13-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| tile_header(tileIdx){ | | tile_header(tileIdx){ | | |||
| tile_header_size | u(16) | tile_header_size | u(16) | |||
| tile_index | u(16) | tile_index | u(16) | |||
| for(i = 0; i < NumComps; i++){ | | for(i = 0; i < NumComps; i++){ | | |||
| tile_data_size[i] | u(32) | tile_data_size[i] | u(32) | |||
| } | | } | | |||
| for(i = 0; i < NumComps; i++){ | | for(i = 0; i < NumComps; i++){ | | |||
| tile_qp[i] | u(8) | tile_qp[i] | u(8) | |||
| } | | } | | |||
| reserved_zero_8bits | u(8) | reserved_zero_8bits | u(8) | |||
| byte_alignment() | | byte_alignment() | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.13-2"> | |||
| <li> | <dt pn="section-5.3.13-2.1">tile_header_size</dt> | |||
| <t>tile_header_size</t> | <dd pn="section-5.3.13-2.2">indicates the size of the tile header in | |||
| </li> | bytes.</dd> | |||
| </ul> | <dt pn="section-5.3.13-2.3">tile_index</dt> | |||
| <ul empty="true"> | <dd pn="section-5.3.13-2.4">specifies the tile index in raster order | |||
| <li> | in a frame. tile_index <bcp14>MUST</bcp14> have the same value as tileIdx.</dd> | |||
| <t>indicates the size of the tile header in bytes.</t> | <dt pn="section-5.3.13-2.5">tile_data_size[i]</dt> | |||
| </li> | <dd pn="section-5.3.13-2.6">indicates the size of the i-th color com | |||
| </ul> | ponent data in a tile in | |||
| <ul spacing="normal"> | bytes. The array index i specifies an indicator for the color | |||
| <li> | component; when chroma_format_idc is equal to 2 or 3, the value of t | |||
| <t>tile_index</t> | he index i is equal to 0 for Y component, 1 for Cb, and 2 for Cr. | |||
| </li> | The value of 0 for tile_data_size[i] is | |||
| </ul> | reserved for future use.</dd> | |||
| <ul empty="true"> | <dt pn="section-5.3.13-2.7">tile_qp[i]</dt> | |||
| <li> | <dd pn="section-5.3.13-2.8"> | |||
| <t>specifies the tile index in raster order in a frame. tile_index | <t indent="0" pn="section-5.3.13-2.8.1">specifies the quantization | |||
| MUST have the same value with tileIdx.</t> | parameter value for i-th color | |||
| </li> | component. The array index i specifies an indicator for the color | |||
| </ul> | component; when chroma_format_idc is equal to 2 or 3, the value of t | |||
| <ul spacing="normal"> | he index i is equal to 0 for Y component, 1 for Cb, and 2 for Cr. The Qp[i] to b | |||
| <li> | e used for the MBs in the tile are | |||
| <t>tile_data_size[i]</t> | derived as follows:</t> | |||
| </li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="sec | |||
| </ul> | tion-5.3.13-2.8.2"> | |||
| <ul empty="true"> | <li pn="section-5.3.13-2.8.2.1">Qp[i] = tile_qp[i] - QpBdOffset< | |||
| <li> | /li> | |||
| <t>indicates the size of i-th color component data in a tile in by | <li pn="section-5.3.13-2.8.2.2">Qp[i] <bcp14>MUST</bcp14> be in | |||
| tes. The array index i specifies an indicator for the color component; when chro | the range of -QpBdOffset to 51, inclusive.</li> | |||
| ma_format_idc is equal to 2 or 3, 0 for Y, 1 for Cb and 2 for Cr. The value of 0 | ||||
| for tile_data_size[i] is reserved for future use.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>tile_qp[i]</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>specify the quantization parameter value for i-th color compone | ||||
| nt. The array index i specifies an indicator for the color component; when chrom | ||||
| a_format_idc is equal to 2 or 3, 0 for Y, 1 for Cb and 2 for Cr. Qp[i] to be use | ||||
| d for the MBs in the tile are derived as follows</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>Qp[i] = tile_qp[i] - QpBdOffset</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>Qp[i] MUST be in the range of -QpBdOffset to 51, inclus | ||||
| ive.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | </ul> | |||
| </li> | </dd> | |||
| </ul> | <dt pn="section-5.3.13-2.9">reserved_zero_8bits</dt> | |||
| <ul spacing="normal"> | <dd pn="section-5.3.13-2.10"> | |||
| <li> | <bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to | |||
| <t>reserved_zero_8bits</t> | the profiles specified in <xref target="appendix-profile-level-band" | |||
| </li> | format="default" sectionFormat="of" derivedContent="Section 9"/>. Values of res | |||
| </ul> | erved_zero_8bits greater than 0 are | |||
| <ul empty="true"> | reserved for future use. Decoders conforming to the profiles | |||
| <li> | specified in <xref target="appendix-profile-level-band" format="defa | |||
| <t>MUST be equal to 0 in bitstreams conforming to the profiles spe | ult" sectionFormat="of" derivedContent="Section 9"/> <bcp14>MUST</bcp14> ignore | |||
| cified in <xref target="appendix-profile-level-band"/> of this version of docume | PBU with values of | |||
| nt. Values of reserved_zero_8bits greater than 0 are reserved for future use. De | reserved_zero_8bits greater than 0.</dd> | |||
| coders conforming to the profiles specified in <xref target="appendix-profile-le | </dl> | |||
| vel-band"/> of this version of document MUST ignore PBU with values of reserved_ | ||||
| zero_8bits greater than 0.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="tile-data"> | <section anchor="tile-data" numbered="true" removeInRFC="false" toc="inc | |||
| <name>Tile data</name> | lude" pn="section-5.3.14"> | |||
| <figure anchor="syntaxcode-tiledata"> | <name slugifiedName="name-tile-data">Tile Data</name> | |||
| <name>tile_data() syntax code</name> | <figure anchor="syntaxcode-tiledata" align="left" suppress-title="fals | |||
| <artwork><![CDATA[ | e" pn="figure-21"> | |||
| <name slugifiedName="name-tile_data-syntax-code">tile_data() syntax | ||||
| code</name> | ||||
| <artwork align="left" pn="section-5.3.14-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| tile_data(tileIdx, cIdx){ | | tile_data(tileIdx, cIdx){ | | |||
| x0 = ColStarts[tileIdx % TileCols] | | x0 = ColStarts[tileIdx % TileCols] | | |||
| y0 = RowStarts[tileIdx // TileCols] | | y0 = RowStarts[tileIdx // TileCols] | | |||
| numMbColsInTile = (ColStarts[tileIdx % TileCols + 1] - | | numMbColsInTile = (ColStarts[tileIdx % TileCols + 1] - | | |||
| ColStarts[tileIdx % TileCols]) // MbWidth | | ColStarts[tileIdx % TileCols]) // MbWidth | | |||
| numMbRowsInTile = (RowStarts[tileIdx // TileCols + 1] - | | numMbRowsInTile = (RowStarts[tileIdx // TileCols + 1] - | | |||
| RowStarts[tileIdx // TileCols]) // MbHeight | | RowStarts[tileIdx // TileCols]) // MbHeight | | |||
| numMbsInTile = numMbColsInTile * numMbRowsInTile | | numMbsInTile = numMbColsInTile * numMbRowsInTile | | |||
| PrevDC = 0 | | PrevDC = 0 | | |||
| PrevDcDiff = 20 | | PrevDcDiff = 20 | | |||
| Prev1stAcLevel = 0 | | Prev1stAcLevel = 0 | | |||
| for(i = 0; i < numMbsInTile; i++){ | | for(i = 0; i < numMbsInTile; i++){ | | |||
| xMb = x0 + ((i % numMbColsInTile) * MbWidth) | | xMb = x0 + ((i % numMbColsInTile) * MbWidth) | | |||
| yMb = y0 + ((i // numMbColsInTile) * MbHeight) | | yMb = y0 + ((i // numMbColsInTile) * MbHeight) | | |||
| macroblock_layer(xMb, yMb, cIdx) | | macroblock_layer(xMb, yMb, cIdx) | | |||
| } | | } | | |||
| byte_alignment() | | byte_alignment() | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t indent="0" pn="section-5.3.14-2">The tile_data() syntax calculates the location of the macroblocks belonging to each tile and collects them.</t> | ||||
| </section> | </section> | |||
| <section anchor="mb-layer"> | <section anchor="mb-layer" numbered="true" removeInRFC="false" toc="incl | |||
| <name>Macroblock layer</name> | ude" pn="section-5.3.15"> | |||
| <figure anchor="syntaxcode-macroblock_layer"> | <name slugifiedName="name-macroblock-layer">Macroblock Layer</name> | |||
| <name>macroblock_layer() syntax code</name> | <figure anchor="syntaxcode-macroblock_layer" align="left" suppress-tit | |||
| <artwork><![CDATA[ | le="false" pn="figure-22"> | |||
| <name slugifiedName="name-macroblock_layer-syntax-cod">macroblock_la | ||||
| yer() syntax code</name> | ||||
| <artwork align="left" pn="section-5.3.15-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| macroblock_layer(xMb, yMb, cIdx){ | | macroblock_layer(xMb, yMb, cIdx){ | | |||
| subW = (cIdx == 0)? 1 : SubWidthC | | subW = (cIdx == 0)? 1 : SubWidthC | | |||
| subH = (cIdx == 0)? 1 : SubHeightC | | subH = (cIdx == 0)? 1 : SubHeightC | | |||
| blkWidth = (cIdx == 0)? MbWidth : MbWidthC | | blkWidth = (cIdx == 0)? MbWidth : MbWidthC | | |||
| blkHeight = (cIdx == 0)? MbHeight : MbHeightC | | blkHeight = (cIdx == 0)? MbHeight : MbHeightC | | |||
| TrSize = 8 | | TrSize = 8 | | |||
| for(y = 0; y < blkHeight; y += TrSize){ | | for(y = 0; y < blkHeight; y += TrSize){ | | |||
| for(x = 0; x < blkWidth; x += TrSize){ | | for(x = 0; x < blkWidth; x += TrSize){ | | |||
| abs_dc_coeff_diff | h(v) | abs_dc_coeff_diff | h(v) | |||
| if(abs_dc_coeff_diff) | | if(abs_dc_coeff_diff) | | |||
| sign_dc_coeff_diff | u(1) | sign_dc_coeff_diff | u(1) | |||
| TransCoeff[cIdx][xMb // subW + x][yMb // subH + y] = | | TransCoeff[cIdx][xMb // subW + x][yMb // subH + y] = | | |||
| PrevDC + abs_dc_coeff_diff * | | PrevDC + abs_dc_coeff_diff * | | |||
| (1 - 2*sign_dc_coeff_diff) | | (1 - 2*sign_dc_coeff_diff) | | |||
| PrevDC = | | PrevDC = | | |||
| TransCoeff[cIdx][xMb // subW + x][yMb // subH + y] | | TransCoeff[cIdx][xMb // subW + x][yMb // subH + y] | | |||
| PrevDcDiff = abs_dc_coeff_diff | | PrevDcDiff = abs_dc_coeff_diff | | |||
| ac_coeff_coding(xMb // subW + x, yMb // subH + y, | | ac_coeff_coding(xMb // subW + x, yMb // subH + y, | | |||
| log2(TrSize), log2(TrSize), cIdx) | | log2(TrSize), log2(TrSize), cIdx) | | |||
| } | | } | | |||
| } | | } | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.15-2"> | |||
| <li> | <dt pn="section-5.3.15-2.1">abs_dc_coeff_diff</dt> | |||
| <t>abs_dc_coeff_diff</t> | <dd pn="section-5.3.15-2.2">specifies the absolute value of the diff | |||
| </li> | erence between the current DC transform coefficient level and PrevDC.</dd> | |||
| </ul> | <dt pn="section-5.3.15-2.3">sign_dc_coeff_diff</dt> | |||
| <ul empty="true"> | <dd pn="section-5.3.15-2.4">specifies the sign of the difference bet | |||
| <li> | ween the current DC | |||
| <t>specifies the absolute value of the difference between the curr | transform coefficient level and PrevDC. sign_dc_coeff_diff equal | |||
| ent DC transform coefficient level and PrevDC.</t> | to 0 specifies that the difference has a positive | |||
| </li> | value. sign_dc_coeff_diff equal to 1 specifies that the difference | |||
| </ul> | has a negative value.</dd> | |||
| <ul spacing="normal"> | </dl> | |||
| <li> | <t indent="0" pn="section-5.3.15-3">The transform coefficients are rep | |||
| <t>sign_dc_coeff_diff</t> | resented by the arrays TransCoeff[cIdx][x0][y0]. The array indices x0, y0 specif | |||
| </li> | y the location (x0, y0) relative to the top-left sample for each component of th | |||
| </ul> | e frame. The array index cIdx specifies an indicator for the color component; wh | |||
| <ul empty="true"> | en chroma_format_idc is equal to 2 or 3, the value of the index i is equal to 0 | |||
| <li> | for Y component, 1 for Cb, and 2 for Cr. The value of TransCoeff[cIdx][x0][y0] < | |||
| <t>specifies the sign of the difference between the current DC tra | bcp14>MUST</bcp14> be in the range of -32768 to 32767, inclusive.</t> | |||
| nsform coefficient level and PrevDC. sign_dc_coeff_diff equal to 0 specifies tha | ||||
| t the difference has a positive value. sign_dc_coeff_diff equal to 1 specifies t | ||||
| hat the difference has a negative value.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <t>The transform coefficients are represented by the arrays TransCoeff | ||||
| [cIdx][x0][y0]. The array indices x0, y0 specify the location (x0, y0) relative | ||||
| to the top-left sample for each component of the frame. The array index cIdx spe | ||||
| cifies an indicator for the color component; when chroma_format_idc is equal to | ||||
| 2 or 3, 0 for Y, 1 for Cb and 2 for Cr. The value of TransCoeff[cIdx][x0][y0] MU | ||||
| ST be in the range of -32768 to 32767, inclusive.</t> | ||||
| </section> | </section> | |||
| <section anchor="ac-coding"> | <section anchor="ac-coding" numbered="true" removeInRFC="false" toc="inc | |||
| <name>AC coefficient coding</name> | lude" pn="section-5.3.16"> | |||
| <figure anchor="syntaxcode-ac_coeff_coding"> | <name slugifiedName="name-ac-coefficient-coding">AC Coefficient Coding | |||
| <name>ac_coeff_coding() syntax code</name> | </name> | |||
| <artwork><![CDATA[ | <figure anchor="syntaxcode-ac_coeff_coding" align="left" suppress-titl | |||
| e="false" pn="figure-23"> | ||||
| <name slugifiedName="name-ac_coeff_coding-syntax-code">ac_coeff_codi | ||||
| ng() syntax code</name> | ||||
| <artwork align="left" pn="section-5.3.16-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| ac_coeff_coding(x0, y0, log2BlkWidth, log2BlkHeight, cIdx){ | | ac_coeff_coding(x0, y0, log2BlkWidth, log2BlkHeight, cIdx){ | | |||
| scanPos = 1 | | scanPos = 1 | | |||
| firstAC = 1 | | firstAC = 1 | | |||
| PrevLevel = Prev1stAcLevel | | PrevLevel = Prev1stAcLevel | | |||
| PrevRun = 0 | | PrevRun = 0 | | |||
| do{ | | do{ | | |||
| coeff_zero_run | h(v) | coeff_zero_run | h(v) | |||
| for(i = 0; i < coeff_zero_run; i++){ | | for(i = 0; i < coeff_zero_run; i++){ | | |||
| blkPos = ScanOrder[scanPos] | | blkPos = ScanOrder[scanPos] | | |||
| xC = blkPos & ((1 << log2BlkWidth) - 1) | | xC = blkPos & ((1 << log2BlkWidth) - 1) | | |||
| yC = blkPos >> log2BlkWidth | | yC = blkPos >> log2BlkWidth | | |||
| TransCoeff[cIdx][x0+xC][y0 + yC] = 0 | | TransCoeff[cIdx][x0+xC][y0 + yC] = 0 | | |||
| scanPos++ | | scanPos++ | | |||
| } | | } | | |||
| PrevRun = coeff_zero_run | | PrevRun = coeff_zero_run | | |||
| if(scanPos < (1 << (log2BlkWidth + log2BlkHeight))){ | | if(scanPos < (1 << (log2BlkWidth + log2BlkHeight))){ | | |||
| abs_ac_coeff_minus1 | h(v) | abs_ac_coeff_minus1 | h(v) | |||
| sign_ac_coeff | u(1) | sign_ac_coeff | u(1) | |||
| level = (abs_ac_coeff_minus1 + 1) * | | level = (abs_ac_coeff_minus1 + 1) * | | |||
| (1 - 2 * sign_ac_coeff) | | (1 - 2 * sign_ac_coeff) | | |||
| blkPos = ScanOrder[scanPos] | | blkPos = ScanOrder[scanPos] | | |||
| xC = blkPos & ((1 << log2BlkWidth) - 1) | | xC = blkPos & ((1 << log2BlkWidth) - 1) | | |||
| yC = blkPos >> log2BlkWidth | | yC = blkPos >> log2BlkWidth | | |||
| TransCoeff[cIdx][x0 + xC][y0 + yC] = level | | TransCoeff[cIdx][x0 + xC][y0 + yC] = level | | |||
| scanPos++ | | scanPos++ | | |||
| PrevLevel = abs_ac_coeff_minus1 + 1 | | PrevLevel = abs_ac_coeff_minus1 + 1 | | |||
| if(firstAC == 1){ | | if(firstAC == 1){ | | |||
| firstAC = 0 | | firstAC = 0 | | |||
| Prev1stAcLevel = PrevLevel | | Prev1stAcLevel = PrevLevel | | |||
| } | | } | | |||
| } | | } | | |||
| } while(scanPos < (1 << (log2BlkWidth + log2BlkHeight))) | | } while(scanPos < (1 << (log2BlkWidth + log2BlkHeight))) | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.16-2"> | |||
| <li> | <dt pn="section-5.3.16-2.1">coeff_zero_run</dt> | |||
| <t>coeff_zero_run</t> | <dd pn="section-5.3.16-2.2">specifies the number of zero-valued tran | |||
| </li> | sform coefficient | |||
| </ul> | levels that are located before the position of the next non-zero | |||
| <ul empty="true"> | transform coefficient level in a scan of transform coefficient | |||
| <li> | levels.</dd> | |||
| <t>specifies the number of zero-valued transform coefficient level | <dt pn="section-5.3.16-2.3">abs_ac_coeff_minus1</dt> | |||
| s that are located before the position of the next non-zero transform coefficien | <dd pn="section-5.3.16-2.4">plus 1 specifies the absolute value of a | |||
| t level in a scan of transform coefficient levels.</t> | n AC transform coefficient level at the given scanning position.</dd> | |||
| </li> | <dt pn="section-5.3.16-2.5">sign_ac_coeff</dt> | |||
| </ul> | <dd pn="section-5.3.16-2.6">specifies the sign of an AC transform co | |||
| <ul spacing="normal"> | efficient level for | |||
| <li> | the given scanning position. sign_ac_coeff equal to 0 specifies | |||
| <t>abs_ac_coeff_minus1</t> | that the corresponding AC transform coefficient level has a | |||
| </li> | positive value. sign_ac_coeff equal to 1 specifies that the | |||
| </ul> | corresponding AC transform coefficient level has a negative | |||
| <ul empty="true"> | value.</dd> | |||
| <li> | </dl> | |||
| <t>plus 1 specifies the absolute value of an AC transform coeffici | <t indent="0" pn="section-5.3.16-3">The array ScanOrder[sPos] specifie | |||
| ent level at the given scanning position.</t> | s the mapping of the zig-zag scan position sPos, ranging from 0 to (1 << l | |||
| </li> | og2BlkWidth) * (1 << log2BlkHeight) - 1, inclusive, to a raster scan posit | |||
| </ul> | ion rPos. ScanOrder is derived by invoking <xref target="zig-zag" format="defaul | |||
| <ul spacing="normal"> | t" sectionFormat="of" derivedContent="Section 4.4.1"/> with input parameters blk | |||
| <li> | Width equal to (1 << log2BlkWidth) and blkHeight equal to (1 << log2 | |||
| <t>sign_ac_coeff</t> | BlkHeight).</t> | |||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>specifies the sign of an AC transform coefficient level for the | ||||
| given scanning position. sign_ac_coeff equal to 0 specifies that the correspond | ||||
| ing AC transform coefficient level has a positive value. sign_ac_coeff equal to | ||||
| 1 specifies that the corresponding AC transform coefficient level has a negative | ||||
| value.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <t>The array ScanOrder[sPos] specifies the mapping of the zig-zag scan | ||||
| position sPos, ranging from 0 to (1 << log2BlkWidth) * (1 << log2Bl | ||||
| kHeight) - 1, inclusive, to a raster scan position rPos. ScanOrder is derived by | ||||
| invoking <xref target="zig-zag"/> with input parameters blkWidth equal to (1 &l | ||||
| t;< log2BlkWidth) and blkHeight equal to (1 << log2BlkHeight).</t> | ||||
| </section> | </section> | |||
| <section anchor="byte-alignment"> | <section anchor="byte-alignment" numbered="true" removeInRFC="false" toc | |||
| <name>Byte alignment</name> | ="include" pn="section-5.3.17"> | |||
| <figure anchor="syntaxcode-byte_alignment"> | <name slugifiedName="name-byte-alignment">Byte Alignment</name> | |||
| <name>byte_alignment() syntax code</name> | <figure anchor="syntaxcode-byte_alignment" align="left" suppress-title | |||
| <artwork><![CDATA[ | ="false" pn="figure-24"> | |||
| <name slugifiedName="name-byte_alignment-syntax-code">byte_alignment | ||||
| () syntax code</name> | ||||
| <artwork align="left" pn="section-5.3.17-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| byte_alignment(){ | | byte_alignment(){ | | |||
| while(!byte_aligned()) | | while(!byte_aligned()) | | |||
| alignment_bit_equal_to_zero | f(1) | alignment_bit_equal_to_zero | f(1) | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-5.3.17-2"> | |||
| <li> | <dt pn="section-5.3.17-2.1">alignment_bit_equal_to_zero</dt> | |||
| <t>alignment_bit_equal_to_zero</t> | <dd pn="section-5.3.17-2.2"> | |||
| </li> | <bcp14>MUST</bcp14> be equal to 0.</dd> | |||
| </ul> | </dl> | |||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>MUST be equal to 0.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="decoding-process"> | <section anchor="decoding-process" numbered="true" removeInRFC="false" toc=" | |||
| <name>Decoding process</name> | include" pn="section-6"> | |||
| <t>This process is invoked to obtain a decoded frame from a bitstream. Inp | <name slugifiedName="name-decoding-process">Decoding Process</name> | |||
| ut to this process is a bitstream of a coded frame. Output of this process is a | <t indent="0" pn="section-6-1">This process is invoked to obtain a decoded | |||
| decoded frame.</t> | frame from a bitstream. Input to this process is a bitstream of a coded frame. | |||
| <t>The decoding process operates as follows for the current frame:</t> | Output of this process is a decoded frame.</t> | |||
| <ul spacing="normal"> | <t indent="0" pn="section-6-2">The decoding process operates as follows fo | |||
| <li> | r the current frame:</t> | |||
| <t>The syntax structure for a coded frame is parsed to obtain the pars | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6-3 | |||
| ed syntax structures.</t> | "> | |||
| </li> | <li pn="section-6-3.1"> | |||
| <li> | <t indent="0" pn="section-6-3.1.1">The syntax structure for a coded fr | |||
| <t>The processes in <xref target="mb-decoding"/>, <xref target="block- | ame is parsed to obtain the parsed syntax structures.</t> | |||
| recon"/> and <xref target="scaling-transform"/> specify the decoding processes u | ||||
| sing syntax elements in all syntax structures. It is the requirement of bitstrea | ||||
| m conformance that the coded tiles of the frame MUST contain tile data for every | ||||
| MB of the frame, such that the division of the frame into tiles and the divisio | ||||
| n of the tiles into MBs each forms a partitioning of the frame.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6-3.2"> | |||
| <t>After all the tiles in the current frame have been decoded, the dec | <t indent="0" pn="section-6-3.2.1">The processes in Sections <xref tar | |||
| oded frame is cropped using the cropping rectangle if FrameWidthInSamplesY is no | get="mb-decoding" format="counter" sectionFormat="of" derivedContent="6.1"/>, <x | |||
| t equal to FrameWidthInMbY * MbWidth or FrameHeightInSamplesY is not equal to Fr | ref target="block-recon" format="counter" sectionFormat="of" derivedContent="6.2 | |||
| ameHeightInMbsY * MbHeight.</t> | "/>, and <xref target="scaling-transform" format="counter" sectionFormat="of" de | |||
| rivedContent="6.3"/> specify the decoding processes using syntax elements in all | ||||
| syntax structures. For bitstreams conforming to this document, the coded tiles | ||||
| of the frame <bcp14>MUST</bcp14> contain tile data for every MB of the frame, su | ||||
| ch that the division of the frame into tiles and the division of the tiles into | ||||
| MBs form a partitioning of the frame.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6-3.3"> | |||
| <t>The cropping rectangle, which specifies the samples of a frame that | <t indent="0" pn="section-6-3.3.1">After all the tiles in the current | |||
| are output, is derived as follows.</t> | frame have been decoded, the decoded frame is cropped using the cropping rectang | |||
| le if FrameWidthInSamplesY is not equal to FrameWidthInMbsY * MbWidth or FrameHe | ||||
| ightInSamplesY is not equal to FrameHeightInMbsY * MbHeight.</t> | ||||
| </li> | </li> | |||
| </ul> | <li pn="section-6-3.4"> | |||
| <ul empty="true"> | <t indent="0" pn="section-6-3.4.1">The cropping rectangle, which speci | |||
| <li> | fies the samples of a frame that are output, is derived as follows:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <li> | -6-3.4.2"> | |||
| <t>The cropping rectangle contains the luma samples with horizonta | <li pn="section-6-3.4.2.1"> | |||
| l frame coordinates from 0 to FrameWidthInSampleY - 1 and vertical frame coordin | <t indent="0" pn="section-6-3.4.2.1.1">The cropping rectangle cont | |||
| ates from 0 to FrameHeightInSamplesY - 1, inclusive.</t> | ains the luma samples with horizontal frame coordinates from 0 to FrameWidthInSa | |||
| mpleY - 1 and vertical frame coordinates from 0 to FrameHeightInSamplesY - 1, in | ||||
| clusive.</t> | ||||
| </li> | </li> | |||
| </ul> | <li pn="section-6-3.4.2.2"> | |||
| </li> | <t indent="0" pn="section-6-3.4.2.2.1">The cropping rectangle cont | |||
| </ul> | ains the two chroma arrays having frame coordinates (x//SubWidthC, y//SubHeightC | |||
| <ul empty="true"> | ), where (x,y) are the frame coordinates of the specified luma samples.</t> | |||
| <li> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>The cropping rectangle contains the two chroma arrays having fr | ||||
| ame coordinates (x//SubWidthC, y//SubHeightC), where (x,y) are the frame coordin | ||||
| ates of the specified luma samples.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <section anchor="mb-decoding"> | <section anchor="mb-decoding" numbered="true" removeInRFC="false" toc="inc | |||
| <name>MB decoding process</name> | lude" pn="section-6.1"> | |||
| <t>This process is invoked for each MB.</t> | <name slugifiedName="name-mb-decoding-process">MB Decoding Process</name | |||
| <t>Input to this process is a luma location (xMb, yMb) specifying the to | > | |||
| p-left sample of the current luma MB relative to the top left luma sample of the | <t indent="0" pn="section-6.1-1">This process is invoked for each MB.</t | |||
| current frame. | > | |||
| Outputs of this process are the reconstructed samples of all the NumComps color | <t indent="0" pn="section-6.1-2">Input to this process is a luma locatio | |||
| components (when chroma_format_idc is equal to 2 or 3, Y, Cb, and Cr) for the cu | n (xMb, yMb) specifying the top-left sample of the current luma MB relative to t | |||
| rrent MB.</t> | he top-left luma sample of the current frame. | |||
| <t>The following steps apply:</t> | Outputs of this process are the reconstructed samples of all color components. T | |||
| <ul spacing="normal"> | he total number of color components is indicated by the value of NumComps for th | |||
| <li> | e current MB. For example, when chroma_format_idc is equal to 2 or 3, the value | |||
| <t>Let recSamples[0] be a (MbWidth)x(MbHeight) array of the reconstr | of NumComps is equal to 3 and three components, Y component, Cb component, and C | |||
| ucted samples of the first color component (when chroma_format_idc is equal to 2 | r component, are reconstructed </t> | |||
| or 3, Y).</t> | <t indent="0" pn="section-6.1-3">The following steps apply:</t> | |||
| <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6 | ||||
| .1-4"> | ||||
| <li pn="section-6.1-4.1"> | ||||
| <t indent="0" pn="section-6.1-4.1.1">Let recSamples[0] be a (MbWidth | ||||
| )x(MbHeight) array of the reconstructed samples of the first color component (wh | ||||
| en chroma_format_idc is equal to 2 or 3, Y).</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6.1-4.2"> | |||
| <t>The block reconstruction process as specified in <xref target="bl | <t indent="0" pn="section-6.1-4.2.1">The block reconstruction proces | |||
| ock-recon"/> is invoked with the luma location (xMb, yMb), the variable nBlkW se | s as specified in <xref target="block-recon" format="default" sectionFormat="of" | |||
| t equal to MbWidth, the variable nBlkH set equal to MbHeight, the variable cIdx | derivedContent="Section 6.2"/> is invoked with the luma location (xMb, yMb), th | |||
| set equal to 0, and the (MbWidth)x(MbHeight) array recSamples[0] as inputs, the | e variable nBlkW set equal to MbWidth, the variable nBlkH set equal to MbHeight, | |||
| output is a modified version of the (MbWidth)x(MbHeight) array recSamples[0], wh | the variable cIdx set equal to 0, and the (MbWidth)x(MbHeight) array recSamples | |||
| ich is the reconstructed samples of the first color component for the current MB | [0] as inputs. The output is a modified version of the (MbWidth)x(MbHeight) arra | |||
| .</t> | y recSamples[0], which is the reconstructed samples of the first color component | |||
| for the current MB.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6.1-4.3"> | |||
| <t>When chroma_format_idc is not equal to 0, let recSamples[1] be a | <t indent="0" pn="section-6.1-4.3.1">When chroma_format_idc is not e | |||
| (MbWidthC)x(MbHeightC) array of the reconstructed samples of the second color co | qual to 0, let recSamples[1] be a (MbWidthC)x(MbHeightC) array of the reconstruc | |||
| mponent (when chroma_format_idc is equal to 2 or 3, Cb).</t> | ted samples of the second color component. For example, when chroma_format_idc i | |||
| s equal to 2 or 3, recSamples[1] is the Cb color component.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6.1-4.4"> | |||
| <t>When chroma_format_idc is not equal to 0, the block reconstructio | <t indent="0" pn="section-6.1-4.4.1">When chroma_format_idc is not e | |||
| n process as specified in <xref target="block-recon"/> is invoked with the luma | qual to 0, the block reconstruction process as specified in <xref target="block- | |||
| location (xMb, yMb), the variable nBlkW set equal to MbWidthC, the variable nBlk | recon" format="default" sectionFormat="of" derivedContent="Section 6.2"/> is inv | |||
| H set equal to MbHeightC, the variable cIdx set equal to 1, and the (MbWidthC)x( | oked with the luma location (xMb, yMb), the variable nBlkW set equal to MbWidthC | |||
| MbHeightC) array recSamples[1] as inputs, the output is a modified version of th | , the variable nBlkH set equal to MbHeightC, the variable cIdx set equal to 1, a | |||
| e (MbWidthC)x(MbHeightC) array recSamples[1], which is the reconstructed samples | nd the (MbWidthC)x(MbHeightC) array recSamples[1] as inputs. The output is a mo | |||
| of the second color component for the current MB.</t> | dified version of the (MbWidthC)x(MbHeightC) array recSamples[1], which is the r | |||
| econstructed samples of the second color component for the current MB.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6.1-4.5"> | |||
| <t>When chroma_format_idc is not equal to 0, let recSamples[2] be a | <t indent="0" pn="section-6.1-4.5.1">When chroma_format_idc is not e | |||
| (MbWidthC)x(MbHeightC) array of the reconstructed samples of the third color com | qual to 0, let recSamples[2] be a (MbWidthC)x(MbHeightC) array of the reconstruc | |||
| ponent(when chroma_format_idc is equal to 2 or 3, Cr).</t> | ted samples of the third color component. For example, when chroma_format_idc is | |||
| equal to 2 or 3, recSamples[2] is the Cr color component.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6.1-4.6"> | |||
| <t>When chroma_format_idc is not equal to 0, the block reconstructio | <t indent="0" pn="section-6.1-4.6.1">When chroma_format_idc is not e | |||
| n process as specified in <xref target="block-recon"/> is invoked with the luma | qual to 0, the block reconstruction process as specified in <xref target="block- | |||
| location (xMb, yMb), the variable nBlkW set equal to MbWidthC, the variable nBlk | recon" format="default" sectionFormat="of" derivedContent="Section 6.2"/> is inv | |||
| H set equal to MbHeightC, the variable cIdx set equal to 2, and the (MbWidthC)x( | oked with the luma location (xMb, yMb), the variable nBlkW set equal to MbWidthC | |||
| MbHeightC) array recSamples[2] as inputs, the output is a modified version of th | , the variable nBlkH set equal to MbHeightC, the variable cIdx set equal to 2, a | |||
| e (MbWidthC)x(MbHeightC) array recSamples[2], which is the reconstructed samples | nd the (MbWidthC)x(MbHeightC) array recSamples[2] as inputs. The output is a mod | |||
| of the third color component for the current MB.</t> | ified version of the (MbWidthC)x(MbHeightC) array recSamples[2], which is the re | |||
| constructed samples of the third color component for the current MB.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6.1-4.7"> | |||
| <t>When chroma_format_idc is equal to 4, let recSamples[3] be a (MbW | <t indent="0" pn="section-6.1-4.7.1">When chroma_format_idc is equal | |||
| idthC)x(MbHeightC) array of the reconstructed samples of the fourth color compon | to 4, let recSamples[3] be a (MbWidthC)x(MbHeightC) array of the reconstructed | |||
| ent.</t> | samples of the fourth color component.</t> | |||
| </li> | </li> | |||
| <li> | <li pn="section-6.1-4.8"> | |||
| <t>When chroma_format_idc is equal to 4, the block reconstruction pr | <t indent="0" pn="section-6.1-4.8.1">When chroma_format_idc is equal | |||
| ocess as specified in Section 6.2 is invoked with the luma location (xMb, yMb), | to 4, the block reconstruction process as specified in <xref target="block-reco | |||
| the variable nBlkW set equal to MbWidthC, the variable nBlkH set equal to MbHeig | n" format="default" sectionFormat="of" derivedContent="Section 6.2"/> is invoked | |||
| htC, the variable cIdx set equal to 3, and the (MbWidthC)x(MbHeightC) array recS | with the luma location (xMb, yMb), the variable nBlkW set equal to MbWidthC, th | |||
| amples[3] as inputs, the output is a modified version of the (MbWidthC)x(MbHeigh | e variable nBlkH set equal to MbHeightC, the variable cIdx set equal to 3, and t | |||
| tC) array recSamples[3], which is the reconstructed samples of the fourth color | he (MbWidthC)x(MbHeightC) array recSamples[3] as inputs. The output is a modifie | |||
| component for the current MB.</t> | d version of the (MbWidthC)x(MbHeightC) array recSamples[3], which is the recons | |||
| tructed samples of the fourth color component for the current MB.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="block-recon"> | <section anchor="block-recon" numbered="true" removeInRFC="false" toc="inc | |||
| <name>Block reconstruction process</name> | lude" pn="section-6.2"> | |||
| <t>Inputs to this process are:</t> | <name slugifiedName="name-block-reconstruction-proces">Block Reconstruct | |||
| <ul spacing="normal"> | ion Process</name> | |||
| <li> | <t indent="0" pn="section-6.2-1">Inputs to this process are:</t> | |||
| <t>a luma location (xMb, yMb) specifying the top-left sample of the | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6 | |||
| current MB relative to the top left luma sample of the current frame,</t> | .2-2"> | |||
| </li> | <li pn="section-6.2-2.1"> | |||
| <li> | <t indent="0" pn="section-6.2-2.1.1">a luma location (xMb, yMb) spec | |||
| <t>two variables nBlkW and nBlkH specifying the width and the height | ifying the top-left sample of the current MB relative to the top-left luma sampl | |||
| of the current block,</t> | e of the current frame,</t> | |||
| </li> | </li> | |||
| <li> | <li pn="section-6.2-2.2"> | |||
| <t>a variable cIdx specifying the color component of the current blo | <t indent="0" pn="section-6.2-2.2.1">two variables nBlkW and nBlkH s | |||
| ck, and</t> | pecifying the width and the height of the current block,</t> | |||
| </li> | </li> | |||
| <li> | <li pn="section-6.2-2.3"> | |||
| <t>an (nBlkW)x(nBlkH), array of recSamples of reconstructed block.</ | <t indent="0" pn="section-6.2-2.3.1">a variable cIdx specifying the | |||
| t> | color component of the current block, and</t> | |||
| </li> | </li> | |||
| </ul> | <li pn="section-6.2-2.4"> | |||
| <t>Output of this process is a modified version of the (nBlkW)x(nBlkH) a | <t indent="0" pn="section-6.2-2.4.1">an (nBlkW)x(nBlkH) array of rec | |||
| rray recSamples of reconstructed samples.</t> | Samples of a reconstructed block.</t> | |||
| <t>The following applies:</t> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>The variables numBlkX and numBlkY are derived as follows:</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <ul empty="true"> | <t indent="0" pn="section-6.2-3">Output of this process is a modified ve | |||
| <li> | rsion of the (nBlkW)x(nBlkH) array recSamples of reconstructed samples.</t> | |||
| <ul empty="true"> | <t indent="0" pn="section-6.2-4">The following applies:</t> | |||
| <li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6 | |||
| <ul spacing="normal"> | .2-5"> | |||
| <li> | <li pn="section-6.2-5.1"> | |||
| <t>numBlkX = nBlkW // TrSize</t> | <t indent="0" pn="section-6.2-5.1.1">The variables numBlkX and numBl | |||
| </li> | kY are derived as follows:</t> | |||
| </ul> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="secti | |||
| on-6.2-5.1.2"> | ||||
| <li pn="section-6.2-5.1.2.1"> | ||||
| <t indent="0" pn="section-6.2-5.1.2.1.1">numBlkX = nBlkW // TrSi | ||||
| ze</t> | ||||
| </li> | </li> | |||
| </ul> | <li pn="section-6.2-5.1.2.2"> | |||
| </li> | <t indent="0" pn="section-6.2-5.1.2.2.1">numBlkY = nBlkH // TrSi | |||
| </ul> | ze</t> | |||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>numBlkY = nBlkH // TrSize</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | <li pn="section-6.2-5.2"> | |||
| <ul spacing="normal"> | <t indent="0" pn="section-6.2-5.2.1">For yIdx = 0..numBlkY - 1, the | |||
| <li> | following applies:</t> | |||
| <t>For yIdx = 0..numBlkY - 1, the following applies:</t> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="secti | |||
| </li> | on-6.2-5.2.2"> | |||
| </ul> | <li pn="section-6.2-5.2.2.1"> | |||
| <ul empty="true"> | <t indent="0" pn="section-6.2-5.2.2.1.1">For xIdx = 0..numBlkX - | |||
| <li> | 1, the following applies:</t> | |||
| <ul empty="true"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="s | |||
| <li> | ection-6.2-5.2.2.1.2"> | |||
| <ul spacing="normal"> | <li pn="section-6.2-5.2.2.1.2.1"> | |||
| <li> | <t indent="0" pn="section-6.2-5.2.2.1.2.1.1">The variables x | |||
| <t>For xIdx = 0..numBlkX - 1, the following applies:</t> | Blk and yBlk are derived as follows:</t> | |||
| <ul spacing="normal" bare="false" empty="false" indent="3" p | ||||
| n="section-6.2-5.2.2.1.2.1.2"> | ||||
| <li pn="section-6.2-5.2.2.1.2.1.2.1"> | ||||
| <t indent="0" pn="section-6.2-5.2.2.1.2.1.2.1.1">xBlk = | ||||
| xMb // (cIdx==0? 1: SubWidthC) + xIdx*TrSize</t> | ||||
| </li> | ||||
| <li pn="section-6.2-5.2.2.1.2.1.2.2"> | ||||
| <t indent="0" pn="section-6.2-5.2.2.1.2.1.2.2.1">yBlk = | ||||
| yMb // (cIdx==0? 1: SubHeightC) + yIdx*TrSize</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| </ul> | <li pn="section-6.2-5.2.2.1.2.2"> | |||
| </li> | <t indent="0" pn="section-6.2-5.2.2.1.2.2.1">The scaling and | |||
| </ul> | transformation process as specified in <xref target="scaling-transform" format= | |||
| </li> | "default" sectionFormat="of" derivedContent="Section 6.3"/> is invoked with the | |||
| </ul> | location (xBlk, yBlk), the variable cIdx set equal to cIdx, the transform width | |||
| <t>The variables xBlk and yBlk are derived as follows:</t> | nBlkW set equal to TrSize, and the transform height nBlkH set equal to TrSize as | |||
| <ul empty="true"> | inputs. The output is a (TrSize)x(TrSize) array r of a reconstructed block.</t> | |||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>xBlk = xMb // (cIdx==0? 1: SubWidthC) + xIdx*TrSize</t> | ||||
| </li> | </li> | |||
| </ul> | <li pn="section-6.2-5.2.2.1.2.3"> | |||
| </li> | <t indent="0" pn="section-6.2-5.2.2.1.2.3.1">The (TrSize)x(T | |||
| </ul> | rSize) array recSamples is modified as follows:</t> | |||
| </li> | <ul spacing="normal" bare="false" empty="false" indent="3" p | |||
| </ul> | n="section-6.2-5.2.2.1.2.3.2"> | |||
| <ul empty="true"> | <li pn="section-6.2-5.2.2.1.2.3.2.1"> | |||
| <li> | <t indent="0" pn="section-6.2-5.2.2.1.2.3.2.1.1">recSamp | |||
| <ul empty="true"> | les[(xIdx * TrSize) + i, (yIdx * TrSize) + j] = r[i,j], with i=0..TrSize-1, j=0. | |||
| <li> | .TrSize-1</t> | |||
| <ul spacing="normal"> | </li> | |||
| <li> | </ul> | |||
| <t>yBlk = yMb // (cIdx==0? 1: SubHeightC) + yIdx*TrSize</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>The scaling and transformation process as specified in <xref targ | ||||
| et="scaling-transform"/> is invoked with the location (xBlk, yBlk), the variable | ||||
| cIdx set equal to cIdx, the transform width nBlkW set equal to TrSize and the t | ||||
| ransform height nBlkH set equal to TrSize as inputs, and the output is a (TrSize | ||||
| )x(TrSize) array r of reconstructed block.</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>The (TrSize)x(TrSize) array recSamples is modified as follows:</t | ||||
| > | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>recSamples[(xIdx * TrSize) + i, (yIdx * TrSize) + j] = r[i,j] | ||||
| , with i=0..TrSize-1, j=0..TrSize-1</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="scaling-transform"> | <section anchor="scaling-transform" numbered="true" removeInRFC="false" to | |||
| <name>Scaling and transformation process</name> | c="include" pn="section-6.3"> | |||
| <t>Inputs to this process are:</t> | <name slugifiedName="name-scaling-and-transformation-">Scaling and Trans | |||
| <ul spacing="normal"> | formation Process</name> | |||
| <li> | <t indent="0" pn="section-6.3-1">Inputs to this process are:</t> | |||
| <t>a location (xBlkY, yBlkY) of the current color component specifyi | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6 | |||
| ng the top-left sample of the current block relative to the top-left sample of t | .3-2"> | |||
| he current frame,</t> | <li pn="section-6.3-2.1"> | |||
| <t indent="0" pn="section-6.3-2.1.1">a location (xBlkY, yBlkY) of th | ||||
| e current color component specifying the top-left sample of the current block re | ||||
| lative to the top-left sample of the current frame,</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6.3-2.2"> | |||
| <t>a variable cIdx specifying the color component of the current blo | <t indent="0" pn="section-6.3-2.2.1">a variable cIdx specifying the | |||
| ck,</t> | color component of the current block,</t> | |||
| </li> | </li> | |||
| <li> | <li pn="section-6.3-2.3"> | |||
| <t>a variable nBlkW specifying the width of the current block, and</ | <t indent="0" pn="section-6.3-2.3.1">a variable nBlkW specifying the | |||
| t> | width of the current block, and</t> | |||
| </li> | </li> | |||
| <li> | <li pn="section-6.3-2.4"> | |||
| <t>a variable nBlkH specifying the height of the current block.</t> | <t indent="0" pn="section-6.3-2.4.1">a variable nBlkH specifying the | |||
| height of the current block.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Output of this process is the (nBlkW)x(nBlkH) array of reconstructed | <t indent="0" pn="section-6.3-3">Output of this process is the (nBlkW)x( | |||
| samples r with elements r[x][y].</t> | nBlkH) array of reconstructed samples r with elements r[x][y].</t> | |||
| <t>The quantization parameter qP is derived as follows:</t> | <t indent="0" pn="section-6.3-4">The quantization parameter qP is derive | |||
| <ul empty="true"> | d as follows:</t> | |||
| <li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6 | |||
| <ul empty="true"> | .3-5"> | |||
| <li> | <li pn="section-6.3-5.1"> | |||
| <t>qP = Qp[cIdx] + QpBdOffset</t> | <t indent="0" pn="section-6.3-5.1.1">qP = Qp[cIdx] + QpBdOffset</t> | |||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>The (nBlKW)x(nBlkH) array of reconstructed samples r is derived as fo | <t indent="0" pn="section-6.3-6">The (nBlKW)x(nBlkH) array of reconstruc | |||
| llows:</t> | ted samples r is derived as follows:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6 | |||
| <li> | .3-7"> | |||
| <t>The scaling process for transform coefficients as specified in <x | <li pn="section-6.3-7.1"> | |||
| ref target="scaling-process"/> is invoked with the block location (xBlkY, yBlkY) | <t indent="0" pn="section-6.3-7.1.1">The scaling process for transfo | |||
| , the block width nBlkW and the block height nBlkH, the color component variable | rm coefficients as specified in <xref target="scaling-process" format="default" | |||
| cIdx, and the quantization parameter qP as inputs, and the output is an (nBlkW) | sectionFormat="of" derivedContent="Section 6.3.1"/> is invoked with the block lo | |||
| x(nBlkH) array of scaled transform coefficients d.</t> | cation (xBlkY, yBlkY), the block width nBlkW and the block height nBlkH, the col | |||
| </li> | or component variable cIdx, and the quantization parameter qP as inputs. The out | |||
| <li> | put is an (nBlkW)x(nBlkH) array of scaled transform coefficients d.</t> | |||
| <t>The transformation process for scaled transform coefficients as s | ||||
| pecified in <xref target="process-coeff"/> is invoked with the block location (x | ||||
| BlkY, yBlkY), the block width nBlkW and the block height nBlkH, the color compon | ||||
| ent variable cIdx, and the (nBlkW)x(nBlkH) array of scaled transform coefficient | ||||
| s d as inputs, and the output is an (nBlkW)x(nBlkH) array of reconstructed sampl | ||||
| es r.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6.3-7.2"> | |||
| <t>The variable bdShift is derived as follows:</t> | <t indent="0" pn="section-6.3-7.2.1">The transformation process for | |||
| scaled transform coefficients as specified in <xref target="process-coeff" forma | ||||
| t="default" sectionFormat="of" derivedContent="Section 6.3.2"/> is invoked with | ||||
| the block location (xBlkY, yBlkY), the block width nBlkW and the block height nB | ||||
| lkH, the color component variable cIdx, and the (nBlkW)x(nBlkH) array of scaled | ||||
| transform coefficients d as inputs. The output is an (nBlkW)x(nBlkH) array of re | ||||
| constructed samples r.</t> | ||||
| </li> | </li> | |||
| </ul> | <li pn="section-6.3-7.3"> | |||
| <ul empty="true"> | <t indent="0" pn="section-6.3-7.3.1">The variable bdShift is derived | |||
| <li> | as follows:</t> | |||
| <ul empty="true"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="secti | |||
| <li> | on-6.3-7.3.2"> | |||
| <t>bdShift = 20 - BitDepth</t> | <li pn="section-6.3-7.3.2.1"> | |||
| <t indent="0" pn="section-6.3-7.3.2.1.1">bdShift = 20 - BitDepth | ||||
| </t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | <li pn="section-6.3-7.4"> | |||
| <ul spacing="normal"> | <t indent="0" pn="section-6.3-7.4.1">The reconstructed sample values | |||
| <li> | r[x][y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1 are modified as follows:</t> | |||
| <t>The reconstructed sample values r[x][y] with x = 0..nBlkW - 1, y | <ul spacing="normal" bare="false" empty="false" indent="3" pn="secti | |||
| = 0..nBlkH - 1 are modified as follows:</t> | on-6.3-7.4.2"> | |||
| </li> | <li pn="section-6.3-7.4.2.1"> | |||
| </ul> | <t indent="0" pn="section-6.3-7.4.2.1.1">r[x][y] = clip(0, (1 &l | |||
| <ul empty="true"> | t;< BitDepth)-1, ((r[x][y]+(1 << (bdShift-1)))>>bdShift) + (1 < | |||
| <li> | ;< (BitDepth-1)))</t> | |||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>r[x][y] = clip(0, (1 << BitDepth)-1, ((r[x][y]+(1 <& | ||||
| lt; (bdShift-1)))>>bdShift) + (1 << (BitDepth-1)))</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <section anchor="scaling-process"> | <section anchor="scaling-process" numbered="true" removeInRFC="false" to | |||
| <name>Scaling process for transform coefficients</name> | c="include" pn="section-6.3.1"> | |||
| <t>Inputs to this process are:</t> | <name slugifiedName="name-scaling-process-for-transfo">Scaling Process | |||
| <ul spacing="normal"> | for Transform Coefficients</name> | |||
| <li> | <t indent="0" pn="section-6.3.1-1">Inputs to this process are:</t> | |||
| <t>a location (xBlkY, yBlkY) of the current color component specif | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| ying the top-left sample of the current block relative to the top-left sample of | -6.3.1-2"> | |||
| the current frame,</t> | <li pn="section-6.3.1-2.1"> | |||
| </li> | <t indent="0" pn="section-6.3.1-2.1.1">a location (xBlkY, yBlkY) o | |||
| <li> | f the current color component specifying the top-left sample of the current bloc | |||
| <t>a variable nBlkW specifying the width of the current block,</t> | k relative to the top-left sample of the current frame,</t> | |||
| </li> | </li> | |||
| <li> | <li pn="section-6.3.1-2.2"> | |||
| <t>a variable nBlkH specifying the height of the current block,</t | <t indent="0" pn="section-6.3.1-2.2.1">a variable nBlkW specifying | |||
| > | the width of the current block,</t> | |||
| </li> | </li> | |||
| <li> | <li pn="section-6.3.1-2.3"> | |||
| <t>a variable cIdx specifying the color component of the current b | <t indent="0" pn="section-6.3.1-2.3.1">a variable nBlkH specifying | |||
| lock, and</t> | the height of the current block,</t> | |||
| </li> | </li> | |||
| <li> | <li pn="section-6.3.1-2.4"> | |||
| <t>a variable qP specifying the quantization parameter.</t> | <t indent="0" pn="section-6.3.1-2.4.1">a variable cIdx specifying | |||
| the color component of the current block, and</t> | ||||
| </li> | </li> | |||
| </ul> | <li pn="section-6.3.1-2.5"> | |||
| <t>Output of this process is the (nBlkW)x(nBlkH) array d of scaled tra | <t indent="0" pn="section-6.3.1-2.5.1">a variable qP specifying th | |||
| nsform coefficients with elements d[x][y].</t> | e quantization parameter.</t> | |||
| <t>The variable bdShift is derived as follows:</t> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>bdShift = BitDepth + ((log2(nBlkW) + log2(nBlkH)) // 2) - 5 | ||||
| </t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>The list levelScale[] is specified as follows:</t> | <t indent="0" pn="section-6.3.1-3">Output of this process is the (nBlk | |||
| <ul empty="true"> | W)x(nBlkH) array d of scaled transform coefficients with elements d[x][y].</t> | |||
| <li> | <t indent="0" pn="section-6.3.1-4">The variable bdShift is derived as | |||
| <ul empty="true"> | follows:</t> | |||
| <li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <t>levelScale[k] = {40, 45, 51, 57, 64, 71} with k = 0..5.</t> | -6.3.1-5"> | |||
| </li> | <li pn="section-6.3.1-5.1"> | |||
| </ul> | <t indent="0" pn="section-6.3.1-5.1.1">bdShift = BitDepth + ((log2 | |||
| (nBlkW) + log2(nBlkH)) // 2) - 5</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>For the derivation of the scaled transform coefficients d[x][y] wit | <t indent="0" pn="section-6.3.1-6">The list levelScale[] is specified | |||
| h x = 0..nBlkW - 1, y = 0..nBlkH - 1, the following applies:</t> | as follows:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <li> | -6.3.1-7"> | |||
| <t>The scaled transform coefficient d[x][y] is derived as follows: | <li pn="section-6.3.1-7.1"> | |||
| </t> | <t indent="0" pn="section-6.3.1-7.1.1">levelScale[k] = {40, 45, 51 | |||
| , 57, 64, 71} with k = 0..5.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <ul empty="true"> | <t indent="0" pn="section-6.3.1-8">For the derivation of the scaled tr | |||
| <li> | ansform coefficients d[x][y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1, the follow | |||
| <ul empty="true"> | ing applies:</t> | |||
| <li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <t>d[x][y] = clip(-32768, 32767, ((TransCoeff[cIdx][xBlkY][yBl | -6.3.1-9"> | |||
| kY] * QMatrix[cIdx][x][y] * levelScale[qP % 6] << (qP//6)) + (1 << ( | <li pn="section-6.3.1-9.1"> | |||
| bdShift-1)) >> bdShift))</t> | <t indent="0" pn="section-6.3.1-9.1.1">The scaled transform coeffi | |||
| cient d[x][y] is derived as follows:</t> | ||||
| <ul spacing="normal" bare="false" empty="false" indent="3" pn="sec | ||||
| tion-6.3.1-9.1.2"> | ||||
| <li pn="section-6.3.1-9.1.2.1"> | ||||
| <t indent="0" pn="section-6.3.1-9.1.2.1.1">d[x][y] = clip(-327 | ||||
| 68, 32767, ((TransCoeff[cIdx][xBlkY][yBlkY] * QMatrix[cIdx][x][y] * levelScale[q | ||||
| P % 6] << (qP//6)) + (1 << (bdShift-1)) >> bdShift))</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="process-coeff"> | <section anchor="process-coeff" numbered="true" removeInRFC="false" toc= | |||
| <name>Process for scaled transform coefficients</name> | "include" pn="section-6.3.2"> | |||
| <section anchor="general-1"> | <name slugifiedName="name-process-for-scaled-transfor">Process for Sca | |||
| <name>General</name> | led Transform Coefficients</name> | |||
| <t>Inputs to this process are:</t> | <section anchor="general-1" numbered="true" removeInRFC="false" toc="e | |||
| <ul spacing="normal"> | xclude" pn="section-6.3.2.1"> | |||
| <li> | <name slugifiedName="name-general-2">General</name> | |||
| <t>a location (xBlkY, yBlkY) of the current color component spec | <t indent="0" pn="section-6.3.2.1-1">Inputs to this process are:</t> | |||
| ifying the top-left sample of the current block relative to the top-left sample | <ul spacing="normal" bare="false" empty="false" indent="3" pn="secti | |||
| of the current frame,</t> | on-6.3.2.1-2"> | |||
| <li pn="section-6.3.2.1-2.1"> | ||||
| <t indent="0" pn="section-6.3.2.1-2.1.1">a location (xBlkY, yBlk | ||||
| Y) of the current color component specifying the top-left sample of the current | ||||
| block relative to the top-left sample of the current frame,</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6.3.2.1-2.2"> | |||
| <t>a variable nBlkW specifying the width of the current block,</ | <t indent="0" pn="section-6.3.2.1-2.2.1">a variable nBlkW specif | |||
| t> | ying the width of the current block,</t> | |||
| </li> | </li> | |||
| <li> | <li pn="section-6.3.2.1-2.3"> | |||
| <t>a variable nBlkH specifying the height of the current block, | <t indent="0" pn="section-6.3.2.1-2.3.1">a variable nBlkH specif | |||
| and</t> | ying the height of the current block, and</t> | |||
| </li> | </li> | |||
| <li> | <li pn="section-6.3.2.1-2.4"> | |||
| <t>an (nBlkW)x(nBlkH) array d of scaled transform coefficients w | <t indent="0" pn="section-6.3.2.1-2.4.1">an (nBlkW)x(nBlkH) arra | |||
| ith elements d[x][y].</t> | y d of scaled transform coefficients with elements d[x][y].</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Output of this process is the (nBlkW)x(nBlkH) array r of reconstr | <t indent="0" pn="section-6.3.2.1-3">Output of this process is the ( | |||
| ucted samples with elements r[x][y].</t> | nBlkW)x(nBlkH) array r of reconstructed samples with elements r[x][y].</t> | |||
| <t>The (nBlkW)x(nBlkH) array r of reconstructed samples is derived a | <t indent="0" pn="section-6.3.2.1-4">The (nBlkW)x(nBlkH) array r of | |||
| s follows:</t> | reconstructed samples is derived as follows:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="secti | |||
| <li> | on-6.3.2.1-5"> | |||
| <t>Each (vertical) column of scaled transform coefficients d[x][ | <li pn="section-6.3.2.1-5.1"> | |||
| y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1 is transformed to e[x][y] with x = 0. | <t indent="0" pn="section-6.3.2.1-5.1.1">Each (vertical) column | |||
| .nBlkW - 1, y = 0..nBlkH - 1 by invoking the one- dimensional transformation pro | of scaled transform coefficients d[x][y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1 | |||
| cess as specified in <xref target="transform-process"/> for each column x = 0..n | is transformed to e[x][y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1 by invoking t | |||
| BlkW - 1 with the size of the transform block nBlkH, and the list d[x][y] with y | he one-dimensional transformation process as specified in <xref target="transfor | |||
| = 0..nBlkH - 1 as inputs, and the output is the list e[x][y] with y = 0..nBlkH | m-process" format="default" sectionFormat="of" derivedContent="Section 6.3.2.2"/ | |||
| - 1.</t> | > for each column x = 0..nBlkW - 1 with the size of the transform block nBlkH, a | |||
| </li> | nd the list d[x][y] with y = 0..nBlkH - 1 as inputs. The output is the list e[x] | |||
| <li> | [y] with y = 0..nBlkH - 1.</t> | |||
| <t>The following applies:</t> | ||||
| </li> | </li> | |||
| </ul> | <li pn="section-6.3.2.1-5.2"> | |||
| <ul empty="true"> | <t indent="0" pn="section-6.3.2.1-5.2.1">The following applies:< | |||
| <li> | /t> | |||
| <ul empty="true"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="s | |||
| <li> | ection-6.3.2.1-5.2.2"> | |||
| <t>g[x][y] = (e[x][y] + 64) >> 7</t> | <li pn="section-6.3.2.1-5.2.2.1"> | |||
| <t indent="0" pn="section-6.3.2.1-5.2.2.1.1">g[x][y] = (e[x] | ||||
| [y] + 64) >> 7</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | <li pn="section-6.3.2.1-5.3"> | |||
| <ul spacing="normal"> | <t indent="0" pn="section-6.3.2.1-5.3.1">Each (horizontal) row o | |||
| <li> | f the resulting array g[x][y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1 is transfo | |||
| <t>Each (horizontal) row of the resulting array g[x][y] with x = | rmed to r[x][y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1 by invoking the one-dime | |||
| 0..nBlkW - 1, y = 0..nBlkH - 1 is transformed to r[x][y] with x = 0..nBlkW - 1, | nsional transformation process as specified in <xref target="transform-process" | |||
| y = 0..nBlkH - 1 by invoking the one-dimensional transformation process as spec | format="default" sectionFormat="of" derivedContent="Section 6.3.2.2"/> for each | |||
| ified in <xref target="transform-process"/> for each row y = 0..nBlkH - 1 with t | row y = 0..nBlkH - 1 with the size of the transform block nBlkW, and the list g[ | |||
| he size of the transform block nBlkW, and the list g[x][y] with x = 0..nBlkW - 1 | x][y] with x = 0..nBlkW - 1 as inputs. The output is the list r[x][y] with x = 0 | |||
| as inputs, and the output is the list r[x][y] with x = 0..nBlkW - 1.</t> | ..nBlkW - 1.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="transform-process"> | <section anchor="transform-process" numbered="true" removeInRFC="false | |||
| <name>Transformation process</name> | " toc="exclude" pn="section-6.3.2.2"> | |||
| <t>Inputs to this process are:</t> | <name slugifiedName="name-transformation-process">Transformation Pro | |||
| <ul spacing="normal"> | cess</name> | |||
| <li> | <t indent="0" pn="section-6.3.2.2-1">Inputs to this process are:</t> | |||
| <t>a variable nTbS specifying the sample size of scaled transfor | <ul spacing="normal" bare="false" empty="false" indent="3" pn="secti | |||
| m coefficients, and</t> | on-6.3.2.2-2"> | |||
| </li> | <li pn="section-6.3.2.2-2.1"> | |||
| <li> | <t indent="0" pn="section-6.3.2.2-2.1.1">a variable nTbS specify | |||
| <t>a list of scaled transform coefficients x with elements x[j], | ing the sample size of scaled transform coefficients, and</t> | |||
| with j = 0..(nTbS - 1).</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>Output of this process is the list of transformed samples y w | ||||
| ith elements y[i], with i = 0..(nTbS - 1).</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>The transformation matrix derivation process as specified in | ||||
| <xref target="matrix-process"/>. invoked with the transform size nTbS as input, | ||||
| and the transformation matrix transMatrix as output.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-6.3.2.2-2.2"> | |||
| <t>The list of transformed samples y[i] with i = 0..(nTbS - 1) i | <t indent="0" pn="section-6.3.2.2-2.2.1">a list of scaled transf | |||
| s derived as follows:</t> | orm coefficients x with elements x[j], with j = 0..(nTbS - 1).</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <ul empty="true"> | <t indent="0" pn="section-6.3.2.2-3">Output of this process is the l | |||
| <li> | ist of transformed samples y with elements y[i], with i = 0..(nTbS - 1).</t> | |||
| <ul empty="true"> | <t indent="0" pn="section-6.3.2.2-4">The transformation matrix deriv | |||
| <li> | ation process as specified in <xref target="matrix-process" format="default" sec | |||
| <t>y[i] = sum(j = 0, nTbS - 1, transMatrix[i][j] * x[j])</t> | tionFormat="of" derivedContent="Section 6.3.2.3"/> is invoked with the transform | |||
| </li> | size nTbS as input, and the transformation matrix transMatrix as output.</t> | |||
| </ul> | <t indent="0" pn="section-6.3.2.2-5">The list of transformed samples | |||
| y[i] with i = 0..(nTbS - 1) is derived as follows:</t> | ||||
| <ul spacing="normal" bare="false" empty="false" indent="3" pn="secti | ||||
| on-6.3.2.2-6"> | ||||
| <li pn="section-6.3.2.2-6.1"> | ||||
| <t indent="0" pn="section-6.3.2.2-6.1.1">y[i] = sum(j = 0, nTbS | ||||
| - 1, transMatrix[i][j] * x[j])</t> | ||||
| </li> | </li> | |||
| 1, transMatrix[i][j] * x[j])</t> | ||||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="matrix-process"> | <section anchor="matrix-process" numbered="true" removeInRFC="false" t | |||
| <name>Transformation matrix derivation process</name> | oc="exclude" pn="section-6.3.2.3"> | |||
| <t>Input to this process is a variable nTbS specifying the horizonta | <name slugifiedName="name-transformation-matrix-deriv">Transformatio | |||
| l sample size of scaled transform coefficients.</t> | n Matrix Derivation Process</name> | |||
| <t>Output of this process is the transformation matrix transMatrix.< | <t indent="0" pn="section-6.3.2.3-1">Input to this process is a vari | |||
| /t> | able nTbS specifying the horizontal sample size of scaled transform coefficients | |||
| <t>The transformation matrix transMatrix is derived based on nTbs as | .</t> | |||
| follows:</t> | <t indent="0" pn="section-6.3.2.3-2">Output of this process is the t | |||
| <ul spacing="normal"> | ransformation matrix transMatrix.</t> | |||
| <li> | <t indent="0" pn="section-6.3.2.3-3">The transformation matrix trans | |||
| <t>If nTbS is equal to 8, the following applies:</t> | Matrix is derived based on nTbs as follows:</t> | |||
| </li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="secti | |||
| </ul> | on-6.3.2.3-4"> | |||
| <figure anchor="transmatrix"> | <li pn="section-6.3.2.3-4.1"> | |||
| <name>Transform matrix for nTbS == 8</name> | <t indent="0" pn="section-6.3.2.3-4.1.1">If nTbS is equal to 8, | |||
| <artwork><![CDATA[ | the following applies:</t> | |||
| <figure anchor="transmatrix" align="left" suppress-title="false" | ||||
| pn="figure-25"> | ||||
| <name slugifiedName="name-transform-matrix-for-ntbs-8">Transfo | ||||
| rm matrix for nTbS == 8</name> | ||||
| <artwork align="left" pn="section-6.3.2.3-4.1.2.1"> | ||||
| transMatrix[m][n] = | transMatrix[m][n] = | |||
| { | { | |||
| { 64, 64, 64, 64, 64, 64, 64, 64 } | { 64, 64, 64, 64, 64, 64, 64, 64 } | |||
| { 89, 75, 50, 18, -18, -50, -75, -89 } | { 89, 75, 50, 18, -18, -50, -75, -89 } | |||
| { 84, 35, -35, -84, -84, -35, 35, 84 } | { 84, 35, -35, -84, -84, -35, 35, 84 } | |||
| { 75, -18, -89, -50, 50, 89, 18, -75 } | { 75, -18, -89, -50, 50, 89, 18, -75 } | |||
| { 64, -64, -64, 64, 64, -64, -64, 64 } | { 64, -64, -64, 64, 64, -64, -64, 64 } | |||
| { 50, -89, 18, 75, -75, -18, 89, -50 } | { 50, -89, 18, 75, -75, -18, 89, -50 } | |||
| { 35, -84, 84, -35, -35, 84, -84, 35 } | { 35, -84, 84, -35, -35, 84, -84, 35 } | |||
| { 18, -50, 75, -89, 89, -75, 50, -18 } | { 18, -50, 75, -89, 89, -75, 50, -18 } | |||
| } | }</artwork> | |||
| ]]></artwork> | </figure> | |||
| </figure> | </li> | |||
| </ul> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="parsing-process"> | <section anchor="parsing-process" numbered="true" removeInRFC="false" toc="i | |||
| <name>Parsing process</name> | nclude" pn="section-7"> | |||
| <section anchor="process_h"> | <name slugifiedName="name-parsing-process">Parsing Process</name> | |||
| <name>Process for syntax element type h(v)</name> | <section anchor="process_h" numbered="true" removeInRFC="false" toc="inclu | |||
| <t>This process is invoked for the parsing of syntax elements with descr | de" pn="section-7.1"> | |||
| iptor h(v) in <xref target="mb-layer"/> and <xref target="ac-coding"/>.</t> | <name slugifiedName="name-process-for-syntax-element-">Process for Synta | |||
| <section anchor="process-for-absdccoeffdiff"> | x Element Type h(v)</name> | |||
| <name>Process for abs_dc_coeff_diff</name> | <t indent="0" pn="section-7.1-1">This process is invoked for the parsing | |||
| <t>Inputs to this process are bits for the abs_dc_coeff_diff syntax el | of syntax elements with descriptor h(v) in <xref target="mb-layer" format="defa | |||
| ement. | ult" sectionFormat="of" derivedContent="Section 5.3.15"/> and <xref target="ac-c | |||
| oding" format="default" sectionFormat="of" derivedContent="Section 5.3.16"/>.</t | ||||
| > | ||||
| <section anchor="process-for-absdccoeffdiff" numbered="true" removeInRFC | ||||
| ="false" toc="include" pn="section-7.1.1"> | ||||
| <name slugifiedName="name-process-for-abs_dc_coeff_di">Process for abs | ||||
| _dc_coeff_diff</name> | ||||
| <t indent="0" pn="section-7.1.1-1">Inputs to this process are bits for | ||||
| the abs_dc_coeff_diff syntax element. | ||||
| Output of this process is a value of the abs_dc_coeff_diff syntax element. | Output of this process is a value of the abs_dc_coeff_diff syntax element. | |||
| The variable kParam is derived as follows:</t> | The variable kParam is derived as follows:</t> | |||
| <ul empty="true"> | <t indent="3" pn="section-7.1.1-2">kParam = clip(0, 5, PrevDcDiff > | |||
| <li> | > 1)</t> | |||
| <ul empty="true"> | <t indent="0" pn="section-7.1.1-3">The value of syntax element abs_dc_ | |||
| <li> | coeff_diff is obtained by invoking the parsing process for variable-length codes | |||
| <t>kParam = clip(0, 5, PrevDcDiff >> 1)</t> | as specified in <xref target="process-vlc" format="default" sectionFormat="of" | |||
| </li> | derivedContent="Section 7.1.4"/> with kParam.</t> | |||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| <t>The value of syntax element abs_dc_coeff_diff is obtained by invoki | ||||
| ng the parsing process for variable length codes as specified in <xref target="p | ||||
| rocess-vlc"/> with kParam.</t> | ||||
| </section> | </section> | |||
| <section anchor="process-for-coeffzerorun"> | <section anchor="process-for-coeffzerorun" numbered="true" removeInRFC=" | |||
| <name>Process for coeff_zero_run</name> | false" toc="include" pn="section-7.1.2"> | |||
| <t>Inputs to this process are bits for the coeff_zero_run syntax eleme | <name slugifiedName="name-process-for-coeff_zero_run">Process for coef | |||
| nt.</t> | f_zero_run</name> | |||
| <t>Output of this process is a value of the coeff_zero_run syntax elem | <t indent="0" pn="section-7.1.2-1">Inputs to this process are bits for | |||
| ent.</t> | the coeff_zero_run syntax element.</t> | |||
| <t>The variable kParam is derived as follows:</t> | <t indent="0" pn="section-7.1.2-2">Output of this process is a value o | |||
| <ul empty="true"> | f the coeff_zero_run syntax element.</t> | |||
| <li> | <t indent="0" pn="section-7.1.2-3">The variable kParam is derived as f | |||
| <ul empty="true"> | ollows:</t> | |||
| <li> | <t indent="3" pn="section-7.1.2-4">kParam = clip(0, 2, PrevRun >> | |||
| <t>kParam = clip(0, 2, PrevRun >> 2)</t> | ; 2)</t> | |||
| </li> | <t indent="0" pn="section-7.1.2-5">The value of syntax element coeff_z | |||
| </ul> | ero_run is obtained by invoking the parsing process for variable-length codes as | |||
| </li> | specified in <xref target="process-vlc" format="default" sectionFormat="of" der | |||
| </ul> | ivedContent="Section 7.1.4"/> with kParam.</t> | |||
| <t>The value of syntax element coeff_zero_run is obtained by invoking | ||||
| the parsing process for variable length codes as specified in <xref target="proc | ||||
| ess-vlc"/> with kParam.</t> | ||||
| </section> | </section> | |||
| <section anchor="process-for-absaccoeffminus1"> | <section anchor="process-for-absaccoeffminus1" numbered="true" removeInR | |||
| <name>Process for abs_ac_coeff_minus1</name> | FC="false" toc="include" pn="section-7.1.3"> | |||
| <t>Inputs to this process are bits for the abs_ac_coeff_minus1 syntax | <name slugifiedName="name-process-for-abs_ac_coeff_mi">Process for abs | |||
| element.</t> | _ac_coeff_minus1</name> | |||
| <t>Output of this process is a value of the abs_ac_coeff_minus1 syntax | <t indent="0" pn="section-7.1.3-1">Inputs to this process are bits for | |||
| element.</t> | the abs_ac_coeff_minus1 syntax element.</t> | |||
| <t>The variable kParam is derived as follows:</t> | <t indent="0" pn="section-7.1.3-2">Output of this process is a value o | |||
| <ul empty="true"> | f the abs_ac_coeff_minus1 syntax element.</t> | |||
| <li> | <t indent="0" pn="section-7.1.3-3">The variable kParam is derived as f | |||
| <ul empty="true"> | ollows:</t> | |||
| <li> | <t indent="3" pn="section-7.1.3-4">kParam = clip(0, 4, PrevLevel >& | |||
| <t>kParam = clip(0, 4, PrevLevel >> 2)</t> | gt; 2)</t> | |||
| </li> | <t indent="0" pn="section-7.1.3-5">The value of syntax element abs_ac_ | |||
| </ul> | coeff_minus1 is obtained by invoking the parsing process for variable-length cod | |||
| </li> | es as specified in <xref target="process-vlc" format="default" sectionFormat="of | |||
| </ul> | " derivedContent="Section 7.1.4"/> with kParam.</t> | |||
| <t>The value of syntax element abs_ac_coeff_minus1 is obtained by invo | ||||
| king the parsing process for variable length codes as specified in <xref target= | ||||
| "process-vlc"/> with kParam.</t> | ||||
| </section> | </section> | |||
| <section anchor="process-vlc"> | <section anchor="process-vlc" numbered="true" removeInRFC="false" toc="i | |||
| <name>Process for variable length codes</name> | nclude" pn="section-7.1.4"> | |||
| <t>Input to this process is kParam.</t> | <name slugifiedName="name-process-for-variable-length">Process for Var | |||
| <t>Output of this process is a value, symbolValue, of a syntax element | iable-Length Codes</name> | |||
| .</t> | <t indent="0" pn="section-7.1.4-1">Input to this process is kParam.</t | |||
| <t>The symbolValue is derived as follows:</t> | > | |||
| <figure anchor="parse_symbolValue"> | <t indent="0" pn="section-7.1.4-2">Output of this process is a value, | |||
| <name>Parsing process of symbolValue</name> | symbolValue, of a syntax element.</t> | |||
| <artwork><![CDATA[ | <t indent="0" pn="section-7.1.4-3">The symbolValue is derived as follo | |||
| ws:</t> | ||||
| <figure anchor="parse_symbolValue" align="left" suppress-title="false" | ||||
| pn="figure-26"> | ||||
| <name slugifiedName="name-parsing-process-of-symbolva">Parsing proce | ||||
| ss of symbolValue</name> | ||||
| <artwork align="left" pn="section-7.1.4-4.1"> | ||||
| symbolValue = 0 | symbolValue = 0 | |||
| parseExpGolomb = 1 | parseExpGolomb = 1 | |||
| k = kParam | k = kParam | |||
| stopLoop = 0 | stopLoop = 0 | |||
| if(read_bits(1) == 1){ | if(read_bits(1) == 1){ | |||
| parseExpGolomb = 0 | parseExpGolomb = 0 | |||
| } | } | |||
| else{ | else{ | |||
| if(read_bits (1) == 0){ | if(read_bits (1) == 0){ | |||
| symbolValue += (1 << k) | symbolValue += (1 << k) | |||
| parseExpGolomb = 0 | parseExpGolomb = 0 | |||
| } | } | |||
| else{ | else{ | |||
| symbolValue += (2 << k) | symbolValue += (2 << k) | |||
| parseExpGolomb = 1 | parseExpGolomb = 1 | |||
| } | } | |||
| } | } | |||
| if(parseExpGolomb){ | if(parseExpGolomb){ | |||
| do{ | do{ | |||
| if(read_bits(1) == 1){ | if(read_bits(1) == 1){ | |||
| stopLoop = 1 | stopLoop = 1 | |||
| } | } | |||
| else{ | else{ | |||
| symbolValue += (1 << k) | symbolValue += (1 << k) | |||
| k++ | k++ | |||
| } | } | |||
| } while(!stopLoop) | } while(!stopLoop) | |||
| } | } | |||
| if(k > 0) | if(k > 0) | |||
| symbolValue += read_bits(k) | symbolValue += read_bits(k)</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>where the value returned from read_bits(n) is interpreted as a bina ry representation of a n-bit unsigned integer with most significant bit written first.</t> | <t indent="0" pn="section-7.1.4-5">where the value returned from read_ bits(n) is interpreted as a binary representation of an n-bit unsigned integer w ith the most significant bit written first.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="codeword-generation-process-for-hv-informative"> | <section anchor="codeword-generation-process-for-hv-informative" numbered= | |||
| <name>Codeword generation process for h(v) (informative)</name> | "true" removeInRFC="false" toc="include" pn="section-7.2"> | |||
| <t>This process specifies the code generation process for syntax element | <name slugifiedName="name-codeword-generation-process">Codeword Generati | |||
| s with descriptor h(v).</t> | on Process for h(v) (Informative)</name> | |||
| <section anchor="process-for-absdccoeffdiff-1"> | <t indent="0" pn="section-7.2-1">This process specifies the code generat | |||
| <name>Process for abs_dc_coeff_diff</name> | ion process for syntax elements with descriptor h(v).</t> | |||
| <t>Input to this process is a symbol value of the abs_dc_coeff_diff sy | <section anchor="process-for-absdccoeffdiff-1" numbered="true" removeInR | |||
| ntax element.</t> | FC="false" toc="include" pn="section-7.2.1"> | |||
| <t>Output of this process is a codeword of the abs_dc_coeff_diff synta | <name slugifiedName="name-process-for-abs_dc_coeff_dif">Process for ab | |||
| x element.</t> | s_dc_coeff_diff</name> | |||
| <t>The variable kParam is derived as follows:</t> | <t indent="0" pn="section-7.2.1-1">Input to this process is a symbol v | |||
| <ul empty="true"> | alue of the abs_dc_coeff_diff syntax element.</t> | |||
| <li> | <t indent="0" pn="section-7.2.1-2">Output of this process is a codewor | |||
| <ul empty="true"> | d of the abs_dc_coeff_diff syntax element.</t> | |||
| <li> | <t indent="0" pn="section-7.2.1-3">The variable kParam is derived as f | |||
| <t>kParam = clip(0, 5, PrevDcDiff >> 1)</t> | ollows:</t> | |||
| </li> | <t indent="3" pn="section-7.2.1-4">kParam = clip(0, 5, PrevDcDiff > | |||
| </ul> | > 1)</t> | |||
| </li> | <t indent="0" pn="section-7.2.1-5">The codeword of syntax element abs_ | |||
| </ul> | dc_coeff_diff is obtained by invoking the generation process for variable-length | |||
| <t>The codeword of syntax element abs_dc_coeff_diff is obtained by inv | codes as specified in <xref target="process-generate-vlc" format="default" sect | |||
| oking the generation process for variable length codes as specified in <xref tar | ionFormat="of" derivedContent="Section 7.2.4"/> with the symbol value symbolValu | |||
| get="process-generate-vlc"/> with the symbol value symbolValue and kParam.</t> | e and kParam.</t> | |||
| </section> | </section> | |||
| <section anchor="process-for-coeffzerorun-1"> | <section anchor="process-for-coeffzerorun-1" numbered="true" removeInRFC | |||
| <name>Process for coeff_zero_run</name> | ="false" toc="include" pn="section-7.2.2"> | |||
| <t>Input to this process is a symbol value of the coeff_zero_run synta | <name slugifiedName="name-process-for-coeff_zero_run-2">Process for co | |||
| x element.</t> | eff_zero_run</name> | |||
| <t>Output of this process is a codeword of the coeff_zero_run syntax e | <t indent="0" pn="section-7.2.2-1">Input to this process is a symbol v | |||
| lement.</t> | alue of the coeff_zero_run syntax element.</t> | |||
| <t>The variable kParam is derived as follows:</t> | <t indent="0" pn="section-7.2.2-2">Output of this process is a codewor | |||
| <ul empty="true"> | d of the coeff_zero_run syntax element.</t> | |||
| <li> | <t indent="0" pn="section-7.2.2-3">The variable kParam is derived as f | |||
| <ul empty="true"> | ollows:</t> | |||
| <li> | <t indent="3" pn="section-7.2.2-4">kParam = clip(0, 2, PrevRun >> | |||
| <t>kParam = clip(0, 2, PrevRun >> 2)</t> | ; 2)</t> | |||
| </li> | <t indent="0" pn="section-7.2.2-5">The codeword of syntax element coef | |||
| </ul> | f_zero_run is obtained by invoking the generation process for variable-length co | |||
| </li> | des as specified in <xref target="process-generate-vlc" format="default" section | |||
| </ul> | Format="of" derivedContent="Section 7.2.4"/> with the symbol value symbolValue a | |||
| <t>The codeword of syntax element coeff_zero_run is obtained by invoki | nd kParam.</t> | |||
| ng the generation process for variable length codes as specified in <xref target | ||||
| ="process-generate-vlc"/> with the symbol value symbolValue and kParam.</t> | ||||
| </section> | </section> | |||
| <section anchor="process-for-absaccoeffminus1-1"> | <section anchor="process-for-absaccoeffminus1-1" numbered="true" removeI | |||
| <name>Process for abs_ac_coeff_minus1</name> | nRFC="false" toc="include" pn="section-7.2.3"> | |||
| <t>Input to this process is a symbol value of the abs_ac_coeff_minus1 | <name slugifiedName="name-process-for-abs_ac_coeff_min">Process for ab | |||
| syntax element.</t> | s_ac_coeff_minus1</name> | |||
| <t>Output of this process is a codeword of the abs_ac_coeff_minus1 syn | <t indent="0" pn="section-7.2.3-1">Input to this process is a symbol v | |||
| tax element.</t> | alue of the abs_ac_coeff_minus1 syntax element.</t> | |||
| <t>The variable kParam is derived as follows:</t> | <t indent="0" pn="section-7.2.3-2">Output of this process is a codewor | |||
| <ul empty="true"> | d of the abs_ac_coeff_minus1 syntax element.</t> | |||
| <li> | <t indent="0" pn="section-7.2.3-3">The variable kParam is derived as f | |||
| <ul empty="true"> | ollows:</t> | |||
| <li> | <t indent="3" pn="section-7.2.3-4">kParam = clip(0, 4, PrevLevel >& | |||
| <t>kParam = clip(0, 4, PrevLevel >> 2)</t> | gt; 2)</t> | |||
| </li> | <t indent="0" pn="section-7.2.3-5">The codeword of syntax element abs_ | |||
| </ul> | ac_coeff_minus1 is obtained by invoking the generation for variable-length codes | |||
| </li> | as specified in <xref target="process-generate-vlc" format="default" sectionFor | |||
| </ul> | mat="of" derivedContent="Section 7.2.4"/> with the symbol value symbolValue and | |||
| <t>The codeword of syntax element abs_ac_coeff_minus1 is obtained by i | kParam.</t> | |||
| nvoking the generation for variable length codes as specified in <xref target="p | ||||
| rocess-generate-vlc"/> with the symbol value symbolValue and kParam.</t> | ||||
| </section> | </section> | |||
| <section anchor="process-generate-vlc"> | <section anchor="process-generate-vlc" numbered="true" removeInRFC="fals | |||
| <name>Process for variable length codes</name> | e" toc="include" pn="section-7.2.4"> | |||
| <t>Inputs to this process are symbolVal and kParam</t> | <name slugifiedName="name-process-for-variable-length-">Process for Va | |||
| <t>Output of this process is a codeword of a syntax element.</t> | riable-Length Codes</name> | |||
| <t>The codeword is derived as follows:</t> | <t indent="0" pn="section-7.2.4-1">Inputs to this process are symbolVa | |||
| <figure anchor="gen_symbolValue"> | l and kParam</t> | |||
| <name>Generating bits from symbolValue</name> | <t indent="0" pn="section-7.2.4-2">Output of this process is a codewor | |||
| <artwork><![CDATA[ | d of a syntax element.</t> | |||
| <t indent="0" pn="section-7.2.4-3">The codeword is derived as follows: | ||||
| </t> | ||||
| <figure anchor="gen_symbolValue" align="left" suppress-title="false" p | ||||
| n="figure-27"> | ||||
| <name slugifiedName="name-generating-bits-from-symbol">Generating bi | ||||
| ts from symbolValue</name> | ||||
| <artwork align="left" pn="section-7.2.4-4.1"> | ||||
| PrefixVLCTable[3][2] = {{1, 0}, {0, 0}, {0, 1}} | PrefixVLCTable[3][2] = {{1, 0}, {0, 0}, {0, 1}} | |||
| symbolValue = symbolVal | symbolValue = symbolVal | |||
| valPrefixVLC = clip(0, 2, symbolVal >> kParam) | valPrefixVLC = clip(0, 2, symbolVal >> kParam) | |||
| bitCount = 0 | bitCount = 0 | |||
| k = kParam | k = kParam | |||
| while(symbolValue >= (1 << k)){ | while(symbolValue >= (1 << k)){ | |||
| symbolValue -= (1 << k) | symbolValue -= (1 << k) | |||
| if(bitCount < 2) | if(bitCount < 2) | |||
| put_bits(PrefixVLCTable[valPrefixVLC][bitCount], 1) | put_bits(PrefixVLCTable[valPrefixVLC][bitCount], 1) | |||
| else | else | |||
| put_bits(0, 1) | put_bits(0, 1) | |||
| if(bitCount >= 2) | if(bitCount >= 2) | |||
| k++ | k++ | |||
| bitCount++ | bitCount++ | |||
| } | } | |||
| if(bitCount < 2) | if(bitCount < 2) | |||
| put_bits(PrefixVLCTable[valPrefixVLC][bitCount], 1) | put_bits(PrefixVLCTable[valPrefixVLC][bitCount], 1) | |||
| else | else | |||
| put_bits(1, 1) | put_bits(1, 1) | |||
| if(k > 0) | if(k > 0) | |||
| put_bits(symbolValue, k) | put_bits(symbolValue, k)</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>where a codeword generated from put_bits(v, n) is interpreted as a binary representation of an n-bit unsigned integer value v with most significant bit written first.</t> | <t indent="0" pn="section-7.2.4-5">where a codeword generated from put _bits(v, n) is interpreted as a binary representation of an n-bit unsigned integ er value v with the most significant bit written first.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="appendix-metadata"> | <section anchor="appendix-metadata" numbered="true" removeInRFC="false" toc= | |||
| <name>Metadata information</name> | "include" pn="section-8"> | |||
| <section anchor="metadata-payload"> | <name slugifiedName="name-metadata-information">Metadata Information</name | |||
| <name>Metadata payload</name> | > | |||
| <figure anchor="syntax-metadatapayload"> | <section anchor="metadata-payload" numbered="true" removeInRFC="false" toc | |||
| <name>metadata_payload() syntax code</name> | ="include" pn="section-8.1"> | |||
| <artwork><![CDATA[ | <name slugifiedName="name-metadata-payload">Metadata Payload</name> | |||
| <figure anchor="syntax-metadatapayload" align="left" suppress-title="fal | ||||
| se" pn="figure-28"> | ||||
| <name slugifiedName="name-metadata_payload-syntax-cod">metadata_payloa | ||||
| d() syntax code</name> | ||||
| <artwork align="left" pn="section-8.1-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| metadata_payload(payloadType, payloadSize){ | | metadata_payload(payloadType, payloadSize){ | | |||
| if(payloadType == 4){ | | if(payloadType == 4){ | | |||
| metadata_itu_t_t35(payloadSize) | | metadata_itu_t_t35(payloadSize) | | |||
| } | | } | | |||
| else if(payloadType == 5){ | | else if(payloadType == 5){ | | |||
| metadata_mdcv(payloadSize) | | metadata_mdcv(payloadSize) | | |||
| } | | } | | |||
| else if(payloadType == 6){ | | else if(payloadType == 6){ | | |||
| skipping to change at line 2518 ¶ | skipping to change at line 2366 ¶ | |||
| else if(payloadType == 10){ | | else if(payloadType == 10){ | | |||
| metadata_filler(payloadSize) | | metadata_filler(payloadSize) | | |||
| } | | } | | |||
| else if(payloadType == 170){ | | else if(payloadType == 170){ | | |||
| metadata_user_defined(payloadSize) | | metadata_user_defined(payloadSize) | | |||
| } | | } | | |||
| else{ | | else{ | | |||
| metadata_undefined(payloadSize) | | metadata_undefined(payloadSize) | | |||
| } | | } | | |||
| byte_alignment() | | byte_alignment() | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t indent="0" pn="section-8.1-2"> The syntax and semantics of each type of metadata are defined in <xref target="list-of-metadata-syntax-and-semantics" format="default" sectionFormat="of" derivedContent="Section 8.2"/>. </t> | ||||
| </section> | </section> | |||
| <section anchor="list-of-metadata-syntax-and-semantics"> | <section anchor="list-of-metadata-syntax-and-semantics" numbered="true" re | |||
| <name>List of metadata syntax and semantics</name> | moveInRFC="false" toc="include" pn="section-8.2"> | |||
| <section anchor="filler-metadata"> | <name slugifiedName="name-list-of-metadata-syntax-and">List of Metadata | |||
| <name>Filler metadata</name> | Syntax and Semantics</name> | |||
| <artwork><![CDATA[ | <section anchor="filler-metadata" numbered="true" removeInRFC="false" to | |||
| c="include" pn="section-8.2.1"> | ||||
| <name slugifiedName="name-filler-metadata">Filler Metadata</name> | ||||
| <artwork align="left" pn="section-8.2.1-1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| metadata_filler(payloadSize){ | | metadata_filler(payloadSize){ | | |||
| for(i = 0; i < payloadSize; i++){ | | for(i = 0; i < payloadSize; i++){ | | |||
| ff_byte | f(8) | ff_byte | f(8) | |||
| } | | } | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | <dl spacing="normal" newline="true" indent="3" pn="section-8.2.1-2"> | |||
| <ul spacing="normal"> | <dt pn="section-8.2.1-2.1">ff_byte</dt> | |||
| <li> | <dd pn="section-8.2.1-2.2">is a byte equal to 0xFF.</dd> | |||
| <t>ff_byte</t> | </dl> | |||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>is a byte equal to 0xFF.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="recommendation-itu-t-t35-metadata"> | <section anchor="recommendation-itu-t-t35-metadata" numbered="true" remo | |||
| <name>Recommendation ITU-T T.35 metadata</name> | veInRFC="false" toc="include" pn="section-8.2.2"> | |||
| <t>This metadata contains information registered as specified in <xref | <name slugifiedName="name-recommendation-itu-t-t35-me">Recommendation | |||
| target="ITUT-T35"/>.</t> | ITU-T T.35 Metadata</name> | |||
| <figure anchor="syntax-metat35"> | <t indent="0" pn="section-8.2.2-1">This metadata contains information | |||
| <name>metadata_itu_t_t35() syntax code</name> | registered as specified in <xref target="ITUT-T35" format="default" sectionForma | |||
| <artwork><![CDATA[ | t="of" derivedContent="ITUT-T35"/>.</t> | |||
| <figure anchor="syntax-metat35" align="left" suppress-title="false" pn | ||||
| ="figure-29"> | ||||
| <name slugifiedName="name-metadata_itu_t_t35-syntax-c">metadata_itu_ | ||||
| t_t35() syntax code</name> | ||||
| <artwork align="left" pn="section-8.2.2-2.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| metadata_itu_t_t35(payloadSize){ | | metadata_itu_t_t35(payloadSize){ | | |||
| itu_t_t35_country_code | b(8) | itu_t_t35_country_code | b(8) | |||
| readSize = payloadSize - 1 | | readSize = payloadSize - 1 | | |||
| | | | | |||
| if(itu_t_t35_country_code == 0xFF){ | | if(itu_t_t35_country_code == 0xFF){ | | |||
| itu_t_t35_country_code_extension | b(8) | itu_t_t35_country_code_extension | b(8) | |||
| readSize-- | | readSize-- | | |||
| } | | } | | |||
| | | | | |||
| for(i = 0; i < readSize; i++){ | | for(i = 0; i < readSize; i++){ | | |||
| itu_t_t35_payload[i] | b(8) | itu_t_t35_payload[i] | b(8) | |||
| } | | } | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-8.2.2-3"> | |||
| <li> | <dt pn="section-8.2.2-3.1">itu_t_t35_country_code</dt> | |||
| <t>itu_t_t35_country_code</t> | <dd pn="section-8.2.2-3.2"> | |||
| </li> | <bcp14>MUST</bcp14> be a byte having the semantics of country code | |||
| </ul> | as specified in Annex A of <xref target="ITUT-T35" format="default" sectionForm | |||
| <ul empty="true"> | at="of" derivedContent="ITUT-T35"/>.</dd> | |||
| <li> | <dt pn="section-8.2.2-3.3">itu_t_t35_country_code_extension</dt> | |||
| <t>MUST be a byte having the semantics of country code as specifie | <dd pn="section-8.2.2-3.4"> | |||
| d in Annex A of <xref target="ITUT-T35"/>.</t> | <bcp14>MUST</bcp14> be a byte having the semantics of country code | |||
| </li> | as specified in Annex B of <xref target="ITUT-T35" format="default" sectionForm | |||
| </ul> | at="of" derivedContent="ITUT-T35"/>.</dd> | |||
| <ul spacing="normal"> | <dt pn="section-8.2.2-3.5">itu_t_t35_payload[i]</dt> | |||
| <li> | <dd pn="section-8.2.2-3.6"> | |||
| <t>itu_t_t35_country_code_extension</t> | <bcp14>MUST</bcp14> be a byte having the semantics of data registe | |||
| </li> | red as specified in <xref target="ITUT-T35" format="default" sectionFormat="of" | |||
| </ul> | derivedContent="ITUT-T35"/>.</dd> | |||
| <ul empty="true"> | </dl> | |||
| <li> | <t indent="0" pn="section-8.2.2-4">The terminal provider code and term | |||
| <t>MUST be a byte having the semantics of country code as specifie | inal provider oriented code as specified in <xref target="ITUT-T35" format="defa | |||
| d in Annex B of <xref target="ITUT-T35"/>.</t> | ult" sectionFormat="of" derivedContent="ITUT-T35"/> <bcp14>MUST</bcp14> be conta | |||
| </li> | ined in the first one or more bytes of the itu_t_t35_payload. Any remaining byte | |||
| </ul> | s in itu_t_t35_payload data <bcp14>MUST</bcp14> be data having syntax and semant | |||
| <ul spacing="normal"> | ics as specified by the entity identified by the <xref target="ITUT-T35" format= | |||
| <li> | "default" sectionFormat="of" derivedContent="ITUT-T35"/> country code and termin | |||
| <t>itu_t_t35_payload[i]</t> | al provider code. Note that any metadata to be carried with this type of payload | |||
| </li> | is expected to have been registered through either national administrator, the | |||
| </ul> | Alliance for Telecommunications Industry Solutions (ATIS) or the ITUT-T Telecomm | |||
| <ul empty="true"> | unication Standardization Bureau (TSB) as specified in <xref target="ITUT-T35" f | |||
| <li> | ormat="default" sectionFormat="of" derivedContent="ITUT-T35"/>.</t> | |||
| <t>MUST be a byte having the semantics of data registered as speci | ||||
| fied in <xref target="ITUT-T35"/>.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <t>The terminal provider code and terminal provider oriented code as s | ||||
| pecified in <xref target="ITUT-T35"/> MUST be contained in the first one or more | ||||
| bytes of the itu_t_t35_payload. Any remaining bytes in itu_t_t35_payload data M | ||||
| UST be data having syntax and semantics as specified by the entity identified by | ||||
| the <xref target="ITUT-T35"/> country code and terminal provider code. Note tha | ||||
| t any metadata to be carried with this type of payload is expected to have been | ||||
| registered through either national administrator, Alliance for Telecommuncations | ||||
| Industry Solutions (ATIS) or ITUT-T Telecommnunication Standardization Bureau ( | ||||
| TSB) as specified in <xref target="ITUT-T35"/>.</t> | ||||
| </section> | </section> | |||
| <section anchor="mastering-display-color-volume-metadata"> | <section anchor="mastering-display-color-volume-metadata" numbered="true | |||
| <name>Mastering display color volume metadata</name> | " removeInRFC="false" toc="include" pn="section-8.2.3"> | |||
| <figure anchor="syntax-metamdcv"> | <name slugifiedName="name-mastering-display-color-vol">Mastering Displ | |||
| <name>metadata_mdcv() syntax code</name> | ay Color Volume Metadata</name> | |||
| <artwork><![CDATA[ | <figure anchor="syntax-metamdcv" align="left" suppress-title="false" p | |||
| n="figure-30"> | ||||
| <name slugifiedName="name-metadata_mdcv-syntax-code">metadata_mdcv() | ||||
| syntax code</name> | ||||
| <artwork align="left" pn="section-8.2.3-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| metadata_mdcv(payloadSize){ | | metadata_mdcv(payloadSize){ | | |||
| for(i = 0; i < 3; i++){ | | for(i = 0; i < 3; i++){ | | |||
| primary_chromaticity_x[i] | u(16) | primary_chromaticity_x[i] | u(16) | |||
| primary_chromaticity_y[i] | u(16) | primary_chromaticity_y[i] | u(16) | |||
| } | | } | | |||
| white_point_chromaticity_x | u(16) | white_point_chromaticity_x | u(16) | |||
| white_point_chromaticity_y | u(16) | white_point_chromaticity_y | u(16) | |||
| max_mastering_luminance | u(32) | max_mastering_luminance | u(32) | |||
| min_mastering_luminance | u(32) | min_mastering_luminance | u(32) | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-8.2.3-2"> | |||
| <li> | <dt pn="section-8.2.3-2.1">primary_chromaticity_x[i]</dt> | |||
| <t>primary_chromaticity_x[i]</t> | <dd pn="section-8.2.3-2.2">specifies a 0.16 fixed-point format of X | |||
| </li> | chromaticity | |||
| </ul> | coordinate of mastering display in terms of CIE 1931 as specified in | |||
| <ul empty="true"> | <xref target="ISO11664-1" format="default" sectionFormat="of" derivedContent="I | |||
| <li> | SO11664-1"/>, where i = | |||
| <t>specifies a 0.16 fixed-point format of X chromaticity coordinat | 0, 1, 2 specifies Red, Green, Blue, respectively.</dd> | |||
| e of mastering display as defined by CIE 1931, where i = 0, 1, 2 specifies Red, | <dt pn="section-8.2.3-2.3">primary_chromaticity_y[i]</dt> | |||
| Green, Blue respectively.</t> | <dd pn="section-8.2.3-2.4">specifies a 0.16 fixed-point format of Y | |||
| </li> | chromaticity | |||
| </ul> | coordinate of mastering display in terms of CIE 1931 as specified in | |||
| <ul spacing="normal"> | <xref target="ISO11664-1" format="default" sectionFormat="of" derivedContent="I | |||
| <li> | SO11664-1"/>, where i = | |||
| <t>primary_chromaticity_y[i]</t> | 0, 1, 2 specifies Red, Green, Blue, respectively.</dd> | |||
| </li> | <dt pn="section-8.2.3-2.5">white_point_chromaticity_x</dt> | |||
| </ul> | <dd pn="section-8.2.3-2.6">specifies a 0.16 fixed-point format of wh | |||
| <ul empty="true"> | ite point X | |||
| <li> | chromaticity coordinate of mastering display in terms of CIE 1931 as | |||
| <t>specifies a 0.16 fixed-point format of Y chromaticity coordinat | specified in <xref target="ISO11664-1" format="default" sectionFormat="of" deri | |||
| e of mastering display as defined by CIE 1931, where i = 0, 1, 2 specifies Red, | vedContent="ISO11664-1"/>.</dd> | |||
| Green, Blue respectively.</t> | <dt pn="section-8.2.3-2.7">white_point_chromaticity_y</dt> | |||
| </li> | <dd pn="section-8.2.3-2.8">specifies a 0.16 fixed-point format of wh | |||
| </ul> | ite point Y | |||
| <ul spacing="normal"> | chromaticity coordinate as mastering display in terms of CIE 1931 as | |||
| <li> | specified in <xref target="ISO11664-1" format="default" sectionFormat="of" deri | |||
| <t>white_point_chromaticity_x</t> | vedContent="ISO11664-1"/>.</dd> | |||
| </li> | <dt pn="section-8.2.3-2.9">max_mastering_luminance</dt> | |||
| </ul> | <dd pn="section-8.2.3-2.10">is a 24.8 fixed-point format of maximum | |||
| <ul empty="true"> | display mastering | |||
| <li> | luminance, represented in candelas per square meter.</dd> | |||
| <t>specifies a 0.16 fixed-point format of white point X chromatici | <dt pn="section-8.2.3-2.11">min_mastering_luminance</dt> | |||
| ty coordinate of mastering display as defined by CIE 1931.</t> | <dd pn="section-8.2.3-2.12">is an 18.14 fixed-point format of minimu | |||
| </li> | m display mastering | |||
| </ul> | luminance, represented in candelas per square meter.</dd> | |||
| <ul spacing="normal"> | </dl> | |||
| <li> | ||||
| <t>white_point_chromaticity_y</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>specifies a 0.16 fixed-point format of white point Y chromatici | ||||
| ty coordinate as mastering display defined by CIE 1931.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>max_mastering_luminance</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>is a 24.8 fixed-point format of maximum display mastering lumin | ||||
| ance, represented in candelas per square meter.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>min_mastering_luminance</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>is a 18.14 fixed-point format of minimum display mastering lumi | ||||
| nance, represented in candelas per square meter.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="content-light-level-information-metadata"> | <section anchor="content-light-level-information-metadata" numbered="tru | |||
| <name>Content light level information metadata</name> | e" removeInRFC="false" toc="include" pn="section-8.2.4"> | |||
| <figure anchor="syntax-metatcontentlight"> | <name slugifiedName="name-content-light-level-informa">Content Light-L | |||
| <name>metadata_cll() syntax code</name> | evel Information Metadata</name> | |||
| <artwork><![CDATA[ | <figure anchor="syntax-metatcontentlight" align="left" suppress-title= | |||
| "false" pn="figure-31"> | ||||
| <name slugifiedName="name-metadata_cll-syntax-code">metadata_cll() s | ||||
| yntax code</name> | ||||
| <artwork align="left" pn="section-8.2.4-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| metadata_cll(payloadSize){ | | metadata_cll(payloadSize){ | | |||
| max_cll | u(16) | max_cll | u(16) | |||
| max_fall | u(16) | max_fall | u(16) | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-8.2.4-2"> | |||
| <li> | <dt pn="section-8.2.4-2.1">max_cll</dt> | |||
| <t>max_cll</t> | <dd pn="section-8.2.4-2.2">specifies the maximum content light level | |||
| </li> | information as specified in <xref target="CTA-861.3" format="default" sectionFo | |||
| </ul> | rmat="of" derivedContent="CTA-861.3"/>, Appendix A.</dd> | |||
| <ul empty="true"> | <dt pn="section-8.2.4-2.3">max_fall</dt> | |||
| <li> | <dd pn="section-8.2.4-2.4">specifies the maximum frame-average light | |||
| <t>specifies the maximum content light level information as specif | level information as specified in <xref target="CTA-861.3" format="default" sec | |||
| ied in <xref target="CEA-861.3"/>, Appendix A.</t> | tionFormat="of" derivedContent="CTA-861.3"/>, Appendix A.</dd> | |||
| </li> | </dl> | |||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>max_fall</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>specifies the maximum frame-average light level information as | ||||
| specified in <xref target="CEA-861.3"/>, Appendix A.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="user-defined-metadata"> | <section anchor="user-defined-metadata" numbered="true" removeInRFC="fal | |||
| <name>User defined metadata</name> | se" toc="include" pn="section-8.2.5"> | |||
| <t>This metadata has user data identified by a universal unique identi | <name slugifiedName="name-user-defined-metadata">User-Defined Metadata | |||
| fier as specifies in <xref target="RFC9562"/>, the contents of which are not spe | </name> | |||
| cified in this document.</t> | <t indent="0" pn="section-8.2.5-1">This metadata has user data identif | |||
| <figure anchor="syntax-metauserdef"> | ied by a universal unique identifier as specified in <xref target="RFC9562" form | |||
| <name>metadata_user_defined() syntax code</name> | at="default" sectionFormat="of" derivedContent="RFC9562"/>, the contents of whic | |||
| <artwork><![CDATA[ | h are not specified in this document.</t> | |||
| <figure anchor="syntax-metauserdef" align="left" suppress-title="false | ||||
| " pn="figure-32"> | ||||
| <name slugifiedName="name-metadata_user_defined-synta">metadata_user | ||||
| _defined() syntax code</name> | ||||
| <artwork align="left" pn="section-8.2.5-2.1"> | ||||
| syntax code | type | syntax code | type | |||
| ------------------------------------------------------------|----- | ------------------------------------------------------------|----- | |||
| metadata_user_defined(payloadSize){ | | metadata_user_defined(payloadSize){ | | |||
| uuid | u(128) | uuid | u(128) | |||
| for(i = 0; i < (payloadSize - 16); i++) | | for(i = 0; i < (payloadSize - 16); i++) | | |||
| user_defined_data_payload[i] | b(8) | user_defined_data_payload[i] | b(8) | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-8.2.5-3"> | |||
| <li> | <dt pn="section-8.2.5-3.1">uuid</dt> | |||
| <t>uuid</t> | <dd pn="section-8.2.5-3.2"> | |||
| </li> | <bcp14>MUST</bcp14> be a 128-bit value specified as a | |||
| </ul> | generated Universally Unique Identifier (UUID) according to the proc | |||
| <ul empty="true"> | edures specified in <xref target="RFC9562" format="default" sectionFormat="of" d | |||
| <li> | erivedContent="RFC9562"/>.</dd> | |||
| <t>MUST be a 128-bit value specified as a generated UUID according | <dt pn="section-8.2.5-3.3">user_defined_data_payload[i]</dt> | |||
| to the procedures specified in <xref target="RFC9562"/>.</t> | <dd pn="section-8.2.5-3.4"> | |||
| </li> | <bcp14>MUST</bcp14> be a byte having user-defined syntax and | |||
| </ul> | semantics as specified by the UUID generator.</dd> | |||
| <ul spacing="normal"> | </dl> | |||
| <li> | ||||
| <t>user_defined_data_payload[i]</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>MUST be a byte having user defined syntax and semantics as spec | ||||
| ified by the UUID generator.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="undefined-metadata"> | <section anchor="undefined-metadata" numbered="true" removeInRFC="false" | |||
| <name>Undefined metadata</name> | toc="include" pn="section-8.2.6"> | |||
| <figure anchor="syntax-metaund"> | <name slugifiedName="name-undefined-metadata">Undefined Metadata</name | |||
| <name>metadata_undefined() syntax code</name> | > | |||
| <artwork><![CDATA[ | <figure anchor="syntax-metaund" align="left" suppress-title="false" pn | |||
| ="figure-33"> | ||||
| <name slugifiedName="name-metadata_undefined-syntax-c">metadata_unde | ||||
| fined() syntax code</name> | ||||
| <artwork align="left" pn="section-8.2.6-1.1"> | ||||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| metadata_undefined(payloadSize){ | | metadata_undefined(payloadSize){ | | |||
| for(i = 0; i < payloadSize; i++){ | | for(i = 0; i < payloadSize; i++){ | | |||
| undefined_metadata_payload_byte[i] | b(8) | undefined_metadata_payload_byte[i] | b(8) | |||
| } | | } | | |||
| } | | } |</artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true" indent="3" pn="section-8.2.6-2"> | |||
| <li> | <dt pn="section-8.2.6-2.1">undefined_metadata_payload_byte[i]</dt> | |||
| <t>undefined_metadata_payload_byte[i]</t> | <dd pn="section-8.2.6-2.2">is a byte reserved for future use.</dd> | |||
| </li> | </dl> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>is a byte reserved for future case.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="appendix-profile-level-band"> | <section anchor="appendix-profile-level-band" numbered="true" removeInRFC="f | |||
| <name>Profiles, levels, and bands</name> | alse" toc="include" pn="section-9"> | |||
| <section anchor="overview-of-profiles-levels-and-bands"> | <name slugifiedName="name-profiles-levels-and-bands">Profiles, Levels, and | |||
| <name>Overview of profiles, levels, and bands</name> | Bands</name> | |||
| <t>Profiles, levels and bands specify restrictions on a coded frame and | <section anchor="overview-of-profiles-levels-and-bands" numbered="true" re | |||
| hence limits on the capabilities needed to decode the coded frame. Profiles, lev | moveInRFC="false" toc="include" pn="section-9.1"> | |||
| els and bands are also used to indicate interoperability points between individu | <name slugifiedName="name-overview-of-profiles-levels">Overview of Profi | |||
| al decoder implementations.</t> | les, Levels, and Bands</name> | |||
| <t>Each profile specifies a subset of algorithmic features and limits th | <t indent="0" pn="section-9.1-1">Profiles, levels, and bands specify res | |||
| at MUST be supported by all decoders conforming to that profile.</t> | trictions on a coded frame and hence limits on the capabilities needed to decode | |||
| <ul empty="true"> | the coded frame. Profiles, levels, and bands are also used to indicate interope | |||
| <li> | rability points between individual decoder implementations.</t> | |||
| <t>NOTE: This document does not include individually selectable "opt | <t indent="0" pn="section-9.1-2">Each profile specifies a subset of algo | |||
| ions" at the decoder, as this would increase interoperability difficulties.</t> | rithmic features and limits that <bcp14>MUST</bcp14> be supported by all decoder | |||
| </li> | s conforming to that profile.</t> | |||
| </ul> | <t indent="3" pn="section-9.1-3">NOTE: This document does not include in | |||
| <ul empty="true"> | dividually selectable "options" at the decoder, as this would increase interoper | |||
| <li> | ability difficulties.</t> | |||
| <t>NOTE: Encoders are not required to make use of any particular sub | <t indent="3" pn="section-9.1-4">NOTE: Encoders are not required to make | |||
| set of features supported in a profile.</t> | use of any particular subset of features supported in a profile.</t> | |||
| </li> | <t indent="0" pn="section-9.1-5">Each level with a band specifies a set | |||
| </ul> | of limits on the values that may be taken by the syntax elements of this documen | |||
| <t>Each level with a band specifies a set of limits on the values that m | t. For any given profile, a level with a band generally corresponds to a particu | |||
| ay be taken by the syntax elements of this document. For any given profile, a le | lar decoder processing load and memory capability. The constraints set by levels | |||
| vel with a band generally corresponds to a particular decoder processing load an | and bands are orthogonal to the constraints defined by profiles so that the sam | |||
| d memory capability. The constraints set by levels and bands are orthogonal to t | e set of level and band definitions is used with all profiles. For example, a ce | |||
| he constraints defined by profiles so that the same set of level and band defini | rtain level L and a certain band B can be combined with either profile X or prof | |||
| tions is used with all profiles. For example, a certain level L and a certain ba | ile Y to specifically define two different sets of constraints.</t> | |||
| nd B can be combined with either profile X or profile Y to specifically differen | <t indent="3" pn="section-9.1-6">NOTE: Individual implementations may su | |||
| t set of constraints.</t> | pport a different level for each supported profile.</t> | |||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>NOTE: Individual implementations may support a different level fo | ||||
| r each supported profile.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="requirements-on-video-decoder-capability"> | <section anchor="requirements-on-video-decoder-capability" numbered="true" | |||
| <name>Requirements on video decoder capability</name> | removeInRFC="false" toc="include" pn="section-9.2"> | |||
| <t>Capabilities of video decoders conforming to this document are specif | <name slugifiedName="name-requirements-on-video-decod">Requirements on V | |||
| ied in terms of the ability to decode video streams conforming to the constraint | ideo Decoder Capability</name> | |||
| s of profiles, levels and bands specified in this section. When expressing the c | <t indent="0" pn="section-9.2-1">Capabilities of video decoders conformi | |||
| apabilities of a decoder for a specified profile, the level and the band support | ng to this document are specified in terms of the ability to decode video stream | |||
| ed for that profile MUST also be expressed.</t> | s conforming to the constraints of profiles, levels, and bands specified in this | |||
| <t>Specific values are specified in this section for the syntax elements | section. When expressing the capabilities of a decoder for a specified profile, | |||
| profile_idc, level_idc and band_idc. All other values of profile_idc, level_idc | the level and the band supported for that profile <bcp14>MUST</bcp14> also be e | |||
| and band_idc are reserved for future use.</t> | xpressed.</t> | |||
| <ul empty="true"> | <t indent="0" pn="section-9.2-2">Specific values are specified for the s | |||
| <li> | yntax elements profile_idc, level_idc, and band_idc. All other values of profile | |||
| <t>NOTE: Decoders SHALL NOT infer that a reserved value of profile_i | _idc, level_idc, and band_idc are reserved for future use.</t> | |||
| dc between the values specified in this document indicates intermediate capabili | <t indent="3" pn="section-9.2-3">NOTE: Decoders <bcp14>SHALL NOT</bcp14> | |||
| ties between the specified profiles, as there are no restrictions on the method | infer that a reserved value of profile_idc between the values specified in this | |||
| to be chosen for the use of such future reserved values. However, decoders MUST | document indicates intermediate capabilities between the specified profiles, as | |||
| infer that a reserved value of level_idc and a reserved value of band_idc betwee | there are no restrictions on the method to be chosen for the use of such future | |||
| n the values specified in this document indicates intermediate capabilities betw | reserved values. However, decoders <bcp14>MUST</bcp14> infer that a reserved va | |||
| een the specified levels.</t> | lue of level_idc and a reserved value of band_idc between the values specified i | |||
| </li> | n this document indicates intermediate capabilities between the specified levels | |||
| </ul> | .</t> | |||
| </section> | </section> | |||
| <section anchor="profiles"> | <section anchor="profiles" numbered="true" removeInRFC="false" toc="includ | |||
| <name>Profiles</name> | e" pn="section-9.3"> | |||
| <section anchor="general-2"> | <name slugifiedName="name-profiles">Profiles</name> | |||
| <name>General</name> | <section anchor="general-2" numbered="true" removeInRFC="false" toc="inc | |||
| <t>All constraints for a coded frame that are specified are constraint | lude" pn="section-9.3.1"> | |||
| s for the coded frame that are activated when the bitstream of the access unit i | <name slugifiedName="name-general-3">General</name> | |||
| s decoded.</t> | <t indent="0" pn="section-9.3.1-1">All constraints for a coded frame t | |||
| hat are specified are constraints for the coded frame that are activated when th | ||||
| e bitstream of the access unit is decoded.</t> | ||||
| </section> | </section> | |||
| <section anchor="profile"> | <section anchor="profile" numbered="true" removeInRFC="false" toc="inclu | |||
| <name>422-10 profile</name> | de" pn="section-9.3.2"> | |||
| <t>Conformance of a coded frame to the 422-10 profile is indicated by | <name slugifiedName="name-422-10-profile">422-10 Profile</name> | |||
| profile_idc equal to 33.</t> | <t indent="0" pn="section-9.3.2-1">Conformance of a coded frame to the | |||
| <t>Coded frames conforming to the 422-10 profile MUST obey the followi | 422-10 profile is indicated by profile_idc equal to 33.</t> | |||
| ng constraints:</t> | <t indent="0" pn="section-9.3.2-2">Coded frames conforming to the 422- | |||
| <ul spacing="normal"> | 10 profile <bcp14>MUST</bcp14> obey the following constraints:</t> | |||
| <li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <t>chroma_format_idc MUST be equal to 2.</t> | -9.3.2-3"> | |||
| <li pn="section-9.3.2-3.1"> | ||||
| <t indent="0" pn="section-9.3.2-3.1.1">chroma_format_idc <bcp14>MU | ||||
| ST</bcp14> be equal to 2.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.2-3.2"> | |||
| <t>bit_depth_minus8 MUST be equal to 2.</t> | <t indent="0" pn="section-9.3.2-3.2.1">bit_depth_minus8 <bcp14>MUS | |||
| T</bcp14> be equal to 2.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.2-3.3"> | |||
| <t>pbu_type MUST be equal to 1</t> | <t indent="0" pn="section-9.3.2-3.3.1">pbu_type <bcp14>MUST</bcp14 | |||
| > be equal to 1.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Any levels and bands constraints specified in <xref target="levels_ | <t indent="0" pn="section-9.3.2-4">Coded frames conforming to the 422- | |||
| and_bands"/> MUST be fulfilled. Decoders conforming to the 422-10 profile at a s | 10 profile <bcp14>MUST</bcp14> also conform to any levels and bands constraints | |||
| pecific level (identified by a specific value of L) and a specific band (identif | specified in <xref target="levels_and_bands" format="default" sectionFormat="of" | |||
| ied by a specific value of B) MUST be capable of decoding all coded frames for w | derivedContent="Section 9.4"/>. Decoders conforming to the 422-10 profile at a | |||
| hich all of the following conditions apply:</t> | specific level (identified by a specific value of L) and a specific band (identi | |||
| <ul spacing="normal"> | fied by a specific value of B) <bcp14>MUST</bcp14> be capable of decoding all co | |||
| <li> | ded frames for which all of the following conditions apply:</t> | |||
| <t>The coded frame is indicated to conform to the 422-10 profile.< | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| /t> | -9.3.2-5"> | |||
| <li pn="section-9.3.2-5.1"> | ||||
| <t indent="0" pn="section-9.3.2-5.1.1">The coded frame is indicate | ||||
| d to conform to the 422-10 profile.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.2-5.2"> | |||
| <t>The coded frame is indicated to conform to a level (by a specif | <t indent="0" pn="section-9.3.2-5.2.1">The coded frame is indicate | |||
| ic value of level_idc) that is lower than or equal to level L.</t> | d to conform to a level (by a specific value of level_idc) that is lower than or | |||
| equal to level L.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.2-5.3"> | |||
| <t>The coded frame is indicated to conform to a band (by a specifi | <t indent="0" pn="section-9.3.2-5.3.1">The coded frame is indicate | |||
| c value of band_idc) that is lower than or equal to level B.</t> | d to conform to a band (by a specific value of band_idc) that is lower than or e | |||
| qual to band B.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="profile-1"> | <section anchor="profile-1" numbered="true" removeInRFC="false" toc="inc | |||
| <name>422-12 profile</name> | lude" pn="section-9.3.3"> | |||
| <t>Conformance of a coded frame to the 422-12 profile is indicated by | <name slugifiedName="name-422-12-profile">422-12 Profile</name> | |||
| profile_idc equal to 44.</t> | <t indent="0" pn="section-9.3.3-1">Conformance of a coded frame to the | |||
| <t>Coded frames conforming to the 422-12 profile MUST obey the followi | 422-12 profile is indicated by profile_idc equal to 44.</t> | |||
| ng constraints:</t> | <t indent="0" pn="section-9.3.3-2">Coded frames conforming to the 422- | |||
| <ul spacing="normal"> | 12 profile <bcp14>MUST</bcp14> obey the following constraints:</t> | |||
| <li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <t>chroma_format_idc MUST be equal to 2.</t> | -9.3.3-3"> | |||
| <li pn="section-9.3.3-3.1"> | ||||
| <t indent="0" pn="section-9.3.3-3.1.1">chroma_format_idc <bcp14>MU | ||||
| ST</bcp14> be equal to 2.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.3-3.2"> | |||
| <t>bit_depth_minus8 MUST be in the range of 2 to 4.</t> | <t indent="0" pn="section-9.3.3-3.2.1">bit_depth_minus8 <bcp14>MUS | |||
| T</bcp14> be in the range of 2 to 4.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.3-3.3"> | |||
| <t>pbu_type MUST be equal to 1</t> | <t indent="0" pn="section-9.3.3-3.3.1">pbu_type <bcp14>MUST</bcp14 | |||
| > be equal to 1.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Any levels and bands constraints specified in <xref target="levels_ | <t indent="0" pn="section-9.3.3-4">Coded frames conforming to the 422- | |||
| and_bands"/> MUST be fulfilled. Decoders conforming to the 422-12 profile at a s | 12 profile <bcp14>MUST</bcp14> also conform to any levels and bands constraints | |||
| pecific level (identified by a specific value of L) and a specific band (identif | specified in <xref target="levels_and_bands" format="default" sectionFormat="of" | |||
| ied by a specific value of B) MUST be capable of decoding all coded frames for w | derivedContent="Section 9.4"/>. Decoders conforming to the 422-12 profile at a | |||
| hich all of the following conditions apply:</t> | specific level (identified by a specific value of L) and a specific band (identi | |||
| <ul spacing="normal"> | fied by a specific value of B) <bcp14>MUST</bcp14> be capable of decoding all co | |||
| <li> | ded frames for which all of the following conditions apply:</t> | |||
| <t>The coded frame is indicated to conform to the 422-12 profile o | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| r the 422-10 profile.</t> | -9.3.3-5"> | |||
| <li pn="section-9.3.3-5.1"> | ||||
| <t indent="0" pn="section-9.3.3-5.1.1">The coded frame is indicate | ||||
| d to conform to the 422-12 profile or the 422-10 profile.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.3-5.2"> | |||
| <t>The coded frame is indicated to conform to a level (by a specif | <t indent="0" pn="section-9.3.3-5.2.1">The coded frame is indicate | |||
| ic value of level_idc) that is lower than or equal to level L.</t> | d to conform to a level (by a specific value of level_idc) that is lower than or | |||
| equal to level L.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.3-5.3"> | |||
| <t>The coded frame is indicated to conform to a band (by a specifi | <t indent="0" pn="section-9.3.3-5.3.1">The coded frame is indicate | |||
| c value of band_idc) that is lower than or equal to level B.</t> | d to conform to a band (by a specific value of band_idc) that is lower than or e | |||
| qual to band B.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="profile-2"> | <section anchor="profile-2" numbered="true" removeInRFC="false" toc="inc | |||
| <name>444-10 profile</name> | lude" pn="section-9.3.4"> | |||
| <t>Conformance of a coded frame to the 444-10 profile is indicated by | <name slugifiedName="name-444-10-profile">444-10 Profile</name> | |||
| profile_idc equal to 55.</t> | <t indent="0" pn="section-9.3.4-1">Conformance of a coded frame to the | |||
| <t>Coded frames conforming to the 444-10 profile MUST obey the followi | 444-10 profile is indicated by profile_idc equal to 55.</t> | |||
| ng constraints:</t> | <t indent="0" pn="section-9.3.4-2">Coded frames conforming to the 444- | |||
| <ul spacing="normal"> | 10 profile <bcp14>MUST</bcp14> obey the following constraints:</t> | |||
| <li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <t>chroma_format_idc MUST be in the range of 2 to 3.</t> | -9.3.4-3"> | |||
| <li pn="section-9.3.4-3.1"> | ||||
| <t indent="0" pn="section-9.3.4-3.1.1">chroma_format_idc <bcp14>MU | ||||
| ST</bcp14> be in the range of 2 to 3.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.4-3.2"> | |||
| <t>bit_depth_minus8 MUST be equal to 2.</t> | <t indent="0" pn="section-9.3.4-3.2.1">bit_depth_minus8 <bcp14>MUS | |||
| T</bcp14> be equal to 2.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.4-3.3"> | |||
| <t>pbu_type MUST be equal to 1</t> | <t indent="0" pn="section-9.3.4-3.3.1">pbu_type <bcp14>MUST</bcp14 | |||
| > be equal to 1.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Any levels and bands constraints specified in <xref target="levels_ | <t indent="0" pn="section-9.3.4-4">Coded frames conforming to the 444- | |||
| and_bands"/> MUST be fulfilled. Decoders conforming to the 444-10 profile at a s | 10 profile <bcp14>MUST</bcp14> also conform to any levels and bands constraints | |||
| pecific level (identified by a specific value of L) and a specific band (identif | specified in <xref target="levels_and_bands" format="default" sectionFormat="of" | |||
| ied by a specific value of B) MUST be capable of decoding all coded frames for w | derivedContent="Section 9.4"/>. Decoders conforming to the 444-10 profile at a | |||
| hich all of the following conditions apply:</t> | specific level (identified by a specific value of L) and a specific band (identi | |||
| <ul spacing="normal"> | fied by a specific value of B) <bcp14>MUST</bcp14> be capable of decoding all co | |||
| <li> | ded frames for which all of the following conditions apply:</t> | |||
| <t>The coded frame is indicated to conform to the 444-10 profile o | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| r the 422-10 profile.</t> | -9.3.4-5"> | |||
| <li pn="section-9.3.4-5.1"> | ||||
| <t indent="0" pn="section-9.3.4-5.1.1">The coded frame is indicate | ||||
| d to conform to the 444-10 profile or the 422-10 profile.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.4-5.2"> | |||
| <t>The coded frame is indicated to conform to a level (by a specif | <t indent="0" pn="section-9.3.4-5.2.1">The coded frame is indicate | |||
| ic value of level_idc) that is lower than or equal to level L.</t> | d to conform to a level (by a specific value of level_idc) that is lower than or | |||
| equal to level L.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.4-5.3"> | |||
| <t>The coded frame is indicated to conform to a band (by a specifi | <t indent="0" pn="section-9.3.4-5.3.1">The coded frame is indicate | |||
| c value of band_idc) that is lower than or equal to level B.</t> | d to conform to a band (by a specific value of band_idc) that is lower than or e | |||
| qual to band B.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="profile-3"> | <section anchor="profile-3" numbered="true" removeInRFC="false" toc="inc | |||
| <name>444-12 profile</name> | lude" pn="section-9.3.5"> | |||
| <t>Conformance of a coded frame to the 444-12 profile is indicated by | <name slugifiedName="name-444-12-profile">444-12 Profile</name> | |||
| profile_idc equal to 66.</t> | <t indent="0" pn="section-9.3.5-1">Conformance of a coded frame to the | |||
| <t>Coded frames conforming to the 444-12 profile MUST obey the followi | 444-12 profile is indicated by profile_idc equal to 66.</t> | |||
| ng constraints:</t> | <t indent="0" pn="section-9.3.5-2">Coded frames conforming to the 444- | |||
| <ul spacing="normal"> | 12 profile <bcp14>MUST</bcp14> obey the following constraints:</t> | |||
| <li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <t>chroma_format_idc MUST be in the range of 2 to 3.</t> | -9.3.5-3"> | |||
| <li pn="section-9.3.5-3.1"> | ||||
| <t indent="0" pn="section-9.3.5-3.1.1">chroma_format_idc <bcp14>MU | ||||
| ST</bcp14> be in the range of 2 to 3.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.5-3.2"> | |||
| <t>bit_depth_minus8 MUST be in the range of 2 to 4.</t> | <t indent="0" pn="section-9.3.5-3.2.1">bit_depth_minus8 <bcp14>MUS | |||
| T</bcp14> be in the range of 2 to 4.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.5-3.3"> | |||
| <t>pbu_type MUST be equal to 1</t> | <t indent="0" pn="section-9.3.5-3.3.1">pbu_type <bcp14>MUST</bcp14 | |||
| > be equal to 1.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Any levels and bands constraints specified in <xref target="levels_ | <t indent="0" pn="section-9.3.5-4">Coded frames conforming to the 444- | |||
| and_bands"/> MUST be fulfilled. Decoders conforming to the 444-12 profile at a s | 12 profile <bcp14>MUST</bcp14> also conform to any levels and bands constraints | |||
| pecific level (identified by a specific value of L) and a specific band (identif | specified in <xref target="levels_and_bands" format="default" sectionFormat="of" | |||
| ied by a specific value of B) MUST be capable of decoding all coded frames for w | derivedContent="Section 9.4"/>. Decoders conforming to the 444-12 profile at a | |||
| hich all of the following conditions apply:</t> | specific level (identified by a specific value of L) and a specific band (identi | |||
| <ul spacing="normal"> | fied by a specific value of B) <bcp14>MUST</bcp14> be capable of decoding all co | |||
| <li> | ded frames for which all of the following conditions apply:</t> | |||
| <t>The coded frame is indicated to conform to the 444-12 profile, | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| the 444-10 profile, the 422-12 profile, or the 422-10 profile.</t> | -9.3.5-5"> | |||
| <li pn="section-9.3.5-5.1"> | ||||
| <t indent="0" pn="section-9.3.5-5.1.1">The coded frame is indicate | ||||
| d to conform to the 444-12 profile, the 444-10 profile, the 422-12 profile, or t | ||||
| he 422-10 profile.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.5-5.2"> | |||
| <t>The coded frame is indicated to conform to a level (by a specif | <t indent="0" pn="section-9.3.5-5.2.1">The coded frame is indicate | |||
| ic value of level_idc) that is lower than or equal to level L.</t> | d to conform to a level (by a specific value of level_idc) that is lower than or | |||
| equal to level L.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.5-5.3"> | |||
| <t>The coded frame is indicated to conform to a band (by a specifi | <t indent="0" pn="section-9.3.5-5.3.1">The coded frame is indicate | |||
| c value of band_idc) that is lower than or equal to level B.</t> | d to conform to a band (by a specific value of band_idc) that is lower than or e | |||
| qual to band B.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="profile-4"> | <section anchor="profile-4" numbered="true" removeInRFC="false" toc="inc | |||
| <name>4444-10 profile</name> | lude" pn="section-9.3.6"> | |||
| <t>Conformance of a coded frame to the 4444-10 profile is indicated by | <name slugifiedName="name-4444-10-profile">4444-10 Profile</name> | |||
| profile_idc equal to 77.</t> | <t indent="0" pn="section-9.3.6-1">Conformance of a coded frame to the | |||
| <t>Coded frames conforming to the 4444-10 profile MUST obey the follow | 4444-10 profile is indicated by profile_idc equal to 77.</t> | |||
| ing constraints:</t> | <t indent="0" pn="section-9.3.6-2">Coded frames conforming to the 4444 | |||
| <ul spacing="normal"> | -10 profile <bcp14>MUST</bcp14> obey the following constraints:</t> | |||
| <li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <t>chroma_format_idc MUST be in the range of 2 to 4.</t> | -9.3.6-3"> | |||
| <li pn="section-9.3.6-3.1"> | ||||
| <t indent="0" pn="section-9.3.6-3.1.1">chroma_format_idc <bcp14>MU | ||||
| ST</bcp14> be in the range of 2 to 4.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.6-3.2"> | |||
| <t>bit_depth_minus8 MUST be equal to 2.</t> | <t indent="0" pn="section-9.3.6-3.2.1">bit_depth_minus8 <bcp14>MUS | |||
| T</bcp14> be equal to 2.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.6-3.3"> | |||
| <t>pbu_type MUST be equal to 1</t> | <t indent="0" pn="section-9.3.6-3.3.1">pbu_type <bcp14>MUST</bcp14 | |||
| > be equal to 1.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Any levels and bands constraints specified in <xref target="levels_ | <t indent="0" pn="section-9.3.6-4">Coded frames conforming to the 4444 | |||
| and_bands"/> MUST be fulfilled. Decoders conforming to the 4444-10 profile at a | -10 profile <bcp14>MUST</bcp14> also conform to any levels and bands constraints | |||
| specific level (identified by a specific value of L) and a specific band (identi | specified in <xref target="levels_and_bands" format="default" sectionFormat="of | |||
| fied by a specific value of B) MUST be capable of decoding all coded frames for | " derivedContent="Section 9.4"/>. Decoders conforming to the 4444-10 profile at | |||
| which all of the following conditions apply:</t> | a specific level (identified by a specific value of L) and a specific band (iden | |||
| <ul spacing="normal"> | tified by a specific value of B) <bcp14>MUST</bcp14> be capable of decoding all | |||
| <li> | coded frames for which all of the following conditions apply:</t> | |||
| <t>The coded frame is indicated to conform to the 4444-10 profile, | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| the 444-10 profile or the 422-10 profile.</t> | -9.3.6-5"> | |||
| <li pn="section-9.3.6-5.1"> | ||||
| <t indent="0" pn="section-9.3.6-5.1.1">The coded frame is indicate | ||||
| d to conform to the 4444-10 profile, the 444-10 profile, or the 422-10 profile.< | ||||
| /t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.6-5.2"> | |||
| <t>The coded frame is indicated to conform to a level (by a specif | <t indent="0" pn="section-9.3.6-5.2.1">The coded frame is indicate | |||
| ic value of level_idc) that is lower than or equal to level L.</t> | d to conform to a level (by a specific value of level_idc) that is lower than or | |||
| equal to level L.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.6-5.3"> | |||
| <t>The coded frame is indicated to conform to a band (by a specifi | <t indent="0" pn="section-9.3.6-5.3.1">The coded frame is indicate | |||
| c value of band_idc) that is lower than or equal to level B.</t> | d to conform to a band (by a specific value of band_idc) that is lower than or e | |||
| qual to band B.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="profile-5"> | <section anchor="profile-5" numbered="true" removeInRFC="false" toc="inc | |||
| <name>4444-12 profile</name> | lude" pn="section-9.3.7"> | |||
| <t>Conformance of a coded frame to the 4444-12 profile is indicated by | <name slugifiedName="name-4444-12-profile">4444-12 Profile</name> | |||
| profile_idc equal to 88.</t> | <t indent="0" pn="section-9.3.7-1">Conformance of a coded frame to the | |||
| <t>Coded frames conforming to the 4444-12 profile MUST obey the follow | 4444-12 profile is indicated by profile_idc equal to 88.</t> | |||
| ing constraints:</t> | <t indent="0" pn="section-9.3.7-2">Coded frames conforming to the 4444 | |||
| <ul spacing="normal"> | -12 profile <bcp14>MUST</bcp14> obey the following constraints:</t> | |||
| <li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <t>chroma_format_idc MUST be in the range of 2 to 4.</t> | -9.3.7-3"> | |||
| <li pn="section-9.3.7-3.1"> | ||||
| <t indent="0" pn="section-9.3.7-3.1.1">chroma_format_idc <bcp14>MU | ||||
| ST</bcp14> be in the range of 2 to 4.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.7-3.2"> | |||
| <t>bit_depth_minus8 MUST be in the range of 2 to 4.</t> | <t indent="0" pn="section-9.3.7-3.2.1">bit_depth_minus8 <bcp14>MUS | |||
| T</bcp14> be in the range of 2 to 4.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.7-3.3"> | |||
| <t>pbu_type MUST be equal to 1</t> | <t indent="0" pn="section-9.3.7-3.3.1">pbu_type <bcp14>MUST</bcp14 | |||
| > be equal to 1.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Any levels and bands constraints specified in <xref target="levels_ | <t indent="0" pn="section-9.3.7-4">Coded frames conforming to the 4444 | |||
| and_bands"/> MUST be fulfilled. Decoders conforming to the 4444-12 profile at a | -12 profile <bcp14>MUST</bcp14> also conform to any levels and bands constraints | |||
| specific level (identified by a specific value of L) and a specific band (identi | specified in <xref target="levels_and_bands" format="default" sectionFormat="of | |||
| fied by a specific value of B) MUST be capable of decoding all coded frames for | " derivedContent="Section 9.4"/>. Decoders conforming to the 4444-12 profile at | |||
| which all of the following conditions apply:</t> | a specific level (identified by a specific value of L) and a specific band (iden | |||
| <ul spacing="normal"> | tified by a specific value of B) <bcp14>MUST</bcp14> be capable of decoding all | |||
| <li> | coded frames for which all of the following conditions apply:</t> | |||
| <t>The coded frame is indicated to conform to the 4444-12 profile, | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| the 4444-10 profile, the 444-12 profile, the 444-10 profile, the 422-12 profile | -9.3.7-5"> | |||
| or the 422-10 profile.</t> | <li pn="section-9.3.7-5.1"> | |||
| <t indent="0" pn="section-9.3.7-5.1.1">The coded frame is indicate | ||||
| d to conform to the 4444-12 profile, the 4444-10 profile, the 444-12 profile, th | ||||
| e 444-10 profile, the 422-12 profile, or the 422-10 profile.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.7-5.2"> | |||
| <t>The coded frame is indicated to conform to a level (by a specif | <t indent="0" pn="section-9.3.7-5.2.1">The coded frame is indicate | |||
| ic value of level_idc) that is lower than or equal to level L.</t> | d to conform to a level (by a specific value of level_idc) that is lower than or | |||
| equal to level L.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.7-5.3"> | |||
| <t>The coded frame is indicated to conform to a band (by a specifi | <t indent="0" pn="section-9.3.7-5.3.1">The coded frame is indicate | |||
| c value of band_idc) that is lower than or equal to level B.</t> | d to conform to a band (by a specific value of band_idc) that is lower than or e | |||
| qual to band B.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="profile-6"> | <section anchor="profile-6" numbered="true" removeInRFC="false" toc="inc | |||
| <name>400-10 profile</name> | lude" pn="section-9.3.8"> | |||
| <t>Conformance of a coded frame to the 400-10 profile is indicated by | <name slugifiedName="name-400-10-profile">400-10 Profile</name> | |||
| profile_idc equal to 99.</t> | <t indent="0" pn="section-9.3.8-1">Conformance of a coded frame to the | |||
| <t>Coded frames conforming to the 400-10 profile MUST obey the followi | 400-10 profile is indicated by profile_idc equal to 99.</t> | |||
| ng constraints:</t> | <t indent="0" pn="section-9.3.8-2">Coded frames conforming to the 400- | |||
| <ul spacing="normal"> | 10 profile <bcp14>MUST</bcp14> obey the following constraints:</t> | |||
| <li> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <t>chroma_format_idc MUST be equal to 0.</t> | -9.3.8-3"> | |||
| <li pn="section-9.3.8-3.1"> | ||||
| <t indent="0" pn="section-9.3.8-3.1.1">chroma_format_idc <bcp14>MU | ||||
| ST</bcp14> be equal to 0.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.8-3.2"> | |||
| <t>bit_depth_minus8 MUST be equal to 2.</t> | <t indent="0" pn="section-9.3.8-3.2.1">bit_depth_minus8 <bcp14>MUS | |||
| T</bcp14> be equal to 2.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.8-3.3"> | |||
| <t>pbu_type MUST be equal to 1</t> | <t indent="0" pn="section-9.3.8-3.3.1">pbu_type <bcp14>MUST</bcp14 | |||
| > be equal to 1.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Any levels and bands constraints specified in <xref target="levels_ | <t indent="0" pn="section-9.3.8-4">Coded frames conforming to the 400- | |||
| and_bands"/> MUST be fulfilled. Decoders conforming to the 400-10 profile at a s | 10 profile <bcp14>MUST</bcp14> also conform to any levels and bands constraints | |||
| pecific level (identified by a specific value of L) and a specific band (identif | specified in <xref target="levels_and_bands" format="default" sectionFormat="of" | |||
| ied by a specific value of B) MUST be capable of decoding all coded frames for w | derivedContent="Section 9.4"/>. Decoders conforming to the 400-10 profile at a | |||
| hich all of the following conditions apply:</t> | specific level (identified by a specific value of L) and a specific band (identi | |||
| <ul spacing="normal"> | fied by a specific value of B) <bcp14>MUST</bcp14> be capable of decoding all co | |||
| <li> | ded frames for which all of the following conditions apply:</t> | |||
| <t>The coded frame is indicated to conform to the 400-10 profile.< | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| /t> | -9.3.8-5"> | |||
| <li pn="section-9.3.8-5.1"> | ||||
| <t indent="0" pn="section-9.3.8-5.1.1">The coded frame is indicate | ||||
| d to conform to the 400-10 profile.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.8-5.2"> | |||
| <t>The coded frame is indicated to conform to a level (by a specif | <t indent="0" pn="section-9.3.8-5.2.1">The coded frame is indicate | |||
| ic value of level_idc) that is lower than or equal to level L.</t> | d to conform to a level (by a specific value of level_idc) that is lower than or | |||
| equal to level L.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.3.8-5.3"> | |||
| <t>The coded frame is indicated to conform to a band (by a specifi | <t indent="0" pn="section-9.3.8-5.3.1">The coded frame is indicate | |||
| c value of band_idc) that is lower than or equal to level B.</t> | d to conform to a band (by a specific value of band_idc) that is lower than or e | |||
| qual to band B.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="levels_and_bands"> | <section anchor="levels_and_bands" numbered="true" removeInRFC="false" toc | |||
| <name>Levels and bands</name> | ="include" pn="section-9.4"> | |||
| <section anchor="general-3"> | <name slugifiedName="name-levels-and-bands">Levels and Bands</name> | |||
| <name>General</name> | <section anchor="general-3" numbered="true" removeInRFC="false" toc="inc | |||
| <t>For purposes of comparison of level capabilities, a particular leve | lude" pn="section-9.4.1"> | |||
| l of each band is considered to be a lower level than some other level when the | <name slugifiedName="name-general-4">General</name> | |||
| value of the level_idc of the particular level of each band is less than that of | <t indent="0" pn="section-9.4.1-1">For purposes of comparison of level | |||
| the other level.</t> | capabilities, a particular level of each band is considered to be a lower level | |||
| <ul spacing="normal"> | than some other level when the value of the level_idc of the particular level o | |||
| <li> | f each band is less than that of the other level.</t> | |||
| <t>The luma sample rate (luma samples per second) MUST be less tha | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| n or equal to "Max luma sample rate".</t> | -9.4.1-2"> | |||
| <li pn="section-9.4.1-2.1"> | ||||
| <t indent="0" pn="section-9.4.1-2.1.1">The luma sample rate (luma | ||||
| samples per second) <bcp14>MUST</bcp14> be less than or equal to the "Max luma s | ||||
| ample rate".</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.4.1-2.2"> | |||
| <t>The coded data rate (bits per second) MUST be less than or equa | <t indent="0" pn="section-9.4.1-2.2.1">The coded data rate (bits p | |||
| l to "Max luma sample rate".</t> | er second) <bcp14>MUST</bcp14> be less than or equal to the "Max coded data rate | |||
| ".</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.4.1-2.3"> | |||
| <t>The value of tile_width_in_mbs MUST be greater than or equal to | <t indent="0" pn="section-9.4.1-2.3.1">The value of tile_width_in_ | |||
| 16.</t> | mbs <bcp14>MUST</bcp14> be greater than or equal to 16.</t> | |||
| </li> | </li> | |||
| <li> | <li pn="section-9.4.1-2.4"> | |||
| <t>The value of tile_height_in_mbs MUST be greater than or equal t | <t indent="0" pn="section-9.4.1-2.4.1">The value of tile_height_in | |||
| o 8.</t> | _mbs <bcp14>MUST</bcp14> be greater than or equal to 8.</t> | |||
| </li> | </li> | |||
| <li> | <li pn="section-9.4.1-2.5"> | |||
| <t>The value of TileCols MUST be less than or equal to 20.</t> | <t indent="0" pn="section-9.4.1-2.5.1">The value of TileCols <bcp1 | |||
| 4>MUST</bcp14> be less than or equal to 20.</t> | ||||
| </li> | </li> | |||
| <li> | <li pn="section-9.4.1-2.6"> | |||
| <t>The value of TileRows MUST be less than or equal to 20.</t> | <t indent="0" pn="section-9.4.1-2.6.1">The value of TileRows <bcp1 | |||
| 4>MUST</bcp14> be less than or equal to 20.</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="limits-of-levels-and-bands"> | <section anchor="limits-of-levels-and-bands" numbered="true" removeInRFC | |||
| <name>Limits of levels and bands</name> | ="false" toc="include" pn="section-9.4.2"> | |||
| <t><xref target="_table-levels"/> specifies the limits for each level | <name slugifiedName="name-limits-of-levels-and-bands">Limits of Levels | |||
| of each band. | and Bands</name> | |||
| <t indent="0" pn="section-9.4.2-1"><xref target="_table-levels" format | ||||
| ="default" sectionFormat="of" derivedContent="Table 4"/> specifies the limits fo | ||||
| r each level of each band. | ||||
| A level to which a coded frame conforms is indicated by the syntax elements leve l_idc and band_idc as follows:</t> | A level to which a coded frame conforms is indicated by the syntax elements leve l_idc and band_idc as follows:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <li> | -9.4.2-2"> | |||
| <t>level_idc MUST be set equal to a value of 30 times the level nu | <li pn="section-9.4.2-2.1"> | |||
| mber specified in <xref target="_table-levels"/>.</t> | <t indent="0" pn="section-9.4.2-2.1.1">level_idc <bcp14>MUST</bcp1 | |||
| 4> be set equal to a value of 30 times the level number specified in <xref targe | ||||
| t="_table-levels" format="default" sectionFormat="of" derivedContent="Table 4"/> | ||||
| .</t> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <table anchor="_table-levels"> | <table anchor="_table-levels" align="center" pn="table-4"> | |||
| <name>General level limits</name> | <name slugifiedName="name-general-level-limits">General level limits | |||
| </name> | ||||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">level</th> | <th align="left" rowspan="3" colspan="1">level</th> | |||
| <th align="right">Max luma sample rate (sample/sec)</th> | <th align="center" rowspan="3" colspan="1">Max luma sample rate | |||
| <th align="right">Max coded data rate (Mbits/sec) band_idc==0</t | (samples/s)</th> | |||
| h> | <th align="center" colspan="4" rowspan="1">Max coded data rate ( | |||
| <th align="right">Max coded data rate (Mbits/sec) band_idc==1</t | Mbit/s)</th> | |||
| h> | </tr> | |||
| <th align="right">Max coded data rate (Mbits/sec) band_idc==2</t | <tr> | |||
| h> | <th align="center" colspan="4" rowspan="1">band_idc==</th> | |||
| <th align="right">Max coded data rate (Mbits/sec) band_idc==3</t | </tr> | |||
| h> | <tr> | |||
| <th align="right" colspan="1" rowspan="1">0</th> | ||||
| <th align="right" colspan="1" rowspan="1">1</th> | ||||
| <th align="right" colspan="1" rowspan="1">2</th> | ||||
| <th align="right" colspan="1" rowspan="1">3</th> | ||||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">1</td> | <td align="left" colspan="1" rowspan="1">1</td> | |||
| <td align="right">3,041,280</td> | <td align="right" colspan="1" rowspan="1">3,041,280</td> | |||
| <td align="right">8</td> | <td align="right" colspan="1" rowspan="1">8</td> | |||
| <td align="right">11</td> | <td align="right" colspan="1" rowspan="1">11</td> | |||
| <td align="right">15</td> | <td align="right" colspan="1" rowspan="1">15</td> | |||
| <td align="right">23</td> | <td align="right" colspan="1" rowspan="1">23</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">1.1</td> | <td align="left" colspan="1" rowspan="1">1.1</td> | |||
| <td align="right">6,082,560</td> | <td align="right" colspan="1" rowspan="1">6,082,560</td> | |||
| <td align="right">16</td> | <td align="right" colspan="1" rowspan="1">16</td> | |||
| <td align="right">21</td> | <td align="right" colspan="1" rowspan="1">21</td> | |||
| <td align="right">30</td> | <td align="right" colspan="1" rowspan="1">30</td> | |||
| <td align="right">45</td> | <td align="right" colspan="1" rowspan="1">45</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">2</td> | <td align="left" colspan="1" rowspan="1">2</td> | |||
| <td align="right">15,667,200</td> | <td align="right" colspan="1" rowspan="1">15,667,200</td> | |||
| <td align="right">39</td> | <td align="right" colspan="1" rowspan="1">39</td> | |||
| <td align="right">54</td> | <td align="right" colspan="1" rowspan="1">54</td> | |||
| <td align="right">76</td> | <td align="right" colspan="1" rowspan="1">76</td> | |||
| <td align="right">114</td> | <td align="right" colspan="1" rowspan="1">114</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">2.1</td> | <td align="left" colspan="1" rowspan="1">2.1</td> | |||
| <td align="right">31,334,400</td> | <td align="right" colspan="1" rowspan="1">31,334,400</td> | |||
| <td align="right">78</td> | <td align="right" colspan="1" rowspan="1">78</td> | |||
| <td align="right">108</td> | <td align="right" colspan="1" rowspan="1">108</td> | |||
| <td align="right">152</td> | <td align="right" colspan="1" rowspan="1">152</td> | |||
| <td align="right">227</td> | <td align="right" colspan="1" rowspan="1">227</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">3</td> | <td align="left" colspan="1" rowspan="1">3</td> | |||
| <td align="right">66,846,720</td> | <td align="right" colspan="1" rowspan="1">66,846,720</td> | |||
| <td align="right">114</td> | <td align="right" colspan="1" rowspan="1">114</td> | |||
| <td align="right">159</td> | <td align="right" colspan="1" rowspan="1">159</td> | |||
| <td align="right">222</td> | <td align="right" colspan="1" rowspan="1">222</td> | |||
| <td align="right">333</td> | <td align="right" colspan="1" rowspan="1">333</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">3.1</td> | <td align="left" colspan="1" rowspan="1">3.1</td> | |||
| <td align="right">133,693,440</td> | <td align="right" colspan="1" rowspan="1">133,693,440</td> | |||
| <td align="right">227</td> | <td align="right" colspan="1" rowspan="1">227</td> | |||
| <td align="right">317</td> | <td align="right" colspan="1" rowspan="1">317</td> | |||
| <td align="right">444</td> | <td align="right" colspan="1" rowspan="1">444</td> | |||
| <td align="right">666</td> | <td align="right" colspan="1" rowspan="1">666</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">4</td> | <td align="left" colspan="1" rowspan="1">4</td> | |||
| <td align="right">265,420,800</td> | <td align="right" colspan="1" rowspan="1">265,420,800</td> | |||
| <td align="right">455</td> | <td align="right" colspan="1" rowspan="1">455</td> | |||
| <td align="right">637</td> | <td align="right" colspan="1" rowspan="1">637</td> | |||
| <td align="right">892</td> | <td align="right" colspan="1" rowspan="1">892</td> | |||
| <td align="right">1,338</td> | <td align="right" colspan="1" rowspan="1">1,338</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">4.1</td> | <td align="left" colspan="1" rowspan="1">4.1</td> | |||
| <td align="right">530,841,600</td> | <td align="right" colspan="1" rowspan="1">530,841,600</td> | |||
| <td align="right">910</td> | <td align="right" colspan="1" rowspan="1">910</td> | |||
| <td align="right">1,274</td> | <td align="right" colspan="1" rowspan="1">1,274</td> | |||
| <td align="right">1,784</td> | <td align="right" colspan="1" rowspan="1">1,784</td> | |||
| <td align="right">2,675</td> | <td align="right" colspan="1" rowspan="1">2,675</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">5</td> | <td align="left" colspan="1" rowspan="1">5</td> | |||
| <td align="right">1,061,683,200</td> | <td align="right" colspan="1" rowspan="1">1,061,683,200</td> | |||
| <td align="right">1,820</td> | <td align="right" colspan="1" rowspan="1">1,820</td> | |||
| <td align="right">2,548</td> | <td align="right" colspan="1" rowspan="1">2,548</td> | |||
| <td align="right">3,567</td> | <td align="right" colspan="1" rowspan="1">3,567</td> | |||
| <td align="right">5,350</td> | <td align="right" colspan="1" rowspan="1">5,350</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">5.1</td> | <td align="left" colspan="1" rowspan="1">5.1</td> | |||
| <td align="right">2,123,366,400</td> | <td align="right" colspan="1" rowspan="1">2,123,366,400</td> | |||
| <td align="right">3,639</td> | <td align="right" colspan="1" rowspan="1">3,639</td> | |||
| <td align="right">5,095</td> | <td align="right" colspan="1" rowspan="1">5,095</td> | |||
| <td align="right">7,133</td> | <td align="right" colspan="1" rowspan="1">7,133</td> | |||
| <td align="right">10,699</td> | <td align="right" colspan="1" rowspan="1">10,699</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">6</td> | <td align="left" colspan="1" rowspan="1">6</td> | |||
| <td align="right">4,777,574,400</td> | <td align="right" colspan="1" rowspan="1">4,777,574,400</td> | |||
| <td align="right">7,278</td> | <td align="right" colspan="1" rowspan="1">7,278</td> | |||
| <td align="right">10,189</td> | <td align="right" colspan="1" rowspan="1">10,189</td> | |||
| <td align="right">14,265</td> | <td align="right" colspan="1" rowspan="1">14,265</td> | |||
| <td align="right">21,397</td> | <td align="right" colspan="1" rowspan="1">21,397</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">6.1</td> | <td align="left" colspan="1" rowspan="1">6.1</td> | |||
| <td align="right">8,493,465,600</td> | <td align="right" colspan="1" rowspan="1">8,493,465,600</td> | |||
| <td align="right">14,556</td> | <td align="right" colspan="1" rowspan="1">14,556</td> | |||
| <td align="right">20,378</td> | <td align="right" colspan="1" rowspan="1">20,378</td> | |||
| <td align="right">28,529</td> | <td align="right" colspan="1" rowspan="1">28,529</td> | |||
| <td align="right">42,793</td> | <td align="right" colspan="1" rowspan="1">42,793</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">7</td> | <td align="left" colspan="1" rowspan="1">7</td> | |||
| <td align="right">16,986,931,200</td> | <td align="right" colspan="1" rowspan="1">16,986,931,200</td> | |||
| <td align="right">29,111</td> | <td align="right" colspan="1" rowspan="1">29,111</td> | |||
| <td align="right">40,756</td> | <td align="right" colspan="1" rowspan="1">40,756</td> | |||
| <td align="right">57,058</td> | <td align="right" colspan="1" rowspan="1">57,058</td> | |||
| <td align="right">85,586</td> | <td align="right" colspan="1" rowspan="1">85,586</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">7.1</td> | <td align="left" colspan="1" rowspan="1">7.1</td> | |||
| <td align="right">33,973,862,400</td> | <td align="right" colspan="1" rowspan="1">33,973,862,400</td> | |||
| <td align="right">58,222</td> | <td align="right" colspan="1" rowspan="1">58,222</td> | |||
| <td align="right">81,511</td> | <td align="right" colspan="1" rowspan="1">81,511</td> | |||
| <td align="right">114,115</td> | <td align="right" colspan="1" rowspan="1">114,115</td> | |||
| <td align="right">171,172</td> | <td align="right" colspan="1" rowspan="1">171,172</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| <t><xref target="_table-level_ex"/> shows widely used typical configur | <t indent="0" pn="section-9.4.2-4"><xref target="_table-level_ex" form | |||
| ations of resolution and frame rate of video and corresponding levels for them.< | at="default" sectionFormat="of" derivedContent="Table 5"/> shows widely used typ | |||
| /t> | ical configurations of resolution and frame rates of video and corresponding lev | |||
| <table anchor="_table-level_ex"> | els for them.</t> | |||
| <name>Example of typical video configurations and corresponding leve | <table anchor="_table-level_ex" align="center" pn="table-5"> | |||
| ls (informative)</name> | <name slugifiedName="name-example-of-typical-video-co">Example of ty | |||
| pical video configurations and corresponding levels (informative)</name> | ||||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="center">use case</th> | <th align="center" colspan="1" rowspan="1">use case</th> | |||
| <th align="center">resolution</th> | <th align="center" colspan="1" rowspan="1">resolution</th> | |||
| <th align="right">frame per second</th> | <th align="right" colspan="1" rowspan="1">frame per second</th> | |||
| <th align="right">luma sample per second</th> | <th align="right" colspan="1" rowspan="1">luma sample per second | |||
| <th align="left">level</th> | </th> | |||
| <th align="left" colspan="1" rowspan="1">level</th> | ||||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="center">720p</td> | <td align="center" colspan="1" rowspan="1">720p</td> | |||
| <td align="center">1280 x 720</td> | <td align="center" colspan="1" rowspan="1">1280 x 720</td> | |||
| <td align="right">30</td> | <td align="right" colspan="1" rowspan="1">30</td> | |||
| <td align="right">27,648,000</td> | <td align="right" colspan="1" rowspan="1">27,648,000</td> | |||
| <td align="left">2.1</td> | <td align="left" colspan="1" rowspan="1">2.1</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">FHD</td> | <td align="center" colspan="1" rowspan="1">FHD</td> | |||
| <td align="center">1920 x 1080</td> | <td align="center" colspan="1" rowspan="1">1920 x 1080</td> | |||
| <td align="right">30</td> | <td align="right" colspan="1" rowspan="1">30</td> | |||
| <td align="right">62,208,000</td> | <td align="right" colspan="1" rowspan="1">62,208,000</td> | |||
| <td align="left">3</td> | <td align="left" colspan="1" rowspan="1">3</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">UHD 4K</td> | <td align="center" colspan="1" rowspan="1">UHD 4K</td> | |||
| <td align="center">3840 x 2160</td> | <td align="center" colspan="1" rowspan="1">3840 x 2160</td> | |||
| <td align="right">60</td> | <td align="right" colspan="1" rowspan="1">60</td> | |||
| <td align="right">497,664,000</td> | <td align="right" colspan="1" rowspan="1">497,664,000</td> | |||
| <td align="left">4.1</td> | <td align="left" colspan="1" rowspan="1">4.1</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">UHD 4K</td> | <td align="center" colspan="1" rowspan="1">UHD 4K</td> | |||
| <td align="center">3840 x 2160</td> | <td align="center" colspan="1" rowspan="1">3840 x 2160</td> | |||
| <td align="right">120</td> | <td align="right" colspan="1" rowspan="1">120</td> | |||
| <td align="right">995,328,000</td> | <td align="right" colspan="1" rowspan="1">995,328,000</td> | |||
| <td align="left">5</td> | <td align="left" colspan="1" rowspan="1">5</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">UHD 8K</td> | <td align="center" colspan="1" rowspan="1">UHD 8K</td> | |||
| <td align="center">7680 x 4320</td> | <td align="center" colspan="1" rowspan="1">7680 x 4320</td> | |||
| <td align="right">60</td> | <td align="right" colspan="1" rowspan="1">60</td> | |||
| <td align="right">1,990,656,000</td> | <td align="right" colspan="1" rowspan="1">1,990,656,000</td> | |||
| <td align="left">5.1</td> | <td align="left" colspan="1" rowspan="1">5.1</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">UHD 8K</td> | <td align="center" colspan="1" rowspan="1">UHD 8K</td> | |||
| <td align="center">7680 x 4320</td> | <td align="center" colspan="1" rowspan="1">7680 x 4320</td> | |||
| <td align="right">120</td> | <td align="right" colspan="1" rowspan="1">120</td> | |||
| <td align="right">3,981,312,000</td> | <td align="right" colspan="1" rowspan="1">3,981,312,000</td> | |||
| <td align="left">6</td> | <td align="left" colspan="1" rowspan="1">6</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="security-considerations"> | <section anchor="security-considerations" numbered="true" removeInRFC="false | |||
| <name>Security considerations</name> | " toc="include" pn="section-10"> | |||
| <t>Like any other audio or video codec, APV should not be used with insecu | <name slugifiedName="name-security-considerations">Security Considerations | |||
| re ciphers or cipher modes that are vulnerable to known plaintext attacks. S | </name> | |||
| ome of the header bits as well as the padding are easily predictable.</t> | <t indent="0" pn="section-10-1">Like any other audio or video codec, APV s | |||
| <t>A decoder MUST be robust against any non-compliant or malicious payload | hould not be used with insecure ciphers or cipher modes that are vulnerable to k | |||
| s. Malicious payloads MUST NOT cause the decoder to overrun its allocated memory | nown plaintext attacks. Some of the header bits as well as the padding are e | |||
| or to take an excessive amount of resources to decode. An overrun in allocated | asily predictable.</t> | |||
| memory could lead to arbitrary code execution by an attacker. The same applies t | <t indent="0" pn="section-10-2">A decoder <bcp14>MUST</bcp14> be robust ag | |||
| o the encoder, even though problems in encoders are typically rarer. Malicious | ainst any non-compliant or malicious payloads. Malicious payloads <bcp14>MUST NO | |||
| video streams MUST NOT cause the encoder to misbehave because this would allow a | T</bcp14> cause the decoder to overrun its allocated memory or to take an excess | |||
| n attacker to attack transcoding gateways. A frequent security problem in image | ive amount of resources to decode. An overrun in allocated memory could lead to | |||
| and video codecs is failure to check for integer overflows. An example is allo | arbitrary code execution by an attacker. The same applies to the encoder, even t | |||
| cating "frame_width * frame_height" in pixel count computations without consider | hough problems in encoders are typically rare. Malicious video streams <bcp14>M | |||
| ing that the multiplication result may have overflowed the range of the arithmet | UST NOT</bcp14> cause the encoder to misbehave because this would allow an attac | |||
| ic type. The implementation MUST ensure that no read outside allocated and initi | ker to attack transcoding gateways. A frequent security problem in image and vi | |||
| alized memory occurs.</t> | deo codecs is failure to check for integer overflows. An example is allocating | |||
| <t>A decoder MUST NOT try to process the metadata whose type is not recogn | "frame_width * frame_height" in pixel count computations without considering tha | |||
| ized by the implementation. Failure of processing of any metadata exactly accord | t the multiplication result may have overflowed the range of the arithmetic type | |||
| ing to the syntax structure specified MAY put a decoder in unknown status.</t> | . The implementation <bcp14>MUST</bcp14> ensure that any data outside of allocat | |||
| <t>None of the content carried in APV is intended to be executable.</t> | ed and initialized memory cannot be read.</t> | |||
| </section> | <t indent="0" pn="section-10-3">A decoder <bcp14>MUST NOT</bcp14> try to p | |||
| <section anchor="iana-considerations"> | rocess the metadata whose type is not recognized by the implementation. Failure | |||
| <name>IANA considerations</name> | to process any metadata exactly according to the syntax structure specified <bcp | |||
| <t>This document has no actions for IANA.</t> | 14>MAY</bcp14> put a decoder in an unknown status.</t> | |||
| <t indent="0" pn="section-10-4">None of the content carried in APV is inte | ||||
| nded to be executable.</t> | ||||
| </section> | </section> | |||
| <section anchor="appendix"> | <section anchor="iana-considerations" numbered="true" removeInRFC="false" to | |||
| <name>Appendix</name> | c="include" pn="section-11"> | |||
| <section anchor="appendix-rawbitstream"> | <name slugifiedName="name-iana-considerations">IANA Considerations</name> | |||
| <name>Raw bitstream format</name> | <t indent="0" pn="section-11-1">This document has no actions for IANA.</t> | |||
| <figure anchor="syntax-rawbitstream"> | ||||
| <name>raw_bitstream_access_unit() syntax code</name> | ||||
| <artwork><![CDATA[ | ||||
| syntax code | type | ||||
| raw_bitstream_access_unit(){ | | ||||
| au_size | u(32) | ||||
| access_unit(au_size) | | ||||
| } | | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>au_size</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>indicates the size of access unit in bytes. 0 is prohibited and 0 | ||||
| xFFFFFFFF is reserved.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="apv-implementations"> | ||||
| <name>APV implementations</name> | ||||
| <section anchor="openapv-open-source-project"> | ||||
| <name>OpenAPV open source project</name> | ||||
| <t>The Academy Software Foundation (ASWF) <xref target="ASWF"/> jointl | ||||
| y found by Academy of Motion Picture Arts and Science (AMPAS) <xref target="AMPA | ||||
| S"/> and the Linux Foundation has created an open source software development pr | ||||
| oject conformant to this document <xref target="OpenAPV"/>. The project also pro | ||||
| vides various test vectors for verification of the implementations at https://gi | ||||
| thub.com/AcademySoftwareFoundation/openapv/tree/main/test/bitstream.</t> | ||||
| </section> | ||||
| <section anchor="android-open-source-project"> | ||||
| <name>Android open source project</name> | ||||
| <t>The Android open source project (AOSP) has implemented Advanced Pro | ||||
| fessional Video (APV) conformant to this document <xref target="AOSP16APV"/>.</t | ||||
| > | ||||
| </section> | ||||
| <section anchor="ffmpeg-open-source-project"> | ||||
| <name>FFmpeg open source project</name> | ||||
| <t>The FFmpeg project is developing an APV decoder <xref target="FFmpe | ||||
| gAPVdec"/> and an APV encoder <xref target="FFmpegAPVenc"/> conformant to this d | ||||
| ocument.</t> | ||||
| </section> | ||||
| </section> | ||||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references anchor="sec-combined-references"> | <references anchor="sec-combined-references" pn="section-12"> | |||
| <name>References</name> | <name slugifiedName="name-references">References</name> | |||
| <references anchor="sec-normative-references"> | <references anchor="sec-normative-references" pn="section-12.1"> | |||
| <name>Normative References</name> | <name slugifiedName="name-normative-references">Normative References</na | |||
| <reference anchor="H273" target="https://www.itu.int/rec/T-REC-H.273"> | me> | |||
| <reference anchor="CIE15" target="https://cie.co.at/publications/colorim | ||||
| etry-4th-edition" quoteTitle="true" derivedAnchor="CIE15"> | ||||
| <front> | <front> | |||
| <title>Recommendation ITU-T H.273 (V4) | ISO/IEC 23091-2:2025, Codin g-independent code points - Part 2 Video</title> | <title>Colorimetry, 4th Edition</title> | |||
| <author> | <author> | |||
| <organization/> | <organization showOnFrontPage="true">CIE</organization> | |||
| </author> | </author> | |||
| <date year="2024" month="July"/> | <date year="2018"/> | |||
| </front> | </front> | |||
| <seriesInfo name="DOI" value="10.25039/TR.015.2018"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="ISO9899" target="https://www.iso.org/standard/74528.h tml"> | <reference anchor="CTA-861.3" quoteTitle="true" derivedAnchor="CTA-861.3 "> | |||
| <front> | <front> | |||
| <title>ISO/IEC 9899:2018, Information technology - Programming langu ages - C</title> | <title>HDR Static Metadata Extensions</title> | |||
| <author> | <author> | |||
| <organization/> | <organization showOnFrontPage="true">CTA</organization> | |||
| </author> | </author> | |||
| <date year="2018" month="June"/> | <date year="2019" month="September"/> | |||
| </front> | </front> | |||
| <refcontent>CTA-861.3-A</refcontent> | ||||
| </reference> | </reference> | |||
| <reference anchor="ITUT-T35" target="https://www.itu.int/rec/T-REC-T.35" > | <reference anchor="H273" target="https://www.itu.int/rec/T-REC-H.273" qu oteTitle="true" derivedAnchor="H273"> | |||
| <front> | <front> | |||
| <title>Recommendation ITU-T T.35, Procedure for the allocation of IT U-T defined codes for non-standard facilities</title> | <title>Coding-independent code points for video signal type identifi cation</title> | |||
| <author> | <author> | |||
| <organization/> | <organization showOnFrontPage="true">ITU-T</organization> | |||
| </author> | </author> | |||
| <date year="2000" month="February"/> | <date year="2024" month="July"/> | |||
| </front> | </front> | |||
| <seriesInfo name="ITU-T Recommendation" value="H.273"/> | ||||
| <seriesInfo name="ISO/IEC" value="23091-2:2025"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="CEA-861.3"> | <reference anchor="ISO11664-1" target="https://www.iso.org/standard/7416 4.html" quoteTitle="true" derivedAnchor="ISO11664-1"> | |||
| <front> | <front> | |||
| <title>CEA-861.3, HDR Static Metadata Extension</title> | <title>Colorimetry - Part 1: CIE standard colorimetric observers</ti tle> | |||
| <author> | <author> | |||
| <organization/> | <organization showOnFrontPage="true">ISO</organization> | |||
| </author> | </author> | |||
| <date year="2015" month="January"/> | <date year="2019"/> | |||
| </front> | </front> | |||
| <seriesInfo name="ISO/CIE" value="11664-1:2019"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="CIE15" target="https://cie.co.at/publications/colorim etry-4th-edition"> | <reference anchor="ISO9899" target="https://www.iso.org/standard/82075.h tml" quoteTitle="true" derivedAnchor="ISO9899"> | |||
| <front> | <front> | |||
| <title>Technical Rport, Colorimetri</title> | <title>Information technology - Programming languages - C</title> | |||
| <author> | <author> | |||
| <organization/> | <organization showOnFrontPage="true">ISO/IEC</organization> | |||
| </author> | </author> | |||
| <date year="2018"/> | <date year="2024"/> | |||
| </front> | </front> | |||
| <seriesInfo name="ISO/IEC" value="9899:2024"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="RFC2119"> | <reference anchor="ITUT-T35" target="https://www.itu.int/rec/T-REC-T.35" | |||
| quoteTitle="true" derivedAnchor="ITUT-T35"> | ||||
| <front> | ||||
| <title>Procedure for the allocation of ITU-T defined codes for non-s | ||||
| tandard facilities</title> | ||||
| <author> | ||||
| <organization showOnFrontPage="true">ITU-T</organization> | ||||
| </author> | ||||
| <date year="2000" month="February"/> | ||||
| </front> | ||||
| <seriesInfo name="ITU-T Recommendation" value="T.35"/> | ||||
| </reference> | ||||
| <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | ||||
| 119" quoteTitle="true" derivedAnchor="RFC2119"> | ||||
| <front> | <front> | |||
| <title>Key words for use in RFCs to Indicate Requirement Levels</tit le> | <title>Key words for use in RFCs to Indicate Requirement Levels</tit le> | |||
| <author fullname="S. Bradner" initials="S." surname="Bradner"/> | <author fullname="S. Bradner" initials="S." surname="Bradner"/> | |||
| <date month="March" year="1997"/> | <date month="March" year="1997"/> | |||
| <abstract> | <abstract> | |||
| <t>In many standards track documents several words are used to sig nify the requirements in the specification. These words are often capitalized. T his document defines these words as they should be interpreted in IETF documents . This document specifies an Internet Best Current Practices for the Internet Co mmunity, and requests discussion and suggestions for improvements.</t> | <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often cap italized. This document defines these words as they should be interpreted in IET F documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t > | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <seriesInfo name="BCP" value="14"/> | <seriesInfo name="BCP" value="14"/> | |||
| <seriesInfo name="RFC" value="2119"/> | <seriesInfo name="RFC" value="2119"/> | |||
| <seriesInfo name="DOI" value="10.17487/RFC2119"/> | <seriesInfo name="DOI" value="10.17487/RFC2119"/> | |||
| </reference> | </reference> | |||
| <reference anchor="RFC8174"> | <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 174" quoteTitle="true" derivedAnchor="RFC8174"> | |||
| <front> | <front> | |||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti tle> | <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti tle> | |||
| <author fullname="B. Leiba" initials="B." surname="Leiba"/> | <author fullname="B. Leiba" initials="B." surname="Leiba"/> | |||
| <date month="May" year="2017"/> | <date month="May" year="2017"/> | |||
| <abstract> | <abstract> | |||
| <t>RFC 2119 specifies common key words that may be used in protoco l specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t> | <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> | </abstract> | |||
| </front> | </front> | |||
| <seriesInfo name="BCP" value="14"/> | <seriesInfo name="BCP" value="14"/> | |||
| <seriesInfo name="RFC" value="8174"/> | <seriesInfo name="RFC" value="8174"/> | |||
| <seriesInfo name="DOI" value="10.17487/RFC8174"/> | <seriesInfo name="DOI" value="10.17487/RFC8174"/> | |||
| </reference> | </reference> | |||
| <reference anchor="RFC9562"> | <reference anchor="RFC9562" target="https://www.rfc-editor.org/info/rfc9 562" quoteTitle="true" derivedAnchor="RFC9562"> | |||
| <front> | <front> | |||
| <title>Universally Unique IDentifiers (UUIDs)</title> | <title>Universally Unique IDentifiers (UUIDs)</title> | |||
| <author fullname="K. Davis" initials="K." surname="Davis"/> | <author fullname="K. Davis" initials="K." surname="Davis"/> | |||
| <author fullname="B. Peabody" initials="B." surname="Peabody"/> | <author fullname="B. Peabody" initials="B." surname="Peabody"/> | |||
| <author fullname="P. Leach" initials="P." surname="Leach"/> | <author fullname="P. Leach" initials="P." surname="Leach"/> | |||
| <date month="May" year="2024"/> | <date month="May" year="2024"/> | |||
| <abstract> | <abstract> | |||
| <t>This specification defines UUIDs (Universally Unique IDentifier s) -- | <t indent="0">This specification defines UUIDs (Universally Unique IDentifiers) -- | |||
| also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform | also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform | |||
| Resource Name namespace for UUIDs. A UUID is 128 bits long and is | Resource Name namespace for UUIDs. A UUID is 128 bits long and is | |||
| intended to guarantee uniqueness across space and time. UUIDs were | intended to guarantee uniqueness across space and time. UUIDs were | |||
| originally used in the Apollo Network Computing System (NCS), later | originally used in the Apollo Network Computing System (NCS), later | |||
| in the Open Software Foundation's (OSF's) Distributed Computing | in the Open Software Foundation's (OSF's) Distributed Computing | |||
| Environment (DCE), and then in Microsoft Windows platforms.</t> | Environment (DCE), and then in Microsoft Windows platforms.</t> | |||
| <t>This specification is derived from the OSF DCE specification wi th the | <t indent="0">This specification is derived from the OSF DCE speci fication with the | |||
| kind permission of the OSF (now known as "The Open Group"). Information from ear lier versions of the OSF DCE specification have | kind permission of the OSF (now known as "The Open Group"). Information from ear lier versions of the OSF DCE specification have | |||
| been incorporated into this document. This document obsoletes RFC | been incorporated into this document. This document obsoletes RFC | |||
| 4122.</t> | 4122.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <seriesInfo name="RFC" value="9562"/> | <seriesInfo name="RFC" value="9562"/> | |||
| <seriesInfo name="DOI" value="10.17487/RFC9562"/> | <seriesInfo name="DOI" value="10.17487/RFC9562"/> | |||
| </reference> | </reference> | |||
| </references> | </references> | |||
| <references anchor="sec-informative-references"> | <references anchor="sec-informative-references" pn="section-12.2"> | |||
| <name>Informative References</name> | <name slugifiedName="name-informative-references">Informative References | |||
| <reference anchor="ASWF" target="https://www.aswf.io/"> | </name> | |||
| <reference anchor="AMPAS" target="https://www.oscars.org/" quoteTitle="t | ||||
| rue" derivedAnchor="AMPAS"> | ||||
| <front> | <front> | |||
| <title>The Academy Software Foundation</title> | <title>Academy of Motion Picture Arts and Sciences</title> | |||
| <author> | <author> | |||
| <organization/> | <organization showOnFrontPage="true"/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | ||||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="AMPAS" target="https://www.oscars.org/"> | <reference anchor="AOSP16APV" target="https://developer.android.com/abou t/versions/16/features#apv" quoteTitle="true" derivedAnchor="AOSP16APV"> | |||
| <front> | <front> | |||
| <title>Academy of Motion Picture Arts and Science</title> | <title>Android open source project version 16</title> | |||
| <author> | <author> | |||
| <organization/> | <organization showOnFrontPage="true"/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | ||||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="OpenAPV" target="https://github.com/AcademySoftwareFo undation/openapv"> | <reference anchor="ASWF" target="https://www.aswf.io/" quoteTitle="true" derivedAnchor="ASWF"> | |||
| <front> | <front> | |||
| <title>OpenAPV</title> | <title>The Academy Software Foundation</title> | |||
| <author> | <author> | |||
| <organization/> | <organization showOnFrontPage="true"/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | ||||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="AOSP16APV" target="https://developer.android.com/abou t/versions/16/features#apv"> | <reference anchor="FFmpegAPVdec" target="https://ffmpeg.org/download.htm l#release_8.0" quoteTitle="true" derivedAnchor="FFmpegAPVdec"> | |||
| <front> | <front> | |||
| <title>Android open source project version 16</title> | <title>FFmpeg implementation of APV decoder</title> | |||
| <author> | <author> | |||
| <organization/> | <organization showOnFrontPage="true"/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | <date day="20" month="November" year="2025"/> | |||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="FFmpegAPVdec" target="https://git.ffmpeg.org/gitweb/f fmpeg.git/commit/483cadf8d77d3260eec8781f5f18c50f27e468f8"> | <reference anchor="FFmpegAPVenc" target="https://git.ffmpeg.org/gitweb/f fmpeg.git/commit/fab691edaf53bbf10429ef3448f1f274e5078395" quoteTitle="true" der ivedAnchor="FFmpegAPVenc"> | |||
| <front> | <front> | |||
| <title>FFmpeg implementation of APV decoder</title> | <title>FFmpeg implementation of APV encoder</title> | |||
| <author> | <author> | |||
| <organization/> | <organization showOnFrontPage="true"/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | <date day="4" month="May" year="2025"/> | |||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="FFmpegAPVenc" target="https://git.ffmpeg.org/gitweb/f fmpeg.git/commit/fab691edaf53bbf10429ef3448f1f274e5078395"> | <reference anchor="OpenAPV" target="https://github.com/AcademySoftwareFo undation/openapv" quoteTitle="true" derivedAnchor="OpenAPV"> | |||
| <front> | <front> | |||
| <title>FFmpeg implementation of APV encoder</title> | <title>OpenAPV</title> | |||
| <author> | <author> | |||
| <organization/> | <organization showOnFrontPage="true"/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | <date day="16" month="12" year="2025"/> | |||
| </front> | </front> | |||
| <refcontent>commit 1a7845a</refcontent> | ||||
| </reference> | </reference> | |||
| </references> | </references> | |||
| </references> | </references> | |||
| <section anchor="appendix-rawbitstream" numbered="true" removeInRFC="false" | ||||
| toc="include" pn="section-appendix.a"> | ||||
| <name slugifiedName="name-raw-bitstream-format">Raw Bitstream Format</name | ||||
| > | ||||
| <figure anchor="syntax-rawbitstream" align="left" suppress-title="false" p | ||||
| n="figure-34"> | ||||
| <name slugifiedName="name-raw_bitstream_access_unit-s">raw_bitstream_acc | ||||
| ess_unit() syntax code</name> | ||||
| <artwork align="left" pn="section-appendix.a-1.1"> | ||||
| syntax code | type | ||||
| --------------------------------------------------------------|----- | ||||
| raw_bitstream_access_unit(){ | | ||||
| au_size | u(32) | ||||
| access_unit(au_size) | | ||||
| } |</artwork> | ||||
| </figure> | ||||
| <dl spacing="normal" newline="true" indent="3" pn="section-appendix.a-2"> | ||||
| <dt pn="section-appendix.a-2.1">au_size</dt> | ||||
| <dd pn="section-appendix.a-2.2">indicates the size of access unit in byt | ||||
| es. 0 is prohibited and 0xFFFFFFFF is reserved.</dd> | ||||
| </dl> | ||||
| </section> | ||||
| <section anchor="apv-implementations" numbered="true" removeInRFC="false" to | ||||
| c="include" pn="section-appendix.b"> | ||||
| <name slugifiedName="name-apv-implementations">APV Implementations</name> | ||||
| <section anchor="openapv-open-source-project" numbered="true" removeInRFC= | ||||
| "false" toc="include" pn="section-appendix.b.1"> | ||||
| <name slugifiedName="name-openapv-open-source-project">OpenAPV Open Sour | ||||
| ce Project</name> | ||||
| <t indent="0" pn="section-appendix.b.1-1">The Academy Software Foundatio | ||||
| n (ASWF) <xref target="ASWF" format="default" sectionFormat="of" derivedContent= | ||||
| "ASWF"/>, jointly founded by the Academy of Motion Picture Arts and Science (AM | ||||
| PAS) <xref target="AMPAS" format="default" sectionFormat="of" derivedContent="AM | ||||
| PAS"/> and the Linux Foundation, has created an open source software development | ||||
| project conformant to this document <xref target="OpenAPV" format="default" sec | ||||
| tionFormat="of" derivedContent="OpenAPV"/>. The project also provides various te | ||||
| st vectors for verification of the implementations at <eref brackets="angle" tar | ||||
| get="https://github.com/AcademySoftwareFoundation/openapv/tree/main/test/bitstre | ||||
| am"/>.</t> | ||||
| </section> | ||||
| <section anchor="android-open-source-project" numbered="true" removeInRFC= | ||||
| "false" toc="include" pn="section-appendix.b.2"> | ||||
| <name slugifiedName="name-android-open-source-project">Android Open Sour | ||||
| ce Project</name> | ||||
| <t indent="0" pn="section-appendix.b.2-1">The Android open source projec | ||||
| t (AOSP) has implemented Advanced Professional Video (APV) conformant to this do | ||||
| cument <xref target="AOSP16APV" format="default" sectionFormat="of" derivedConte | ||||
| nt="AOSP16APV"/>.</t> | ||||
| </section> | ||||
| <section anchor="ffmpeg-open-source-project" numbered="true" removeInRFC=" | ||||
| false" toc="include" pn="section-appendix.b.3"> | ||||
| <name slugifiedName="name-ffmpeg-open-source-project">FFmpeg Open Source | ||||
| Project</name> | ||||
| <t indent="0" pn="section-appendix.b.3-1">The FFmpeg project is developi | ||||
| ng an APV decoder <xref target="FFmpegAPVdec" format="default" sectionFormat="of | ||||
| " derivedContent="FFmpegAPVdec"/> and an APV encoder <xref target="FFmpegAPVenc" | ||||
| format="default" sectionFormat="of" derivedContent="FFmpegAPVenc"/> conformant | ||||
| to this document.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
| ="include" pn="section-appendix.c"> | ||||
| <name slugifiedName="name-authors-addresses">Authors' Addresses</name> | ||||
| <author initials="Y." surname="Lim" fullname="Youngkwon Lim"> | ||||
| <organization showOnFrontPage="true">Samsung Electronics</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>6105 Tennyson Pkwy, Ste 300</street> | ||||
| <city>Plano</city> | ||||
| <region>TX</region> | ||||
| <code>75024</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>yklwhite@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="M." surname="Park" fullname="Minwoo Park"> | ||||
| <organization showOnFrontPage="true">Samsung Electronics</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>34, Seongchon-gil, Seocho-gu</street> | ||||
| <city>Seoul</city> | ||||
| <code>3573</code> | ||||
| <country>Republic of Korea</country> | ||||
| </postal> | ||||
| <email>m.w.park@samsung.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="M." surname="Budagavi" fullname="Madhukar Budagavi"> | ||||
| <organization showOnFrontPage="true">Samsung Electronics</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>6105 Tennyson Pkwy, Ste 300</street> | ||||
| <city>Plano</city> | ||||
| <region>TX</region> | ||||
| <code>75024</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>m.budagavi@samsung.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="R." surname="Joshi" fullname="Rajan Joshi"> | ||||
| <organization showOnFrontPage="true">Samsung Electronics</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>11488 Tree Hollow Ln</street> | ||||
| <city>San Diego</city> | ||||
| <region>CA</region> | ||||
| <code>92128</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>rajan_joshi@ieee.org</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="K." surname="Choi" fullname="Kwang Pyo Choi"> | ||||
| <organization showOnFrontPage="true">Samsung Electronics</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>34 Seongchon-gil Seocho-gu</street> | ||||
| <city>Seoul</city> | ||||
| <code>3573</code> | ||||
| <country>Republic of Korea</country> | ||||
| </postal> | ||||
| <email>kwangpyo.choi@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| </section> | ||||
| </back> | </back> | |||
| <!-- ##markdown-source: | ||||
| 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 | ||||
| ay1Pxi4ohOo4O9Vqsti2DLqS2Dfa9Xr9hx/kL5zo5HdVmwpw3MPZ+jKvwsvz | ||||
| kv7vN6ttOht94Ux096sfAwu0Ww5SuRq85Ww4WC3Z7qw4cGbF24mmvrYRjxnT | ||||
| 8SzGTcYZSgzpoHgHg5T2uLFxmMr4KmT64D0l9TDaNd+eVfIDCuJNF6Swu+dR | ||||
| 0om9A0/sdz1x0JaBSh9YvPegY8+kW4A64tsxfitU4GYKpHolZWbzygDFgbkk | ||||
| q4reA1cF8ZkUT51IqdWKYb8o01CF/gN2trocS34lYI9ssgJv/kns/0aq6Z9v | ||||
| dnb265ausnSZMKOv1NabtWdQeQga9JY7cxKch+KnIAoSWN08pIivb4rsyxRZ | ||||
| tfvly/XFbdRTyZLTCZioMNY3BlZtVz/FEICaiqqoI2fMJtEa9tCG1gSSQUHi | ||||
| uKtgQwh2HCYZX1HQEIMQ6IM+LnQArOvk0AWtxYB1go8IkEfIGK9ORixNHJYJ | ||||
| aY4q+5A0ukOpopW1zKrUMIJlMLQhWeHtutSKsqbgbMPkQGrrwPCACc6piyS+ | ||||
| NvsKKV6ujkCJyy6/eOA3NUTLBv7uxx27XGh67UH/e27Ql1JpzUFfSqemnB/O | ||||
| q3w8ystT7PQa04jRsOe9s7yClfpdkWSpnrBMPurTSr0yzym++Xvt+/qdSVAj | ||||
| nPDEEDH+crWrGrVZUCnFRa6pxftQu9lKmypZKcsbVC1Tqpr9uKzhvWZxYWyI | ||||
| QtSl5hWzeEVXqIMDvWWTBuswQ2m8lxICM5qV93uZAbaQtw/OJjUaGk+oap6N | ||||
| DF40+jtaVjiU9XK2rSbjQ7Wqy1FvacjaUva1ghA34eSVM/zKUcmfaK8cPfvw | ||||
| gY8ByVAMepLm5+4XQ+6gvVd7WG12Y2y6PS6T395HMIAYOH9D0fM3gtYMK/8R | ||||
| n1XxwyN4cQBrDrEHwy/a0HqD/sGfDfzQODyyimP9XXxL/+BP/gd/0gcoYopT | ||||
| fQKH7RBMboeapQ8He6Y4YtfQ/xiMnXemOKGoIXFjukUhWzTFNcZCY9yQGKsP | ||||
| uxYymgpCUkHB1NSCdrj4Z31qgEbHvZRZC4piFJywaNQfPxaHlFpJvPGTNBfy | ||||
| n1+COKHknAcej6nKvQBr9XExWhEzitw1lQ2izOSC1EmNDIK0n4RTTGZArahg | ||||
| eU7ypALjTRoAld3dRrmYXWXFCoiC3TWKxeoups2tpWcTnJwfa8BynAUf3qDX | ||||
| YonqlAWM8wx4wkotA7q1XVcOCIlHbgSLKEFrfJIhd2TJHi/biaaxHQfRJQUP | ||||
| DIJl/tyrcV8demL0S8Ysd1Z7owHL1c1TeOmGtzNaqwB94VB1PH04Hcaps2Kc | ||||
| csjch0EqO4K8sWjlAdx+uNaC9oVj1vWsE8trjFoZTvdh6MphFj1ICGuJgaTh | ||||
| rxwkDygz6cXjX/gHnRYpHRyrWOXA8HFFUw5Mxi06cfV0Pv0pHscTTM7Y3kJP | ||||
| JWO4lWbx9GUcT6noVjisJYE/4Msx2nV5GH5LiAKQ1tbnrWCcBvjRriVktVad | ||||
| DR4bm+3H0rP3QV0SVAAqaL5WgIvVO8uqt6n6Z+qG+5GQGcQ3KnFFeSepQUOP | ||||
| Nh+Op38NRsu7JMSH7W1dTx2N/w8FtS6x+yB+EHxRvQvL4AXwlMlCXbmwS0rD | ||||
| JW+UkJTpUmi48GGYTMthEmSzJKIjWPHEai2qsw2SBckUyjBb4bHDyE8WJguU | ||||
| 9mT7IqKLDmZRSmdIqeplIPe/JzEshPADyGDfR88gFL1OwiwLIo6u5yC5U5Ct | ||||
| 6zgZiEvywBb2Rcmwqem7c6+C+sP8UUv3yBUd0a0Ato4VtaGNVL4y4iHY1LxZ | ||||
| qij6ilDrg9tMnYv1zSUbly+ymCrGaVOlLsEEtnbPtLqUw2ALD1rGm5tX64/1 | ||||
| l1hZ+YG+W0OrOMrlltaSId7A2LqX47vcMttMoL/IQCsT6Tu20YrDXWWkrZDp | ||||
| Tew0a9T/70d7mTFnTDmnzaU2um7Yanb9Ya6w63SRZUYdDNswnP/y8vQc+/N+ | ||||
| 9zc8pvEYCNf2RAvPxbfMf9ufoReuFah/bQEFNSxXEZjOadapb8HMfRrPooyM | ||||
| M8ts3JI5f6xWfjCmEFlT9reGYyaBAaThfi860pqbyTvZcl21Ef7tvar3myco | ||||
| eRfaZW71lvxiNwKoyVbYOlMf4AfbY3l0boOMREVXbdNbx9rT3xyT3zL1gBXL | ||||
| DL2fpFCBjPEyEa23UlPP4jjF1tLY021feWJjcy+qsvdYIK82sfvMrdDasoNW | ||||
| bh4WbyTkY9iqtLzO8L7lZFn/ptCybC2fmFOdK5gfi+6GCcg0DmE2u8gust29 | ||||
| 2rIrSnP1vzRpPjJ+SSf21ulEDv/JoH+1LupfG//9W+DfH483Qv9r4t9urX2n | ||||
| n8Zf3h25fhe+Jv4Ha3Qgh/8sDZKLAShozGu0Ti/uCv/bZmTN4x9tgrz497v0 | ||||
| Qit/fZ+ue2Gwdalt4foL8VJuwOqrgdOSK3KdS27Nbbr3dFIpEcj1hDqXndcC | ||||
| sPoWwTu66fY+5LPf4NLbt0E/noAEDNggeXH+rnEuzpu7exaXkO9Js5fOYGMb | ||||
| MklwGWL2OzaqcsscAHreON/do+24e8py5TbEGrdO6oqwWgSrOFlcrN8tfTds | ||||
| oi5Nd+9Mb6yTq/surn6HeaiiH+qi6GpKyLzIpdUvgnnG4VRL2ldEMGRoNG7T | ||||
| iS+dEb7kr0T5qM5scH+pIaLkgrVvMr2XtwzTtAa9KUxnRthK0hOWc5KdmVCq | ||||
| M5krixwl9lXwshqrl7w2OomiYC5OsFxOMVW1bHj4bnF4sgIHwwIbtEsaen1l | ||||
| TGFDAd6iCBPDNImvQsxRykhjTFjhU5yEfC9Gacds6BpjOV9wCQohokxDcRRg | ||||
| ChO8lJsvR1U+wQIFmkAwXJ9PAAo5A6g0ACuU5O6rhumHJFSZTeSiLy/6gN6F | ||||
| 2UJAZ+HB/uD0zR3eUkrhp6b4Oc5UAjzog55D+UbRvp8koYnSw3AvXAUAHVR/ | ||||
| MABrDihmHOBqMgxaQ5yNknh2ORIBQIF2I5qQ0Vk3AIygUIJ3f3jiZDwOKUkj | ||||
| ugjPgzHN+7OIo/pT8SIazFLs0hkmQqZXtZPzF2d1HCTuua4VzaJQngY4y6D3 | ||||
| fjJQx2qezEDtzUTt/OxJfRXz8dVt2AscoUGYTsf+Qp4guMJg6eD+W6qFpfs6 | ||||
| S6KSyWJ3rVnCqi+A08KJjzqKUqwAQwPfXszXmTHMxeEVUBabQfnSifd6FMJa | ||||
| bBqHUZbrzRr1NRaVUBabQJn484uJYsoLYEKQapSatfqir0KHWl8M5SvMxcit | ||||
| hcmYWLhkHq7kLzeRuS9azfY+KPV5MGgQ9QUvC1CP/UPYta1clLRgLci+j3sB | ||||
| Q7XDcvriqWgf7bZVdsuQY4Hhd8dq/y3mWf0pAaXoiSe8248fceN8vGhWdmSx | ||||
| WUd+vQ8dqZaTDXpCQAS/vZPhWY7a4paoVRMcsCiiVoVXhTjrdXGn2zyswAaq | ||||
| hpPZRDdhGtVgPOeqMJjh+jAbBmPAcIqJ4GG5ndAcFvCZ7AqtoJFpHzbb3Sps | ||||
| YC6/S2weUiQKlMQMqnSuTd2xYEWQ3/fZN+94Xmv6/CS1PFS+RT/yc8XQvx0Y | ||||
| BeVrrLj6PK48rHl1jzQr0faSIsVLKpQY9FcwS9HYO3160jjcbzd3MYX5idzn | ||||
| EidaLpF01e3Rsc4GGLyJfxncSavI8u9SEAWlLKo8XHgJxYwK0n6dsxTwBRi/ | ||||
| mP4KLGx4+ieGJaoCiY2OzOT+9tnp0d5+B5Hh0BaiYirVXX9EO+yYotHpBi0G | ||||
| 1DX0d+A0uwPpy8te5abDck/RbBYObsnrKDEdcnLkjOdazme2X2drugIFIWzc | ||||
| L2wH+wq7V3pZvszeLZFYxAfQKciqQ+MSoUVius4BIBBtWcuQEfuMv2/tjb97 | ||||
| 9+JH4ff7NKleqoPWFMMxwMz/eaHSXEzCu4x81b6KmS16a6/HCVOJeKwmrndR | ||||
| UYTv6RRVvre1hjfwy7cydNMX+X0k2htYwuv315s4i4qbY4bEBRF5tAYR3D0S | ||||
| tJ+SK3kkaTijez76fkr3j2KU1RDvf/DkPVN8crIH/6TioR3MMeWCDSrWwAK8 | ||||
| V/caZo6rMKAz0NNlwB5u5duyvqpLPgDXLAn77K3BydC5iwTLj+gW3HE4wfiZ | ||||
| WF5a4U/9XjgOM5yjoiAYsG+Jr6nQAcX6opUleODU5Y/TGEWbYMirZgMOsqEb | ||||
| VqilBRv1qb5cGAtehQPcjuJ2ExHiicmJir/BU5F0elxSyVlCpLMeZuej/PuX | ||||
| cRJmo0nYF8PAp1tLCEHZZfK8KXWUzqbTOJGX+qLZJptO1R0mWhVCJdkuXubw | ||||
| 8+vzp8fi3J6S4SHgzMp07cMgsHo0XoBKG+OFDxiD9yCeUn8eqPvCZKMeajua | ||||
| 5q/j2RjVbD8J/LSEdBhSHPbxqDzly5ToPI0k7sp+kBe00DhM/A8BDgpHMS34 | ||||
| ghMA4ScW7TS9DF3owh7TcxoAtrnIRenTuLtDwbBcDpN5oYiOE1irAO0zwChS | ||||
| Oj0flK5iCLXBQ1k0EXG+70xi5OFZ7wI2PDcg1c1FYylfyGV1W3GZDFOkdRM6 | ||||
| WBHCJJjE6MtVcrHgW4w53YVPfIvdBORLJQBIN4ovOWFArIw8XdNamCqBF6nk | ||||
| MXnmPdBU1LdpU8+oasjSHaYsZNzz8VgDY1oFczpwjBTqBwldrsPAXhI485YA | ||||
| P8GVIbvmJz3Cjs+rswNZSdw/0POrfvyKfZMD3ydqq1u2M4W91WvDpi+MoOcE | ||||
| nDhDsh7e2aTBmRvvKH2C4U7DmLRvre8jIr5Dp3ush9mMJarSU1vjAaZO2aL0 | ||||
| 23JO8a+OZR7gnUE6fJnbMOqTQfPVSEXILmuUzAEFJW+vB1LOfN3kzNrBHNf6 | ||||
| 5gqhXB99TQu+pcqA09JEaQw0y1EGPBJvTXA+l2eUIWtS0vh4PxgjEGCyvzPJ | ||||
| GUr0i2SzOqDP++X1gGwG04RLglDGcEUT/NHEfQwRE6PKtgwZl1WUF7sXJ/dZ | ||||
| ain5HxVPnD0/eflSwEtcbQaSDL4BoMPirab17GbpwOpVnZ4sZUjqJBiEOHU6 | ||||
| A2lDLIxgKucQioClWaBgEdCCOgD9NFBbTqM4DcwIyDmC7tiS9HC7CPrleXyN | ||||
| V3N5RmCIDVbQxR2FshJ6ZP4osum7QR8aS+7hQw6Jpx+cGsvOjLWF3GbLbPHK | ||||
| N327lbXYSoJCpZxdZar56OGlRRnd+kBiaN97R3qmT7H1M5gNOF6eIEFPCN9u | ||||
| p9Not7SQItqn1qVs8TCPMauiXDUKjWbS2rMVjZBJZ78LjZ4aWGUqLgeXmCXu | ||||
| BYtc+giLQJRzonhTQOEiwk4TyuGdhQNMgsfnMg4rik17swvaTS18bm9t4X5y | ||||
| QeE68727/OWyF8iwVNba3R7OxhStNmga5bGSJiQzajaVOriW9zOljk7FYXxZ | ||||
| l8KkP5HCXqPmk7rZjkdB4Sxq+qIvn7jcGlXkWOmeQnU7LI7dQBom5u6p8xyH | ||||
| OwyFObqZKuUkaW4GQBmCtYr+au1TZ0EDUIA666sI7RrNDdJM2rh9pnxF80q1 | ||||
| rdn6k6YlyJ3bCXJnM0HudtcU5M4fL8gyTAQv6KVOdwjheyrUnW9CnRdqQxI5 | ||||
| 730T9aKod7u3mrPdamuJ+t7eGqLuwv1yUS+V4d1/3fnbpc83US+Q5JuoLxX1 | ||||
| W8zqbrW1RH1/f01Rv8tZ/Rai/i8zw7u0+ib2eZJ4JarAK7EEvG/6YZl+uK0t | ||||
| sLkxcHCwlob4I6yB7r+yNfDNHCjqhRIl8M1G2EQH3MpI2NxKODxcVwd8dTNh | ||||
| uQ74FzITvtkJpfqgaChUKImNLYpvyqRambRat7In3GprqZKjozVUiQv3Dt2I | ||||
| rX9dC8KlyTeFkSfJN0F+KF7mOVJm8CpwX3HbEmNCprNkGqeBPI46mfpJmHJi | ||||
| I27F3jH13GgZLgAlKQKDuhayQODRxkBtJvuyG1ycOpPGQCjenpehOiN7Z1ex | ||||
| jtkdli9WNj7GDVBqgkgoq1ktmQsJrNucMdpV1Kw38iwE3mUzMDJggNuD8eCV | ||||
| Py9Ae+ByBp+3pVYoR9VdQTfUQp1LFxdd4OmRXqrBXiaBn5UxUXu/HArfX7Q2 | ||||
| mMMClHOAchqP0xU967RKa76Nr9epSbz8UsaTDYtqmfIW3txQdB3HV6L6dc8Q | ||||
| yHA0HUNUZKnm1oli21hpNkfYpXCnhXmwLHClKuTEvVXBlNIRifYdw1b66t0W | ||||
| jNhEdYbQjGaTHvJW7uIZhwpAPAw/3vok63wSZTwmavxjB/i0LssUmPkVcjOX | ||||
| UN15/Li1Uen2RqU7G5XeFZ+2Ph03PjWOnf+HnrdlADP/7XqtbtvrHLb0m0P1 | ||||
| 1G7rpz311CG4ot1sWzD2vdZhx9vb1zDa+7q8hrGrv3b3CEbHxqO95+3vH3id | ||||
| li61e6Se9rrq6UDBbbe7DMPGY7ft7e52va6BcaD60m7pp72OfOp0DgjGro3H | ||||
| /r532N33DjotuyVZ80jXVDB2d5keuxYe7d1db/9o1+t2W3ZLEkX1BPa7fNrf | ||||
| 3ycYXQuPzv6e1+20vEPdl+6eGoP9XQXj8IjxwH4fMgwLj71dqA9ju69hHLVb | ||||
| snznoCufDg75qePtH/C47Gk82l5rH+of7upxaXuHkjIw3l2m6S6MPGO05+3u | ||||
| tRiGxqPjtTu73i7QVY0LUEeO7Z7XOuJeHXhtpCQOFNDuiGDsazy63sHBgbd3 | ||||
| YMYWOIXHFsq3Dwlau+sB1fCpA/Q44rHd13gcel0cE6CrpAeU39sjfgI67zK0 | ||||
| zqG31yFo3Y53cMRje6DwaO97R4fwP+AzSY/OkddmKem2vAOGtnfgtfYI2uGe | ||||
| t3fIY3ug8ADeODrY9Q73O6ove4ee5KfDtrdH0IDnAC72pX3Q9toHHYSBaosu | ||||
| KrEUmpsHciyVGut2DO531N9FMMdpYISTDEyXwXgho9IXUwxYJX0eXs4SGXwa | ||||
| 44V2qUx1QFqb1X4iD79yHCe+N1HFFDTMmMmIronRuBhJh+cEoFsW4E8SrDEL | ||||
| kE62Rra+aLWNqu2Y/sf/D4oOqdxpTYnMbdRnc/zNRJcC0Dnw9ruHXosIj6oD | ||||
| Kz17/iOPb/uog5VAVbTsSjBSnZaqhLoCK72DSt2/4ovDLlbqtFn5SRXYPYKW | ||||
| 9ruyUle2VFGpLSXq6Ajkp6Na2rNaOsRKB/vUp+5ux7TU9o6OQGD29lUlq6WS | ||||
| StwScCBw2m67Iyvtc0sl/AUcozjs6dzcLCn5hRkgxzWV/OCka+e7c86C/izh | ||||
| o8tsNjOMra2X4YeAgtvZePVngzBGK0i1CKswT5y8+QWZGU8GYHB/L7DCv8Mo | ||||
| RdjAb+F0hOtLzOBNj3itsgq8x9jCq9kYRQeXd2BgfIjia8rDNB3jqjaYQ6Es | ||||
| 8/sf0qYQZ2S4s1U9CnwMHCaDFmyY6wDWfBxpCnb6gFeIAD3w03CMjoEAzCMi | ||||
| LIiDONGBx8rKSeLeLIW2LjFrGCdCieKogWsSTEmSURoYfxz2w3iWqoNOgNOr | ||||
| wjsGiVG5fTwzJ6zzFNjB+CpIKD834j2mG0sDHd4fUxE8h4CJXYM5HQO4gh8T | ||||
| SoErFcIs6QepiefG1DMGbFSE2qchGgc+rYn8BGiW+CoxTDCHcSI9gOvCSFI7 | ||||
| SPh8AUX+y0u01CI4iOThkOCKlk2U2AWWxEDbCR0oDexjH5JXYQygTQRrkcwN | ||||
| RC+hm4REx0XCtBfI3DKqgD6Ygl2+trGnjtIz3y0mfQaXQJZrf4G8dAJaD8xa | ||||
| PhsgpUB2gtL2TPBEL8qSxfJkaA/9cIyMjYvrUQANoJ5VSXdxGIZoTGMLkTry | ||||
| QEe3eFQQiwekb3nBJB6x9pULnwfY9jSc49KXhhwZcKZOI6BkxbNMSyvH1ctD | ||||
| GhM8fQMD1VfJ7vDmSjrAQFRTmAUD119Nobt0PCmAxS2dLuShd49C8OgEUUpd | ||||
| xzYpkhtYChBCZCy2o9UwHgqBgf5oMXcfyIyhzTnpwyHHpD5AUJWgW4aE80nn | ||||
| awwH56xDYSqPEfXjy4hgy8WOi2xTPJODxMHv6jSNPGmkIcPw9DPgzMIhU7l2 | ||||
| 4ptkZ07c9KuTXzFhs3V2AUZsFrHeSqH9GXbxZ8ocpW4K4EPpKpMSJtcCzSnT | ||||
| PEcD7apgUZQ66qF4cfLzSV4xuwe88Aw4DIMvY+mREbES1danyvk+tLf+tRWy | ||||
| LVM2PHTOAyb+tS7x+b6dVQXkLjR2FxxrfoGx5rX1cwH7swu67PA2PVFJc4Sw | ||||
| 25YQ18zLeueHTe0RU2bCEkIVz2ZL/Le2fjAnFoj/5Z2QTkx/xEnNmqIlOJf+ | ||||
| KISGpLxj/kX+w4/qIAX7CInb3YNV7EF5DZyHH2P4r+B5DeH+HvQzTvt20odJ | ||||
| foL5vobZNc4mz0ApyiygtZOzvz+ri5sb/C+Y1b/j6U0Q5iEWQb2gKkM/XsVU | ||||
| 5U3I0nySZGwnneHtltBo7eTVm5MzAoYP8pI+pMTLMJrN7WZR5vrkjsKOO6in | ||||
| CssBGlzxlGRU9kf5atCUyPIHuG5uJCXwWlTst6pEx5hktraU7kzAaRMGIRNX | ||||
| 8D1O5GUKMBUMleJXGepyJ9lA3EdZNk2Pd3YuQdvPek2YWnYkjRR9TT93sGP+ | ||||
| 9GoH+CjYwax2O9jsjmYt6QQ7iQZJHA6WDGF1ASD767M3dSKpRhfIejK4wk2g | ||||
| AR2AQdVN5xZ/oXm4BlSqryAmQm3vMzllTuFnk2lwWY2k/K7wouMrNIRkRrK+ | ||||
| Vur+5oZLwzt4JVlFllH2ilUGXlEuvkqEAUVQcKIHtsrW/w8yor2l05oBAA== | ||||
| </rfc> | </rfc> | |||
| End of changes. 427 change blocks. | ||||
| 3604 lines changed or deleted | 3756 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||