| rfc9924.original.xml | rfc9924.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
| <!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
| <!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
| <!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
| <!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
| ]> | ]> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
| <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2. | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
| 3) --> | -lim-apv-09" number="9924" category="info" submissionType="independent" tocInclu | |||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | de="true" sortRefs="true" symRefs="true" updates="" obsoletes="" xml:lang="en" v | |||
| -lim-apv-09" category="info" submissionType="IETF" tocInclude="true" sortRefs="t | ersion="3"> | |||
| 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"/> | |||
| <author initials="Y." surname="Lim" fullname="Youngkwon Lim"> | <author initials="Y." surname="Lim" fullname="Youngkwon Lim"> | |||
| <organization>Samsung Electronics</organization> | <organization>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>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> | |||
| skipping to change at line 44 ¶ | skipping to change at line 44 ¶ | |||
| <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>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>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>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 year="2026" month="February"/> | |||
| <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> | ||||
| <t>This document describes the bitstream format of Advanced Professional Video ( APV) and its decoding process. APV is a professional video codec providing visua lly lossless compression mainly for recording and post production.</t> | <t>This document describes the bitstream format of Advanced Professional Video ( APV) and its decoding process. APV is a professional video codec providing visua lly lossless compression mainly for recording and post production.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <?line 129?> | <?line 129?> | |||
| <section anchor="introduction"> | <section anchor="introduction"> | |||
| <name>Introduction</name> | <name>Introduction</name> | |||
| <t>This document defines the bitstream format and decoding process for Ad vanced Professional Video (APV) Codec. APV codec is a professional video codec t hat was developed in response to the need for professional level high quality vi deo recording and post production. The primary purpose of the APV codec is for u se in professional video recording and editing workflows for various types of co ntent. This specification is neither the product of the IETF nor a consensus vi ew of the community.</t> | <t>This document defines the bitstream format and decoding process for th e Advanced Professional Video (APV) codec. The APV codec is a professional video codec that was developed in response to the need for professional-level, high-q uality video recording and post production. The primary purpose of the APV codec is for use in professional video recording and editing workflows for various ty pes of content. This specification is neither the product of the IETF nor a con sensus view of the community.</t> | |||
| <t>The APV codec supports the following features:</t> | <t>The APV codec supports the following features:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>Perceptually lossless video quality that is close to the original, uncompressed quality;</t> | <t>Perceptually lossless video quality that is close to the original, uncompressed quality;</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>Low complexity and high throughput intra frame only coding without inter frame coding;</t> | <t>Low complexity and high throughput intra frame only coding without inter frame coding;</t> | |||
| </li> | </li> | |||
| <!-- [rfced] Does "but between transformed values" mean "but with prediction bet | ||||
| ween transformed values"? Please clarify. | ||||
| Original: | ||||
| * Intra frame coding without prediction between pixel values but | ||||
| between transformed values for low delay encoding; | ||||
| --> | ||||
| <li> | <li> | |||
| <t>Intra frame coding without prediction between pixel values but betw een transformed values for low delay encoding;</t> | <t>Intra frame coding without prediction between pixel values but betw een transformed values for low delay encoding;</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>High bit-rates of up to a few Gbps for 2K, 4K and 8K resolution con tent, enabled by a lightweight entropy coding scheme;</t> | <t>High bit rates of up to a few Gbps for 2K, 4K, and 8K resolution co ntent, enabled by a lightweight entropy coding scheme;</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>Frame tiling for immersive content and for enabling parallel encodi ng and decoding;</t> | <t>Frame tiling for immersive content and for enabling parallel encodi ng and decoding;</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>Various chroma sampling formats from 4:0:0 to 4:4:4:4, and bit dept hs from 10 to 16 (Note: Only the profiles supporting 10 bit and 12 bit are curre ntly defined);</t> | <t>Various chroma sampling formats from 4:0:0 to 4:4:4:4, and bit dept hs from 10 to 16 (Note: Only the profiles supporting 10 bits and 12 bits are cur rently defined);</t> | |||
| </li> | </li> | |||
| <!-- [rfced] For clarity, may this text be updated as follows? | ||||
| Original: | ||||
| * Multiple decoding and re-encoding without severe visual quality | ||||
| degradation; and | ||||
| Perhaps: | ||||
| * the ability to decode and re-encode multiple times without severe visual q | ||||
| uality | ||||
| degradation; and | ||||
| --> | ||||
| <li> | <li> | |||
| <t>Multiple decoding and re-encoding without severe visual quality deg radation; and</t> | <t>Multiple decoding and re-encoding without severe visual quality deg radation; and</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>Various metadata including HDR10/10+ and user-defined format.</t> | <t>Various metadata including HDR10/10+ and user-defined formats.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="terms"> | <section anchor="terms"> | |||
| <name>Terms</name> | <name>Terms</name> | |||
| <section anchor="terms-and-definitions"> | <section anchor="terms-and-definitions"> | |||
| <name>Terms and definitions</name> | <name>Terms and Definitions</name> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="false"> | |||
| <li> | <dt>access unit (AU):</dt><dd>a collection of primitive bitstream | |||
| <t>access unit (AU): a collection of primitive bitstream units (PBU) | units (PBU) including various types of frames, metadata, filler, and | |||
| including various types of frames, metadata, filler, and access unit informatio | access unit information, associated with a specific time</dd> | |||
| n, associated with a specific time</t> | <dt>band:</dt><dd>a defined set of constraints on the value of the | |||
| </li> | maximum coded data rate of each level</dd> | |||
| <li> | <dt>block:</dt><dd>MxN (M-column by N-row) array of samples, or an MxN | |||
| <t>band: a defined set of constraints on the value of the maximum co | array of transform coefficients</dd> | |||
| ded data rate of each level</t> | <dt>byte-aligned:</dt><dd>a position in a bitstream that is an | |||
| </li> | integer multiple of 8 bits from the position of the first bit in the | |||
| <li> | bitstream</dd> | |||
| <t>block: MxN (M-column by N-row) array of samples, or an MxN array | <dt>chroma:</dt><dd>a sample array or single sample representing one | |||
| of transform coefficients</t> | of the two color difference signals related to the primary colors, | |||
| </li> | represented by the symbols Cb and Cr in 4:2:2 or 4:4:4 color | |||
| <li> | format</dd> | |||
| <t>byte-aligned: a position in a bitstream that is an integer multip | <dt>coded frame:</dt><dd>a coded representation of a frame | |||
| le of 8 bits from the position of the first bit in the bitstream</t> | containing all macroblocks of the frame</dd> | |||
| </li> | <dt>coded representation:</dt><dd>a data element as represented in its | |||
| <li> | coded form</dd> | |||
| <t>chroma: a sample array or single sample representing one of the t | <dt>component:</dt><dd>an array or a single sample from one of the | |||
| wo color difference signals related to the primary colors, represented by the sy | three arrays (luma and two chroma) that compose a frame in 4:2:2, or | |||
| mbols Cb and Cr in 4:2:2 or 4:4:4 color format</t> | 4:4:4 color format, or an array or a single sample from an array | |||
| </li> | that compose a frame in 4:0:0 color format, or an array or a single | |||
| <li> | sample from one of the four arrays that compose a frame in 4:4:4:4 | |||
| <t>coded frame: a coded representation of a frame containing all mac | color format.</dd> | |||
| roblocks of the frame</t> | <dt>decoded frame:</dt><dd>a frame derived by decoding a coded frame</ | |||
| </li> | dd> | |||
| <li> | <dt>decoder:</dt><dd>an embodiment of a decoding process</dd> | |||
| <t>coded representation: a data element as represented in its coded | <dt>decoding process:</dt><dd>a process specified that reads a | |||
| form</t> | bitstream and derives decoded frames from it</dd> | |||
| </li> | <dt>encoder:</dt><dd>an embodiment of an encoding process</dd> | |||
| <li> | <dt>encoding process:</dt><dd>a process that produces a bitstream conf | |||
| <t>component: an array or a single sample from one of the three arra | orming to this document</dd> | |||
| ys (luma and two chroma) that compose a frame in 4:2:2, or 4:4:4 color format, o | <dt>flag:</dt><dd>a variable or single-bit syntax element that can tak | |||
| r an array or a single sample from an array that compose a frame in 4:0:0 color | e one of the two possible values: 0 and 1</dd> | |||
| format, or an array or a single sample from one of the four arrays that compose | <dt>frame:</dt><dd>an array of luma samples and two corresponding arra | |||
| a frame in 4:4:4:4 color format.</t> | ys of chroma samples in 4:2:2 and 4:4:4 color format, or an array of samples in | |||
| </li> | 4:0:0 color format, or four arrays of samples in 4:4:4:4 color format</dd> | |||
| <li> | <dt>level:</dt><dd>a defined set of constraints on the values that are | |||
| <t>decoded frame: a frame derived by decoding a coded frame</t> | taken by the syntax elements and variables of this document, or the value of a | |||
| </li> | transform coefficient prior to scaling</dd> | |||
| <li> | <dt>luma:</dt><dd>a sample array or single sample representing the mon | |||
| <t>decoder: an embodiment of a decoding process</t> | ochrome signal related to the primary colors, represented by the symbol or subsc | |||
| </li> | ript Y or L</dd> | |||
| <li> | <dt>macroblock (MB):</dt><dd>a square block of luma samples and two co | |||
| <t>decoding process: a process specified that reads a bitstream and | rresponding blocks of chroma samples of a frame in 4:2:2 or 4:4:4 color format, | |||
| derives decoded frames from it</t> | or a square block of samples of a frame in 4:0:0 color format, or four square bl | |||
| </li> | ocks of samples of a frame in 4:4:4:4 color format</dd> | |||
| <li> | <dt>metadata:</dt><dd>data describing various characteristics related | |||
| <t>encoder: an embodiment of an encoding process</t> | to a bitstream without directly affecting the decoding process of it.</dd> | |||
| </li> | <dt>partitioning:</dt><dd>a division of a set into subsets such that e | |||
| <li> | ach element of the set is in exactly one of the subsets</dd> | |||
| <t>encoding process: a process that produces a bitstream conforming | <dt>prediction:</dt><dd>an embodiment of the prediction process</dd> | |||
| to this document</t> | <dt>prediction process:</dt><dd>use of a predictor to provide an estim | |||
| </li> | ate of the data element currently being decoded</dd> | |||
| <li> | <dt>predictor:</dt><dd>a combination of specified values or previously | |||
| <t>flag: a variable or single-bit syntax element that can take one o | decoded data elements used in the decoding process of subsequent data elements< | |||
| f the two possible values: 0 and 1</t> | /dd> | |||
| </li> | <dt>primitive bitstream unit (PBU):</dt><dd>a data structure to constr | |||
| <li> | uct an access unit with frame and metadata</dd> | |||
| <t>frame: an array of luma samples and two corresponding arrays of c | <dt>profile:</dt><dd>a specified subset of the syntax of this document | |||
| hroma samples in 4:2:2, and 4:4:4 color format, or an array of samples in 4:0:0 | </dd> | |||
| color format, or four arrays of samples in 4:4:4:4 color format</t> | <dt>quantization parameter (QP):</dt><dd>a variable used by the decodi | |||
| </li> | ng process for the scaling value of transform coefficients</dd> | |||
| <li> | <dt>raster scan:</dt><dd>a mapping of a rectangular two-dimensional pa | |||
| <t>level: a defined set of constraints on the values that are taken | ttern to a one-dimensional pattern such that the first entries in the one-dimens | |||
| by the syntax elements and variables of this document, or the value of a transfo | ional pattern are from the top row of the two-dimensional pattern scanned from l | |||
| rm coefficient prior to scaling</t> | eft to right, followed by the second, third, etc., rows of the pattern each scan | |||
| </li> | ned from left to right</dd> | |||
| <li> | <dt>raw bitstream:</dt><dd>an encapsulation of a sequence of access un | |||
| <t>luma: a sample array or single sample representing the monochrome | its where a field indicating the size of an access unit precedes each access uni | |||
| signal related to the primary colors, represented by the symbol or subscript Y | t as defined in <xref target="appendix-rawbitstream"/></dd> | |||
| or L</t> | <dt>source:</dt><dd>a term used to describe the video material or some | |||
| </li> | of its attributes before the encoding process</dd> | |||
| <li> | <dt>syntax element:</dt><dd>an element of data represented in the bits | |||
| <t>macroblock (MB): a square block of luma samples and two correspon | tream</dd> | |||
| ding blocks of chroma samples of a frame in 4:2:2 or 4:4:4 color format, or a sq | <dt>syntax structure:</dt><dd>zero or more syntax elements present tog | |||
| uare block of samples of a frame in 4:0:0 color format, or four square blocks of | ether in a bitstream in a specified order</dd> | |||
| samples of a frame in 4:4:4:4 color format</t> | <dt>tile:</dt><dd>a rectangular region of MBs within a particular tile | |||
| </li> | column and a particular tile row in a frame</dd> | |||
| <li> | <dt>tile column:</dt><dd>a rectangular region of MBs having a height e | |||
| <t>metadata: data describing various characteristics related to a bi | qual to the height of the frame and width specified by syntax elements in the fr | |||
| tstream wihtout directly affecting decoding process of it.</t> | ame header</dd> | |||
| </li> | <dt>tile row:</dt><dd>a rectangular region of MBs having a height spec | |||
| <li> | ified by syntax elements in the frame header and a width equal to the width of t | |||
| <t>partitioning: a division of a set into subsets such that each ele | he frame</dd> | |||
| ment of the set is in exactly one of the subsets</t> | <dt>tile scan:</dt><dd>a specific sequential ordering of MBs partition | |||
| </li> | ing a frame in which the MBs are ordered consecutively in MB raster scan in a ti | |||
| <li> | le and the tiles in a frame are ordered consecutively in a raster scan of the ti | |||
| <t>prediction: an embodiment of the prediction process</t> | les of the frame</dd> | |||
| </li> | <dt>transform coefficient:</dt><dd>a scalar quantity, considered to be | |||
| <li> | in a frequency domain, that is associated with a particular one-dimensional or | |||
| <t>prediction process: use of a predictor to provide an estimate of | two-dimensional index</dd> | |||
| the data element currently being decoded</t> | </dl> | |||
| </li> | ||||
| <li> | ||||
| <t>predictor: a combination of specified values or previously decode | ||||
| d data elements used in the decoding process of subsequent data elements</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>primitive bitstream unit (PBU): a data structure to construct an | ||||
| access unit with frame and metadata</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>profile: a specified subset of the syntax of this document</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>quantization parameter (QP): a variable used by the decoding proc | ||||
| ess for scaling value of transform coefficients</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>raster scan: a mapping of a rectangular two-dimensional pattern t | ||||
| o a one-dimensional pattern such that the first entries in the one-dimensional p | ||||
| attern 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 scanned fro | ||||
| m left to right</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>raw bitstream: an encapsulation of a sequence of access units whe | ||||
| re a field indicating the size of an access unit precedes each access unit as de | ||||
| fined in <xref target="appendix-rawbitstream"/></t> | ||||
| </li> | ||||
| <li> | ||||
| <t>source: a term used to describe the video material or some of its | ||||
| attributes before encoding process</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>syntax element: an element of data represented in the bitstream</ | ||||
| t> | ||||
| </li> | ||||
| <li> | ||||
| <t>syntax structure: zero or more syntax elements present together i | ||||
| n a bitstream in a specified order</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>tile: a rectangular region of MBs within a particular tile column | ||||
| and a particular tile row in a frame</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>tile column: a rectangular region of MBs having a height equal to | ||||
| the height of the frame and width specified by syntax elements in the frame hea | ||||
| der</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>tile row: a rectangular region of MBs having a height specified b | ||||
| y syntax elements in the frame header and a width equal to the width of the fram | ||||
| e</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>tile scan: a specific sequential ordering of MBs partitioning a f | ||||
| rame 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</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>transform coefficient: a scalar quantity, considered to be in a f | ||||
| requency domain, that is associated with a particular one-dimensional or two-dim | ||||
| ensional index</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="abbreviated-terms"> | <section anchor="abbreviated-terms"> | |||
| <name>Abbreviated terms</name> | <name>Abbreviated Terms</name> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="false"> | |||
| <li> | <!-- [rfced] We do not believe we see "I" used in this manner, though we do see | |||
| <t>I: intra</t> | instances of "i". Please review and let us know if "I" should be removed or if | |||
| </li> | other changes are needed. | |||
| <li> | ||||
| <t>LSB: least significant bit</t> | Original Section 2.2: | |||
| </li> | * I: intra | |||
| <li> | ||||
| <t>MSB: most significant bit</t> | Original Section 3.2.1: | |||
| </li> | * sum (i=x, y, f(i)) : a summation of f(i) with i taking all integer | |||
| <li> | values from x up to and including y | |||
| <t>RGB: Red, Green and Blue</t> | ||||
| </li> | Original Section 5.3.7: | |||
| </ul> | The array index i specifies an indicator for the color | |||
| component; ... | ||||
| --> | ||||
| <dt>I:</dt><dd>intra</dd> | ||||
| <dt>LSB:</dt><dd>least significant bit</dd> | ||||
| <dt>MSB:</dt><dd>most significant bit</dd> | ||||
| <dt>RGB:</dt><dd>Red, Green and Blue</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="conventions"> | <section anchor="conventions"> | |||
| <name>Conventions used in this document</name> | <name>Conventions Used in This Document</name> | |||
| <section anchor="general"> | <section anchor="general"> | |||
| <name>General</name> | <name>General</name> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", " | <t> | |||
| SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTION | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| AL" in this document are to be interpreted as described in BCP 14 <xref target=" | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
| RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capi | ", | |||
| tals, as shown here.</t> | "<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"/> <xref | ||||
| target="RFC8174"/> when, and only when, they appear in all capitals, as | ||||
| shown here. | ||||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="operators"> | <section anchor="operators"> | |||
| <name>Operators</name> | <name>Operators</name> | |||
| <!-- [rfced] For clarity, may we update the text as follows? If this is incorre | ||||
| ct, please clarify what is following widely used industry practices. Or is the | ||||
| exception per widely used industry practices? | ||||
| Original: | ||||
| The operators and the order of precedence are the same as used in the | ||||
| C programming language [ISO9899], with the exception of the operators | ||||
| described in the Section 3.2.1 and Section 3.2.2 following widely | ||||
| used industry practices for video codecs. | ||||
| Perhaps: | ||||
| Following widely used industry practices for video codecs, the operators and | ||||
| the order of precedence are the same as used in the C programming language | ||||
| [ISO9899], with the exception of the operators described in the Sections 3.2. | ||||
| 1 and | ||||
| 3.2.2. | ||||
| --> | ||||
| <t>The operators and the order of precedence are the same as used in the C programming language <xref target="ISO9899"/>, with the exception of the oper ators described in the <xref target="arith-operator"/> and <xref target="bit-ope rator"/> following widely used industry practices for video codecs.</t> | <t>The operators and the order of precedence are the same as used in the C programming language <xref target="ISO9899"/>, with the exception of the oper ators described in the <xref target="arith-operator"/> and <xref target="bit-ope rator"/> following widely used industry practices for video codecs.</t> | |||
| <section anchor="arith-operator"> | <section anchor="arith-operator"> | |||
| <name>Arithmetic operators</name> | <name>Arithmetic Operators</name> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true"> | |||
| <li> | <dt>//</dt> | |||
| <t>// : an integer division with rounding of the result toward zer | <dd>an integer division with rounding of the result toward | |||
| o. For example, 7//4 and -7//-4 are rounded to 1 and -7//4 and 7//-4 are rounded | zero. For example, 7//4 and -7//-4 are rounded to 1 and -7//4 and | |||
| to -1</t> | 7//-4 are rounded to -1</dd> | |||
| </li> | <dt>/ or div(x,y)</dt> | |||
| <li> | <dd>a division in mathematical equations where no truncation or round | |||
| <t>/ or div(x,y) : a division in mathematical equations where no t | ing is intended</dd> | |||
| runcation or rounding is intended</t> | <dt>min(x,y)</dt> | |||
| </li> | <dd>the minimum value of the values x and y</dd> | |||
| <li> | <dt>max(x,y)</dt> | |||
| <t>min(x,y) : the minimum value of the values x and y</t> | <dd>the maximum value of the values x and y</dd> | |||
| </li> | <dt>ceil(x)</dt> | |||
| <li> | <dd>the smallest integer value that is larger than or equal to x</dd> | |||
| <t>max(x,y) : the maximum value of the values x and y</t> | <dt>clip(x,y,z)</dt> | |||
| </li> | <dd>clip(x,y,z)=max(x,min(z,y))</dd> | |||
| <li> | <dt>sum (i=x, y, f(i))</dt> | |||
| <t>ceil(x) : the smallest integer value that is larger than or equ | <dd>a summation of f(i) with i taking all integer values from x up to | |||
| al to x</t> | and including y</dd> | |||
| </li> | <dt>log2(x)</dt> | |||
| <li> | <dd>the base-2 logarithm of x</dd> | |||
| <t>clip(x,y,z) : clip(x,y,z)=max(x,min(z,y))</t> | </dl> | |||
| </li> | ||||
| <li> | ||||
| <t>sum (i=x, y, f(i)) : a summation of f(i) with i taking all inte | ||||
| ger values from x up to and including y</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>log2(x) : the base-2 logarithm of x</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="bit-operator"> | <section anchor="bit-operator"> | |||
| <name>Bitwise operators</name> | <name>Bitwise Operators</name> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true"> | |||
| <li> | <dt>& (bit-wise "and")</dt><dd>When operating on integer argumen | |||
| <t>& (bit-wise "and") : When operating on integer arguments, o | ts, operates on a two's complement representation of the integer value. When ope | |||
| perates on a two's complement representation of the integer value. When operatin | rating on arguments with unequal bit depths, the bit depths are equalized by add | |||
| g on arguments with unequal bit depths, the bit depths are equalized by adding z | ing zeros in significant positions to the argument with lower bit depth.</dd> | |||
| eros in significant positions to the argument with lower bit depth.</t> | <dt>| (bit-wise "or")</dt><dd>When operating on integer arguments, o | |||
| </li> | perates on a two's complement representation of the integer value. When operatin | |||
| <li> | g on arguments with unequal bit depths, the bit depths are equalized by adding z | |||
| <t>| (bit-wise "or") : When operating on integer arguments, operat | eros in significant positions to the argument with lower bit depth.</dd> | |||
| es on a two's complement representation of the integer value. When operating on | <dt>x >> y</dt><dd>arithmetic right shift of a two's complemen | |||
| arguments with unequal bit depths, the bit depths are equalized by adding zeros | t integer representation of x by y binary digits. This function is defined only | |||
| in significant positions to the argument with lower bit depth.</t> | for non-negative integer values of y. Bits shifted into the most significant bit | |||
| </li> | s (MSBs) as a result of the right shift have a value equal to the MSB of x prior | |||
| <li> | to the shift operation.</dd> | |||
| <t>x >> y : arithmetic right shift of a two's complement int | <dt>x << y</dt><dd>arithmetic left shift of a two's complement | |||
| eger representation of x by y binary digits. This function is defined only for n | integer representation of x by y binary digits. This function is defined only f | |||
| on-negative integer values of y. Bits shifted into the most significant bits (MS | or non-negative integer values of y. Bits shifted into the least significant bit | |||
| Bs) as a result of the right shift have a value equal to the MSB of x prior to t | s (LSBs) as a result of the left shift have a value equal to 0.</dd> | |||
| he shift operation.</t> | </dl> | |||
| </li> | ||||
| <li> | ||||
| <t>x << y : arithmetic left shift of a two's complement inte | ||||
| ger representation of x by y binary digits. This function is defined only for no | ||||
| n-negative integer values of y. Bits shifted into the least significant bits (LS | ||||
| 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"> | |||
| <name>Range notation</name> | <name>Range Notation</name> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="true"> | |||
| <li> | <dt>x = y..z</dt> | |||
| <t>x = y..z</t> | <dd>x takes on integer values starting from y to z, inclusive, with x, | |||
| </li> | y, and z being integer numbers and z being greater than y.</dd> | |||
| </ul> | </dl> | |||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>x takes on integer values starting from y to z, inclusive, with x | ||||
| , y, and z being integer numbers and z being greater than y.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <section anchor="order-of-operations-precedence"> | <section anchor="order-of-operations-precedence"> | |||
| <name>Order of operations precedence</name> | <name>Order of Operations Precedence</name> | |||
| <t>When order of precedence is not indicated explicitly by use of pare ntheses, operations are evaluated in the following order.</t> | <t>When order of precedence is not indicated explicitly by use of pare ntheses, operations are evaluated in the following order.</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>Operations of a higher precedence are evaluated before any oper ation of a lower precedence. <xref target="_table-operation_order"/> specifies t he precedence of operations from highest to lowest; operations closer to the top of the table indicates a higher precedence.</t> | <t>Operations of a higher precedence are evaluated before any oper ation of a lower precedence. <xref target="_table-operation_order"/> specifies t he precedence of operations from highest to lowest; operations closer to the top of the table indicate a higher precedence.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>Operations of the same precedence are evaluated sequentially fr om left to right.</t> | <t>Operations of the same precedence are evaluated sequentially fr om left to right.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <table anchor="_table-operation_order"> | <table anchor="_table-operation_order"> | |||
| <name>Operation precedence from highest (top of the table) to lowest (bottom of the table)</name> | <name>Operation precedence 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">operations (with operands x, y, and z)</th> | |||
| skipping to change at line 390 ¶ | skipping to change at line 361 ¶ | |||
| <td align="left">"x..y"</td> | <td align="left">"x..y"</td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="left">"x = y", "x += y", "x -= y"</td> | <td align="left">"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"> | |||
| <name>Variables, syntax elements and tables</name> | <name>Variables, Syntax Elements, and Tables</name> | |||
| <t>Each syntax element is described by its name in all lowercase letters and its type is provided next to the syntax code in each row. Each syntax eleme nt and multi-byte integers are written in big endian format. The decoding proces s behaves according to the value of the syntax element and to the values of prev iously decoded syntax elements.</t> | <t>Each syntax element is described by its name in all lowercase letters and its type is provided next to the syntax code in each row. Each syntax eleme nt and multi-byte integers are written in big endian format. The decoding proces s behaves according to the value of the syntax element and to the values of prev iously decoded syntax elements.</t> | |||
| <t>In some cases, the syntax tables may use the values of other variable s derived from syntax elements values. Such variables appear in the syntax table s, or text, named by a mixture of lower case and uppercase letters and without a ny underscore characters. Variables with names starting with an uppercase letter are derived for the decoding of the current syntax structure and all dependent syntax structures. Variables with names starting with an uppercase letter may be used in the decoding process for later syntax structures without mentioning the originating syntax structure of the variable. Variables with names starting wit h a lowercase letter are only used within the section in which they are derived. </t> | <t>In some cases, the syntax tables may use the values of other variable s derived from syntax elements values. Such variables appear in the syntax table s or text, named by a mixture of lower case and uppercase letters and without an y underscore characters. Variables with names starting with an uppercase letter are derived for the decoding of the current syntax structure and all dependent s yntax structures. Variables with names starting with an uppercase letter may be used in the decoding process for later syntax structures without mentioning the originating syntax structure of the variable. Variables with names starting with a lowercase letter are only used within the section in which they are derived.< /t> | |||
| <t>Functions that specify properties of the current position in the bits tream are referred to as syntax functions. These functions are specified in <xre f target="syntax-func"/> and assume the existence of a bitstream pointer with an indication of the position of the next bit to be read by the decoding process f rom the bitstream.</t> | <t>Functions that specify properties of the current position in the bits tream are referred to as syntax functions. These functions are specified in <xre f target="syntax-func"/> and assume the existence of a bitstream pointer with an indication of the position of the next bit to be read by the decoding process f rom the bitstream.</t> | |||
| <!-- [rfced] Should "square parentheses" be "square brackets"? | ||||
| Original: | ||||
| Square parentheses are used for the indexing | ||||
| of arrays. | ||||
| --> | ||||
| <t>A one-dimensional array is referred to as a list. A two-dimensional a rray is referred to as a matrix. Arrays can either be syntax elements or variabl es. Square parentheses are used for the indexing of arrays. In reference to a vi sual depiction of a matrix, the first square bracket is used as a column (horizo ntal) index and the second square bracket is used as a row (vertical) index.</t> | <t>A one-dimensional array is referred to as a list. A two-dimensional a rray is referred to as a matrix. Arrays can either be syntax elements or variabl es. Square parentheses are used for the indexing of arrays. In reference to a vi sual depiction of a matrix, the first square bracket is used as a column (horizo ntal) index and the second square bracket is used as a row (vertical) index.</t> | |||
| <t>A specification of values of the entries in rows and columns of an ar ray may be denoted by {{...}{...}}, where each inner pair of brackets specifies the values of the elements within a row in increasing column order and the rows are ordered in increasing row order. Thus, setting a matrix s equal to {{1 6}{4 9}} specifies that s[0][0] is set equal to 1, s[1][0] is set equal to 6, s[0][1] is set equal to 4, and s[1][1] is set equal to 9.</t> | <t>A specification of values of the entries in rows and columns of an ar ray may be denoted by {{...}{...}}, where each inner pair of brackets specifies the values of the elements within a row in increasing column order and the rows are ordered in increasing row order. Thus, setting a matrix s equal to {{1 6}{4 9}} specifies that s[0][0] is set equal to 1, s[1][0] is set equal to 6, s[0][1] is set equal to 4, and s[1][1] is set equal to 9.</t> | |||
| <t>Binary notation is indicated by enclosing the string of bit values by single quote marks. For example, '0b01000001' represents an eight-bit string ha ving only its second and its last bits (counted from the most to the least signi ficant bit) equal to 1.</t> | <t>Binary notation is indicated by enclosing the string of bit values in single quote marks. For example, '0b01000001' represents an eight-bit string ha ving only its second and its last bits (counted from the most to the least signi ficant bit) equal to 1.</t> | |||
| <t>Hexadecimal notation, indicated by prefixing the hexadecimal number b y "0x", may be used instead of binary notation when the number of bits is an int eger multiple of 4. For example, 0x41 represents an eight-bit string having only its second and its last bits (counted from the most to the least significant bi t) equal to 1.</t> | <t>Hexadecimal notation, indicated by prefixing the hexadecimal number b y "0x", may be used instead of binary notation when the number of bits is an int eger multiple of 4. For example, 0x41 represents an eight-bit string having only its second and its last bits (counted from the most to the least significant bi t) equal to 1.</t> | |||
| <t>A value equal to 0 represents a FALSE condition in a test statement. The value TRUE is represented by any value different from zero.</t> | <t>A value equal to 0 represents a FALSE condition in a test statement. The value TRUE is represented by any value different from zero.</t> | |||
| </section> | </section> | |||
| <section anchor="processes"> | <section anchor="processes"> | |||
| <name>Processes</name> | <name>Processes</name> | |||
| <t>Processes are used to describe the decoding of syntax elements. A pro cess has a separate specification and invoking. | <t>Processes are used to describe the decoding of syntax elements. A pro cess 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"> | |||
| <li> | <li> | |||
| <t>If the variables at the invoking and the process specification do not have the same name, the variables are explicitly assigned to lower case inp ut or output variables of the process specification.</t> | <t>If the variables at the invoking and the process specification do not have the same name, the variables are explicitly assigned to lower case inp ut or output variables of the process specification.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>Otherwise (the variables at the invoking and the process specific ation have the same name), the assignment is implied.</t> | <t>Otherwise (the variables at the invoking and the process specific ation have the same name), the assignment is implied.</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>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> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="Formats"> | <section anchor="Formats"> | |||
| <name>Formats and processes used in this document</name> | <name>Formats and Processes Used in This Document</name> | |||
| <section anchor="bitstream-formats"> | <section anchor="bitstream-formats"> | |||
| <name>Bitstream formats</name> | <name>Bitstream Formats</name> | |||
| <t>This section specifies the bitstream format of the Advanced Professio | <t>This section specifies the bitstream format of the Advanced Professio | |||
| nal Video (APV) Codec.</t> | nal Video (APV) codec.</t> | |||
| <t>A raw bitstream format consists of a sequence of AUs where the field indicating the size of access units precedes each of them. The raw bitstream for mat is specified in <xref target="appendix-rawbitstream"/>.</t> | <t>A raw bitstream format consists of a sequence of AUs where the field indicating the size of access units precedes each of them. The raw bitstream for mat is specified in <xref target="appendix-rawbitstream"/>.</t> | |||
| </section> | </section> | |||
| <section anchor="source-decoded-and-output-frame-formats"> | <section anchor="source-decoded-and-output-frame-formats"> | |||
| <name>Source, decoded and output frame formats</name> | <name>Source, Decoded, and Output Frame Formats</name> | |||
| <t>This section specifies the relationship between the source and decode d frames.</t> | <t>This section specifies the relationship between the source and decode d frames.</t> | |||
| <t>The video source that is represented by the bitstream is a sequence o f frames.</t> | <t>The video source that is represented by the bitstream is a sequence o f frames.</t> | |||
| <t>Source and decoded frames are each comprised of one or more sample ar rays:</t> | <t>Source and decoded frames are each comprised of one or more sample ar rays:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>Monochrome (for example, Luma only)</t> | <t>Monochrome (for example, Luma only)</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>Luma and two chroma (for example, YCbCr or YCgCo as specified in <xref target="H273"/>).</t> | <t>Luma and two chroma (for example, YCbCr or YCgCo as specified in <xref target="H273"/>).</t> | |||
| </li> | </li> | |||
| skipping to change at line 445 ¶ | skipping to change at line 423 ¶ | |||
| <t>Green, blue, and red (GBR, also known as RGB).</t> | <t>Green, blue, and red (GBR, also known as RGB).</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>Arrays representing other unspecified tri-stimulus color sampling s (for example, YZX, also known as XYZ as specified in <xref target="CIE15"/>).< /t> | <t>Arrays representing other unspecified tri-stimulus color sampling s (for example, YZX, also known as XYZ as specified in <xref target="CIE15"/>).< /t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>Arrays representing other unspecified four color samplings</t> | <t>Arrays representing other unspecified four color samplings</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>For the convenience of notation and terminology in this document, the variables and terms associated with these arrays can be referred to as luma and chroma regardless of the actual color representation method in use.</t> | <t>For the convenience of notation and terminology in this document, the variables and terms associated with these arrays can be referred to as luma and chroma regardless of the actual color representation method in use.</t> | |||
| <t>The variables SubWidthC, SubHeightC and NumComps are specified in <xr | <!-- [rfced] We are having trouble parsing "depending on the Chroma format sampl | |||
| ef target="_table-chroma_format_idc"/>, depending on the chroma format sampling | ing structure" - what is depending on that structure? | |||
| structure, which is specified through chroma_format_idc. Other values of chroma_ | ||||
| format_idc, SubWidthC, SubHeightC and NumComps may be specified in the future ve | Original: | |||
| rions of this document.</t> | The variables SubWidthC, SubHeightC and NumComps are specified in | |||
| Table 2, depending on the chroma format sampling structure, which is | ||||
| specified through chroma_format_idc. | ||||
| Perhaps: | ||||
| The variables SubWidthC, SubHeightC, and NumComps are specified in | ||||
| Table 2, according to the chroma format sampling structure, which is | ||||
| specified through chroma_format_idc. | ||||
| --> | ||||
| <t>The variables SubWidthC, SubHeightC, and NumComps are specified in <x | ||||
| ref target="_table-chroma_format_idc"/>, depending on the chroma format sampling | ||||
| structure, which is specified through chroma_format_idc. Other values of chroma | ||||
| _format_idc, SubWidthC, SubHeightC, and NumComps may be specified in future vers | ||||
| ions of this document.</t> | ||||
| <table anchor="_table-chroma_format_idc"> | <table anchor="_table-chroma_format_idc"> | |||
| <name>SubWidthC, SubHeightC and NumComps values derived from chroma_fo rmat_idc</name> | <name>SubWidthC, SubHeightC, and NumComps values derived from chroma_f ormat_idc</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="center">chroma_format_idc</th> | <th align="center">chroma_format_idc</th> | |||
| <th align="center">Chroma format</th> | <th align="center">Chroma format</th> | |||
| <th align="center">SubWidthC</th> | <th align="center">SubWidthC</th> | |||
| <th align="center">SubHeightC</th> | <th align="center">SubHeightC</th> | |||
| <th align="center">NumComps</th> | <th align="center">NumComps</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| skipping to change at line 506 ¶ | skipping to change at line 497 ¶ | |||
| <td align="center">reserved</td> | <td align="center">reserved</td> | |||
| <td align="center">reserved</td> | <td align="center">reserved</td> | |||
| <td align="center">reserved</td> | <td align="center">reserved</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| <t>In 4:0:0 sampling, there is only one sample array that can be conside red as the luma array.</t> | <t>In 4:0:0 sampling, there is only one sample array that can be conside red as the luma array.</t> | |||
| <t>In 4:2:2 sampling, each of the two chroma arrays has the same height and half the width of the luma array.</t> | <t>In 4:2:2 sampling, each of the two chroma 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 e same height and width as the luma array.</t> | <t>In 4:4:4 sampling and 4:4:4:4 sampling, all the sample arrays have th e same height and width as the luma array.</t> | |||
| <t>The number of bits necessary for the representation of each of the sa mples in the luma and chroma arrays in a video sequence is in the range of 10 to 16, inclusive.</t> | <t>The number of bits necessary for the representation of each of the sa mples in the luma and chroma arrays in a video sequence 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 are co-sited with the corresponding luma samples and the nominal locations in a frame are as shown in <xref target="_figure-format420"/>.</t> | <t>When the value of chroma_format_idc is equal to 2, the chroma samples are co-sited with the corresponding luma samples; the nominal locations in a fr ame are as shown in <xref target="_figure-format420"/>.</t> | |||
| <figure anchor="_figure-format420"> | <figure anchor="_figure-format420"> | |||
| <name>Nominal vertical and horizontal locations of 4:2:2 luma and chro ma samples in a frame</name> | <name>Nominal vertical and horizontal locations of 4:2:2 luma and chro ma samples in a frame</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| & * & * & * & * & * ... | & * & * & * & * & * ... | |||
| & * & * & * & * & * ... | ||||
| & * & * & * & * & * ... | & * & * & * & * & * ... | |||
| & * & * & * & * & * ... | & * & * & * & * & * ... | |||
| ... | & * & * & * & * & * ... | |||
| & - 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 e, all the array samples are co-sited and the nominal locations in a frame are a s shown in <xref target="_figure-format444"/>.</t> | <t>For each frame, when the value of chroma_format_idc is equal to 3 or 4, all of the array samples are co-sited; the nominal locations in a frame are a s shown in <xref target="_figure-format444"/>.</t> | |||
| <figure anchor="_figure-format444"> | <figure anchor="_figure-format444"> | |||
| <name>Nominal vertical and horizontal locations of 4:4:4 and 4:4:4:4 l uma and chroma samples in a frame</name> | <name>Nominal vertical and horizontal locations of 4:4:4 and 4:4:4:4 l uma and chroma samples in a frame</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| & & & & & & & & & & ... | & & & & & & & & & & ... | |||
| & & & & & & & & & & ... | & & & & & & & & & & ... | |||
| & & & & & & & & & & ... | & & & & & & & & & & ... | |||
| & & & & & & & & & & ... | & & & & & & & & & & ... | |||
| ... | ... | |||
| & - 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 ight, which specify the width and height of the luma arrays for each MB, are def ined as follows:</t> | <t>Samples are processed in units of MBs. The variables MbWidth and MbHe ight, which specify the width and height of the luma arrays for each MB, are def ined as follows:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>MbWidth = 16</t> | <t>MbWidth = 16</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>MbHeight = 16</t> | <t>MbHeight = 16</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>The variables MbWidthC and MbHeightC, that specify the width and heig ht of the chroma arrays for each MB, are derived as follows:</t> | <t>The variables MbWidthC and MbHeightC, which specify the width and hei ght of the chroma arrays for each MB, are derived as follows:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>MbWidthC = MbWidth // SubWidthC</t> | <t>MbWidthC = MbWidth // SubWidthC</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>MbHeightC = MbHeight // SubHeightC</t> | <t>MbHeightC = MbHeight // SubHeightC</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="partitioning-of-a-frame"> | <section anchor="partitioning-of-a-frame"> | |||
| <name>Partitioning of a frame</name> | <name>Partitioning of a Frame</name> | |||
| <section anchor="partitioning-of-a-frame-into-tiles"> | <section anchor="partitioning-of-a-frame-into-tiles"> | |||
| <name>Partitioning of a frame into tiles</name> | <name>Partitioning of a Frame into Tiles</name> | |||
| <t>This section specifies how a frame is partitioned into tiles.</t> | <t>This section specifies how a frame is partitioned into tiles.</t> | |||
| <t>A frame is divided into tiles. A tile is a group of MBs that cover a rectangular region of a frame and is processed independently of other tiles. E very tile has the same width and height, except possibly tiles at the right or b ottom frame boundary when the frame width or height is not a multiple of the til e width or height, respectively. The tiles in a frame are scanned in raster orde r. Within a tile, the MBs are scanned in raster order. Each MB is comprised of o ne (MbWidth) x (MbHeight) luma array and zero, two, or three corresponding chrom a sample arrays.</t> | <t>A frame is divided into tiles. A tile is a group of MBs that cover a rectangular region of a frame and is processed independently of other tiles. E very tile has the same width and height, except possibly tiles at the right or b ottom frame boundary when the frame width or height is not a multiple of the til e width or height, respectively. The tiles in a frame are scanned in raster orde r. Within a tile, the MBs are scanned in raster order. Each MB is comprised of o ne (MbWidth) x (MbHeight) luma array and zero, two, or three corresponding chrom a sample arrays.</t> | |||
| <t>For example, a frame is divided into 6 tiles (3 tile columns and 2 | ||||
| tile rows) as shown in <xref target="_figure-tile_examaple"/>: Frame with 10 by | <t>For example, a frame is divided into 6 tiles (3 tile columns and 2 | |||
| 8 MBs that is partitioned into 6 tiles. In this example, the tile size is define | tile rows) as shown in <xref target="_figure-tile_examaple"/>. In this example, | |||
| d as 4 column MBs and 4 row MBs. In case of the third and sixth tiles (in raster | the tile size is defined as 4 column MBs and 4 row MBs. In case of the third and | |||
| order), the tile size is 2 column MBs and 4 row MBs since the frame width is no | sixth tiles (in raster order), the tile size is 2 column MBs and 4 row MBs sinc | |||
| t multiple of the tile width.</t> | e the frame width is not a multiple of the tile width.</t> | |||
| <figure anchor="_figure-tile_examaple"> | <figure anchor="_figure-tile_examaple"> | |||
| <name>Frame with 10 by 8 MBs that is partitioned into 6 tiles</name> | <name>Frame with 10 by 8 MBs that is partitioned into 6 tiles</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| +===================+===================+=========+ | +===================+===================+=========+ | |||
| # | | | # 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 -----+-------------------+---------+ | +----- 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 # 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 # | |||
| +-------------------+-------------------+---------+ | +-------------------+-------------------+---------+ | |||
| # MB | MB | MB | MB # MB | MB | MB | MB # MB | MB # | # MB | MB | MB | MB # MB | MB | MB | MB # MB | MB # | |||
| +===================+===================+=========+ | +===================+===================+=========+ | |||
| #,= tile boundary | ||||
| |,- MB boundary | ===================+===================+=========+ | |||
| #,= tile boundary | ||||
| |,- MB boundary | ||||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="spatial-or-component-wise-partitioning"> | <section anchor="spatial-or-component-wise-partitioning"> | |||
| <name>Spatial or component-wise partitioning</name> | <name>Spatial or Component-Wise Partitioning</name> | |||
| <t>The following divisions of processing elements form spatial or comp onent-wise partitioning:</t> | <t>The following divisions of processing elements form spatial or comp onent-wise partitioning:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>the division of each frame into components;</t> | <t>the division of each frame into components;</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>the division of each frame into tile columns;</t> | <t>the division of each frame into tile columns;</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>the division of each frame into tile rows;</t> | <t>the division of each frame into tile rows;</t> | |||
| skipping to change at line 627 ¶ | skipping to change at line 615 ¶ | |||
| <li> | <li> | |||
| <t>the division of each tile into MBs;</t> | <t>the division of each tile into MBs;</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>the division of each MB into blocks.</t> | <t>the division of each MB into blocks.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="scanning-processes"> | <section anchor="scanning-processes"> | |||
| <name>Scanning processes</name> | <name>Scanning Processes</name> | |||
| <section anchor="zig-zag"> | <section anchor="zig-zag"> | |||
| <name>Zig-zag scan</name> | <name>Zig-Zag Scan</name> | |||
| <t>This process converts a two dimensional array into an one dimension | <t>This process converts a two dimensional array into an one-dimension | |||
| al array. The process starts at the top-left position in the block then moves di | al array. The process starts at the top-left position in the block and then move | |||
| agonally, changing direction at the edges of the block until it reaches the bott | s diagonally, changing direction at the edges of the block until it reaches the | |||
| om-right position. <xref target="_figure-zz"/> shows an example of scanning orde | bottom-right position. <xref target="_figure-zz"/> shows an example of scanning | |||
| r for 4x4 size block.</t> | order for 4x4 size block.</t> | |||
| <figure anchor="_figure-zz"> | <figure anchor="_figure-zz"> | |||
| <name>Example of zig-zag scanning order for 4x4 block</name> | <name>Example of zig-zag scanning order for 4x4 block</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| +===================+ | +===================+ | |||
| # 00 | 01 | 05 | 06 # | # 00 | 01 | 05 | 06 # | |||
| +-------------------+ | +-------------------+ | |||
| # 02 | 04 | 07 | 12 # | # 02 | 04 | 07 | 12 # | |||
| +-------------------+ | +-------------------+ | |||
| # 03 | 08 | 11 | 13 # | # 03 | 08 | 11 | 13 # | |||
| +-------------------+ | +-------------------+ | |||
| # 09 | 10 | 14 | 15 # | # 09 | 10 | 14 | 15 # | |||
| +===================+ | +===================+ | |||
| ]]></artwork> | ]]></artwork> | |||
| ===================+ | ||||
| </figure> | </figure> | |||
| <t>Inputs to this process are:</t> | <t>Inputs to this process are:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>a variable blkWidth specifying the width of a block, and</t> | <t>a variable blkWidth specifying the width of a block, and</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>a variable blkHeight specifying the height of a block.</t> | <t>a variable blkHeight specifying the height of a block.</t> | |||
| </li> | </li> | |||
| skipping to change at line 683 ¶ | skipping to change at line 671 ¶ | |||
| 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"> | |||
| <name>Inverse scan</name> | <name>Inverse Scan</name> | |||
| <t>Inputs to this process are:</t> | <t>Inputs to this process are:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>a variable blkWidth specifying the width of a block, and</t> | <t>a variable blkWidth specifying the width of a block, and</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>a variable blkHeight specifying the height of a block.</t> | <t>a variable blkHeight specifying the height of a block.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Output of this process is the array inverseScan[rPos].</t> | <t>Output of this process is the array inverseScan[rPos].</t> | |||
| <t>The array index rPos specifies the raster scan position ranging fro m 0 to (blkWidth * blkHeight)-1. Depending on the value of blkWidth and blkHeigh t, the array inverseScan is derived as follows:</t> | <t>The array index rPos specifies the raster scan position ranging fro m 0 to (blkWidth * blkHeight)-1. Depending on the value of blkWidth and blkHeigh t, the array inverseScan is derived as follows:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The variable forwardScan is derived by invoking zig-zag scan or | <!-- [rfced] Is "1D" needed here, as section 4.4.1 indicates that the zig-zag pr | |||
| der 1D array initialization process as specified in <xref target="zig-zag"/> wit | ocess converts a 2D array into a 1D array? Simplifying the sentence improves rea | |||
| h input parameters blkWidth and blkHeight.</t> | dability. | |||
| Original: | ||||
| * The variable forwardScan is derived by invoking zig-zag scan order | ||||
| 1D array initialization process as specified in Section 4.4.1 with | ||||
| input parameters blkWidth and blkHeight. | ||||
| Perhaps: | ||||
| * The variable forwardScan is derived by invoking the zig-zag scan order | ||||
| process as specified in Section 4.4.1 with | ||||
| input parameters blkWidth and blkHeight. | ||||
| --> | ||||
| <t>The variable forwardScan is derived by invoking the zig-zag sca | ||||
| n order one-dimensional array initialization process as specified in <xref targe | ||||
| t="zig-zag"/> with input parameters blkWidth and blkHeight.</t> | ||||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The output variable inverseScan is derived as follows:</t> | <t>The output variable inverseScan is derived as follows:</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <figure anchor="_figure-inv_zzscan"> | <figure anchor="_figure-inv_zzscan"> | |||
| <name>Pseudo-code for inverse zig-zag scan</name> | <name>Pseudo-code for inverse zig-zag scan</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| for(pos = 0; pos < blkWidth * blkHeight; pos++){ | 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"> | |||
| <name>Syntax and semantics</name> | <name>Syntax and Semantics</name> | |||
| <section anchor="method-of-specifying-syntax"> | <section anchor="method-of-specifying-syntax"> | |||
| <name>Method of specifying syntax</name> | <name>Method of Specifying Syntax</name> | |||
| <t>The syntax tables specify a superset of the syntax of all allowed bit | <t>The syntax tables specify a superset of the syntax of all allowed bit | |||
| streams. Note that a decoder MUST implement some means for identifying entry poi | streams. Note that a decoder <bcp14>MUST</bcp14> implement some means for identi | |||
| nts into the bitstream and some means to identify and handle non-conforming bits | fying entry points into the bitstream and some means to identify and handle non- | |||
| treams. The methods for identifying and handling errors and other such situation | conforming bitstreams. The methods for identifying and handling errors and other | |||
| s are not specified in this document.</t> | such situations are not specified in this document.</t> | |||
| <!-- [rfced] For readability, may we update this sentence as follows? | ||||
| Original: | ||||
| The APV bitstream is described in this document using syntax code | ||||
| based on the C programming language [ISO9899] and uses its if/else, | ||||
| while, and for keywords as well as functions defined within this | ||||
| document. | ||||
| Perhaps: | ||||
| The APV bitstream is described using syntax code | ||||
| based on the C programming language [ISO9899] - including use of the keywords | ||||
| if/else, | ||||
| while, and for - as well as functions defined within this document. | ||||
| --> | ||||
| <t>The APV bitstream is described in this document using syntax code bas ed on the C programming language <xref target="ISO9899"/> and uses its if/else, while, and for keywords as well as functions defined within this document.</t> | <t>The APV bitstream is described in this document using syntax code bas ed on the C programming language <xref target="ISO9899"/> and uses its if/else, while, and for keywords as well as functions defined within this document.</t> | |||
| <t>The syntax table in syntax code is presented in a two-column format s uch as shown in <xref target="syntax-examplecode"/>. In this form, the type colu mn provides a type referenced in that same line of syntax code by using syntax e lements processing function defined in <xref target="syntax-process-func"/>.</t> | <t>The syntax table in syntax code is presented in a two-column format s uch as shown in <xref target="syntax-examplecode"/>. In this form, the type colu mn provides a type referenced in that same line of syntax code by using the synt ax elements processing functions defined in <xref target="syntax-process-func"/> .</t> | |||
| <figure anchor="syntax-examplecode"> | <figure anchor="syntax-examplecode"> | |||
| <name>A depiction of type-labeled syntax code for syntax description i n this document</name> | <name>A depiction of type-labeled syntax code for syntax description i n this document</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <name>Syntax functions and descriptors</name> | <name>Syntax Functions and Descriptors</name> | |||
| <t>The functions presented in this document are used in the syntactical description. These functions are expressed in terms of the value of a bitstream pointer that indicates the position of the next bit to be read by the decoding p rocess from the bitstream.</t> | <t>The functions presented in this document are used in the syntactical description. These functions are expressed in terms of the value of a bitstream pointer that indicates the position of the next bit to be read by the decoding p rocess from the bitstream.</t> | |||
| <section anchor="bytealigned"> | <section anchor="bytealigned"> | |||
| <name>byte_aligned()</name> | <name>byte_aligned()</name> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>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 retu rn value of byte_aligned() is equal to TRUE.</t> | <t>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 retu rn value of byte_aligned() is equal to TRUE.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>Otherwise, the return value of byte_aligned() is equal to FALSE .</t> | <t>Otherwise, the return value of byte_aligned() is equal to FALSE .</t> | |||
| </li> | </li> | |||
| skipping to change at line 769 ¶ | skipping to change at line 781 ¶ | |||
| <t>Otherwise, the return value of more_data_in_tile() is equal to FALSE.</t> | <t>Otherwise, the return value of more_data_in_tile() is equal to FALSE.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="nextbitsn"> | <section anchor="nextbitsn"> | |||
| <name>next_bits(n)</name> | <name>next_bits(n)</name> | |||
| <t>This function provides the next n bits in the bitstream for compari son purposes, without advancing the bitstream pointer.</t> | <t>This function provides the next n bits in the bitstream for compari son purposes, without advancing the bitstream pointer.</t> | |||
| </section> | </section> | |||
| <section anchor="readbitsn"> | <section anchor="readbitsn"> | |||
| <name>read_bits(n)</name> | <name>read_bits(n)</name> | |||
| <t>This function indicates to read the next n bits from the bitstream and advances the bitstream pointer by n bit positions. When n is equal to 0, rea d_bits(n) is specified to return a value equal to 0 and to not advance the bitst ream pointer.</t> | <t>This function indicates that the next n bits from the bitstream are to be read and it advances the bitstream pointer 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 ad vance the bitstream pointer.</t> | |||
| </section> | </section> | |||
| <section anchor="syntax-process-func"> | <section anchor="syntax-process-func"> | |||
| <name>Syntax element processing functions</name> | <name>Syntax Element Processing Functions</name> | |||
| <ul spacing="normal"> | <dl spacing="normal" newline="false"> | |||
| <li> | <dt>b(8):</dt><dd>byte having any pattern of bit string (8 | |||
| <t>b(8): byte having any pattern of bit string (8 bits). The parsi | bits). The parsing process for this descriptor is specified by the | |||
| ng process for this descriptor is specified by the return value of the function | return value of the function read_bits(8).</dd> | |||
| read_bits(8).</t> | <dt>f(n):</dt><dd>fixed-pattern bit string using n bits written | |||
| </li> | (from left to right) with the left bit first, i.e., big endian | |||
| <li> | format. The parsing process for this descriptor is specified by | |||
| <t>f(n): fixed-pattern bit string using n bits written (from left | the return value of the function read_bits(n).</dd> | |||
| to right) with the left bit first, i.e. big endian format. The parsing process f | <dt>u(n):</dt><dd>unsigned integer using n bits. The parsing | |||
| or this descriptor is specified by the return value of the function read_bits(n) | process for this descriptor is specified by the return value of | |||
| .</t> | the function read_bits(n) interpreted as a binary representation | |||
| </li> | of an unsigned integer with the most significant bit written | |||
| <li> | first.</dd> | |||
| <t>u(n): unsigned integer using n bits. The parsing process for th | <dt>h(v):</dt><dd>variable-length entropy coded syntax element | |||
| is descriptor is specified by the return value of the function read_bits(n) inte | with the left bit first, i.e., big endian format. The parsing | |||
| rpreted as a binary representation of an unsigned integer with most significant | process for this descriptor is specified in <xref | |||
| bit written first.</t> | target="process_h"/>.</dd> | |||
| </li> | </dl> | |||
| <li> | ||||
| <t>h(v): variable-length entropy coded syntax element with the lef | ||||
| t bit first, i.e. big endian format. The parsing process for this descriptor is | ||||
| specified in <xref target="process_h"/>.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="list-of-syntax-and-semantics"> | <section anchor="list-of-syntax-and-semantics"> | |||
| <name>List of syntax and semantics</name> | <name>List of Syntax and Semantics</name> | |||
| <section anchor="access-unit"> | <section anchor="access-unit"> | |||
| <name>Access unit</name> | <name>Access Unit</name> | |||
| <figure anchor="syntaxcode-access_unit"> | <figure anchor="syntaxcode-access_unit"> | |||
| <name>access unit syntax code</name> | <name>access unit syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>signature</dt> | |||
| <t>signature</t> | <dd>A four-character code that identifies the bitstream as an APV AU | |||
| </li> | . The value <bcp14>MUST</bcp14> be 'aPv1' (0x61507631).</dd> | |||
| </ul> | <dt>pbu_size</dt> | |||
| <ul empty="true"> | <dd>the size of a primitive bitstream unit in bytes. A value of 0 is | |||
| <li> | prohibited and the value of 0xFFFFFFFF for pbu_size is reserved for future use. | |||
| <t>A four-character code that identifies the bitstream as an APV A | </dd> | |||
| U. The value MUST be 'aPv1' (0x61507631).</t> | </dl> | |||
| </li> | <t>Note: An AU consists of one primary frame, zero or more non-primary | |||
| </ul> | frames such as a frame for additional view, zero or more alpha frames, zero or | |||
| <ul spacing="normal"> | more depth frames, zero or more preview frames such as a frame with smaller reso | |||
| <li> | lution, zero or more metadata, and zero or more fillers.</t> | |||
| <t>pbu_size</t> | ||||
| </li> | ||||
| </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"> | |||
| <name>Primitive bitstream unit</name> | <name>Primitive Bitstream Unit</name> | |||
| <figure anchor="syntaxcode-pbu"> | <figure anchor="syntaxcode-pbu"> | |||
| <name>primitive bitstream unit syntax code</name> | <name>primitive bitstream unit syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <name>Primitive bitstream unit header</name> | <name>Primitive Bitstream Unit Header</name> | |||
| <figure anchor="syntaxcode-pbu_header"> | <figure anchor="syntaxcode-pbu_header"> | |||
| <name>primitive bitstream unit header syntax code</name> | <name>primitive bitstream unit header syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>pbu_type</dt> | |||
| <t>pbu_type</t> | <dd><t>indicates the type of data in a PBU listed in <xref | |||
| </li> | target="_table-pbu_type"/>. Other values of pbu_type are reserved | |||
| </ul> | for future use.</t> | |||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>indicates the type of data in a PBU listed in <xref target="_ta | ||||
| ble-pbu_type"/>. Other values of pbu_type are reserved for future use.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <table anchor="_table-pbu_type"> | <table anchor="_table-pbu_type"> | |||
| <name>List of PBU types</name> | <name>List of PBU types</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="center">pbu_type</th> | <th align="center">pbu_type</th> | |||
| <th align="center">meaning</th> | <th align="center">meaning</th> | |||
| <th align="center">notes</th> | <th align="center">notes</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="center">0</td> | <td align="center">0</td> | |||
| <td align="center">reserved</td> | <td align="center">reserved</td> | |||
| <td align="center">Â </td> | <td align="center"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">1</td> | <td align="center">1</td> | |||
| <td align="center">primary frame</td> | <td align="center">primary frame</td> | |||
| <td align="center">Â </td> | <td align="center"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">2</td> | <td align="center">2</td> | |||
| <td align="center">non-primary frame</td> | <td align="center">non-primary frame</td> | |||
| <td align="center">Â </td> | <td align="center"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">3...24</td> | <td align="center">3...24</td> | |||
| <td align="center">reserved</td> | <td align="center">reserved</td> | |||
| <td align="center">Â </td> | <td align="center"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">25</td> | <td align="center">25</td> | |||
| <td align="center">preview frame</td> | <td align="center">preview frame</td> | |||
| <td align="center">Â </td> | <td align="center"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">26</td> | <td align="center">26</td> | |||
| <td align="center">depth frame</td> | <td align="center">depth frame</td> | |||
| <td align="center">Â </td> | <td align="center"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">27</td> | <td align="center">27</td> | |||
| <td align="center">alpha frame</td> | <td align="center">alpha frame</td> | |||
| <td align="center">Â </td> | <td align="center"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">28...64</td> | <td align="center">28...64</td> | |||
| <td align="center">reserved</td> | <td align="center">reserved</td> | |||
| <td align="center">Â </td> | <td align="center"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">65</td> | <td align="center">65</td> | |||
| <td align="center">access unit information</td> | <td align="center">access unit information</td> | |||
| <td align="center">Â </td> | <td align="center"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">66</td> | <td align="center">66</td> | |||
| <td align="center">metadata</td> | <td align="center">metadata</td> | |||
| <td align="center">Â </td> | <td align="center"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">67</td> | <td align="center">67</td> | |||
| <td align="center">filler</td> | <td align="center">filler</td> | |||
| <td align="center">Â </td> | <td align="center"> </td> | |||
| </tr> | </tr> | |||
| <tr> | <tr> | |||
| <td align="center">68...255</td> | <td align="center">68...255</td> | |||
| <td align="center">reserved</td> | <td align="center">reserved</td> | |||
| <td align="center">Â </td> | <td align="center"> </td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| <ul empty="true"> | <t>Note: A PBU with pbu_type equal to 65 (access unit information) | |||
| <li> | may happen in an AU. If it exists, it <bcp14>MUST</bcp14> be the first PBU in a | |||
| <t>Note: A PBU with pbu_type equal to 65 (access unit information) | n AU, and it can be ignored by a decoder.</t> | |||
| may happen in an AU. If it exists, it MUST be the first PBU in an AU, and it ca | </dd> | |||
| n be ignored by a decoder.</t> | <dt>group_id</dt> | |||
| </li> | <dd>indicates the identifier to associate a coded frame with metadat | |||
| </ul> | a. More than two frames can have the same group_id in a single AU. A primary fra | |||
| <ul spacing="normal"> | me and a non-primary frame <bcp14>MUST</bcp14> have different group_id values, a | |||
| <li> | nd two non-primary frames <bcp14>MUST</bcp14> have different group_id values. Wh | |||
| <t>group_id</t> | en the value of group_id is equal to 0, the value of pbu_type <bcp14>MUST</bcp14 | |||
| </li> | > be greater than 64. The value of 0xFFFF for group_id is reserved for future us | |||
| </ul> | e.</dd> | |||
| <ul empty="true"> | <dt>reserved_zero_8bits</dt> | |||
| <li> | <!-- [rfced] Can "of this version of the document" be dropped in multiple places | |||
| <t>indicates the identifier to associate coded frame with metadata | , since section references are assumed to be in this document (unless specified | |||
| . More than two frame can have the same group_id in a single AU. A primary frame | otherwise) and because the HTML and PDF link to the relevant sections of the giv | |||
| and a non-primary frame MUST have different group_id value and two non-primary | en document? For example: | |||
| frames MUST have different group_id values. When the value of group_id is equal | ||||
| to 0, the value of pbu_type MUST be greater than 64. The value of 0xFFFF for gro | Original Section 5.3.3: | |||
| up_id is reserved for future use.</t> | * reserved_zero_8bits | |||
| </li> | ||||
| </ul> | MUST be equal to 0 in bitstreams conforming to the profiles | |||
| <ul spacing="normal"> | specified in Section 9 of this version of document. Values of | |||
| <li> | reserved_zero_8bits greater than 0 are reserved for future use. | |||
| <t>reserved_zero_8bits</t> | Decoders conforming to the profiles specified in Section 9 of this | |||
| </li> | version of document MUST ignore PBU with values of | |||
| </ul> | reserved_zero_8bits greater than 0. | |||
| <ul empty="true"> | ||||
| <li> | Original Section 5.3.5: | |||
| <t>MUST be equal to 0 in bitstreams conforming to the profiles spe | * reserved_zero_8bits | |||
| 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 | MUST be equal to 0 in bitstreams conforming to the profiles | |||
| coders conforming to the profiles specified in <xref target="appendix-profile-le | specified in Section 9 of this version of document. Values of | |||
| vel-band"/> of this version of document MUST ignore PBU with values of reserved_ | reserved_zero_8bits greater than 0 are reserved for future use. | |||
| zero_8bits greater than 0.</t> | Decoders conforming to the profiles specified in Section 9 of this | |||
| </li> | version of document MUST ignore PBU with values of | |||
| </ul> | reserved_zero_8bits greater than 0. | |||
| Original Section 5.3.9 (example without mention of a specific section): | ||||
| * pbu_type | ||||
| has the same semantics as pbu_type in the pbu_header() syntax. | ||||
| Note: The value of pbu_type MUST be 1, 2, 25, 26, or 27 in | ||||
| bitstreams conforming to this version of document. | ||||
| --> | ||||
| <dd><bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to th | ||||
| e profiles specified in <xref target="appendix-profile-level-band"/> of this ver | ||||
| sion of the document. Values of reserved_zero_8bits greater than 0 are reserved | ||||
| for future use. Decoders conforming to the profiles specified in <xref target="a | ||||
| ppendix-profile-level-band"/> of this version of the document <bcp14>MUST</bcp14 | ||||
| > ignore PBU with values of reserved_zero_8bits greater than 0.</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| <section anchor="frame"> | <section anchor="frame"> | |||
| <name>Frame</name> | <name>Frame</name> | |||
| <figure anchor="syntaxcode-frame"> | <figure anchor="syntaxcode-frame"> | |||
| <name>frame() syntax code</name> | <name>frame() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>tile_size[i]</dt> | |||
| <t>tile_size[i]</t> | <dd><t>indicates the size in bytes of i-th tile data (i.e., | |||
| </li> | tile(i)) in raster order in a frame. The value of 0 for | |||
| </ul> | tile_size[i] is reserved for future use.</t> | |||
| <ul empty="true"> | <t>The variable TileSize[i] is set equal to tile_size[i].</t></dd> | |||
| <li> | </dl> | |||
| <t>indicates the size in bytes of i-th tile data (i.e., tile(i)) i | ||||
| n raster order in a frame. The value of 0 for tile_size[i] is reserved for futur | ||||
| e use.</t> | ||||
| </li> | ||||
| </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"> | |||
| <name>Frame header</name> | <name>Frame Header</name> | |||
| <figure anchor="syntaxcode-frame_header"> | <figure anchor="syntaxcode-frame_header"> | |||
| <name>frame_header() syntax code</name> | <name>frame_header() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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){ | | |||
| skipping to change at line 1033 ¶ | skipping to change at line 1030 ¶ | |||
| 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"> | |||
| <li> | <dt>reserved_zero_8bits</dt> | |||
| <t>reserved_zero_8bits</t> | <dd><bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to | |||
| </li> | the profiles specified in <xref | |||
| </ul> | target="appendix-profile-level-band"/> of this version of the | |||
| <ul empty="true"> | document. Values of reserved_zero_8bits greater than 0 are | |||
| <li> | reserved for future use. Decoders conforming to the profiles | |||
| <t>MUST be equal to 0 in bitstreams conforming to the profiles spe | specified in <xref target="appendix-profile-level-band"/> of this | |||
| cified in <xref target="appendix-profile-level-band"/> of this version of docume | version of the document <bcp14>MUST</bcp14> ignore PBU with values o | |||
| nt. Values of reserved_zero_8bits greater than 0 are reserved for future use. De | f | |||
| coders conforming to the profiles specified in <xref target="appendix-profile-le | reserved_zero_8bits greater than 0.</dd> | |||
| vel-band"/> of this version of document MUST ignore PBU with values of reserved_ | <dt>color_description_present_flag equal to 1</dt> | |||
| zero_8bits greater than 0.</t> | <dd>specifies that color_primaries, transfer_characteristics, and | |||
| </li> | matrix_coefficients are present. color_description_present_flag | |||
| </ul> | equal to 0 specifies that color_primaries, | |||
| <ul spacing="normal"> | transfer_characteristics, and matrix_coefficients are not | |||
| <li> | present.</dd> | |||
| <t>color_description_present_flag equal to 1</t> | <dt>color_primaries</dt> | |||
| </li> | <dd><bcp14>MUST</bcp14> have the semantics of ColourPrimaries as | |||
| </ul> | specified in <xref target="H273"/>. When the color_primaries | |||
| <ul empty="true"> | syntax element is not present, the value of color_primaries is | |||
| <li> | inferred to be equal to 2.</dd> | |||
| <t>specifies that color_primaries, transfer_characteristics and ma | <dt>transfer_characteristics</dt> | |||
| trix_coefficients are present. color_description_present_flag equal to 0 specifi | <dd><bcp14>MUST</bcp14> have the semantics of | |||
| es that color_primaries, transfer_characteristics and matrix_coefficients are no | TransferCharacteristics as specified in <xref | |||
| t present.</t> | target="H273"/>. When the transfer_characteristics syntax element | |||
| </li> | is not present, the value of transfer_characteristics is inferred | |||
| </ul> | to be equal to 2.</dd> | |||
| <ul spacing="normal"> | <dt>matrix_coefficients</dt> | |||
| <li> | <dd><bcp14>MUST</bcp14> have the semantics of MatrixCoefficients | |||
| <t>color_primaries</t> | as specified in <xref target="H273"/>. When the | |||
| </li> | matrix_coefficients syntax element is not present, the value of | |||
| </ul> | matrix_coefficients is inferred to be equal to 2.</dd> | |||
| <ul empty="true"> | <dt>full_range_flag</dt> | |||
| <li> | <dd><bcp14>MUST</bcp14> have the semantics of VideoFullRangeFlag | |||
| <t>MUST have the semantics of ColourPrimaries as specified in <xre | as specified in <xref target="H273"/>. When the full_range_flag | |||
| f target="H273"/>. When the color_primaries syntax element is not present, the v | syntax element is not present, the value of full_range_flag is | |||
| alue of color_primaries is inferred to be equal to 2.</t> | inferred to be equal to 0.</dd> | |||
| </li> | <dt>use_q_matrix</dt> | |||
| </ul> | <dd>with a value of 1 specifies that the quantization matrices are | |||
| <ul spacing="normal"> | present. A value of 0 specifies that the quantization matrices are | |||
| <li> | not present.</dd> | |||
| <t>transfer_characteristics</t> | <dt>reserved_zero_8bits</dt> | |||
| </li> | <dd><bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to | |||
| </ul> | the profiles specified in <xref | |||
| <ul empty="true"> | target="appendix-profile-level-band"/> of this version of the | |||
| <li> | document. Values of reserved_zero_8bits greater than 0 are | |||
| <t>MUST have the semantics of TransferCharacteristics as specified | reserved for future use. Decoders conforming to the profiles | |||
| in <xref target="H273"/>. When the transfer_characteristics syntax element is n | specified in <xref target="appendix-profile-level-band"/> of this | |||
| ot present, the value of transfer_characteristics is inferred to be equal to 2.< | version of the document <bcp14>MUST</bcp14> ignore PBU with values o | |||
| /t> | f | |||
| </li> | reserved_zero_8bits greater than 0.</dd> | |||
| </ul> | </dl> | |||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>matrix_coefficients</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>MUST have the semantics of MatrixCoefficients as specified in < | ||||
| xref target="H273"/>. When the matrix_coefficients syntax element is not present | ||||
| , the value of matrix_coefficients is inferred to be equal to 2.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <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"> | |||
| <name>Frame information</name> | <name>Frame Information</name> | |||
| <figure anchor="syntaxcode-frame_info"> | <figure anchor="syntaxcode-frame_info"> | |||
| <name>frame_info() syntax code</name> | <name>frame_info() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>profile_idc</dt> | |||
| <t>profile_idc</t> | <dd>indicates a profile to which the coded frame conforms as | |||
| </li> | specified in <xref | |||
| </ul> | target="appendix-profile-level-band"/>. Bitstreams <bcp14>SHALL | |||
| <ul empty="true"> | NOT</bcp14> contain values of profiles_idc other than those | |||
| <li> | specified in <xref target="appendix-profile-level-band"/>. Other | |||
| <t>indicates a profile to which the coded frame conforms to as spe | values of profile_idc are reserved for future use.</dd> | |||
| cified in <xref target="appendix-profile-level-band"/>. Bitstreams SHALL NOT con | <dt>level_idc</dt> | |||
| tain values of profiles_idc other than those specified in <xref target="appendix | <dd>indicates a level to which the coded frame conforms as | |||
| -profile-level-band"/>. Other values of profile_idc are reserved for future use. | specified in <xref | |||
| </t> | target="appendix-profile-level-band"/>. Bitstreams <bcp14>SHALL | |||
| </li> | NOT</bcp14> contain values of level_idc other than those specified | |||
| </ul> | in <xref target="appendix-profile-level-band"/>. Other values of | |||
| <ul spacing="normal"> | level_idc are reserved for future use.</dd> | |||
| <li> | <dt>band_idc</dt> | |||
| <t>level_idc</t> | <dd>specifies a maximum coded data rate of level_idc as specified | |||
| </li> | in <xref target="appendix-profile-level-band"/>. Bitstreams | |||
| </ul> | <bcp14>SHALL NOT</bcp14> contain values of band_idc other than | |||
| <ul empty="true"> | those specified in <xref | |||
| <li> | target="appendix-profile-level-band"/>. The value of band_idc | |||
| <t>indicates a level to which the coded frame conforms to as speci | <bcp14>MUST</bcp14> be in the range of 0 to 3. Other values of | |||
| fied in <xref target="appendix-profile-level-band"/>. Bitstreams SHALL NOT conta | band_idc are reserved for future use.</dd> | |||
| in values of level_idc other than those specified in <xref target="appendix-prof | <dt>reserved_zero_5bits</dt> | |||
| ile-level-band"/>. Other values of level_idc are reserved for future use.</t> | <dd><bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to | |||
| </li> | the profiles specified in <xref | |||
| </ul> | target="appendix-profile-level-band"/> of this version of the | |||
| <ul spacing="normal"> | document. Values of reserved_zero_8bits greater than 0 are | |||
| <li> | reserved for future use. Decoders conforming to the profiles | |||
| <t>band_idc</t> | specified in <xref target="appendix-profile-level-band"/> of this | |||
| </li> | version of the document <bcp14>MUST</bcp14> ignore PBU with values o | |||
| </ul> | f | |||
| <ul empty="true"> | reserved_zero_8bits greater than 0.</dd> | |||
| <li> | <dt>frame_width</dt> | |||
| <t>specifies a maximum coded data rate of level_idc as specified i | <dd>specifies the width of the frame in units of luma | |||
| n <xref target="appendix-profile-level-band"/>. Bitstreams SHALL NOT contain val | samples. frame_width <bcp14>MUST</bcp14> be a multiple of 2 when | |||
| ues of band_idc other than those specified in <xref target="appendix-profile-lev | chroma_format_idc has a value of 2. The value 0 is reserved for | |||
| el-band"/>. The value of band_idc MUST be in the range of 0 to 3. Other values o | future use.</dd> | |||
| f band_idc are reserved for future use.</t> | <dt>frame_height</dt> | |||
| </li> | <dd>specifies the height of the frame in units of luma samples. The | |||
| </ul> | value 0 is reserved for future use.</dd> | |||
| <ul spacing="normal"> | <dt>The variables FrameWidthInMbsY, FrameHeightInMbsY, | |||
| <li> | FrameWidthInSamplesY, FrameHeightInSamplesY, FrameWidthInSamplesC, | |||
| <t>reserved_zero_5bits</t> | FrameHeightInSamplesC, FrameSizeInMbsY, and FrameSizeInSamplesY | |||
| </li> | are derived as follows:</dt> | |||
| </ul> | <dd> | |||
| <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> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>frame_width</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>specifies the width of frame in units of luma samples. frame_wi | ||||
| dth MUST be a multiple of 2 when chroma_format_idc has a value of 2. The value o | ||||
| f 0 is reserved for future use.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>frame_height</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <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"> | <ul spacing="normal"> | |||
| <li> | <li>FrameWidthInSamplesY = frame_width</li> | |||
| <t>FrameWidthInSamplesY = frame_width</t> | <li>FrameHeightInSamplesY = frame_height</li> | |||
| </li> | <li>FrameWidthInMbsY = ceil(FrameWidthInSamplesY / MbWidth)</li> | |||
| <li> | <li>FrameHeightInMbsY = ceil(FrameHeightInSamplesY / MbHeight)</ | |||
| <t>FrameHeightInSamplesY = frame_height</t> | li> | |||
| </li> | <li>FrameWidthInSamplesC = FrameWidthInSamplesY // SubWidthC</li | |||
| <li> | > | |||
| <t>FrameWidthInMbsY = ceil(FrameWidthInSamplesY / MbWidth)</t> | <li>FrameHeightInSamplesC = FrameHeightInSamplesY // SubHeightC< | |||
| </li> | /li> | |||
| <li> | <li>FrameSizeInMbsY = FrameWidthInMbsY * FrameHeightInMbsY</li> | |||
| <t>FrameHeightInMbsY = ceil(FrameHeightInSamplesY / MbHeight)< | <li>FrameSizeInSamplesY = FrameWidthInSamplesY * FrameHeightInSa | |||
| /t> | mplesY</li> | |||
| </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> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>QpBdOffset = bit_depth_minus8 * 6</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | </ul> | |||
| </li> | </dd> | |||
| </ul> | <dt>chroma_format_idc</dt> | |||
| <ul empty="true"> | <dd>specifies the chroma sampling relative to the luma sampling as | |||
| <li> | specified in <xref target="_table-chroma_format_idc"/>. The value | |||
| <t>bit_depth_minus8 MUST be in the range of 2 to 8, inclusive. Oth | of chroma_format_idc <bcp14>MUST</bcp14> be 0, 2, 3, or 4. Other | |||
| er values are reserved for future use.</t> | values are reserved for future use.</dd> | |||
| </li> | <dt>bit_depth_minus8</dt> | |||
| </ul> | <dd><t>specifies the bit depth of the samples. The variables BitDept | |||
| <ul spacing="normal"> | h and QpBdOffset are derived as follows:</t> | |||
| <li> | <ul spacing="normal"> | |||
| <t>capture_time_distance</t> | <li>BitDepth = bit_depth_minus8 + 8</li> | |||
| </li> | <li>QpBdOffset = bit_depth_minus8 * 6</li> | |||
| </ul> | </ul> | |||
| <ul empty="true"> | <t>bit_depth_minus8 <bcp14>MUST</bcp14> be in the range of 2 to 8, i | |||
| <li> | nclusive. Other values are reserved for future use.</t> | |||
| <t>indicates time difference between the capture time of the frame | </dd> | |||
| s in the previous access unit and frames in the current access unit in milliseco | <dt>capture_time_distance</dt> | |||
| nds if there has been any access unit preceding the access unit this frame belon | <dd>indicates the time difference between the capture time of the | |||
| gs to.</t> | frames in the previous access unit and frames in the current | |||
| </li> | access unit in milliseconds if there has been any access unit | |||
| </ul> | preceding the access unit this frame belongs to.</dd> | |||
| <ul spacing="normal"> | <dt>reserved_zero_8bits</dt> | |||
| <li> | <dd><bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to | |||
| <t>reserved_zero_8bits</t> | the profiles specified in <xref | |||
| </li> | target="appendix-profile-level-band"/> of this version of the | |||
| </ul> | document. Values of reserved_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"/> of this | |||
| <t>MUST be equal to 0 in bitstreams conforming to the profiles spe | version of the document <bcp14>MUST</bcp14> ignore PBU with values o | |||
| cified in <xref target="appendix-profile-level-band"/> of this version of docume | f | |||
| 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="quantization-matrix"> | <section anchor="quantization-matrix"> | |||
| <name>Quantization matrix</name> | <name>Quantization Matrix</name> | |||
| <figure anchor="syntaxcode-quantization_matrix"> | <figure anchor="syntaxcode-quantization_matrix"> | |||
| <name>quantization_matrix() syntax code</name> | <name>quantization_matrix() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>q_matrix[i][x][y]</dt> | |||
| <t>q_matrix[i][x][y]</t> | <!-- [rfced] We are trying to draw a more clear connection between the text bef | |||
| </li> | ore and after the semicolon. Please consider whether the suggested text conveys | |||
| </ul> | the intended meaning. Otherwise, please clarify. | |||
| <ul empty="true"> | ||||
| <li> | Note that this text appears multiple times; we will update all similar instances | |||
| <t>specifies a scaling value in the quantization matrices. When q_ | based on the outcome of this discussion. | |||
| matrix[i][x][y] is not present, it is inferred to be equal to 16. The array inde | ||||
| x i specifies an indicator for the color component; when chroma_format_idc is eq | Original: | |||
| ual to 2 or 3, 0 for Y, 1 for Cb and 2 for Cr. The value of 0 for q_matrix[i][x] | The array index i specifies an indicator for the color | |||
| [y] is reserved for future use.</t> | component; when chroma_format_idc is equal to 2 or 3, 0 for Y, 1 | |||
| </li> | for Cb and 2 for Cr. | |||
| </ul> | ||||
| <ul empty="true"> | Perhaps: | |||
| <li> | The array index i specifies an indicator for the color | |||
| <t>The quantization matrix, QMatrix[i][x][y], is derived as follow | component when chroma_format_idc is equal to 2 or 3, Y is 0, | |||
| s:</t> | Cb is 1, and CR is 2. | |||
| </li> | --> | |||
| </ul> | <dd><t>specifies a scaling value in 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>QMatrix[i][x][y] = q_matrix[i][x][y]</t> | component; when chroma_format_idc is equal to 2 or 3, 0 for Y, 1 | |||
| </li> | for Cb, and 2 for Cr. The value of 0 for q_matrix[i][x][y] is | |||
| </ul> | reserved for future use.</t> | |||
| <t>The quantization matrix, QMatrix[i][x][y], is derived as follows: | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>QMatrix[i][x][y] = q_matrix[i][x][y]</li> | ||||
| </ul> | ||||
| </dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| <section anchor="tile-info"> | <section anchor="tile-info"> | |||
| <name>Tile info</name> | <name>Tile Info</name> | |||
| <figure anchor="syntaxcode-tile_info"> | <figure anchor="syntaxcode-tile_info"> | |||
| <name>tile_info() syntax code</name> | <name>tile_info() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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++){ | | |||
| skipping to change at line 1375 ¶ | skipping to change at line 1265 ¶ | |||
| } | | } | | |||
| 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"> | |||
| <li> | <dt>tile_width_in_mbs</dt> | |||
| <t>tile_width_in_mbs</t> | <dd>specifies the width of a tile in units of MBs.</dd> | |||
| </li> | <dt>tile_height_in_mbs</dt> | |||
| </ul> | <dd>specifies the height of a tile in units of MBs.</dd> | |||
| <ul empty="true"> | <dt>tile_size_present_in_fh_flag</dt> | |||
| <li> | <dd>equal to 1 specifies that tile_size_in_fh[i] is present in the | |||
| <t>specifies the width of a tile in units of MBs.</t> | 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> | |||
| </ul> | <dt>tile_size_in_fh[i]</dt> | |||
| <ul spacing="normal"> | <dd>indicates the size in bytes of i-th tile data in raster order | |||
| <li> | in a frame. The value of tile_size_in_fh[i] <bcp14>MUST</bcp14> | |||
| <t>tile_height_in_mbs</t> | have the same value with tile_size[i]. When it is not present, the | |||
| </li> | value of tile_size_in_fh[i] is inferred to be equal to | |||
| </ul> | tile_size[i]. The value of 0 for tile_size_in_fh[i] is reserved | |||
| <ul empty="true"> | for future use.</dd> | |||
| <li> | </dl> | |||
| <t>specifies the height of a tile in units of MBs.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <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"> | |||
| <name>Access unit information</name> | <name>Access Unit Information</name> | |||
| <figure anchor="syntaxcode-au_info"> | <figure anchor="syntaxcode-au_info"> | |||
| <name>au_info() syntax code</name> | <name>au_info() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>num_frames</dt> | |||
| <t>num_frames</t> | <dd>indicates the number of frames contained in the current AU.</dd> | |||
| </li> | <dt>pbu_type</dt> | |||
| </ul> | <dd><t>has the same semantics as pbu_type in the pbu_header() syntax | |||
| <ul empty="true"> | .</t> | |||
| <li> | <t>Note: The value of pbu_type <bcp14>MUST</bcp14> be 1, 2, 25, | |||
| <t>indicates the number of frames contained in the current AU.</t> | 26, or 27 in bitstreams conforming to this version of the | |||
| </li> | document.</t></dd> | |||
| </ul> | <dt>group_id</dt> | |||
| <ul spacing="normal"> | <dd>has the same semantics as group_id in the pbu_header() syntax.</ | |||
| <li> | dd> | |||
| <t>pbu_type</t> | <dt>reserved_zero_8bits</dt> | |||
| </li> | <dd><bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to | |||
| </ul> | the profiles specified in <xref | |||
| <ul empty="true"> | target="appendix-profile-level-band"/> of this version of the | |||
| <li> | document. Values of reserved_zero_8bits greater than 0 are | |||
| <t>has the same semantics as pbu_type in the pbu_header() syntax. | reserved for future use. Decoders conforming to the profiles | |||
| Note: The value of pbu_type MUST be 1, 2, 25, 26, or 27 in bitstreams conforming | specified in <xref target="appendix-profile-level-band"/> of this | |||
| to this version of document.</t> | version of the document <bcp14>MUST</bcp14> ignore PBU with values o | |||
| </li> | f | |||
| </ul> | reserved_zero_8bits greater than 0.</dd> | |||
| <ul spacing="normal"> | </dl> | |||
| <li> | ||||
| <t>group_id</t> | ||||
| </li> | ||||
| </ul> | ||||
| <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"> | |||
| <name>Metadata</name> | <name>Metadata</name> | |||
| <figure anchor="syntaxcode-metadata"> | <figure anchor="syntaxcode-metadata"> | |||
| <name>metadata() syntax code</name> | <name>metadata() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| metadata(){ | | metadata(){ | | |||
| metadata_size | u(32) | metadata_size | u(32) | |||
| skipping to change at line 1517 ¶ | skipping to change at line 1361 ¶ | |||
| 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"> | |||
| <li> | <dt>metadata_size</dt> | |||
| <t>metadata_size</t> | <dd>specifies the size of metadata before filler() in the current PB | |||
| </li> | U.</dd> | |||
| </ul> | <dt>ff_byte</dt> | |||
| <ul empty="true"> | <dd>is a byte equal to 0xFF.</dd> | |||
| <li> | <dt>metadata_payload_type</dt> | |||
| <t>specifies the size of metadata before filler() in the current P | <dd>specifies the last byte of the payload type of a metadata.</dd> | |||
| BU.</t> | <dt>metadata_payload_size</dt> | |||
| </li> | <dd>specifies the last byte of the payload size of a metadata.</dd> | |||
| </ul> | </dl> | |||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>ff_byte</t> | ||||
| </li> | ||||
| </ul> | ||||
| <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> | <t>Syntax and semantics of metadata_payload() are specified in <xref t arget="appendix-metadata"/>.</t> | |||
| </section> | </section> | |||
| <section anchor="filler"> | <section anchor="filler"> | |||
| <name>Filler</name> | <name>Filler</name> | |||
| <figure anchor="syntaxcode-filler"> | <figure anchor="syntaxcode-filler"> | |||
| <name>filler() syntax code</name> | <name>filler() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>ff_byte</dt> | |||
| <t>ff_byte</t> | <dd>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"> | |||
| <name>Tile</name> | <name>Tile</name> | |||
| <figure anchor="syntaxcode-tile"> | <figure anchor="syntaxcode-tile"> | |||
| <name>tile() syntax code</name> | <name>tile() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>tile_dummy_byte</dt> | |||
| <t>tile_dummy_byte</t> | <dd>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"> | |||
| <name>Tile header</name> | <name>Tile header</name> | |||
| <figure anchor="syntaxcode-tileheader"> | <figure anchor="syntaxcode-tileheader"> | |||
| <name>tile_header() syntax code</name> | <name>tile_header() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>tile_header_size</dt> | |||
| <t>tile_header_size</t> | <dd>indicates the size of the tile header in bytes.</dd> | |||
| </li> | <dt>tile_index</dt> | |||
| </ul> | <dd>specifies the tile index in raster order in a frame. tile_index | |||
| <ul empty="true"> | <bcp14>MUST</bcp14> have the same value as tileIdx.</dd> | |||
| <li> | <dt>tile_data_size[i]</dt> | |||
| <t>indicates the size of the tile header in bytes.</t> | <dd>indicates the size of the i-th color component data in a tile in | |||
| </li> | bytes. The array index i specifies an indicator for the color | |||
| </ul> | component; when chroma_format_idc is equal to 2 or 3, 0 for Y, 1 | |||
| <ul spacing="normal"> | for Cb, and 2 for Cr. The value of 0 for tile_data_size[i] is | |||
| <li> | reserved for future use.</dd> | |||
| <t>tile_index</t> | <dt>tile_qp[i]</dt> | |||
| </li> | <dd><t>specifies the quantization parameter value for i-th color | |||
| </ul> | component. The array index i specifies an indicator for the color | |||
| <ul empty="true"> | component; when chroma_format_idc is equal to 2 or 3, 0 for Y, 1 | |||
| <li> | for Cb, and 2 for Cr. The Qp[i] to be used for the MBs in the tile a | |||
| <t>specifies the tile index in raster order in a frame. tile_index | re | |||
| MUST have the same value with tileIdx.</t> | derived as follows:</t> | |||
| </li> | <ul spacing="normal"> | |||
| </ul> | <li>Qp[i] = tile_qp[i] - QpBdOffset</li> | |||
| <ul spacing="normal"> | <li>Qp[i] <bcp14>MUST</bcp14> be in the range of -QpBdOffset to 51 | |||
| <li> | , inclusive.</li> | |||
| <t>tile_data_size[i]</t> | </ul></dd> | |||
| </li> | <dt>reserved_zero_8bits</dt> | |||
| </ul> | <dd><bcp14>MUST</bcp14> be equal to 0 in bitstreams conforming to | |||
| <ul empty="true"> | the profiles specified in <xref | |||
| <li> | target="appendix-profile-level-band"/> of this version of the | |||
| <t>indicates the size of i-th color component data in a tile in by | document. Values of reserved_zero_8bits greater than 0 are | |||
| tes. The array index i specifies an indicator for the color component; when chro | reserved for future use. Decoders conforming to the profiles | |||
| ma_format_idc is equal to 2 or 3, 0 for Y, 1 for Cb and 2 for Cr. The value of 0 | specified in <xref target="appendix-profile-level-band"/> of this | |||
| for tile_data_size[i] is reserved for future use.</t> | version of the document <bcp14>MUST</bcp14> ignore PBU with values o | |||
| </li> | f | |||
| </ul> | reserved_zero_8bits greater than 0.</dd> | |||
| <ul spacing="normal"> | </dl> | |||
| <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> | ||||
| </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="tile-data"> | <section anchor="tile-data"> | |||
| <name>Tile data</name> | <name>Tile Data</name> | |||
| <figure anchor="syntaxcode-tiledata"> | <figure anchor="syntaxcode-tiledata"> | |||
| <name>tile_data() syntax code</name> | <name>tile_data() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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 | | |||
| skipping to change at line 1737 ¶ | skipping to change at line 1490 ¶ | |||
| 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> | |||
| <!-- [rfced] Please confirm that no additional explanatory text is needed after | ||||
| Figure 21. | ||||
| --> | ||||
| </section> | </section> | |||
| <section anchor="mb-layer"> | <section anchor="mb-layer"> | |||
| <name>Macroblock layer</name> | <name>Macroblock Layer</name> | |||
| <figure anchor="syntaxcode-macroblock_layer"> | <figure anchor="syntaxcode-macroblock_layer"> | |||
| <name>macroblock_layer() syntax code</name> | <name>macroblock_layer() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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 | | |||
| skipping to change at line 1769 ¶ | skipping to change at line 1524 ¶ | |||
| 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"> | |||
| <li> | <dt>abs_dc_coeff_diff</dt> | |||
| <t>abs_dc_coeff_diff</t> | <!-- [rfced] How may we expand "DC"? Differential coding? Will it be understo | |||
| </li> | od by readers without expansion? | |||
| </ul> | ||||
| <ul empty="true"> | Original: | |||
| <li> | * abs_dc_coeff_diff | |||
| <t>specifies the absolute value of the difference between the curr | ||||
| ent DC transform coefficient level and PrevDC.</t> | specifies the absolute value of the difference between the current | |||
| </li> | DC transform coefficient level and PrevDC. | |||
| </ul> | --> | |||
| <ul spacing="normal"> | ||||
| <li> | <dd>specifies the absolute value of the difference between the curre | |||
| <t>sign_dc_coeff_diff</t> | nt DC transform coefficient level and PrevDC.</dd> | |||
| </li> | <dt>sign_dc_coeff_diff</dt> | |||
| </ul> | <dd>specifies the sign of the difference between the current DC | |||
| <ul empty="true"> | transform coefficient level and PrevDC. sign_dc_coeff_diff equal | |||
| <li> | to 0 specifies that the difference has a positive | |||
| <t>specifies the sign of the difference between the current DC tra | value. sign_dc_coeff_diff equal to 1 specifies that the difference | |||
| nsform coefficient level and PrevDC. sign_dc_coeff_diff equal to 0 specifies tha | has a negative value.</dd> | |||
| t the difference has a positive value. sign_dc_coeff_diff equal to 1 specifies t | </dl> | |||
| hat the difference has a negative value.</t> | <t>The transform coefficients are represented by the arrays TransCoeff | |||
| </li> | [cIdx][x0][y0]. The array indices x0, y0 specify the location (x0, y0) relative | |||
| </ul> | to the top-left sample for each component of the frame. The array index cIdx spe | |||
| <t>The transform coefficients are represented by the arrays TransCoeff | cifies an indicator for the color component; when chroma_format_idc is equal to | |||
| [cIdx][x0][y0]. The array indices x0, y0 specify the location (x0, y0) relative | 2 or 3, 0 for Y, 1 for Cb, and 2 for Cr. The value of TransCoeff[cIdx][x0][y0] < | |||
| to the top-left sample for each component of the frame. The array index cIdx spe | bcp14>MUST</bcp14> be in the range of -32768 to 32767, inclusive.</t> | |||
| 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"> | |||
| <name>AC coefficient coding</name> | <name>AC Coefficient Coding</name> | |||
| <figure anchor="syntaxcode-ac_coeff_coding"> | <figure anchor="syntaxcode-ac_coeff_coding"> | |||
| <name>ac_coeff_coding() syntax code</name> | <name>ac_coeff_coding() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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 | | |||
| skipping to change at line 1833 ¶ | skipping to change at line 1586 ¶ | |||
| 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"> | |||
| <li> | <dt>coeff_zero_run</dt> | |||
| <t>coeff_zero_run</t> | <dd>specifies the number of zero-valued transform coefficient | |||
| </li> | levels that are located before the position of the next non-zero | |||
| </ul> | transform coefficient level in a scan of transform coefficient | |||
| <ul empty="true"> | levels.</dd> | |||
| <li> | <dt>abs_ac_coeff_minus1</dt> | |||
| <t>specifies the number of zero-valued transform coefficient level | <dd>plus 1 specifies the absolute value of an AC transform coefficie | |||
| s that are located before the position of the next non-zero transform coefficien | nt level at the given scanning position.</dd> | |||
| t level in a scan of transform coefficient levels.</t> | <dt>sign_ac_coeff</dt> | |||
| </li> | <dd>specifies the sign of an AC transform coefficient level for | |||
| </ul> | the given scanning position. sign_ac_coeff equal to 0 specifies | |||
| <ul spacing="normal"> | that the corresponding AC transform coefficient level has a | |||
| <li> | positive value. sign_ac_coeff equal to 1 specifies that the | |||
| <t>abs_ac_coeff_minus1</t> | corresponding AC transform coefficient level has a negative | |||
| </li> | value.</dd> | |||
| </ul> | </dl> | |||
| <ul empty="true"> | ||||
| <li> | ||||
| <t>plus 1 specifies the absolute value of an AC transform coeffici | ||||
| ent level at the given scanning position.</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>sign_ac_coeff</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> | <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"> | |||
| <name>Byte alignment</name> | <name>Byte Alignment</name> | |||
| <figure anchor="syntaxcode-byte_alignment"> | <figure anchor="syntaxcode-byte_alignment"> | |||
| <name>byte_alignment() syntax code</name> | <name>byte_alignment() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>alignment_bit_equal_to_zero</dt> | |||
| <t>alignment_bit_equal_to_zero</t> | <dd><bcp14>MUST</bcp14> be equal to 0.</dd> | |||
| </li> | </dl> | |||
| </ul> | ||||
| <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"> | |||
| <name>Decoding process</name> | <name>Decoding Process</name> | |||
| <t>This process is invoked to obtain a decoded frame from a bitstream. Inp ut to this process is a bitstream of a coded frame. Output of this process is a decoded frame.</t> | <t>This process is invoked to obtain a decoded frame from a bitstream. Inp ut to this process is a bitstream of a coded frame. Output of this process is a decoded frame.</t> | |||
| <t>The decoding process operates as follows for the current frame:</t> | <t>The decoding process operates as follows for the current frame:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The syntax structure for a coded frame is parsed to obtain the pars ed syntax structures.</t> | <t>The syntax structure for a coded frame is parsed to obtain the pars ed syntax structures.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The processes in <xref target="mb-decoding"/>, <xref target="block- | <!-- [rfced] "It is the requirement of bitstream conformance" is a bit awkward t | |||
| recon"/> and <xref target="scaling-transform"/> specify the decoding processes u | o read. Please consider whether the suggested update is correct. Otherwise, pl | |||
| sing syntax elements in all syntax structures. It is the requirement of bitstrea | ease clarify. | |||
| 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 | Original: | |||
| n of the tiles into MBs each forms a partitioning of the frame.</t> | It is the requirement of bitstream 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 division of the tiles into MBs each forms a partitioning of | ||||
| the frame. | ||||
| Perhaps: | ||||
| For conforming bitstreams, 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 division of the tiles into MBs each forms a partitioning of | ||||
| the frame. | ||||
| --> | ||||
| <t>The processes in Sections <xref target="mb-decoding" format="counte | ||||
| r"/>, <xref target="block-recon" format="counter"/>, and <xref target="scaling-t | ||||
| ransform" format="counter"/> specify the decoding processes using syntax element | ||||
| s in all syntax structures. It is the requirement of bitstream conformance that | ||||
| the coded tiles of the frame <bcp14>MUST</bcp14> contain tile data for every MB | ||||
| of the frame, such that the division of the frame into tiles and the division of | ||||
| the tiles into MBs each forms a partitioning of the frame.</t> | ||||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>After all the tiles in the current frame have been decoded, the dec oded frame is cropped using the cropping rectangle if FrameWidthInSamplesY is no t equal to FrameWidthInMbY * MbWidth or FrameHeightInSamplesY is not equal to Fr ameHeightInMbsY * MbHeight.</t> | <t>After all the tiles in the current frame have been decoded, the dec oded frame is cropped using the cropping rectangle if FrameWidthInSamplesY is no t equal to FrameWidthInMbY * MbWidth or FrameHeightInSamplesY is not equal to Fr ameHeightInMbsY * MbHeight.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The cropping rectangle, which specifies the samples of a frame that | <t>The cropping rectangle, which specifies the samples of a frame that | |||
| are output, is derived as follows.</t> | are output, is derived as follows:</t> | |||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The cropping rectangle contains the luma samples with horizonta l frame coordinates from 0 to FrameWidthInSampleY - 1 and vertical frame coordin ates from 0 to FrameHeightInSamplesY - 1, inclusive.</t> | <t>The cropping rectangle contains the luma samples with horizonta l frame coordinates from 0 to FrameWidthInSampleY - 1 and vertical frame coordin ates from 0 to FrameHeightInSamplesY - 1, inclusive.</t> | |||
| </li> | </li> | |||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul spacing="normal"> | ||||
| <li> | <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> | <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"> | |||
| <name>MB decoding process</name> | <name>MB Decoding Process</name> | |||
| <t>This process is invoked for each MB.</t> | <t>This process is invoked for each MB.</t> | |||
| <t>Input to this process is a luma location (xMb, yMb) specifying the to | <!-- [rfced] Please clarify "(when chroma_format_idc is equal to 2 or 3, Y, Cb, | |||
| p-left sample of the current luma MB relative to the top left luma sample of the | and Cr)." Perhaps "(when chroma_format_idc is equal to 2 or 3, and Y, Cb, and C | |||
| current frame. | r are specified)"? | |||
| Original: | ||||
| Outputs of this process are the | ||||
| reconstructed samples of all the NumComps color components (when | ||||
| chroma_format_idc is equal to 2 or 3, Y, Cb, and Cr) for the current | ||||
| MB. | ||||
| Similarly, please let us know how/if mention of Cb and Cr may be clarified here | ||||
| as well? | ||||
| Original: | ||||
| * When chroma_format_idc is not equal to 0, let recSamples[1] be a | ||||
| (MbWidthC)x(MbHeightC) array of the reconstructed samples of the | ||||
| second color component (when chroma_format_idc is equal to 2 or 3, | ||||
| Cb). | ||||
| ... | ||||
| * When chroma_format_idc is not equal to 0, let recSamples[2] be a | ||||
| (MbWidthC)x(MbHeightC) array of the reconstructed samples of the | ||||
| third color component(when chroma_format_idc is equal to 2 or 3, | ||||
| Cr). | ||||
| --> | ||||
| <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 | ||||
| current frame. | ||||
| Outputs of this process are the reconstructed samples of all the NumComps color components (when chroma_format_idc is equal to 2 or 3, Y, Cb, and Cr) for the cu rrent MB.</t> | Outputs of this process are the reconstructed samples of all the NumComps color components (when chroma_format_idc is equal to 2 or 3, Y, Cb, and Cr) for the cu rrent MB.</t> | |||
| <t>The following steps apply:</t> | <t>The following steps apply:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>Let recSamples[0] be a (MbWidth)x(MbHeight) array of the reconstr ucted samples of the first color component (when chroma_format_idc is equal to 2 or 3, Y).</t> | <t>Let recSamples[0] be a (MbWidth)x(MbHeight) array of the reconstr ucted samples of the first color component (when chroma_format_idc is equal to 2 or 3, Y).</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The block reconstruction process as specified in <xref target="bl ock-recon"/> is invoked with the luma location (xMb, yMb), the variable nBlkW se t equal to MbWidth, the variable nBlkH set equal to MbHeight, the variable cIdx set equal to 0, and the (MbWidth)x(MbHeight) array recSamples[0] as inputs, the output is a modified version of the (MbWidth)x(MbHeight) array recSamples[0], wh ich is the reconstructed samples of the first color component for the current MB .</t> | <t>The block reconstruction process as specified in <xref target="bl ock-recon"/> is invoked with the luma location (xMb, yMb), the variable nBlkW se t equal to MbWidth, the variable nBlkH set equal to MbHeight, the variable cIdx set equal to 0, and the (MbWidth)x(MbHeight) array recSamples[0] as inputs. The output is a modified version of the (MbWidth)x(MbHeight) array recSamples[0], wh ich is the reconstructed samples of the first color component for the current MB .</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>When chroma_format_idc is not equal to 0, let recSamples[1] be a (MbWidthC)x(MbHeightC) array of the reconstructed samples of the second color co mponent (when chroma_format_idc is equal to 2 or 3, Cb).</t> | <t>When chroma_format_idc is not equal to 0, let recSamples[1] be a (MbWidthC)x(MbHeightC) array of the reconstructed samples of the second color co mponent (when chroma_format_idc is equal to 2 or 3, Cb).</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>When chroma_format_idc is not equal to 0, the block reconstructio n process as specified in <xref target="block-recon"/> is invoked with the luma location (xMb, yMb), the variable nBlkW set equal to MbWidthC, the variable nBlk H set equal to MbHeightC, the variable cIdx set equal to 1, and the (MbWidthC)x( MbHeightC) array recSamples[1] as inputs, the output is a modified version of th e (MbWidthC)x(MbHeightC) array recSamples[1], which is the reconstructed samples of the second color component for the current MB.</t> | <t>When chroma_format_idc is not equal to 0, the block reconstructio n process as specified in <xref target="block-recon"/> is invoked with the luma location (xMb, yMb), the variable nBlkW set equal to MbWidthC, the variable nBlk H set equal to MbHeightC, the variable cIdx set equal to 1, and the (MbWidthC)x( MbHeightC) array recSamples[1] as inputs. The output is a modified version of t he (MbWidthC)x(MbHeightC) array recSamples[1], which is the reconstructed sample s of the second color component for the current MB.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>When chroma_format_idc is not equal to 0, let recSamples[2] be a (MbWidthC)x(MbHeightC) array of the reconstructed samples of the third color com ponent(when chroma_format_idc is equal to 2 or 3, Cr).</t> | <t>When chroma_format_idc is not equal to 0, let recSamples[2] be a (MbWidthC)x(MbHeightC) array of the reconstructed samples of the third color com ponent(when chroma_format_idc is equal to 2 or 3, Cr).</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>When chroma_format_idc is not equal to 0, the block reconstructio n process as specified in <xref target="block-recon"/> is invoked with the luma location (xMb, yMb), the variable nBlkW set equal to MbWidthC, the variable nBlk H set equal to MbHeightC, the variable cIdx set equal to 2, and the (MbWidthC)x( MbHeightC) array recSamples[2] as inputs, the output is a modified version of th e (MbWidthC)x(MbHeightC) array recSamples[2], which is the reconstructed samples of the third color component for the current MB.</t> | <t>When chroma_format_idc is not equal to 0, the block reconstructio n process as specified in <xref target="block-recon"/> is invoked with the luma location (xMb, yMb), the variable nBlkW set equal to MbWidthC, the variable nBlk H set equal to MbHeightC, the variable cIdx set equal to 2, and the (MbWidthC)x( MbHeightC) array recSamples[2] as inputs. The output is a modified version of th e (MbWidthC)x(MbHeightC) array recSamples[2], which is the reconstructed samples of the third color component for the current MB.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>When chroma_format_idc is equal to 4, let recSamples[3] be a (MbW idthC)x(MbHeightC) array of the reconstructed samples of the fourth color compon ent.</t> | <t>When chroma_format_idc is equal to 4, let recSamples[3] be a (MbW idthC)x(MbHeightC) array of the reconstructed samples of the fourth color compon ent.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>When chroma_format_idc is equal to 4, the block reconstruction pr ocess as specified in Section 6.2 is invoked with the luma location (xMb, yMb), the variable nBlkW set equal to MbWidthC, the variable nBlkH set equal to MbHeig htC, the variable cIdx set equal to 3, and the (MbWidthC)x(MbHeightC) array recS amples[3] as inputs, the output is a modified version of the (MbWidthC)x(MbHeigh tC) array recSamples[3], which is the reconstructed samples of the fourth color component for the current MB.</t> | <t>When chroma_format_idc is equal to 4, the block reconstruction pr ocess as specified in <xref target="block-recon"/> is invoked with the luma loca tion (xMb, yMb), the variable nBlkW set equal to MbWidthC, the variable nBlkH se t equal to MbHeightC, the variable cIdx set equal to 3, and the (MbWidthC)x(MbHe ightC) array recSamples[3] as inputs. The output is a modified version of the (M bWidthC)x(MbHeightC) array recSamples[3], which is the reconstructed 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"> | |||
| <name>Block reconstruction process</name> | <name>Block Reconstruction Process</name> | |||
| <t>Inputs to this process are:</t> | <t>Inputs to this process are:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>a luma location (xMb, yMb) specifying the top-left sample of the current MB relative to the top left luma sample of the current frame,</t> | <t>a luma location (xMb, yMb) specifying the top-left sample of the current MB relative to the top-left luma sample of the current frame,</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>two variables nBlkW and nBlkH specifying the width and the height of the current block,</t> | <t>two variables nBlkW and nBlkH specifying the width and the height of the current block,</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>a variable cIdx specifying the color component of the current blo ck, and</t> | <t>a variable cIdx specifying the color component of the current blo ck, and</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>an (nBlkW)x(nBlkH), array of recSamples of reconstructed block.</ t> | <t>an (nBlkW)x(nBlkH) array of recSamples of a reconstructed block.< /t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Output of this process is a modified version of the (nBlkW)x(nBlkH) a rray recSamples of reconstructed samples.</t> | <t>Output of this process is a modified version of the (nBlkW)x(nBlkH) a rray recSamples of reconstructed samples.</t> | |||
| <t>The following applies:</t> | <t>The following applies:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The variables numBlkX and numBlkY are derived as follows:</t> | <t>The variables numBlkX and numBlkY are derived as follows:</t> | |||
| </li> | <ul spacing="normal"> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | <li> | |||
| <ul spacing="normal"> | <t>numBlkX = nBlkW // TrSize</t> | |||
| <li> | ||||
| <t>numBlkX = nBlkW // TrSize</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | <li> | |||
| <ul spacing="normal"> | <t>numBlkY = nBlkH // TrSize</t> | |||
| <li> | ||||
| <t>numBlkY = nBlkH // TrSize</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | <!-- [rfced] Section 6.2: Is there text missing after these bullets? Nothing ap | |||
| <ul spacing="normal"> | pears after "the following applies." Also, the formatting here looks odd. Plea | |||
| se review and let us know how the text may be updated. | ||||
| * For yIdx = 0..numBlkY - 1, the following applies: | ||||
| o For xIdx = 0..numBlkX - 1, the following applies: | ||||
| --> | ||||
| <li> | <li> | |||
| <t>For yIdx = 0..numBlkY - 1, the following applies:</t> | <t>For yIdx = 0..numBlkY - 1, the following applies:</t> | |||
| </li> | <ul spacing="normal"> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | <li> | |||
| <ul spacing="normal"> | <t>For xIdx = 0..numBlkX - 1, the following applies:</t> | |||
| <li> | ||||
| <t>For xIdx = 0..numBlkX - 1, the following applies:</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>The variables xBlk and yBlk are derived as follows:</t> | <t>The variables xBlk and yBlk are derived as follows:</t> | |||
| <ul empty="true"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <ul empty="true"> | <t>xBlk = xMb // (cIdx==0? 1: SubWidthC) + xIdx*TrSize</t> | |||
| <li> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>xBlk = xMb // (cIdx==0? 1: SubWidthC) + xIdx*TrSize</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | <li> | |||
| <ul empty="true"> | <t>yBlk = yMb // (cIdx==0? 1: SubHeightC) + yIdx*TrSize</t> | |||
| <li> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>yBlk = yMb // (cIdx==0? 1: SubHeightC) + yIdx*TrSize</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | <li> | |||
| <t>The scaling and transformation process as specified in <xref targ | <t>The scaling and transformation process as specified in <xref | |||
| et="scaling-transform"/> is invoked with the location (xBlk, yBlk), the variable | target="scaling-transform"/> is invoked with the location (xBlk, | |||
| cIdx set equal to cIdx, the transform width nBlkW set equal to TrSize and the t | yBlk), the variable cIdx set equal to cIdx, the transform width | |||
| ransform height nBlkH set equal to TrSize as inputs, and the output is a (TrSize | nBlkW set equal to TrSize, and the transform height nBlkH set equal | |||
| )x(TrSize) array r of reconstructed block.</t> | to TrSize as inputs. The output is a (TrSize)x(TrSize) array r | |||
| of a reconstructed block.</t> | ||||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The (TrSize)x(TrSize) array recSamples is modified as follows:</t > | <t>The (TrSize)x(TrSize) array recSamples is modified as follows:</t > | |||
| </li> | <ul spacing="normal"> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | <li> | |||
| <t>recSamples[(xIdx * TrSize) + i, (yIdx * TrSize) + j] = r[i,j] , with i=0..TrSize-1, j=0..TrSize-1</t> | <t>recSamples[(xIdx * TrSize) + i, (yIdx * TrSize) + j] = r[i,j] , with i=0..TrSize-1, j=0..TrSize-1</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="scaling-transform"> | <section anchor="scaling-transform"> | |||
| <name>Scaling and transformation process</name> | <name>Scaling and Transformation Process</name> | |||
| <t>Inputs to this process are:</t> | <t>Inputs to this process are:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>a location (xBlkY, yBlkY) of the current color component specifyi ng the top-left sample of the current block relative to the top-left sample of t he current frame,</t> | <t>a location (xBlkY, yBlkY) of the current color component specifyi ng the top-left sample of the current block relative to the top-left sample of t he current frame,</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>a variable cIdx specifying the color component of the current blo ck,</t> | <t>a variable cIdx specifying the color component of the current blo ck,</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>a variable nBlkW specifying the width of the current block, and</ t> | <t>a variable nBlkW specifying the width of the current block, and</ t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>a variable nBlkH specifying the height of the current block.</t> | <t>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 samples r with elements r[x][y].</t> | <t>Output of this process is the (nBlkW)x(nBlkH) array of reconstructed samples r with elements r[x][y].</t> | |||
| <t>The quantization parameter qP is derived as follows:</t> | <t>The quantization parameter qP is derived as follows:</t> | |||
| <ul empty="true"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <ul empty="true"> | <t>qP = Qp[cIdx] + QpBdOffset</t> | |||
| <li> | ||||
| <t>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 llows:</t> | <t>The (nBlKW)x(nBlkH) array of reconstructed samples r is derived as fo llows:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The scaling process for transform coefficients as specified in <x ref target="scaling-process"/> is invoked with the block location (xBlkY, yBlkY) , the block width nBlkW and the block height nBlkH, the color component variable cIdx, and the quantization parameter qP as inputs, and the output is an (nBlkW) x(nBlkH) array of scaled transform coefficients d.</t> | <t>The scaling process for transform coefficients as specified in <x ref target="scaling-process"/> is invoked with the block location (xBlkY, yBlkY) , the block width nBlkW and the block height nBlkH, the color component variable cIdx, and the quantization parameter qP as inputs. The output is an (nBlkW)x(nB lkH) array of scaled transform coefficients d.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <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> | <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. The output is an (nBlkW)x(nBlkH) array of reconstructed samples r .</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The variable bdShift is derived as follows:</t> | <t>The variable bdShift is derived as follows:</t> | |||
| </li> | <ul spacing="normal"> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | <li> | |||
| <t>bdShift = 20 - BitDepth</t> | <t>bdShift = 20 - BitDepth</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | <li> | |||
| <t>The reconstructed sample values 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 = 0..nBlkH - 1 are modified as follows:</t> | |||
| </li> | <ul spacing="normal"> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | <li> | |||
| <t>r[x][y] = clip(0, (1 << BitDepth)-1, ((r[x][y]+(1 <& lt; (bdShift-1)))>>bdShift) + (1 << (BitDepth-1)))</t> | <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"> | |||
| <name>Scaling process for transform coefficients</name> | <name>Scaling Process for Transform Coefficients</name> | |||
| <t>Inputs to this process are:</t> | <t>Inputs to this process are:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>a location (xBlkY, yBlkY) of the current color component specif ying the top-left sample of the current block relative to the top-left sample of the current frame,</t> | <t>a location (xBlkY, yBlkY) of the current color component specif ying the top-left sample of the current block relative to the top-left sample of the current frame,</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>a variable nBlkW specifying the width of the current block,</t> | <t>a variable nBlkW specifying the width of the current block,</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>a variable nBlkH specifying the height of the current block,</t > | <t>a variable nBlkH specifying the height of the current block,</t > | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>a variable cIdx specifying the color component of the current b lock, and</t> | <t>a variable cIdx specifying the color component of the current b lock, and</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>a variable qP specifying the quantization parameter.</t> | <t>a variable qP specifying the quantization parameter.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Output of this process is the (nBlkW)x(nBlkH) array d of scaled tra nsform coefficients with elements d[x][y].</t> | <t>Output of this process is the (nBlkW)x(nBlkH) array d of scaled tra nsform coefficients with elements d[x][y].</t> | |||
| <t>The variable bdShift is derived as follows:</t> | <t>The variable bdShift is derived as follows:</t> | |||
| <ul empty="true"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <ul empty="true"> | <t>bdShift = BitDepth + ((log2(nBlkW) + log2(nBlkH)) // 2) - 5</t> | |||
| <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>The list levelScale[] is specified as follows:</t> | |||
| <ul empty="true"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <ul empty="true"> | <t>levelScale[k] = {40, 45, 51, 57, 64, 71} with k = 0..5.</t> | |||
| <li> | ||||
| <t>levelScale[k] = {40, 45, 51, 57, 64, 71} with k = 0..5.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>For the derivation of the scaled transform coefficients d[x][y] wit h x = 0..nBlkW - 1, y = 0..nBlkH - 1, the following applies:</t> | <t>For the derivation of the scaled transform coefficients d[x][y] wit h x = 0..nBlkW - 1, y = 0..nBlkH - 1, the following applies:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The scaled transform coefficient d[x][y] is derived as follows: </t> | <t>The scaled transform coefficient d[x][y] is derived as follows: </t> | |||
| </li> | <ul spacing="normal"> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | <li> | |||
| <t>d[x][y] = clip(-32768, 32767, ((TransCoeff[cIdx][xBlkY][yBl kY] * QMatrix[cIdx][x][y] * levelScale[qP % 6] << (qP//6)) + (1 << ( bdShift-1)) >> bdShift))</t> | <t>d[x][y] = clip(-32768, 32767, ((TransCoeff[cIdx][xBlkY][yBl kY] * QMatrix[cIdx][x][y] * levelScale[qP % 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"> | |||
| <name>Process for scaled transform coefficients</name> | <name>Process for Scaled Transform Coefficients</name> | |||
| <section anchor="general-1"> | <section anchor="general-1"> | |||
| <name>General</name> | <name>General</name> | |||
| <t>Inputs to this process are:</t> | <t>Inputs to this process are:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>a location (xBlkY, yBlkY) of the current color component spec ifying the top-left sample of the current block relative to the top-left sample of the current frame,</t> | <t>a location (xBlkY, yBlkY) of the current color component spec ifying the top-left sample of the current block relative to the top-left sample of the current frame,</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>a variable nBlkW specifying the width of the current block,</ t> | <t>a variable nBlkW specifying the width of the current block,</ t> | |||
| </li> | </li> | |||
| skipping to change at line 2219 ¶ | skipping to change at line 1920 ¶ | |||
| <t>a variable nBlkH specifying the height of the current block, and</t> | <t>a variable nBlkH specifying the height of the current block, and</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>an (nBlkW)x(nBlkH) array d of scaled transform coefficients w ith elements d[x][y].</t> | <t>an (nBlkW)x(nBlkH) array d of scaled transform coefficients w ith elements d[x][y].</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>Output of this process is the (nBlkW)x(nBlkH) array r of reconstr ucted samples with elements r[x][y].</t> | <t>Output of this process is the (nBlkW)x(nBlkH) array r of reconstr ucted samples with elements r[x][y].</t> | |||
| <t>The (nBlkW)x(nBlkH) array r of reconstructed samples is derived a s follows:</t> | <t>The (nBlkW)x(nBlkH) array r of reconstructed samples is derived a s follows:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>Each (vertical) column of scaled transform coefficients d[x][ y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1 is transformed to e[x][y] with x = 0. .nBlkW - 1, y = 0..nBlkH - 1 by invoking the one- dimensional transformation pro cess as specified in <xref target="transform-process"/> for each column x = 0..n BlkW - 1 with the size of the transform block nBlkH, and the list d[x][y] with y = 0..nBlkH - 1 as inputs, and the output is the list e[x][y] with y = 0..nBlkH - 1.</t> | <t>Each (vertical) column of scaled transform coefficients d[x][ y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1 is transformed to e[x][y] with x = 0. .nBlkW - 1, y = 0..nBlkH - 1 by invoking the one-dimensional transformation proc ess as specified in <xref target="transform-process"/> for each column x = 0..nB lkW - 1 with the size of the transform block nBlkH, and the list d[x][y] with y = 0..nBlkH - 1 as inputs. The output is the list e[x][y] with y = 0..nBlkH - 1.< /t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The following applies:</t> | <t>The following applies:</t> | |||
| </li> | <ul spacing="normal"> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | <li> | |||
| <t>g[x][y] = (e[x][y] + 64) >> 7</t> | <t>g[x][y] = (e[x][y] + 64) >> 7</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | <li> | |||
| <t>Each (horizontal) row of the resulting array g[x][y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1 is transformed to r[x][y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1 by invoking the one-dimensional transformation process as spec ified in <xref target="transform-process"/> for each row y = 0..nBlkH - 1 with t he size of the transform block nBlkW, and the list g[x][y] with x = 0..nBlkW - 1 as inputs, and the output is the list r[x][y] with x = 0..nBlkW - 1.</t> | <t>Each (horizontal) row of the resulting array g[x][y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1 is transformed to r[x][y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1 by invoking the one-dimensional transformation process as spec ified in <xref target="transform-process"/> for each row y = 0..nBlkH - 1 with t he size of the transform block nBlkW, and the list g[x][y] with x = 0..nBlkW - 1 as inputs. The output is the list r[x][y] with x = 0..nBlkW - 1.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="transform-process"> | <section anchor="transform-process"> | |||
| <name>Transformation process</name> | <name>Transformation Process</name> | |||
| <t>Inputs to this process are:</t> | <t>Inputs to this process are:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>a variable nTbS specifying the sample size of scaled transfor m coefficients, and</t> | <t>a variable nTbS specifying the sample size of scaled transfor m coefficients, and</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>a list of scaled transform coefficients x with elements x[j], with j = 0..(nTbS - 1).</t> | <t>a list of scaled transform coefficients x with elements x[j], with j = 0..(nTbS - 1).</t> | |||
| </li> | </li> | |||
| <!-- [rfced] Should the last 3 bulleted items be regular text (i.e., not part of | ||||
| the bulleted list)? | ||||
| 6.3.2.2. Transformation process | ||||
| Inputs to this process are: | ||||
| * a variable nTbS specifying the sample size of scaled transform | ||||
| coefficients, and | ||||
| * a list of scaled transform coefficients x with elements x[j], with | ||||
| j = 0..(nTbS - 1). | ||||
| * Output of this process is the list of transformed samples y with | ||||
| elements y[i], with i = 0..(nTbS - 1). | ||||
| * The transformation matrix derivation process as specified in | ||||
| Section 6.3.2.3. invoked with the transform size nTbS as input, | ||||
| and the transformation matrix transMatrix as output. | ||||
| * The list of transformed samples y[i] with i = 0..(nTbS - 1) is | ||||
| derived as follows: | ||||
| y[i] = sum(j = 0, nTbS - 1, transMatrix[i][j] * x[j]) | ||||
| --> | ||||
| <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> | <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> | |||
| <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> | <t>The transformation matrix derivation process as specified in <xref target="matrix-process"/> is invoked with the transform size nTbS as input , and the transformation matrix transMatrix as output.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The list of transformed samples y[i] with i = 0..(nTbS - 1) i s derived as follows:</t> | <t>The list of transformed samples y[i] with i = 0..(nTbS - 1) i s derived as follows:</t> | |||
| </li> | <ul spacing="normal"> | |||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | <li> | |||
| <t>y[i] = sum(j = 0, nTbS - 1, transMatrix[i][j] * x[j])</t> | <t>y[i] = sum(j = 0, nTbS - 1, transMatrix[i][j] * x[j])</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="matrix-process"> | <section anchor="matrix-process"> | |||
| <name>Transformation matrix derivation process</name> | <name>Transformation Matrix Derivation Process</name> | |||
| <t>Input to this process is a variable nTbS specifying the horizonta l sample size of scaled transform coefficients.</t> | <t>Input to this process is a variable nTbS specifying the horizonta l sample size of scaled transform coefficients.</t> | |||
| <t>Output of this process is the transformation matrix transMatrix.< /t> | <t>Output of this process is the transformation matrix transMatrix.< /t> | |||
| <t>The transformation matrix transMatrix is derived based on nTbs as follows:</t> | <t>The transformation matrix transMatrix is derived based on nTbs as follows:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>If nTbS is equal to 8, the following applies:</t> | <t>If nTbS is equal to 8, the following applies:</t> | |||
| </li> | ||||
| </ul> | ||||
| <figure anchor="transmatrix"> | <figure anchor="transmatrix"> | |||
| <name>Transform matrix for nTbS == 8</name> | <name>Transform matrix for nTbS == 8</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <name>Parsing process</name> | <name>Parsing Process</name> | |||
| <section anchor="process_h"> | <section anchor="process_h"> | |||
| <name>Process for syntax element type h(v)</name> | <name>Process for Syntax Element Type h(v)</name> | |||
| <t>This process is invoked for the parsing of syntax elements with descr iptor h(v) in <xref target="mb-layer"/> and <xref target="ac-coding"/>.</t> | <t>This process is invoked for the parsing of syntax elements with descr iptor h(v) in <xref target="mb-layer"/> and <xref target="ac-coding"/>.</t> | |||
| <section anchor="process-for-absdccoeffdiff"> | <section anchor="process-for-absdccoeffdiff"> | |||
| <name>Process for abs_dc_coeff_diff</name> | <name>Process for abs_dc_coeff_diff</name> | |||
| <t>Inputs to this process are bits for the abs_dc_coeff_diff syntax el ement. | <t>Inputs to this process are bits for the abs_dc_coeff_diff syntax el ement. | |||
| 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">kParam = clip(0, 5, PrevDcDiff >> 1)</t> | |||
| <li> | <t>The value of syntax element abs_dc_coeff_diff is obtained by invoki | |||
| <ul empty="true"> | ng the parsing process for variable-length codes as specified in <xref target="p | |||
| <li> | rocess-vlc"/> with kParam.</t> | |||
| <t>kParam = clip(0, 5, PrevDcDiff >> 1)</t> | ||||
| </li> | ||||
| </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"> | |||
| <name>Process for coeff_zero_run</name> | <name>Process for coeff_zero_run</name> | |||
| <t>Inputs to this process are bits for the coeff_zero_run syntax eleme nt.</t> | <t>Inputs to this process are bits for the coeff_zero_run syntax eleme nt.</t> | |||
| <t>Output of this process is a value of the coeff_zero_run syntax elem ent.</t> | <t>Output of this process is a value of the coeff_zero_run syntax elem ent.</t> | |||
| <t>The variable kParam is derived as follows:</t> | <t>The variable kParam is derived as follows:</t> | |||
| <ul empty="true"> | <t indent="3">kParam = clip(0, 2, PrevRun >> 2)</t> | |||
| <li> | <t>The value of syntax element coeff_zero_run is obtained by invoking | |||
| <ul empty="true"> | the parsing process for variable-length codes as specified in <xref target="proc | |||
| <li> | ess-vlc"/> with kParam.</t> | |||
| <t>kParam = clip(0, 2, PrevRun >> 2)</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| <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"> | |||
| <name>Process for abs_ac_coeff_minus1</name> | <name>Process for abs_ac_coeff_minus1</name> | |||
| <t>Inputs to this process are bits for the abs_ac_coeff_minus1 syntax element.</t> | <t>Inputs to this process are bits for the abs_ac_coeff_minus1 syntax element.</t> | |||
| <t>Output of this process is a value of the abs_ac_coeff_minus1 syntax element.</t> | <t>Output of this process is a value of the abs_ac_coeff_minus1 syntax element.</t> | |||
| <t>The variable kParam is derived as follows:</t> | <t>The variable kParam is derived as follows:</t> | |||
| <ul empty="true"> | <t indent="3">kParam = clip(0, 4, PrevLevel >> 2)</t> | |||
| <li> | <t>The value of syntax element abs_ac_coeff_minus1 is obtained by invo | |||
| <ul empty="true"> | king the parsing process for variable-length codes as specified in <xref target= | |||
| <li> | "process-vlc"/> with kParam.</t> | |||
| <t>kParam = clip(0, 4, PrevLevel >> 2)</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| <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"> | |||
| <name>Process for variable length codes</name> | <name>Process for Variable-Length Codes</name> | |||
| <t>Input to this process is kParam.</t> | <t>Input to this process is kParam.</t> | |||
| <t>Output of this process is a value, symbolValue, of a syntax element .</t> | <t>Output of this process is a value, symbolValue, of a syntax element .</t> | |||
| <t>The symbolValue is derived as follows:</t> | <t>The symbolValue is derived as follows:</t> | |||
| <figure anchor="parse_symbolValue"> | <figure anchor="parse_symbolValue"> | |||
| <name>Parsing process of symbolValue</name> | <name>Parsing process of symbolValue</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| symbolValue = 0 | symbolValue = 0 | |||
| parseExpGolomb = 1 | parseExpGolomb = 1 | |||
| k = kParam | k = kParam | |||
| stopLoop = 0 | stopLoop = 0 | |||
| skipping to change at line 2393 ¶ | skipping to change at line 2084 ¶ | |||
| 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>where the value returned from read_bits(n) is interpreted as a bina ry representation of an n-bit unsigned integer with the most significant bit wri tten first.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="codeword-generation-process-for-hv-informative"> | <section anchor="codeword-generation-process-for-hv-informative"> | |||
| <name>Codeword generation process for h(v) (informative)</name> | <name>Codeword Generation Process for h(v) (Informative)</name> | |||
| <t>This process specifies the code generation process for syntax element s with descriptor h(v).</t> | <t>This process specifies the code generation process for syntax element s with descriptor h(v).</t> | |||
| <section anchor="process-for-absdccoeffdiff-1"> | <section anchor="process-for-absdccoeffdiff-1"> | |||
| <name>Process for abs_dc_coeff_diff</name> | <name>Process for abs_dc_coeff_diff</name> | |||
| <t>Input to this process is a symbol value of the abs_dc_coeff_diff sy ntax element.</t> | <t>Input to this process is a symbol value of the abs_dc_coeff_diff sy ntax element.</t> | |||
| <t>Output of this process is a codeword of the abs_dc_coeff_diff synta x element.</t> | <t>Output of this process is a codeword of the abs_dc_coeff_diff synta x element.</t> | |||
| <t>The variable kParam is derived as follows:</t> | <t>The variable kParam is derived as follows:</t> | |||
| <ul empty="true"> | <t indent="3">kParam = clip(0, 5, PrevDcDiff >> 1)</t> | |||
| <li> | <t>The codeword of syntax element abs_dc_coeff_diff is obtained by inv | |||
| <ul empty="true"> | oking the generation process for variable-length codes as specified in <xref tar | |||
| <li> | get="process-generate-vlc"/> with the symbol value symbolValue and kParam.</t> | |||
| <t>kParam = clip(0, 5, PrevDcDiff >> 1)</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| <t>The codeword of syntax element abs_dc_coeff_diff is obtained by inv | ||||
| oking the generation process for variable length codes as specified in <xref tar | ||||
| get="process-generate-vlc"/> with the symbol value symbolValue and kParam.</t> | ||||
| </section> | </section> | |||
| <section anchor="process-for-coeffzerorun-1"> | <section anchor="process-for-coeffzerorun-1"> | |||
| <name>Process for coeff_zero_run</name> | <name>Process for coeff_zero_run</name> | |||
| <t>Input to this process is a symbol value of the coeff_zero_run synta x element.</t> | <t>Input to this process is a symbol value of the coeff_zero_run synta x element.</t> | |||
| <t>Output of this process is a codeword of the coeff_zero_run syntax e lement.</t> | <t>Output of this process is a codeword of the coeff_zero_run syntax e lement.</t> | |||
| <t>The variable kParam is derived as follows:</t> | <t>The variable kParam is derived as follows:</t> | |||
| <ul empty="true"> | <t indent="3">kParam = clip(0, 2, PrevRun >> 2)</t> | |||
| <li> | <t>The codeword of syntax element coeff_zero_run is obtained by invoki | |||
| <ul empty="true"> | ng the generation process for variable-length codes as specified in <xref target | |||
| <li> | ="process-generate-vlc"/> with the symbol value symbolValue and kParam.</t> | |||
| <t>kParam = clip(0, 2, PrevRun >> 2)</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| <t>The codeword of syntax element coeff_zero_run is obtained by invoki | ||||
| 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"> | |||
| <name>Process for abs_ac_coeff_minus1</name> | <name>Process for abs_ac_coeff_minus1</name> | |||
| <t>Input to this process is a symbol value of the abs_ac_coeff_minus1 syntax element.</t> | <t>Input to this process is a symbol value of the abs_ac_coeff_minus1 syntax element.</t> | |||
| <t>Output of this process is a codeword of the abs_ac_coeff_minus1 syn tax element.</t> | <t>Output of this process is a codeword of the abs_ac_coeff_minus1 syn tax element.</t> | |||
| <t>The variable kParam is derived as follows:</t> | <t>The variable kParam is derived as follows:</t> | |||
| <ul empty="true"> | <t indent="3">kParam = clip(0, 4, PrevLevel >> 2)</t> | |||
| <li> | <t>The codeword of syntax element abs_ac_coeff_minus1 is obtained by i | |||
| <ul empty="true"> | nvoking the generation for variable-length codes as specified in <xref target="p | |||
| <li> | rocess-generate-vlc"/> with the symbol value symbolValue and kParam.</t> | |||
| <t>kParam = clip(0, 4, PrevLevel >> 2)</t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| <t>The codeword of syntax element abs_ac_coeff_minus1 is obtained by i | ||||
| 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"> | |||
| <name>Process for variable length codes</name> | <name>Process for Variable-Length Codes</name> | |||
| <t>Inputs to this process are symbolVal and kParam</t> | <t>Inputs to this process are symbolVal and kParam</t> | |||
| <t>Output of this process is a codeword of a syntax element.</t> | <t>Output of this process is a codeword of a syntax element.</t> | |||
| <t>The codeword is derived as follows:</t> | <t>The codeword is derived as follows:</t> | |||
| <figure anchor="gen_symbolValue"> | <figure anchor="gen_symbolValue"> | |||
| <name>Generating bits from symbolValue</name> | <name>Generating bits from symbolValue</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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) | |||
| skipping to change at line 2482 ¶ | skipping to change at line 2148 ¶ | |||
| 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>where a codeword generated from put_bits(v, n) is interpreted as a binary representation of an n-bit unsigned integer value v with the most signifi cant bit written first.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="appendix-metadata"> | <section anchor="appendix-metadata"> | |||
| <name>Metadata information</name> | <name>Metadata Information</name> | |||
| <section anchor="metadata-payload"> | <section anchor="metadata-payload"> | |||
| <name>Metadata payload</name> | <name>Metadata Payload</name> | |||
| <figure anchor="syntax-metadatapayload"> | <figure anchor="syntax-metadatapayload"> | |||
| <name>metadata_payload() syntax code</name> | <name>metadata_payload() syntax code</name> | |||
| <!-- [rfced] Please confirm that no additional explanatory text is needed after | ||||
| Figure 28. --> | ||||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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) | | |||
| } | | } | | |||
| skipping to change at line 2518 ¶ | skipping to change at line 2185 ¶ | |||
| 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> | |||
| </section> | </section> | |||
| <section anchor="list-of-metadata-syntax-and-semantics"> | <section anchor="list-of-metadata-syntax-and-semantics"> | |||
| <name>List of metadata syntax and semantics</name> | <name>List of Metadata Syntax and Semantics</name> | |||
| <section anchor="filler-metadata"> | <section anchor="filler-metadata"> | |||
| <name>Filler metadata</name> | <name>Filler Metadata</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <ul spacing="normal"> | <dt>ff_byte</dt> | |||
| <li> | <dd>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"> | |||
| <name>Recommendation ITU-T T.35 metadata</name> | <name>Recommendation ITU-T T.35 Metadata</name> | |||
| <t>This metadata contains information registered as specified in <xref target="ITUT-T35"/>.</t> | <t>This metadata contains information registered as specified in <xref target="ITUT-T35"/>.</t> | |||
| <figure anchor="syntax-metat35"> | <figure anchor="syntax-metat35"> | |||
| <name>metadata_itu_t_t35() syntax code</name> | <name>metadata_itu_t_t35() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>itu_t_t35_country_code</dt> | |||
| <t>itu_t_t35_country_code</t> | <dd><bcp14>MUST</bcp14> be a byte having the semantics of country co | |||
| </li> | de as specified in Annex A of <xref target="ITUT-T35"/>.</dd> | |||
| </ul> | <dt>itu_t_t35_country_code_extension</dt> | |||
| <ul empty="true"> | <dd><bcp14>MUST</bcp14> be a byte having the semantics of country co | |||
| <li> | de as specified in Annex B of <xref target="ITUT-T35"/>.</dd> | |||
| <t>MUST be a byte having the semantics of country code as specifie | <dt>itu_t_t35_payload[i]</dt> | |||
| d in Annex A of <xref target="ITUT-T35"/>.</t> | <dd><bcp14>MUST</bcp14> be a byte having the semantics of data regis | |||
| </li> | tered as specified in <xref target="ITUT-T35"/>.</dd> | |||
| </ul> | </dl> | |||
| <ul spacing="normal"> | <t>The terminal provider code and terminal provider oriented code as s | |||
| <li> | pecified in <xref target="ITUT-T35"/> <bcp14>MUST</bcp14> be contained in the fi | |||
| <t>itu_t_t35_country_code_extension</t> | rst one or more bytes of the itu_t_t35_payload. Any remaining bytes in itu_t_t35 | |||
| </li> | _payload data <bcp14>MUST</bcp14> be data having syntax and semantics as specifi | |||
| </ul> | ed by the entity identified by the <xref target="ITUT-T35"/> country code and te | |||
| <ul empty="true"> | rminal provider code. Note that any metadata to be carried with this type of pay | |||
| <li> | load is expected to have been registered through either national administrator, | |||
| <t>MUST be a byte having the semantics of country code as specifie | the Alliance for Telecommuncations Industry Solutions (ATIS) or the ITUT-T Telec | |||
| d in Annex B of <xref target="ITUT-T35"/>.</t> | ommnunication Standardization Bureau (TSB) as specified in <xref target="ITUT-T3 | |||
| </li> | 5"/>.</t> | |||
| </ul> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>itu_t_t35_payload[i]</t> | ||||
| </li> | ||||
| </ul> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <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"> | |||
| <name>Mastering display color volume metadata</name> | <name>Mastering Display Color Volume Metadata</name> | |||
| <figure anchor="syntax-metamdcv"> | <figure anchor="syntax-metamdcv"> | |||
| <name>metadata_mdcv() syntax code</name> | <name>metadata_mdcv() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>primary_chromaticity_x[i]</dt> | |||
| <t>primary_chromaticity_x[i]</t> | <!-- [rfced] Will readers be familiar with CIE 1931? Please consider whether a | |||
| </li> | reference should be added. Note that "CIE 1931" is mentioned 4 times. If you w | |||
| </ul> | ould like to add a reference, please provide the reference entry. | |||
| <ul empty="true"> | ||||
| <li> | Original: | |||
| <t>specifies a 0.16 fixed-point format of X chromaticity coordinat | * primary_chromaticity_x[i] | |||
| e of mastering display as defined by CIE 1931, where i = 0, 1, 2 specifies Red, | ||||
| Green, Blue respectively.</t> | specifies a 0.16 fixed-point format of X chromaticity coordinate | |||
| </li> | of mastering display as defined by CIE 1931, where i = 0, 1, 2 | |||
| </ul> | specifies Red, Green, Blue respectively. | |||
| <ul spacing="normal"> | --> | |||
| <li> | <dd>specifies a 0.16 fixed-point format of X chromaticity | |||
| <t>primary_chromaticity_y[i]</t> | coordinate of mastering display as defined by CIE 1931, where i = | |||
| </li> | 0, 1, 2 specifies Red, Green, Blue, respectively.</dd> | |||
| </ul> | <dt>primary_chromaticity_y[i]</dt> | |||
| <ul empty="true"> | <dd>specifies a 0.16 fixed-point format of Y chromaticity | |||
| <li> | coordinate of mastering display as defined by CIE 1931, where i = | |||
| <t>specifies a 0.16 fixed-point format of Y 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>white_point_chromaticity_x</dt> | |||
| Green, Blue respectively.</t> | <dd>specifies a 0.16 fixed-point format of white point X | |||
| </li> | chromaticity coordinate of mastering display as defined by CIE | |||
| </ul> | 1931.</dd> | |||
| <ul spacing="normal"> | <dt>white_point_chromaticity_y</dt> | |||
| <li> | <dd>specifies a 0.16 fixed-point format of white point Y | |||
| <t>white_point_chromaticity_x</t> | chromaticity coordinate as mastering display defined by CIE | |||
| </li> | 1931.</dd> | |||
| </ul> | <dt>max_mastering_luminance</dt> | |||
| <ul empty="true"> | <dd>is a 24.8 fixed-point format of maximum 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>min_mastering_luminance</dt> | |||
| ty coordinate of mastering display as defined by CIE 1931.</t> | <dd>is an 18.14 fixed-point format of minimum display mastering | |||
| </li> | luminance, represented in candelas per square meter.</dd> | |||
| </ul> | </dl> | |||
| <ul spacing="normal"> | ||||
| <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"> | |||
| <name>Content light level information metadata</name> | <name>Content Light-Level Information Metadata</name> | |||
| <figure anchor="syntax-metatcontentlight"> | <figure anchor="syntax-metatcontentlight"> | |||
| <name>metadata_cll() syntax code</name> | <name>metadata_cll() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>max_cll</dt> | |||
| <t>max_cll</t> | <dd>specifies the maximum content light level information as specifi | |||
| </li> | ed in <xref target="CEA-861.3"/>, Appendix A.</dd> | |||
| </ul> | <dt>max_fall</dt> | |||
| <ul empty="true"> | <dd>specifies the maximum frame-average light level information as s | |||
| <li> | pecified in <xref target="CEA-861.3"/>, Appendix A.</dd> | |||
| <t>specifies the maximum content light level information as specif | </dl> | |||
| ied in <xref target="CEA-861.3"/>, Appendix A.</t> | ||||
| </li> | ||||
| </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"> | |||
| <name>User defined metadata</name> | <name>User-Defined Metadata</name> | |||
| <t>This metadata has user data identified by a universal unique identi | <t>This metadata has user data identified by a universal unique identi | |||
| fier as specifies in <xref target="RFC9562"/>, the contents of which are not spe | fier as specified in <xref target="RFC9562"/>, the contents of which are not spe | |||
| cified in this document.</t> | cified in this document.</t> | |||
| <figure anchor="syntax-metauserdef"> | <figure anchor="syntax-metauserdef"> | |||
| <name>metadata_user_defined() syntax code</name> | <name>metadata_user_defined() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>uuid</dt> | |||
| <t>uuid</t> | <!-- [rfced] Please note that we expanded UUID as "Universally Unique Identifier | |||
| </li> | ." | |||
| </ul> | Please let us know if any corrections are needed. | |||
| <ul empty="true"> | ||||
| <li> | Original: | |||
| <t>MUST be a 128-bit value specified as a generated UUID according | * uuid | |||
| to the procedures specified in <xref target="RFC9562"/>.</t> | ||||
| </li> | MUST be a 128-bit value specified as a generated UUID according to | |||
| </ul> | the procedures specified in [RFC9562]. | |||
| <ul spacing="normal"> | --> | |||
| <li> | ||||
| <t>user_defined_data_payload[i]</t> | <dd><bcp14>MUST</bcp14> be a 128-bit value specified as a | |||
| </li> | generated Universally Unique Identifier (UUID) according to the proc | |||
| </ul> | edures specified in <xref | |||
| <ul empty="true"> | target="RFC9562"/>.</dd> | |||
| <li> | <dt>user_defined_data_payload[i]</dt> | |||
| <t>MUST be a byte having user defined syntax and semantics as spec | <dd><bcp14>MUST</bcp14> be a byte having user-defined syntax and | |||
| ified by the UUID generator.</t> | semantics as specified by the UUID generator.</dd> | |||
| </li> | </dl> | |||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="undefined-metadata"> | <section anchor="undefined-metadata"> | |||
| <name>Undefined metadata</name> | <name>Undefined Metadata</name> | |||
| <figure anchor="syntax-metaund"> | <figure anchor="syntax-metaund"> | |||
| <name>metadata_undefined() syntax code</name> | <name>metadata_undefined() syntax code</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| 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"> | |||
| <li> | <dt>undefined_metadata_payload_byte[i]</dt> | |||
| <t>undefined_metadata_payload_byte[i]</t> | <dd>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"> | |||
| <name>Profiles, levels, and bands</name> | <name>Profiles, Levels, and Bands</name> | |||
| <section anchor="overview-of-profiles-levels-and-bands"> | <section anchor="overview-of-profiles-levels-and-bands"> | |||
| <name>Overview of profiles, levels, and bands</name> | <name>Overview of Profiles, Levels, and Bands</name> | |||
| <t>Profiles, levels and bands specify restrictions on a coded frame and | <t>Profiles, levels, and bands specify restrictions on a coded frame and | |||
| hence limits on the capabilities needed to decode the coded frame. Profiles, lev | hence limits on the capabilities needed to decode the coded frame. Profiles, le | |||
| els and bands are also used to indicate interoperability points between individu | vels, and bands are also used to indicate interoperability points between indivi | |||
| al decoder implementations.</t> | dual decoder implementations.</t> | |||
| <t>Each profile specifies a subset of algorithmic features and limits th | <t>Each profile specifies a subset of algorithmic features and limits th | |||
| at MUST be supported by all decoders conforming to that profile.</t> | at <bcp14>MUST</bcp14> be supported by all decoders conforming to that profile.< | |||
| <ul empty="true"> | /t> | |||
| <li> | <t indent="3">NOTE: This document does not include individually sele | |||
| <t>NOTE: This document does not include individually selectable "opt | ctable "options" at the decoder, as this would increase interoperability difficu | |||
| ions" at the decoder, as this would increase interoperability difficulties.</t> | lties.</t> | |||
| </li> | <t indent="3">NOTE: Encoders are not required to make use of any par | |||
| </ul> | ticular subset of features supported in a profile.</t> | |||
| <ul empty="true"> | <!-- [rfced] We are having trouble parsing this sentence. Perhaps "to specifica | |||
| <li> | lly create different sets of constraints" is intended? | |||
| <t>NOTE: Encoders are not required to make use of any particular sub | ||||
| set of features supported in a profile.</t> | Original: | |||
| </li> | For example, a certain level L and a certain band | |||
| </ul> | B can be combined with either profile X or profile Y to specifically | |||
| different set of constraints. | ||||
| --> | ||||
| <t>Each level with a band specifies a set of limits on the values that m ay be taken by the syntax elements of this document. For any given profile, a le vel with a band generally corresponds to a particular decoder processing load an d memory capability. The constraints set by levels and bands are orthogonal to t he constraints defined by profiles so that the same set of level and band defini tions is used with all profiles. For example, a certain level L and a certain ba nd B can be combined with either profile X or profile Y to specifically differen t set of constraints.</t> | <t>Each level with a band specifies a set of limits on the values that m ay be taken by the syntax elements of this document. For any given profile, a le vel with a band generally corresponds to a particular decoder processing load an d memory capability. The constraints set by levels and bands are orthogonal to t he constraints defined by profiles so that the same set of level and band defini tions is used with all profiles. For example, a certain level L and a certain ba nd B can be combined with either profile X or profile Y to specifically differen t set of constraints.</t> | |||
| <ul empty="true"> | <t indent="3">NOTE: Individual implementations may support a differe | |||
| <li> | nt level for each supported profile.</t> | |||
| <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"> | |||
| <name>Requirements on video decoder capability</name> | <name>Requirements on Video Decoder Capability</name> | |||
| <t>Capabilities of video decoders conforming to this document are specif | <t>Capabilities of video decoders conforming to this document are specif | |||
| ied in terms of the ability to decode video streams conforming to the constraint | ied in terms of the ability to decode video streams conforming to the constraint | |||
| s of profiles, levels and bands specified in this section. When expressing the c | s of profiles, levels, and bands specified in this section. When expressing the | |||
| apabilities of a decoder for a specified profile, the level and the band support | capabilities of a decoder for a specified profile, the level and the band suppor | |||
| ed for that profile MUST also be expressed.</t> | ted for that profile <bcp14>MUST</bcp14> also be expressed.</t> | |||
| <t>Specific values are specified in this section for the syntax elements | <t>Specific values are specified for the syntax elements profile_idc, le | |||
| profile_idc, level_idc and band_idc. All other values of profile_idc, level_idc | vel_idc, and band_idc. All other values of profile_idc, level_idc, and band_idc | |||
| and band_idc are reserved for future use.</t> | are reserved for future use.</t> | |||
| <ul empty="true"> | ||||
| <li> | <t indent="3">NOTE: Decoders <bcp14>SHALL NOT</bcp14> infer that a r | |||
| <t>NOTE: Decoders SHALL NOT infer that a reserved value of profile_i | eserved value of profile_idc between the values specified in this document indic | |||
| dc between the values specified in this document indicates intermediate capabili | ates intermediate capabilities between the specified profiles, as there are no r | |||
| ties between the specified profiles, as there are no restrictions on the method | estrictions on the method to be chosen for the use of such future reserved value | |||
| to be chosen for the use of such future reserved values. However, decoders MUST | s. However, decoders <bcp14>MUST</bcp14> infer that a reserved value of level_id | |||
| infer that a reserved value of level_idc and a reserved value of band_idc betwee | c and a reserved value of band_idc between the values specified in this document | |||
| n the values specified in this document indicates intermediate capabilities betw | indicates intermediate capabilities between the specified levels.</t> | |||
| een the specified levels.</t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="profiles"> | <section anchor="profiles"> | |||
| <name>Profiles</name> | <name>Profiles</name> | |||
| <section anchor="general-2"> | <section anchor="general-2"> | |||
| <name>General</name> | <name>General</name> | |||
| <t>All constraints for a coded frame that are specified are constraint s for the coded frame that are activated when the bitstream of the access unit i s decoded.</t> | <t>All constraints for a coded frame that are specified are constraint s for the coded frame that are activated when the bitstream of the access unit i s decoded.</t> | |||
| </section> | </section> | |||
| <section anchor="profile"> | <section anchor="profile"> | |||
| <name>422-10 profile</name> | <name>422-10 Profile</name> | |||
| <t>Conformance of a coded frame to the 422-10 profile is indicated by profile_idc equal to 33.</t> | <t>Conformance of a coded frame to the 422-10 profile is indicated by profile_idc equal to 33.</t> | |||
| <t>Coded frames conforming to the 422-10 profile MUST obey the followi ng constraints:</t> | <t>Coded frames conforming to the 422-10 profile <bcp14>MUST</bcp14> o bey the following constraints:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>chroma_format_idc MUST be equal to 2.</t> | <t>chroma_format_idc <bcp14>MUST</bcp14> be equal to 2.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>bit_depth_minus8 MUST be equal to 2.</t> | <t>bit_depth_minus8 <bcp14>MUST</bcp14> be equal to 2.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>pbu_type MUST be equal to 1</t> | <t>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_ | <!-- [rfced] This sentence appears many times in this document. May we update it | |||
| and_bands"/> MUST be fulfilled. Decoders conforming to the 422-10 profile at a s | as follows? | |||
| pecific level (identified by a specific value of L) and a specific band (identif | ||||
| ied by a specific value of B) MUST be capable of decoding all coded frames for w | Original: | |||
| hich all of the following conditions apply:</t> | Any levels and bands constraints specified in Section 9.4 MUST be | |||
| fulfilled. | ||||
| Perhaps: | ||||
| Any levels and bands MUST adhere to the constraints specified in Section 9.4. | ||||
| --> | ||||
| <t>Any levels and bands constraints specified in <xref target="levels_ | ||||
| and_bands"/> <bcp14>MUST</bcp14> be fulfilled. Decoders conforming to the 422-10 | ||||
| profile at a specific level (identified by a specific value of L) and a specifi | ||||
| c band (identified by a specific value of B) <bcp14>MUST</bcp14> be capable of d | ||||
| ecoding all coded frames for which all of the following conditions apply:</t> | ||||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to the 422-10 profile.< /t> | <t>The coded frame is indicated to conform to the 422-10 profile.< /t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <!-- [rfced] Is "level B" correct, as opposed to "band B"? Note that "level B" | ||||
| appears multiple times. | ||||
| * The coded frame is indicated to conform to a band (by a specific | ||||
| value of band_idc) that is lower than or equal to level B. | ||||
| --> | ||||
| <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="profile-1"> | <section anchor="profile-1"> | |||
| <name>422-12 profile</name> | <name>422-12 Profile</name> | |||
| <t>Conformance of a coded frame to the 422-12 profile is indicated by profile_idc equal to 44.</t> | <t>Conformance of a coded frame to the 422-12 profile is indicated by profile_idc equal to 44.</t> | |||
| <t>Coded frames conforming to the 422-12 profile MUST obey the followi ng constraints:</t> | <t>Coded frames conforming to the 422-12 profile <bcp14>MUST</bcp14> o bey the following constraints:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>chroma_format_idc MUST be equal to 2.</t> | <t>chroma_format_idc <bcp14>MUST</bcp14> be equal to 2.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>bit_depth_minus8 MUST be in the range of 2 to 4.</t> | <t>bit_depth_minus8 <bcp14>MUST</bcp14> be in the range of 2 to 4. </t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>pbu_type MUST be equal to 1</t> | <t>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_ and_bands"/> MUST be fulfilled. Decoders conforming to the 422-12 profile at a s pecific level (identified by a specific value of L) and a specific band (identif ied by a specific value of B) MUST be capable of decoding all coded frames for w hich all of the following conditions apply:</t> | <t>Any levels and bands constraints specified in <xref target="levels_ and_bands"/> <bcp14>MUST</bcp14> be fulfilled. Decoders conforming to the 422-12 profile at a specific level (identified by a specific value of L) and a specifi c band (identified by a specific value of B) <bcp14>MUST</bcp14> be capable of d ecoding all coded frames for which all of the following conditions apply:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to the 422-12 profile o r the 422-10 profile.</t> | <t>The coded frame is indicated to conform to the 422-12 profile o r the 422-10 profile.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="profile-2"> | <section anchor="profile-2"> | |||
| <name>444-10 profile</name> | <name>444-10 Profile</name> | |||
| <t>Conformance of a coded frame to the 444-10 profile is indicated by profile_idc equal to 55.</t> | <t>Conformance of a coded frame to the 444-10 profile is indicated by profile_idc equal to 55.</t> | |||
| <t>Coded frames conforming to the 444-10 profile MUST obey the followi ng constraints:</t> | <t>Coded frames conforming to the 444-10 profile <bcp14>MUST</bcp14> o bey the following constraints:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>chroma_format_idc MUST be in the range of 2 to 3.</t> | <t>chroma_format_idc <bcp14>MUST</bcp14> be in the range of 2 to 3 .</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>bit_depth_minus8 MUST be equal to 2.</t> | <t>bit_depth_minus8 <bcp14>MUST</bcp14> be equal to 2.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>pbu_type MUST be equal to 1</t> | <t>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_ and_bands"/> MUST be fulfilled. Decoders conforming to the 444-10 profile at a s pecific level (identified by a specific value of L) and a specific band (identif ied by a specific value of B) MUST be capable of decoding all coded frames for w hich all of the following conditions apply:</t> | <t>Any levels and bands constraints specified in <xref target="levels_ and_bands"/> <bcp14>MUST</bcp14> be fulfilled. Decoders conforming to the 444-10 profile at a specific level (identified by a specific value of L) and a specifi c band (identified by a specific value of B) <bcp14>MUST</bcp14> be capable of d ecoding all coded frames for which all of the following conditions apply:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to the 444-10 profile o r the 422-10 profile.</t> | <t>The coded frame is indicated to conform to the 444-10 profile o r the 422-10 profile.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="profile-3"> | <section anchor="profile-3"> | |||
| <name>444-12 profile</name> | <name>444-12 Profile</name> | |||
| <t>Conformance of a coded frame to the 444-12 profile is indicated by profile_idc equal to 66.</t> | <t>Conformance of a coded frame to the 444-12 profile is indicated by profile_idc equal to 66.</t> | |||
| <t>Coded frames conforming to the 444-12 profile MUST obey the followi ng constraints:</t> | <t>Coded frames conforming to the 444-12 profile <bcp14>MUST</bcp14> o bey the following constraints:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>chroma_format_idc MUST be in the range of 2 to 3.</t> | <t>chroma_format_idc <bcp14>MUST</bcp14> be in the range of 2 to 3 .</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>bit_depth_minus8 MUST be in the range of 2 to 4.</t> | <t>bit_depth_minus8 <bcp14>MUST</bcp14> be in the range of 2 to 4. </t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>pbu_type MUST be equal to 1</t> | <t>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_ and_bands"/> MUST be fulfilled. Decoders conforming to the 444-12 profile at a s pecific level (identified by a specific value of L) and a specific band (identif ied by a specific value of B) MUST be capable of decoding all coded frames for w hich all of the following conditions apply:</t> | <t>Any levels and bands constraints specified in <xref target="levels_ and_bands"/> <bcp14>MUST</bcp14> be fulfilled. Decoders conforming to the 444-12 profile at a specific level (identified by a specific value of L) and a specifi c band (identified by a specific value of B) <bcp14>MUST</bcp14> be capable of d ecoding all coded frames for which all of the following conditions apply:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to the 444-12 profile, the 444-10 profile, the 422-12 profile, or the 422-10 profile.</t> | <t>The coded frame is indicated to conform to the 444-12 profile, the 444-10 profile, the 422-12 profile, or the 422-10 profile.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="profile-4"> | <section anchor="profile-4"> | |||
| <name>4444-10 profile</name> | <name>4444-10 Profile</name> | |||
| <t>Conformance of a coded frame to the 4444-10 profile is indicated by profile_idc equal to 77.</t> | <t>Conformance of a coded frame to the 4444-10 profile is indicated by profile_idc equal to 77.</t> | |||
| <t>Coded frames conforming to the 4444-10 profile MUST obey the follow ing constraints:</t> | <t>Coded frames conforming to the 4444-10 profile <bcp14>MUST</bcp14> obey the following constraints:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>chroma_format_idc MUST be in the range of 2 to 4.</t> | <t>chroma_format_idc <bcp14>MUST</bcp14> be in the range of 2 to 4 .</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>bit_depth_minus8 MUST be equal to 2.</t> | <t>bit_depth_minus8 <bcp14>MUST</bcp14> be equal to 2.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>pbu_type MUST be equal to 1</t> | <t>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_ and_bands"/> MUST be fulfilled. Decoders conforming to the 4444-10 profile at a specific level (identified by a specific value of L) and a specific band (identi fied by a specific value of B) MUST be capable of decoding all coded frames for which all of the following conditions apply:</t> | <t>Any levels and bands constraints specified in <xref target="levels_ and_bands"/> <bcp14>MUST</bcp14> be fulfilled. Decoders conforming to the 4444-1 0 profile at a specific level (identified by a specific value of L) and a specif ic band (identified by a specific value of B) <bcp14>MUST</bcp14> be capable of decoding all coded frames for which all of the following conditions apply:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to the 4444-10 profile, the 444-10 profile or the 422-10 profile.</t> | <t>The coded frame is indicated to conform to the 4444-10 profile, the 444-10 profile, or the 422-10 profile.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="profile-5"> | <section anchor="profile-5"> | |||
| <name>4444-12 profile</name> | <name>4444-12 Profile</name> | |||
| <t>Conformance of a coded frame to the 4444-12 profile is indicated by profile_idc equal to 88.</t> | <t>Conformance of a coded frame to the 4444-12 profile is indicated by profile_idc equal to 88.</t> | |||
| <t>Coded frames conforming to the 4444-12 profile MUST obey the follow ing constraints:</t> | <t>Coded frames conforming to the 4444-12 profile <bcp14>MUST</bcp14> obey the following constraints:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>chroma_format_idc MUST be in the range of 2 to 4.</t> | <t>chroma_format_idc <bcp14>MUST</bcp14> be in the range of 2 to 4 .</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>bit_depth_minus8 MUST be in the range of 2 to 4.</t> | <t>bit_depth_minus8 <bcp14>MUST</bcp14> be in the range of 2 to 4. </t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>pbu_type MUST be equal to 1</t> | <t>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_ and_bands"/> MUST be fulfilled. Decoders conforming to the 4444-12 profile at a specific level (identified by a specific value of L) and a specific band (identi fied by a specific value of B) MUST be capable of decoding all coded frames for which all of the following conditions apply:</t> | <t>Any levels and bands constraints specified in <xref target="levels_ and_bands"/> <bcp14>MUST</bcp14> be fulfilled. Decoders conforming to the 4444-1 2 profile at a specific level (identified by a specific value of L) and a specif ic band (identified by a specific value of B) <bcp14>MUST</bcp14> be capable of decoding all coded frames for which all of the following conditions apply:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to the 4444-12 profile, the 4444-10 profile, the 444-12 profile, the 444-10 profile, the 422-12 profile or the 422-10 profile.</t> | <t>The coded frame is indicated to conform to the 4444-12 profile, the 4444-10 profile, the 444-12 profile, the 444-10 profile, the 422-12 profile , or the 422-10 profile.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="profile-6"> | <section anchor="profile-6"> | |||
| <name>400-10 profile</name> | <name>400-10 Profile</name> | |||
| <t>Conformance of a coded frame to the 400-10 profile is indicated by profile_idc equal to 99.</t> | <t>Conformance of a coded frame to the 400-10 profile is indicated by profile_idc equal to 99.</t> | |||
| <t>Coded frames conforming to the 400-10 profile MUST obey the followi ng constraints:</t> | <t>Coded frames conforming to the 400-10 profile <bcp14>MUST</bcp14> o bey the following constraints:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>chroma_format_idc MUST be equal to 0.</t> | <t>chroma_format_idc <bcp14>MUST</bcp14> be equal to 0.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>bit_depth_minus8 MUST be equal to 2.</t> | <t>bit_depth_minus8 <bcp14>MUST</bcp14> be equal to 2.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>pbu_type MUST be equal to 1</t> | <t>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_ and_bands"/> MUST be fulfilled. Decoders conforming to the 400-10 profile at a s pecific level (identified by a specific value of L) and a specific band (identif ied by a specific value of B) MUST be capable of decoding all coded frames for w hich all of the following conditions apply:</t> | <t>Any levels and bands constraints specified in <xref target="levels_ and_bands"/> <bcp14>MUST</bcp14> be fulfilled. Decoders conforming to the 400-10 profile at a specific level (identified by a specific value of L) and a specifi c band (identified by a specific value of B) <bcp14>MUST</bcp14> be capable of d ecoding all coded frames for which all of the following conditions apply:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to the 400-10 profile.< /t> | <t>The coded frame is indicated to conform to the 400-10 profile.< /t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | <t>The coded frame is indicated to conform to a level (by a specif ic value of level_idc) that is lower than or equal to level L.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | <t>The coded frame is indicated to conform to a band (by a specifi c value of band_idc) that is lower than or equal to level B.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="levels_and_bands"> | <section anchor="levels_and_bands"> | |||
| <name>Levels and bands</name> | <name>Levels and Bands</name> | |||
| <section anchor="general-3"> | <section anchor="general-3"> | |||
| <name>General</name> | <name>General</name> | |||
| <t>For purposes of comparison of level capabilities, a particular leve l of each band is considered to be a lower level than some other level when the value of the level_idc of the particular level of each band is less than that of the other level.</t> | <t>For purposes of comparison of level capabilities, a particular leve l of each band is considered to be a lower level than some other level when the value of the level_idc of the particular level of each band is less than that of the other level.</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The luma sample rate (luma samples per second) MUST be less tha n or equal to "Max luma sample rate".</t> | <t>The luma sample rate (luma samples per second) <bcp14>MUST</bcp 14> be less than or equal to the "Max luma sample rate".</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The coded data rate (bits per second) MUST be less than or equa l to "Max luma sample rate".</t> | <t>The coded data rate (bits per second) <bcp14>MUST</bcp14> be le ss than or equal to the "Max luma sample rate".</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The value of tile_width_in_mbs MUST be greater than or equal to 16.</t> | <t>The value of tile_width_in_mbs <bcp14>MUST</bcp14> be greater t han or equal to 16.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The value of tile_height_in_mbs MUST be greater than or equal t o 8.</t> | <t>The value of tile_height_in_mbs <bcp14>MUST</bcp14> be greater than or equal to 8.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The value of TileCols MUST be less than or equal to 20.</t> | <t>The value of TileCols <bcp14>MUST</bcp14> be less than or equal to 20.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The value of TileRows MUST be less than or equal to 20.</t> | <t>The value of TileRows <bcp14>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"> | |||
| <name>Limits of levels and bands</name> | <name>Limits of Levels and Bands</name> | |||
| <t><xref target="_table-levels"/> specifies the limits for each level of each band. | <t><xref target="_table-levels"/> specifies the limits for 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"> | |||
| <li> | <li> | |||
| <t>level_idc MUST be set equal to a value of 30 times the level nu mber specified in <xref target="_table-levels"/>.</t> | <t>level_idc <bcp14>MUST</bcp14> be set equal to a value of 30 tim es the level number specified in <xref target="_table-levels"/>.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <table anchor="_table-levels"> | <table anchor="_table-levels"> | |||
| <name>General level limits</name> | <name>General level limits</name> | |||
| <!-- [rfced] We have updated the format of the header row of table 4 so it fits | ||||
| within the line-length limitiation. Please review carefully and let us know if | ||||
| and adjustments are needed or if you have other suggestions for how it can be re | ||||
| ndered. | ||||
| --> | ||||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">level</th> | <th align="left" rowspan="3">level</th> | |||
| <th align="right">Max luma sample rate (sample/sec)</th> | <th align="center" rowspan="3">Max luma sample rate (sample/sec) | |||
| <th align="right">Max coded data rate (Mbits/sec) band_idc==0</t | </th> | |||
| h> | <th align="center" colspan="4">Max coded data rate (Mbits/sec)</ | |||
| <th align="right">Max coded data rate (Mbits/sec) band_idc==1</t | th> | |||
| h> | ||||
| <th align="right">Max coded data rate (Mbits/sec) band_idc==2</t | ||||
| h> | ||||
| <th align="right">Max coded data rate (Mbits/sec) band_idc==3</t | ||||
| h> | ||||
| </tr> | </tr> | |||
| <tr> | ||||
| <th align="center" colspan="4">band_idc==</th> | ||||
| </tr> | ||||
| <tr> | ||||
| <th align="right">0</th> | ||||
| <th align="right">1</th> | ||||
| <th align="right">2</th> | ||||
| <th align="right">3</th> | ||||
| </tr> | ||||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">1</td> | <td align="left">1</td> | |||
| <td align="right">3,041,280</td> | <td align="right">3,041,280</td> | |||
| <td align="right">8</td> | <td align="right">8</td> | |||
| <td align="right">11</td> | <td align="right">11</td> | |||
| <td align="right">15</td> | <td align="right">15</td> | |||
| <td align="right">23</td> | <td align="right">23</td> | |||
| </tr> | </tr> | |||
| skipping to change at line 3176 ¶ | skipping to change at line 2779 ¶ | |||
| <tr> | <tr> | |||
| <td align="left">7.1</td> | <td align="left">7.1</td> | |||
| <td align="right">33,973,862,400</td> | <td align="right">33,973,862,400</td> | |||
| <td align="right">58,222</td> | <td align="right">58,222</td> | |||
| <td align="right">81,511</td> | <td align="right">81,511</td> | |||
| <td align="right">114,115</td> | <td align="right">114,115</td> | |||
| <td align="right">171,172</td> | <td align="right">171,172</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| <t><xref target="_table-level_ex"/> shows widely used typical configur ations of resolution and frame rate of video and corresponding levels for them.< /t> | <t><xref target="_table-level_ex"/> shows widely used typical configur ations of resolution and frame rates of video and corresponding levels for them. </t> | |||
| <table anchor="_table-level_ex"> | <table anchor="_table-level_ex"> | |||
| <name>Example of typical video configurations and corresponding leve ls (informative)</name> | <name>Example of typical video configurations and corresponding leve ls (informative)</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="center">use case</th> | <th align="center">use case</th> | |||
| <th align="center">resolution</th> | <th align="center">resolution</th> | |||
| <th align="right">frame per second</th> | <th align="right">frame per second</th> | |||
| <th align="right">luma sample per second</th> | <th align="right">luma sample per second</th> | |||
| <th align="left">level</th> | <th align="left">level</th> | |||
| </tr> | </tr> | |||
| skipping to change at line 3237 ¶ | skipping to change at line 2840 ¶ | |||
| <td align="right">120</td> | <td align="right">120</td> | |||
| <td align="right">3,981,312,000</td> | <td align="right">3,981,312,000</td> | |||
| <td align="left">6</td> | <td align="left">6</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="security-considerations"> | <section anchor="security-considerations"> | |||
| <name>Security considerations</name> | <name>Security Considerations</name> | |||
| <t>Like any other audio or video codec, APV should not be used with insecu re ciphers or cipher modes that are vulnerable to known plaintext attacks. S ome of the header bits as well as the padding are easily predictable.</t> | <t>Like any other audio or video codec, APV should not be used with insecu re ciphers or cipher modes that are vulnerable to known plaintext attacks. S ome of the header bits as well as the padding are easily predictable.</t> | |||
| <t>A decoder MUST be robust against any non-compliant or malicious payload | ||||
| s. Malicious payloads MUST NOT cause the decoder to overrun its allocated memory | <!-- [rfced] "no read" can be difficult to parse. Perhaps this can be reworded? | |||
| or to take an excessive amount of resources to decode. An overrun in allocated | ||||
| memory could lead to arbitrary code execution by an attacker. The same applies t | Original: | |||
| o the encoder, even though problems in encoders are typically rarer. Malicious | The implementation MUST ensure that no read outside | |||
| video streams MUST NOT cause the encoder to misbehave because this would allow a | allocated and initialized memory occurs. | |||
| n attacker to attack transcoding gateways. A frequent security problem in image | ||||
| and video codecs is failure to check for integer overflows. An example is allo | Perhaps A: | |||
| cating "frame_width * frame_height" in pixel count computations without consider | The implementation MUST ensure that any data outside | |||
| ing that the multiplication result may have overflowed the range of the arithmet | of the allocated and initialized memory cannot be read. | |||
| ic type. The implementation MUST ensure that no read outside allocated and initi | ||||
| alized memory occurs.</t> | Perhaps B: | |||
| <t>A decoder MUST NOT try to process the metadata whose type is not recogn | The implementation MUST ensure that there is no | |||
| ized by the implementation. Failure of processing of any metadata exactly accord | data outside of the allocated and initialized memory. | |||
| ing to the syntax structure specified MAY put a decoder in unknown status.</t> | --> | |||
| <t>A decoder <bcp14>MUST</bcp14> be robust against any non-compliant or ma | ||||
| licious payloads. Malicious payloads <bcp14>MUST NOT</bcp14> cause the decoder t | ||||
| o overrun its allocated memory or to take an excessive amount of resources to de | ||||
| code. An overrun in allocated memory could lead to arbitrary code execution by a | ||||
| n attacker. The same applies to the encoder, even though problems in encoders ar | ||||
| e typically rare. Malicious video streams <bcp14>MUST NOT</bcp14> cause the enc | ||||
| oder to misbehave because this would allow an attacker to attack transcoding gat | ||||
| eways. A frequent security problem in image and video codecs is failure to chec | ||||
| k for integer overflows. An example is allocating "frame_width * frame_height" | ||||
| in pixel count computations without considering that the multiplication result m | ||||
| ay have overflowed the range of the arithmetic type. The implementation <bcp14>M | ||||
| UST</bcp14> ensure that no read outside allocated and initialized memory occurs. | ||||
| </t> | ||||
| <t>A decoder <bcp14>MUST NOT</bcp14> try to process the metadata whose typ | ||||
| e is not recognized by the implementation. Failure to process any metadata exact | ||||
| ly according to the syntax structure specified <bcp14>MAY</bcp14> put a decoder | ||||
| in an unknown status.</t> | ||||
| <t>None of the content carried in APV is intended to be executable.</t> | <t>None of the content carried in APV is intended to be executable.</t> | |||
| </section> | </section> | |||
| <section anchor="iana-considerations"> | <section anchor="iana-considerations"> | |||
| <name>IANA considerations</name> | <name>IANA Considerations</name> | |||
| <t>This document has no actions for IANA.</t> | <t>This document has no actions for IANA.</t> | |||
| </section> | </section> | |||
| <section anchor="appendix"> | ||||
| <name>Appendix</name> | ||||
| <section anchor="appendix-rawbitstream"> | ||||
| <name>Raw bitstream format</name> | ||||
| <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> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references anchor="sec-combined-references"> | <references anchor="sec-combined-references"> | |||
| <name>References</name> | <name>References</name> | |||
| <references anchor="sec-normative-references"> | <references anchor="sec-normative-references"> | |||
| <name>Normative References</name> | <name>Normative References</name> | |||
| <reference anchor="H273" target="https://www.itu.int/rec/T-REC-H.273"> | <reference anchor="H273" target="https://www.itu.int/rec/T-REC-H.273"> | |||
| <front> | <front> | |||
| <title>Recommendation ITU-T H.273 (V4) | ISO/IEC 23091-2:2025, Codin g-independent code points - Part 2 Video</title> | <title>Coding-independent code points for video signal type identifi cation</title> | |||
| <author> | <author> | |||
| <organization/> | <organization>ITU-T</organization> | |||
| </author> | </author> | |||
| <date year="2024" month="July"/> | <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> | |||
| <!-- [rfced] [ISO9899] Please review. | ||||
| This reference currently points to a withdrawn version of ISO/IEC 9899: | ||||
| https://www.iso.org/standard/74528.html. | ||||
| The most current version of this reference is ISO/IEC 9899:2024. | ||||
| Should this reference be updated to point to the most current version? | ||||
| Current: | ||||
| [ISO9899] ISO/IEC, "Information technology - Programming languages - | ||||
| C", ISO/IEC 9899:2018, 2018, | ||||
| <https://www.iso.org/standard/74528.html>. | ||||
| --> | ||||
| <reference anchor="ISO9899" target="https://www.iso.org/standard/74528.h tml"> | <reference anchor="ISO9899" target="https://www.iso.org/standard/74528.h tml"> | |||
| <front> | <front> | |||
| <title>ISO/IEC 9899:2018, Information technology - Programming langu ages - C</title> | <title>Information technology - Programming languages - C</title> | |||
| <author> | <author> | |||
| <organization/> | <organization>ISO/IEC</organization> | |||
| </author> | </author> | |||
| <date year="2018" month="June"/> | <date year="2018"/> | |||
| </front> | ||||
| <seriesInfo name="ISO/IEC" value="9899:2018"/> | ||||
| </reference> | ||||
| <!-- Updated XML for [ISO9899] | ||||
| <reference anchor="ISO9899" target="https://www.iso.org/standard/82075.h | ||||
| tml"> | ||||
| <front> | ||||
| <title>Information technology - Programming languages - C</title> | ||||
| <author> | ||||
| <organization>ISO/IEC</organization> | ||||
| </author> | ||||
| <date year="2024"/> | ||||
| </front> | </front> | |||
| <seriesInfo name="ISO/IEC" value="9899:2024"/> | ||||
| </reference> | </reference> | |||
| --> | ||||
| <reference anchor="ITUT-T35" target="https://www.itu.int/rec/T-REC-T.35" > | <reference anchor="ITUT-T35" target="https://www.itu.int/rec/T-REC-T.35" > | |||
| <front> | <front> | |||
| <title>Recommendation ITU-T T.35, Procedure for the allocation of IT U-T defined codes for non-standard facilities</title> | <title>Procedure for the allocation of ITU-T defined codes for non-s tandard facilities</title> | |||
| <author> | <author> | |||
| <organization/> | <organization>ITU-T</organization> | |||
| </author> | </author> | |||
| <date year="2000" month="February"/> | <date year="2000" month="February"/> | |||
| </front> | </front> | |||
| <seriesInfo name="ITU-T Recommendation" value="T.35"/> | ||||
| </reference> | </reference> | |||
| <!-- [rfced] [CEA-861.3] Please review. | ||||
| CEA-861.3 appears to have been placed in "Historical" status (see: | ||||
| https://webstore.ansi.org/standards/cea/cea8612015-1528168). The most | ||||
| current version of this standard appears to be CTA-861.3-A (see: | ||||
| https://www.cta.tech/standards/cta-8613-a/). Note that the Consumer | ||||
| Electronics Association (CEA) changed its name to the "Consumer | ||||
| Technology Association" (CTA) in 2015. | ||||
| Should this reference be updated to point to CTA-861.3-A? | ||||
| Current: | ||||
| [CEA-861.3] | ||||
| CEA, "CEA-861.3, HDR Static Metadata Extension", January | ||||
| 2015. | ||||
| --> | ||||
| <reference anchor="CEA-861.3"> | <reference anchor="CEA-861.3"> | |||
| <front> | <front> | |||
| <title>CEA-861.3, HDR Static Metadata Extension</title> | <title>CEA-861.3, HDR Static Metadata Extension</title> | |||
| <author> | <author> | |||
| <organization/> | <organization>CEA</organization> | |||
| </author> | </author> | |||
| <date year="2015" month="January"/> | <date year="2015" month="January"/> | |||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="CIE15" target="https://cie.co.at/publications/colorim etry-4th-edition"> | <reference anchor="CIE15" target="https://cie.co.at/publications/colorim etry-4th-edition"> | |||
| <front> | <front> | |||
| <title>Technical Rport, Colorimetri</title> | <title>Colorimetry, 4th Edition</title> | |||
| <author> | <author> | |||
| <organization/> | <organization>CIE</organization> | |||
| </author> | </author> | |||
| <date year="2018"/> | <date year="2018"/> | |||
| </front> | </front> | |||
| <seriesInfo name="DOI" value="10.25039/TR.015.2018"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="RFC2119"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
| <front> | 119.xml"/> | |||
| <title>Key words for use in RFCs to Indicate Requirement Levels</tit | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| le> | 174.xml"/> | |||
| <author fullname="S. Bradner" initials="S." surname="Bradner"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
| <date month="March" year="1997"/> | 562.xml"/> | |||
| <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> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="2119"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174"> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
| tle> | ||||
| <author fullname="B. Leiba" initials="B." surname="Leiba"/> | ||||
| <date month="May" year="2017"/> | ||||
| <abstract> | ||||
| <t>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> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="8174"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
| </reference> | ||||
| <reference anchor="RFC9562"> | ||||
| <front> | ||||
| <title>Universally Unique IDentifiers (UUIDs)</title> | ||||
| <author fullname="K. Davis" initials="K." surname="Davis"/> | ||||
| <author fullname="B. Peabody" initials="B." surname="Peabody"/> | ||||
| <author fullname="P. Leach" initials="P." surname="Leach"/> | ||||
| <date month="May" year="2024"/> | ||||
| <abstract> | ||||
| <t>This specification defines UUIDs (Universally Unique IDentifier | ||||
| s) -- | ||||
| also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform | ||||
| Resource Name namespace for UUIDs. A UUID is 128 bits long and is | ||||
| intended to guarantee uniqueness across space and time. UUIDs were | ||||
| originally used in the Apollo Network Computing System (NCS), later | ||||
| in the Open Software Foundation's (OSF's) Distributed Computing | ||||
| Environment (DCE), and then in Microsoft Windows platforms.</t> | ||||
| <t>This specification is derived from the OSF DCE specification wi | ||||
| th the | ||||
| 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 | ||||
| 4122.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9562"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9562"/> | ||||
| </reference> | ||||
| </references> | </references> | |||
| <references anchor="sec-informative-references"> | <references anchor="sec-informative-references"> | |||
| <name>Informative References</name> | <name>Informative References</name> | |||
| <reference anchor="ASWF" target="https://www.aswf.io/"> | <reference anchor="ASWF" target="https://www.aswf.io/"> | |||
| <front> | <front> | |||
| <title>The Academy Software Foundation</title> | <title>The Academy Software Foundation</title> | |||
| <author> | <author> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | ||||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="AMPAS" target="https://www.oscars.org/"> | <reference anchor="AMPAS" target="https://www.oscars.org/"> | |||
| <front> | <front> | |||
| <title>Academy of Motion Picture Arts and Science</title> | <title>Academy of Motion Picture Arts and Science</title> | |||
| <author> | <author> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | ||||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="OpenAPV" target="https://github.com/AcademySoftwareFo undation/openapv"> | <reference anchor="OpenAPV" target="https://github.com/AcademySoftwareFo undation/openapv"> | |||
| <front> | <front> | |||
| <title>OpenAPV</title> | <title>OpenAPV</title> | |||
| <author> | <author> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | <date day="16" month="12" year="2025"/> | |||
| </front> | </front> | |||
| <refcontent>commit 1a7845a</refcontent> | ||||
| </reference> | </reference> | |||
| <reference anchor="AOSP16APV" target="https://developer.android.com/abou t/versions/16/features#apv"> | <reference anchor="AOSP16APV" target="https://developer.android.com/abou t/versions/16/features#apv"> | |||
| <front> | <front> | |||
| <title>Android open source project version 16</title> | <title>Android open source project version 16</title> | |||
| <author> | <author> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | ||||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="FFmpegAPVdec" target="https://git.ffmpeg.org/gitweb/f fmpeg.git/commit/483cadf8d77d3260eec8781f5f18c50f27e468f8"> | <reference anchor="FFmpegAPVdec" target="https://git.ffmpeg.org/gitweb/f fmpeg.git/commit/483cadf8d77d3260eec8781f5f18c50f27e468f8"> | |||
| <front> | <front> | |||
| <title>FFmpeg implementation of APV decoder</title> | <title>FFmpeg implementation of APV decoder</title> | |||
| <author> | <author> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | <date day="19" month="April" year="2025"/> | |||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="FFmpegAPVenc" target="https://git.ffmpeg.org/gitweb/f fmpeg.git/commit/fab691edaf53bbf10429ef3448f1f274e5078395"> | <reference anchor="FFmpegAPVenc" target="https://git.ffmpeg.org/gitweb/f fmpeg.git/commit/fab691edaf53bbf10429ef3448f1f274e5078395"> | |||
| <front> | <front> | |||
| <title>FFmpeg implementation of APV encoder</title> | <title>FFmpeg implementation of APV encoder</title> | |||
| <author> | <author> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | <date day="23" month="April" year="2025"/> | |||
| </front> | </front> | |||
| </reference> | </reference> | |||
| </references> | </references> | |||
| </references> | </references> | |||
| </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== | ||||
| <section anchor="appendix-rawbitstream"> | ||||
| <name>Raw Bitstream Format</name> | ||||
| <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> | ||||
| <dl spacing="normal" newline="true"> | ||||
| <dt>au_size</dt> | ||||
| <dd>indicates the size of access unit in bytes. 0 is prohibited and 0x | ||||
| FFFFFFFF is reserved.</dd> | ||||
| </dl> | ||||
| </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"/>, joint | ||||
| ly founded by the Academy of Motion Picture Arts and Science (AMPAS) <xref targ | ||||
| et="AMPAS"/> and the Linux Foundation, has created an open source software devel | ||||
| opment project conformant to this document <xref target="OpenAPV"/>. The project | ||||
| also provides various test vectors for verification of the implementations at < | ||||
| eref brackets="angle" target="https://github.com/AcademySoftwareFoundation/opena | ||||
| pv/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> | ||||
| <!-- [rfced] Please review whether any of the notes in this document | ||||
| should be in the <aside> element. It is defined as "a container for | ||||
| content that is semantically less important or tangential to the | ||||
| content that surrounds it" (https://authors.ietf.org/en/rfcxml-vocabulary#aside) | ||||
| . | ||||
| --> | ||||
| <!-- [rfced] Please review the "Inclusive Language" portion of the online | ||||
| Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> | ||||
| and let us know if any changes are needed. Updates of this nature typically | ||||
| result in more precise language, which is helpful for readers. | ||||
| Note that our script did not flag any words in particular, but this should | ||||
| still be reviewed as a best practice. | ||||
| --> | --> | |||
| </back> | ||||
| </rfc> | </rfc> | |||
| End of changes. 325 change blocks. | ||||
| 2394 lines changed or deleted | 1445 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||