| rfc9924v1.txt | rfc9924.txt | |||
|---|---|---|---|---|
| skipping to change at line 170 ¶ | skipping to change at line 170 ¶ | |||
| The APV codec supports the following features: | The APV codec supports the following features: | |||
| * Perceptually lossless video quality that is close to the original, | * Perceptually lossless video quality that is close to the original, | |||
| uncompressed quality; | uncompressed quality; | |||
| * Low complexity and high throughput intra frame only coding without | * Low complexity and high throughput intra frame only coding without | |||
| inter frame coding; | inter frame coding; | |||
| * Intra frame coding without prediction between pixel values but | * Intra frame coding without prediction between pixel values but | |||
| between transformed values for low delay encoding; | with prediction between transformed values for low delay encoding; | |||
| * High bit rates of up to a few Gbps for 2K, 4K, and 8K resolution | * High bit rates of up to a few Gbps for 2K, 4K, and 8K resolution | |||
| content, enabled by a lightweight entropy coding scheme; | content, enabled by a lightweight entropy coding scheme; | |||
| * Frame tiling for immersive content and for enabling parallel | * Frame tiling for immersive content and for enabling parallel | |||
| encoding and decoding; | encoding and decoding; | |||
| * Various chroma sampling formats from 4:0:0 to 4:4:4:4, and bit | * Various chroma sampling formats from 4:0:0 to 4:4:4:4, and bit | |||
| depths from 10 to 16 (Note: Only the profiles supporting 10 bits | depths from 10 to 16 (Note: Only the profiles supporting 10 bits | |||
| and 12 bits are currently defined); | and 12 bits are currently defined); | |||
| * Multiple decoding and re-encoding without severe visual quality | * The ability to decode and re-encode multiple times without severe | |||
| degradation; and | visual quality degradation; and | |||
| * Various metadata including HDR10/10+ and user-defined formats. | * Various metadata including HDR10/10+ and user-defined formats. | |||
| 2. Terms | 2. Terms | |||
| 2.1. Terms and Definitions | 2.1. Terms and Definitions | |||
| access unit (AU): a collection of primitive bitstream units (PBU) | access unit (AU): a collection of primitive bitstream units (PBU) | |||
| including various types of frames, metadata, filler, and access | including various types of frames, metadata, filler, and access | |||
| unit information, associated with a specific time | unit information, associated with a specific time | |||
| skipping to change at line 319 ¶ | skipping to change at line 319 ¶ | |||
| frame in which the MBs are ordered consecutively in MB raster scan | frame in which the MBs are ordered consecutively in MB raster scan | |||
| in a tile and the tiles in a frame are ordered consecutively in a | in a tile and the tiles in a frame are ordered consecutively in a | |||
| raster scan of the tiles of the frame | raster scan of the tiles of the frame | |||
| transform coefficient: a scalar quantity, considered to be in a | transform coefficient: a scalar quantity, considered to be in a | |||
| frequency domain, that is associated with a particular one- | frequency domain, that is associated with a particular one- | |||
| dimensional or two-dimensional index | dimensional or two-dimensional index | |||
| 2.2. Abbreviated Terms | 2.2. Abbreviated Terms | |||
| I: intra | ||||
| LSB: least significant bit | LSB: least significant bit | |||
| MSB: most significant bit | MSB: most significant bit | |||
| RGB: Red, Green and Blue | RGB: Red, Green and Blue | |||
| 3. Conventions Used in This Document | 3. Conventions Used in This Document | |||
| 3.1. General | 3.1. General | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 3.2. Operators | 3.2. Operators | |||
| The operators and the order of precedence are the same as used in the | The operators and the order of precedence are the same as used in the | |||
| C programming language [ISO9899], with the exception of the operators | C programming language [ISO9899]. However, there are some exceptions | |||
| described in the Section 3.2.1 and Section 3.2.2 following widely | for the operators described in the Section 3.2.1 and Section 3.2.2, | |||
| used industry practices for video codecs. | which follows widely used industry practices for video codecs. | |||
| 3.2.1. Arithmetic Operators | 3.2.1. Arithmetic Operators | |||
| // | // | |||
| an integer division with rounding of the result toward zero. For | an integer division with rounding of the result toward zero. For | |||
| example, 7//4 and -7//-4 are rounded to 1 and -7//4 and 7//-4 are | example, 7//4 and -7//-4 are rounded to 1 and -7//4 and 7//-4 are | |||
| rounded to -1 | rounded to -1 | |||
| / or div(x,y) | / or div(x,y) | |||
| a division in mathematical equations where no truncation or | a division in mathematical equations where no truncation or | |||
| skipping to change at line 490 ¶ | skipping to change at line 488 ¶ | |||
| within the section in which they are derived. | within the section in which they are derived. | |||
| Functions that specify properties of the current position in the | Functions that specify properties of the current position in the | |||
| bitstream are referred to as syntax functions. These functions are | bitstream are referred to as syntax functions. These functions are | |||
| specified in Section 5.2 and assume the existence of a bitstream | specified in Section 5.2 and assume the existence of a bitstream | |||
| pointer with an indication of the position of the next bit to be read | pointer with an indication of the position of the next bit to be read | |||
| by the decoding process from the bitstream. | by the decoding process from the bitstream. | |||
| A one-dimensional array is referred to as a list. A two-dimensional | A one-dimensional array is referred to as a list. A two-dimensional | |||
| array is referred to as a matrix. Arrays can either be syntax | array is referred to as a matrix. Arrays can either be syntax | |||
| elements or variables. Square parentheses are used for the indexing | elements or variables. Square brackets are used for the indexing of | |||
| of arrays. In reference to a visual depiction of a matrix, the first | arrays. In reference to a visual depiction of a matrix, the first | |||
| square bracket is used as a column (horizontal) index and the second | square bracket is used as a column (horizontal) index and the second | |||
| square bracket is used as a row (vertical) index. | square bracket is used as a row (vertical) index. | |||
| A specification of values of the entries in rows and columns of an | A specification of values of the entries in rows and columns of an | |||
| array may be denoted by {{...}{...}}, where each inner pair of | array may be denoted by {{...}{...}}, where each inner pair of | |||
| brackets specifies the values of the elements within a row in | brackets specifies the values of the elements within a row in | |||
| increasing column order and the rows are ordered in increasing row | 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 | 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 | 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. | equal to 4, and s[1][1] is set equal to 9. | |||
| skipping to change at line 573 ¶ | skipping to change at line 571 ¶ | |||
| * Arrays representing other unspecified tri-stimulus color samplings | * Arrays representing other unspecified tri-stimulus color samplings | |||
| (for example, YZX, also known as XYZ as specified in [CIE15]). | (for example, YZX, also known as XYZ as specified in [CIE15]). | |||
| * Arrays representing other unspecified four color samplings | * Arrays representing other unspecified four color samplings | |||
| For the convenience of notation and terminology in this document, the | For the convenience of notation and terminology in this document, the | |||
| variables and terms associated with these arrays can be referred to | variables and terms associated with these arrays can be referred to | |||
| as luma and chroma regardless of the actual color representation | as luma and chroma regardless of the actual color representation | |||
| method in use. | method in use. | |||
| The variables SubWidthC, SubHeightC, and NumComps are specified in | The values of the variables SubWidthC, SubHeightC, and NumComps | |||
| Table 2, depending on the chroma format sampling structure, which is | depend on the chroma format sampling structure as specified in | |||
| specified through chroma_format_idc. Other values of | Table 2. The chroma format sampling structure is signaled through | |||
| chroma_format_idc, SubWidthC, SubHeightC, and NumComps may be | chroma_format_idc. Other values of chroma_format_idc, SubWidthC, | |||
| specified in future versions of this document. | SubHeightC, and NumComps may be specified in future versions of this | |||
| document. | ||||
| +===================+==========+===========+============+==========+ | +===================+==========+===========+============+==========+ | |||
| | chroma_format_idc | Chroma | SubWidthC | SubHeightC | NumComps | | | chroma_format_idc | Chroma | SubWidthC | SubHeightC | NumComps | | |||
| | | format | | | | | | | format | | | | | |||
| +===================+==========+===========+============+==========+ | +===================+==========+===========+============+==========+ | |||
| | 0 | 4:0:0 | 1 | 1 | 1 | | | 0 | 4:0:0 | 1 | 1 | 1 | | |||
| +-------------------+----------+-----------+------------+----------+ | +-------------------+----------+-----------+------------+----------+ | |||
| | 1 | reserved | reserved | reserved | reserved | | | 1 | reserved | reserved | reserved | reserved | | |||
| +-------------------+----------+-----------+------------+----------+ | +-------------------+----------+-----------+------------+----------+ | |||
| | 2 | 4:2:2 | 2 | 1 | 3 | | | 2 | 4:2:2 | 2 | 1 | 3 | | |||
| skipping to change at line 809 ¶ | skipping to change at line 808 ¶ | |||
| * a variable blkHeight specifying the height of a block. | * a variable blkHeight specifying the height of a block. | |||
| Output of this process is the array inverseScan[rPos]. | Output of this process is the array inverseScan[rPos]. | |||
| The array index rPos specifies the raster scan position ranging from | The array index rPos specifies the raster scan position ranging from | |||
| 0 to (blkWidth * blkHeight)-1. Depending on the value of blkWidth | 0 to (blkWidth * blkHeight)-1. Depending on the value of blkWidth | |||
| and blkHeight, the array inverseScan is derived as follows: | and blkHeight, the array inverseScan is derived as follows: | |||
| * The variable forwardScan is derived by invoking the zig-zag scan | * The variable forwardScan is derived by invoking the zig-zag scan | |||
| order one-dimensional array initialization process as specified in | order initialization process as specified in Section 4.4.1 with | |||
| Section 4.4.1 with input parameters blkWidth and blkHeight. | input parameters blkWidth and blkHeight. | |||
| * The output variable inverseScan is derived as follows: | * The output variable inverseScan is derived as follows: | |||
| for(pos = 0; pos < blkWidth * blkHeight; pos++){ | for(pos = 0; pos < blkWidth * blkHeight; pos++){ | |||
| inverseScan[forwardScan[pos]] = pos | inverseScan[forwardScan[pos]] = pos | |||
| } | } | |||
| Figure 6: Pseudo-code for inverse zig-zag scan | Figure 6: Pseudo-code for inverse zig-zag scan | |||
| 5. Syntax and Semantics | 5. Syntax and Semantics | |||
| 5.1. Method of Specifying Syntax | 5.1. Method of Specifying Syntax | |||
| The syntax tables specify a superset of the syntax of all allowed | The syntax tables specify a superset of the syntax of all allowed | |||
| bitstreams. Note that a decoder MUST implement some means for | bitstreams. Note that a decoder MUST implement some means for | |||
| identifying entry points into the bitstream and some means to | identifying entry points into the bitstream and some means to | |||
| identify and handle non-conforming bitstreams. The methods for | identify and handle non-conforming bitstreams. The methods for | |||
| identifying and handling errors and other such situations are not | identifying and handling errors and other such situations are not | |||
| specified in this document. | specified in this document. | |||
| The APV bitstream is described in this document using syntax code | The APV bitstream is described using syntax code based on the C | |||
| based on the C programming language [ISO9899] and uses its if/else, | programming language [ISO9899] -- including use of if/else, while, | |||
| while, and for keywords as well as functions defined within this | and for -- as well as functions defined within this document. | |||
| document. | ||||
| The syntax table in syntax code is presented in a two-column format | The syntax table in syntax code is presented in a two-column format | |||
| such as shown in Figure 7. In this form, the type column provides a | such as shown in Figure 7. In this form, the type column provides a | |||
| type referenced in that same line of syntax code by using the syntax | type referenced in that same line of syntax code by using the syntax | |||
| elements processing functions defined in Section 5.2.5. | elements processing functions defined in Section 5.2.5. | |||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| ExampleSyntaxCode(){ | | ExampleSyntaxCode(){ | | |||
| operations | | operations | | |||
| skipping to change at line 1022 ¶ | skipping to change at line 1020 ¶ | |||
| indicates the identifier to associate a coded frame with metadata. | indicates the identifier to associate a coded frame with metadata. | |||
| More than two frames can have the same group_id in a single AU. A | More than two frames can have the same group_id in a single AU. A | |||
| primary frame and a non-primary frame MUST have different group_id | primary frame and a non-primary frame MUST have different group_id | |||
| values, and two non-primary frames MUST have different group_id | values, and two non-primary frames MUST have different group_id | |||
| values. When the value of group_id is equal to 0, the value of | 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 | pbu_type MUST be greater than 64. The value of 0xFFFF for | |||
| group_id is reserved for future use. | group_id is reserved for future use. | |||
| reserved_zero_8bits | reserved_zero_8bits | |||
| MUST be equal to 0 in bitstreams conforming to the profiles | MUST be equal to 0 in bitstreams conforming to the profiles | |||
| specified in Section 9 of this version of the document. Values of | specified in Section 9. Values of reserved_zero_8bits greater | |||
| reserved_zero_8bits greater than 0 are reserved for future use. | than 0 are reserved for future use. Decoders conforming to the | |||
| Decoders conforming to the profiles specified in Section 9 of this | profiles specified in Section 9 MUST ignore PBU with values of | |||
| version of the document MUST ignore PBU with values of | ||||
| reserved_zero_8bits greater than 0. | reserved_zero_8bits greater than 0. | |||
| 5.3.4. Frame | 5.3.4. Frame | |||
| 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) | |||
| skipping to change at line 1077 ¶ | skipping to change at line 1074 ¶ | |||
| } | | } | | |||
| tile_info() | | tile_info() | | |||
| reserved_zero_8bits | u(8) | reserved_zero_8bits | u(8) | |||
| byte_alignment() | | byte_alignment() | | |||
| } | | } | | |||
| Figure 12: frame_header() syntax code | Figure 12: frame_header() syntax code | |||
| reserved_zero_8bits | reserved_zero_8bits | |||
| MUST be equal to 0 in bitstreams conforming to the profiles | MUST be equal to 0 in bitstreams conforming to the profiles | |||
| specified in Section 9 of this version of the document. Values of | specified in Section 9. Values of reserved_zero_8bits greater | |||
| reserved_zero_8bits greater than 0 are reserved for future use. | than 0 are reserved for future use. Decoders conforming to the | |||
| Decoders conforming to the profiles specified in Section 9 of this | profiles specified in Section 9 MUST ignore PBU with values of | |||
| version of the document MUST ignore PBU with values of | ||||
| reserved_zero_8bits greater than 0. | reserved_zero_8bits greater than 0. | |||
| color_description_present_flag equal to 1 | color_description_present_flag equal to 1 | |||
| specifies that color_primaries, transfer_characteristics, and | specifies that color_primaries, transfer_characteristics, and | |||
| matrix_coefficients are present. color_description_present_flag | matrix_coefficients are present. color_description_present_flag | |||
| equal to 0 specifies that color_primaries, | equal to 0 specifies that color_primaries, | |||
| transfer_characteristics, and matrix_coefficients are not present. | transfer_characteristics, and matrix_coefficients are not present. | |||
| color_primaries | color_primaries | |||
| MUST have the semantics of ColourPrimaries as specified in [H273]. | MUST have the semantics of ColourPrimaries as specified in [H273]. | |||
| skipping to change at line 1118 ¶ | skipping to change at line 1114 ¶ | |||
| [H273]. When the full_range_flag syntax element is not present, | [H273]. When the full_range_flag syntax element is not present, | |||
| the value of full_range_flag is inferred to be equal to 0. | the value of full_range_flag is inferred to be equal to 0. | |||
| use_q_matrix | use_q_matrix | |||
| with a value of 1 specifies that the quantization matrices are | with a value of 1 specifies that the quantization matrices are | |||
| present. A value of 0 specifies that the quantization matrices | present. A value of 0 specifies that the quantization matrices | |||
| are not present. | are not present. | |||
| reserved_zero_8bits | reserved_zero_8bits | |||
| MUST be equal to 0 in bitstreams conforming to the profiles | MUST be equal to 0 in bitstreams conforming to the profiles | |||
| specified in Section 9 of this version of the document. Values of | specified in Section 9. Values of reserved_zero_8bits greater | |||
| reserved_zero_8bits greater than 0 are reserved for future use. | than 0 are reserved for future use. Decoders conforming to the | |||
| Decoders conforming to the profiles specified in Section 9 of this | profiles specified in Section 9 MUST ignore PBU with values of | |||
| version of the document MUST ignore PBU with values of | ||||
| reserved_zero_8bits greater than 0. | reserved_zero_8bits greater than 0. | |||
| 5.3.6. Frame Information | 5.3.6. Frame Information | |||
| 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) | |||
| skipping to change at line 1164 ¶ | skipping to change at line 1159 ¶ | |||
| band_idc | band_idc | |||
| specifies a maximum coded data rate of level_idc as specified in | specifies a maximum coded data rate of level_idc as specified in | |||
| Section 9. Bitstreams SHALL NOT contain values of band_idc other | Section 9. Bitstreams SHALL NOT contain values of band_idc other | |||
| than those specified in Section 9. The value of band_idc MUST be | than those specified in Section 9. The value of band_idc MUST be | |||
| in the range of 0 to 3. Other values of band_idc are reserved for | in the range of 0 to 3. Other values of band_idc are reserved for | |||
| future use. | future use. | |||
| reserved_zero_5bits | reserved_zero_5bits | |||
| MUST be equal to 0 in bitstreams conforming to the profiles | MUST be equal to 0 in bitstreams conforming to the profiles | |||
| specified in Section 9 of this version of the document. Values of | specified in Section 9. Values of reserved_zero_8bits greater | |||
| reserved_zero_8bits greater than 0 are reserved for future use. | than 0 are reserved for future use. Decoders conforming to the | |||
| Decoders conforming to the profiles specified in Section 9 of this | profiles specified in Section 9 MUST ignore PBU with values of | |||
| version of the document MUST ignore PBU with values of | ||||
| reserved_zero_8bits greater than 0. | reserved_zero_8bits greater than 0. | |||
| frame_width | frame_width | |||
| specifies the width of the frame in units of luma samples. | specifies the width of the frame in units of luma samples. | |||
| frame_width MUST be a multiple of 2 when chroma_format_idc has a | frame_width MUST be a multiple of 2 when chroma_format_idc has a | |||
| value of 2. The value 0 is reserved for future use. | value of 2. The value 0 is reserved for future use. | |||
| frame_height | frame_height | |||
| specifies the height of the frame in units of luma samples. The | specifies the height of the frame in units of luma samples. The | |||
| value 0 is reserved for future use. | value 0 is reserved for future use. | |||
| skipping to change at line 1224 ¶ | skipping to change at line 1218 ¶ | |||
| values are reserved for future use. | values are reserved for future use. | |||
| capture_time_distance | capture_time_distance | |||
| indicates the time difference between the capture time of the | indicates the time difference between the capture time of the | |||
| frames in the previous access unit and frames in the current | frames in the previous access unit and frames in the current | |||
| access unit in milliseconds if there has been any access unit | access unit in milliseconds if there has been any access unit | |||
| preceding the access unit this frame belongs to. | preceding the access unit this frame belongs to. | |||
| reserved_zero_8bits | reserved_zero_8bits | |||
| MUST be equal to 0 in bitstreams conforming to the profiles | MUST be equal to 0 in bitstreams conforming to the profiles | |||
| specified in Section 9 of this version of the document. Values of | specified in Section 9. Values of reserved_zero_8bits greater | |||
| reserved_zero_8bits greater than 0 are reserved for future use. | than 0 are reserved for future use. Decoders conforming to the | |||
| Decoders conforming to the profiles specified in Section 9 of this | profiles specified in Section 9 MUST ignore PBU with values of | |||
| version of the document MUST ignore PBU with values of | ||||
| reserved_zero_8bits greater than 0. | reserved_zero_8bits greater than 0. | |||
| 5.3.7. Quantization Matrix | 5.3.7. Quantization Matrix | |||
| 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++){ | | |||
| skipping to change at line 1250 ¶ | skipping to change at line 1243 ¶ | |||
| } | | } | | |||
| } | | } | | |||
| } | | } | | |||
| Figure 14: quantization_matrix() syntax code | Figure 14: quantization_matrix() syntax code | |||
| q_matrix[i][x][y] | q_matrix[i][x][y] | |||
| specifies a scaling value in the quantization matrices. When | specifies a scaling value in the quantization matrices. When | |||
| q_matrix[i][x][y] is not present, it is inferred to be equal to | q_matrix[i][x][y] is not present, it is inferred to be equal to | |||
| 16. The array index i specifies an indicator for the color | 16. The array index i specifies an indicator for the color | |||
| component; when chroma_format_idc is equal to 2 or 3, 0 for Y, 1 | component; when chroma_format_idc is equal to 2 or 3, the value of | |||
| for Cb, and 2 for Cr. The value of 0 for q_matrix[i][x][y] is | the index i is equal to 0 for Y component, 1 for Cb, and 2 for Cr. | |||
| reserved for future use. | The value of 0 for q_matrix[i][x][y] is reserved for future use. | |||
| The quantization matrix, QMatrix[i][x][y], is derived as follows: | The quantization matrix, QMatrix[i][x][y], is derived as follows: | |||
| * QMatrix[i][x][y] = q_matrix[i][x][y] | * QMatrix[i][x][y] = q_matrix[i][x][y] | |||
| 5.3.8. Tile Info | 5.3.8. Tile Info | |||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| tile_info(){ | | tile_info(){ | | |||
| skipping to change at line 1334 ¶ | skipping to change at line 1327 ¶ | |||
| Figure 16: au_info() syntax code | Figure 16: au_info() syntax code | |||
| num_frames | num_frames | |||
| indicates the number of frames contained in the current AU. | indicates the number of frames contained in the current AU. | |||
| pbu_type | pbu_type | |||
| has the same semantics as pbu_type in the pbu_header() syntax. | 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 | Note: The value of pbu_type MUST be 1, 2, 25, 26, or 27 in | |||
| bitstreams conforming to this version of the document. | bitstreams conforming to this document. | |||
| group_id | group_id | |||
| has the same semantics as group_id in the pbu_header() syntax. | has the same semantics as group_id in the pbu_header() syntax. | |||
| reserved_zero_8bits | reserved_zero_8bits | |||
| MUST be equal to 0 in bitstreams conforming to the profiles | MUST be equal to 0 in bitstreams conforming to the profiles | |||
| specified in Section 9 of this version of the document. Values of | specified in Section 9. Values of reserved_zero_8bits greater | |||
| reserved_zero_8bits greater than 0 are reserved for future use. | than 0 are reserved for future use. Decoders conforming to the | |||
| Decoders conforming to the profiles specified in Section 9 of this | profiles specified in Section 9 MUST ignore PBU with values of | |||
| version of the document MUST ignore PBU with values of | ||||
| reserved_zero_8bits greater than 0. | reserved_zero_8bits greater than 0. | |||
| 5.3.10. Metadata | 5.3.10. Metadata | |||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| metadata(){ | | metadata(){ | | |||
| metadata_size | u(32) | metadata_size | u(32) | |||
| currReadSize = 0 | | currReadSize = 0 | | |||
| do{ | | do{ | | |||
| skipping to change at line 1460 ¶ | skipping to change at line 1452 ¶ | |||
| tile_header_size | tile_header_size | |||
| indicates the size of the tile header in bytes. | indicates the size of the tile header in bytes. | |||
| tile_index | tile_index | |||
| specifies the tile index in raster order in a frame. tile_index | specifies the tile index in raster order in a frame. tile_index | |||
| MUST have the same value as tileIdx. | MUST have the same value as tileIdx. | |||
| tile_data_size[i] | tile_data_size[i] | |||
| indicates the size of the i-th color component data in a tile in | indicates the size of the i-th color component data in a tile in | |||
| bytes. The array index i specifies an indicator for the color | bytes. The array index i specifies an indicator for the color | |||
| component; when chroma_format_idc is equal to 2 or 3, 0 for Y, 1 | component; when chroma_format_idc is equal to 2 or 3, the value of | |||
| for Cb, and 2 for Cr. The value of 0 for tile_data_size[i] is | the index i is equal to 0 for Y component, 1 for Cb, and 2 for Cr. | |||
| reserved for future use. | The value of 0 for tile_data_size[i] is reserved for future use. | |||
| tile_qp[i] | tile_qp[i] | |||
| specifies the quantization parameter value for i-th color | specifies the quantization parameter value for i-th color | |||
| component. The array index i specifies an indicator for the color | component. The array index i specifies an indicator for the color | |||
| component; when chroma_format_idc is equal to 2 or 3, 0 for Y, 1 | component; when chroma_format_idc is equal to 2 or 3, the value of | |||
| for Cb, and 2 for Cr. The Qp[i] to be used for the MBs in the | the index i is equal to 0 for Y component, 1 for Cb, and 2 for Cr. | |||
| tile are derived as follows: | The Qp[i] to be used for the MBs in the tile are derived as | |||
| follows: | ||||
| * Qp[i] = tile_qp[i] - QpBdOffset | * Qp[i] = tile_qp[i] - QpBdOffset | |||
| * Qp[i] MUST be in the range of -QpBdOffset to 51, inclusive. | * Qp[i] MUST be in the range of -QpBdOffset to 51, inclusive. | |||
| reserved_zero_8bits | reserved_zero_8bits | |||
| MUST be equal to 0 in bitstreams conforming to the profiles | MUST be equal to 0 in bitstreams conforming to the profiles | |||
| specified in Section 9 of this version of the document. Values of | specified in Section 9. Values of reserved_zero_8bits greater | |||
| reserved_zero_8bits greater than 0 are reserved for future use. | than 0 are reserved for future use. Decoders conforming to the | |||
| Decoders conforming to the profiles specified in Section 9 of this | profiles specified in Section 9 MUST ignore PBU with values of | |||
| version of the document MUST ignore PBU with values of | ||||
| reserved_zero_8bits greater than 0. | reserved_zero_8bits greater than 0. | |||
| 5.3.14. Tile Data | 5.3.14. Tile Data | |||
| 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] - | | |||
| skipping to change at line 1508 ¶ | skipping to change at line 1500 ¶ | |||
| 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() | | |||
| } | | } | | |||
| Figure 21: tile_data() syntax code | Figure 21: tile_data() syntax code | |||
| The tile_data() syntax calculates the location of the macroblocks | ||||
| belonging to each tile and collects them. | ||||
| 5.3.15. Macroblock Layer | 5.3.15. Macroblock Layer | |||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| macroblock_layer(xMb, yMb, cIdx){ | | macroblock_layer(xMb, yMb, cIdx){ | | |||
| subW = (cIdx == 0)? 1 : SubWidthC | | subW = (cIdx == 0)? 1 : SubWidthC | | |||
| subH = (cIdx == 0)? 1 : SubHeightC | | subH = (cIdx == 0)? 1 : SubHeightC | | |||
| blkWidth = (cIdx == 0)? MbWidth : MbWidthC | | blkWidth = (cIdx == 0)? MbWidth : MbWidthC | | |||
| blkHeight = (cIdx == 0)? MbHeight : MbHeightC | | blkHeight = (cIdx == 0)? MbHeight : MbHeightC | | |||
| TrSize = 8 | | TrSize = 8 | | |||
| skipping to change at line 1552 ¶ | skipping to change at line 1547 ¶ | |||
| specifies the sign of the difference between the current DC | specifies the sign of the difference between the current DC | |||
| transform coefficient level and PrevDC. sign_dc_coeff_diff equal | transform coefficient level and PrevDC. sign_dc_coeff_diff equal | |||
| to 0 specifies that the difference has a positive value. | to 0 specifies that the difference has a positive value. | |||
| sign_dc_coeff_diff equal to 1 specifies that the difference has a | sign_dc_coeff_diff equal to 1 specifies that the difference has a | |||
| negative value. | negative value. | |||
| The transform coefficients are represented by the arrays | The transform coefficients are represented by the arrays | |||
| TransCoeff[cIdx][x0][y0]. The array indices x0, y0 specify the | TransCoeff[cIdx][x0][y0]. The array indices x0, y0 specify the | |||
| location (x0, y0) relative to the top-left sample for each component | location (x0, y0) relative to the top-left sample for each component | |||
| of the frame. The array index cIdx specifies an indicator for the | of the frame. The array index cIdx specifies an indicator for the | |||
| color component; when chroma_format_idc is equal to 2 or 3, 0 for Y, | color component; when chroma_format_idc is equal to 2 or 3, the value | |||
| 1 for Cb, and 2 for Cr. The value of TransCoeff[cIdx][x0][y0] MUST | of the index i is equal to 0 for Y component, 1 for Cb, and 2 for Cr. | |||
| be in the range of -32768 to 32767, inclusive. | The value of TransCoeff[cIdx][x0][y0] MUST be in the range of -32768 | |||
| to 32767, inclusive. | ||||
| 5.3.16. AC Coefficient Coding | 5.3.16. AC Coefficient Coding | |||
| 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 1646 ¶ | skipping to change at line 1642 ¶ | |||
| This process is invoked to obtain a decoded frame from a bitstream. | This process is invoked to obtain a decoded frame from a bitstream. | |||
| Input to this process is a bitstream of a coded frame. Output of | Input to this process is a bitstream of a coded frame. Output of | |||
| this process is a decoded frame. | this process is a decoded frame. | |||
| The decoding process operates as follows for the current frame: | The decoding process operates as follows for the current frame: | |||
| * The syntax structure for a coded frame is parsed to obtain the | * The syntax structure for a coded frame is parsed to obtain the | |||
| parsed syntax structures. | parsed syntax structures. | |||
| * The processes in Sections 6.1, 6.2, and 6.3 specify the decoding | * The processes in Sections 6.1, 6.2, and 6.3 specify the decoding | |||
| processes using syntax elements in all syntax structures. It is | processes using syntax elements in all syntax structures. For | |||
| the requirement of bitstream conformance that the coded tiles of | bitstreams conforming to this document, the coded tiles of the | |||
| the frame MUST contain tile data for every MB of the frame, such | frame MUST contain tile data for every MB of the frame, such that | |||
| that the division of the frame into tiles and the division of the | the division of the frame into tiles and the division of the tiles | |||
| tiles into MBs each forms a partitioning of the frame. | into MBs form a partitioning of the frame. | |||
| * After all the tiles in the current frame have been decoded, the | * After all the tiles in the current frame have been decoded, the | |||
| decoded frame is cropped using the cropping rectangle if | decoded frame is cropped using the cropping rectangle if | |||
| FrameWidthInSamplesY is not equal to FrameWidthInMbY * MbWidth or | FrameWidthInSamplesY is not equal to FrameWidthInMbY * MbWidth or | |||
| FrameHeightInSamplesY is not equal to FrameHeightInMbsY * | FrameHeightInSamplesY is not equal to FrameHeightInMbsY * | |||
| MbHeight. | MbHeight. | |||
| * The cropping rectangle, which specifies the samples of a frame | * The cropping rectangle, which specifies the samples of a frame | |||
| that are output, is derived as follows: | that are output, is derived as follows: | |||
| skipping to change at line 1677 ¶ | skipping to change at line 1673 ¶ | |||
| frame coordinates (x//SubWidthC, y//SubHeightC), where (x,y) | frame coordinates (x//SubWidthC, y//SubHeightC), where (x,y) | |||
| are the frame coordinates of the specified luma samples. | are the frame coordinates of the specified luma samples. | |||
| 6.1. MB Decoding Process | 6.1. MB Decoding Process | |||
| This process is invoked for each MB. | This process is invoked for each MB. | |||
| Input to this process is a luma location (xMb, yMb) specifying the | Input to this process is a luma location (xMb, yMb) specifying the | |||
| top-left sample of the current luma MB relative to the top-left luma | top-left sample of the current luma MB relative to the top-left luma | |||
| sample of the current frame. Outputs of this process are the | sample of the current frame. Outputs of this process are the | |||
| reconstructed samples of all the NumComps color components (when | reconstructed samples of all color components. The total number of | |||
| chroma_format_idc is equal to 2 or 3, Y, Cb, and Cr) for the current | color components is indicated by the value of NumComps for the | |||
| MB. | current MB. For example, when chroma_format_idc is equal to 2 or 3, | |||
| the value of NumComps is equal to 3 and three components, Y | ||||
| component, Cb component, and Cr component, are reconstructed | ||||
| The following steps apply: | The following steps apply: | |||
| * Let recSamples[0] be a (MbWidth)x(MbHeight) array of the | * Let recSamples[0] be a (MbWidth)x(MbHeight) array of the | |||
| reconstructed samples of the first color component (when | reconstructed samples of the first color component (when | |||
| chroma_format_idc is equal to 2 or 3, Y). | chroma_format_idc is equal to 2 or 3, Y). | |||
| * The block reconstruction process as specified in Section 6.2 is | * The block reconstruction process as specified in Section 6.2 is | |||
| invoked with the luma location (xMb, yMb), the variable nBlkW set | invoked with the luma location (xMb, yMb), the variable nBlkW set | |||
| equal to MbWidth, the variable nBlkH set equal to MbHeight, the | equal to MbWidth, the variable nBlkH set equal to MbHeight, the | |||
| variable cIdx set equal to 0, and the (MbWidth)x(MbHeight) array | variable cIdx set equal to 0, and the (MbWidth)x(MbHeight) array | |||
| recSamples[0] as inputs. The output is a modified version of the | recSamples[0] as inputs. The output is a modified version of the | |||
| (MbWidth)x(MbHeight) array recSamples[0], which is the | (MbWidth)x(MbHeight) array recSamples[0], which is the | |||
| reconstructed samples of the first color component for the current | reconstructed samples of the first color component for the current | |||
| MB. | MB. | |||
| * When chroma_format_idc is not equal to 0, let recSamples[1] be a | * When chroma_format_idc is not equal to 0, let recSamples[1] be a | |||
| (MbWidthC)x(MbHeightC) array of the reconstructed samples of the | (MbWidthC)x(MbHeightC) array of the reconstructed samples of the | |||
| second color component (when chroma_format_idc is equal to 2 or 3, | second color component. For example, when chroma_format_idc is | |||
| Cb). | equal to 2 or 3, recSamples[1] is the Cb color component. | |||
| * When chroma_format_idc is not equal to 0, the block reconstruction | * When chroma_format_idc is not equal to 0, the block reconstruction | |||
| process as specified in Section 6.2 is invoked with the luma | process as specified in Section 6.2 is invoked with the luma | |||
| location (xMb, yMb), the variable nBlkW set equal to MbWidthC, the | location (xMb, yMb), the variable nBlkW set equal to MbWidthC, the | |||
| variable nBlkH set equal to MbHeightC, the variable cIdx set equal | variable nBlkH set equal to MbHeightC, the variable cIdx set equal | |||
| to 1, and the (MbWidthC)x(MbHeightC) array recSamples[1] as | to 1, and the (MbWidthC)x(MbHeightC) array recSamples[1] as | |||
| inputs. The output is a modified version of the | inputs. The output is a modified version of the | |||
| (MbWidthC)x(MbHeightC) array recSamples[1], which is the | (MbWidthC)x(MbHeightC) array recSamples[1], which is the | |||
| reconstructed samples of the second color component for the | reconstructed samples of the second color component for the | |||
| current MB. | current MB. | |||
| * When chroma_format_idc is not equal to 0, let recSamples[2] be a | * When chroma_format_idc is not equal to 0, let recSamples[2] be a | |||
| (MbWidthC)x(MbHeightC) array of the reconstructed samples of the | (MbWidthC)x(MbHeightC) array of the reconstructed samples of the | |||
| third color component(when chroma_format_idc is equal to 2 or 3, | third color component. For example, when chroma_format_idc is | |||
| Cr). | equal to 2 or 3, recSamples[2] is the Cr color component. | |||
| * When chroma_format_idc is not equal to 0, the block reconstruction | * When chroma_format_idc is not equal to 0, the block reconstruction | |||
| process as specified in Section 6.2 is invoked with the luma | process as specified in Section 6.2 is invoked with the luma | |||
| location (xMb, yMb), the variable nBlkW set equal to MbWidthC, the | location (xMb, yMb), the variable nBlkW set equal to MbWidthC, the | |||
| variable nBlkH set equal to MbHeightC, the variable cIdx set equal | variable nBlkH set equal to MbHeightC, the variable cIdx set equal | |||
| to 2, and the (MbWidthC)x(MbHeightC) array recSamples[2] as | to 2, and the (MbWidthC)x(MbHeightC) array recSamples[2] as | |||
| inputs. The output is a modified version of the | inputs. The output is a modified version of the | |||
| (MbWidthC)x(MbHeightC) array recSamples[2], which is the | (MbWidthC)x(MbHeightC) array recSamples[2], which is the | |||
| reconstructed samples of the third color component for the current | reconstructed samples of the third color component for the current | |||
| MB. | MB. | |||
| skipping to change at line 1771 ¶ | skipping to change at line 1769 ¶ | |||
| * The variables numBlkX and numBlkY are derived as follows: | * The variables numBlkX and numBlkY are derived as follows: | |||
| - numBlkX = nBlkW // TrSize | - numBlkX = nBlkW // TrSize | |||
| - numBlkY = nBlkH // TrSize | - numBlkY = nBlkH // TrSize | |||
| * For yIdx = 0..numBlkY - 1, the following applies: | * For yIdx = 0..numBlkY - 1, the following applies: | |||
| - For xIdx = 0..numBlkX - 1, the following applies: | - For xIdx = 0..numBlkX - 1, the following applies: | |||
| The variables xBlk and yBlk are derived as follows: | o The variables xBlk and yBlk are derived as follows: | |||
| * xBlk = xMb // (cIdx==0? 1: SubWidthC) + xIdx*TrSize | + xBlk = xMb // (cIdx==0? 1: SubWidthC) + xIdx*TrSize | |||
| * yBlk = yMb // (cIdx==0? 1: SubHeightC) + yIdx*TrSize | + yBlk = yMb // (cIdx==0? 1: SubHeightC) + yIdx*TrSize | |||
| * The scaling and transformation process as specified in Section 6.3 | o The scaling and transformation process as specified in | |||
| is invoked with the location (xBlk, yBlk), the variable cIdx set | Section 6.3 is invoked with the location (xBlk, yBlk), the | |||
| equal to cIdx, the transform width nBlkW set equal to TrSize, and | variable cIdx set equal to cIdx, the transform width nBlkW | |||
| the transform height nBlkH set equal to TrSize as inputs. The | set equal to TrSize, and the transform height nBlkH set | |||
| output is a (TrSize)x(TrSize) array r of a reconstructed block. | equal to TrSize as inputs. The output is a | |||
| (TrSize)x(TrSize) array r of a reconstructed block. | ||||
| * The (TrSize)x(TrSize) array recSamples is modified as follows: | o The (TrSize)x(TrSize) array recSamples is modified as | |||
| follows: | ||||
| - recSamples[(xIdx * TrSize) + i, (yIdx * TrSize) + j] = r[i,j], | + recSamples[(xIdx * TrSize) + i, (yIdx * TrSize) + j] = | |||
| with i=0..TrSize-1, j=0..TrSize-1 | r[i,j], with i=0..TrSize-1, j=0..TrSize-1 | |||
| 6.3. Scaling and Transformation Process | 6.3. Scaling and Transformation Process | |||
| Inputs to this process are: | Inputs to this process are: | |||
| * a location (xBlkY, yBlkY) of the current color component | * a location (xBlkY, yBlkY) of the current color component | |||
| specifying the top-left sample of the current block relative to | specifying the top-left sample of the current block relative to | |||
| the top-left sample of the current frame, | the top-left sample of the current frame, | |||
| * a variable cIdx specifying the color component of the current | * a variable cIdx specifying the color component of the current | |||
| skipping to change at line 1927 ¶ | skipping to change at line 1927 ¶ | |||
| 6.3.2.2. Transformation Process | 6.3.2.2. Transformation Process | |||
| Inputs to this process are: | Inputs to this process are: | |||
| * a variable nTbS specifying the sample size of scaled transform | * a variable nTbS specifying the sample size of scaled transform | |||
| coefficients, and | coefficients, and | |||
| * a list of scaled transform coefficients x with elements x[j], with | * a list of scaled transform coefficients x with elements x[j], with | |||
| j = 0..(nTbS - 1). | j = 0..(nTbS - 1). | |||
| * Output of this process is the list of transformed samples y with | Output of this process is the list of transformed samples y with | |||
| elements y[i], with i = 0..(nTbS - 1). | elements y[i], with i = 0..(nTbS - 1). | |||
| * The transformation matrix derivation process as specified in | The transformation matrix derivation process as specified in | |||
| Section 6.3.2.3 is invoked with the transform size nTbS as input, | Section 6.3.2.3 is invoked with the transform size nTbS as input, and | |||
| and the transformation matrix transMatrix as output. | the transformation matrix transMatrix as output. | |||
| * The list of transformed samples y[i] with i = 0..(nTbS - 1) is | The list of transformed samples y[i] with i = 0..(nTbS - 1) is | |||
| derived as follows: | derived as follows: | |||
| - y[i] = sum(j = 0, nTbS - 1, transMatrix[i][j] * x[j]) | * y[i] = sum(j = 0, nTbS - 1, transMatrix[i][j] * x[j]) | |||
| 6.3.2.3. Transformation Matrix Derivation Process | 6.3.2.3. Transformation Matrix Derivation Process | |||
| Input to this process is a variable nTbS specifying the horizontal | Input to this process is a variable nTbS specifying the horizontal | |||
| sample size of scaled transform coefficients. | sample size of scaled transform coefficients. | |||
| Output of this process is the transformation matrix transMatrix. | Output of this process is the transformation matrix transMatrix. | |||
| The transformation matrix transMatrix is derived based on nTbs as | The transformation matrix transMatrix is derived based on nTbs as | |||
| follows: | follows: | |||
| skipping to change at line 2188 ¶ | skipping to change at line 2188 ¶ | |||
| metadata_user_defined(payloadSize) | | metadata_user_defined(payloadSize) | | |||
| } | | } | | |||
| else{ | | else{ | | |||
| metadata_undefined(payloadSize) | | metadata_undefined(payloadSize) | | |||
| } | | } | | |||
| byte_alignment() | | byte_alignment() | | |||
| } | | } | | |||
| Figure 28: metadata_payload() syntax code | Figure 28: metadata_payload() syntax code | |||
| The syntax and semantics of each type of metadata are defined in | ||||
| Section 8.2. | ||||
| 8.2. List of Metadata Syntax and Semantics | 8.2. List of Metadata Syntax and Semantics | |||
| 8.2.1. Filler Metadata | 8.2.1. Filler Metadata | |||
| 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) | |||
| } | | } | | |||
| skipping to change at line 2268 ¶ | skipping to change at line 2271 ¶ | |||
| 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) | |||
| } | | } | | |||
| Figure 30: metadata_mdcv() syntax code | Figure 30: metadata_mdcv() syntax code | |||
| primary_chromaticity_x[i] | primary_chromaticity_x[i] | |||
| specifies a 0.16 fixed-point format of X chromaticity coordinate | specifies a 0.16 fixed-point format of X chromaticity coordinate | |||
| of mastering display as defined by CIE 1931, where i = 0, 1, 2 | of mastering display in terms of CIE 1931 as specified in | |||
| specifies Red, Green, Blue, respectively. | [ISO11664-1], where i = 0, 1, 2 specifies Red, Green, Blue, | |||
| respectively. | ||||
| primary_chromaticity_y[i] | primary_chromaticity_y[i] | |||
| specifies a 0.16 fixed-point format of Y chromaticity coordinate | specifies a 0.16 fixed-point format of Y chromaticity coordinate | |||
| of mastering display as defined by CIE 1931, where i = 0, 1, 2 | of mastering display in terms of CIE 1931 as specified in | |||
| specifies Red, Green, Blue, respectively. | [ISO11664-1], where i = 0, 1, 2 specifies Red, Green, Blue, | |||
| respectively. | ||||
| white_point_chromaticity_x | white_point_chromaticity_x | |||
| specifies a 0.16 fixed-point format of white point X chromaticity | specifies a 0.16 fixed-point format of white point X chromaticity | |||
| coordinate of mastering display as defined by CIE 1931. | coordinate of mastering display in terms of CIE 1931 as specified | |||
| in [ISO11664-1]. | ||||
| white_point_chromaticity_y | white_point_chromaticity_y | |||
| specifies a 0.16 fixed-point format of white point Y chromaticity | specifies a 0.16 fixed-point format of white point Y chromaticity | |||
| coordinate as mastering display defined by CIE 1931. | coordinate as mastering display in terms of CIE 1931 as specified | |||
| in [ISO11664-1]. | ||||
| max_mastering_luminance | max_mastering_luminance | |||
| is a 24.8 fixed-point format of maximum display mastering | is a 24.8 fixed-point format of maximum display mastering | |||
| luminance, represented in candelas per square meter. | luminance, represented in candelas per square meter. | |||
| min_mastering_luminance | min_mastering_luminance | |||
| is an 18.14 fixed-point format of minimum display mastering | is an 18.14 fixed-point format of minimum display mastering | |||
| luminance, represented in candelas per square meter. | luminance, represented in candelas per square meter. | |||
| 8.2.4. Content Light-Level Information Metadata | 8.2.4. Content Light-Level Information Metadata | |||
| skipping to change at line 2305 ¶ | skipping to change at line 2312 ¶ | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| metadata_cll(payloadSize){ | | metadata_cll(payloadSize){ | | |||
| max_cll | u(16) | max_cll | u(16) | |||
| max_fall | u(16) | max_fall | u(16) | |||
| } | | } | | |||
| Figure 31: metadata_cll() syntax code | Figure 31: metadata_cll() syntax code | |||
| max_cll | max_cll | |||
| specifies the maximum content light level information as specified | specifies the maximum content light level information as specified | |||
| in [CEA-861.3], Appendix A. | in [CTA-861.3], Appendix A. | |||
| max_fall | max_fall | |||
| specifies the maximum frame-average light level information as | specifies the maximum frame-average light level information as | |||
| specified in [CEA-861.3], Appendix A. | specified in [CTA-861.3], Appendix A. | |||
| 8.2.5. User-Defined Metadata | 8.2.5. User-Defined Metadata | |||
| This metadata has user data identified by a universal unique | This metadata has user data identified by a universal unique | |||
| identifier as specified in [RFC9562], the contents of which are not | identifier as specified in [RFC9562], the contents of which are not | |||
| specified in this document. | specified in this document. | |||
| syntax code | type | syntax code | type | |||
| ------------------------------------------------------------|----- | ------------------------------------------------------------|----- | |||
| metadata_user_defined(payloadSize){ | | metadata_user_defined(payloadSize){ | | |||
| skipping to change at line 2378 ¶ | skipping to change at line 2385 ¶ | |||
| subset of features supported in a profile. | subset of features supported in a profile. | |||
| Each level with a band specifies a set of limits on the values that | Each level with a band specifies a set of limits on the values that | |||
| may be taken by the syntax elements of this document. For any given | may be taken by the syntax elements of this document. For any given | |||
| profile, a level with a band generally corresponds to a particular | profile, a level with a band generally corresponds to a particular | |||
| decoder processing load and memory capability. The constraints set | decoder processing load and memory capability. The constraints set | |||
| by levels and bands are orthogonal to the constraints defined by | by levels and bands are orthogonal to the constraints defined by | |||
| profiles so that the same set of level and band definitions is used | profiles so that the same set of level and band definitions is used | |||
| with all profiles. For example, a certain level L and a certain band | with all profiles. For example, a certain level L and a certain band | |||
| B can be combined with either profile X or profile Y to specifically | B can be combined with either profile X or profile Y to specifically | |||
| different set of constraints. | define two different sets of constraints. | |||
| NOTE: Individual implementations may support a different level for | NOTE: Individual implementations may support a different level for | |||
| each supported profile. | each supported profile. | |||
| 9.2. Requirements on Video Decoder Capability | 9.2. Requirements on Video Decoder Capability | |||
| Capabilities of video decoders conforming to this document are | Capabilities of video decoders conforming to this document are | |||
| specified in terms of the ability to decode video streams conforming | specified in terms of the ability to decode video streams conforming | |||
| to the constraints of profiles, levels, and bands specified in this | to the constraints of profiles, levels, and bands specified in this | |||
| section. When expressing the capabilities of a decoder for a | section. When expressing the capabilities of a decoder for a | |||
| skipping to change at line 2427 ¶ | skipping to change at line 2434 ¶ | |||
| Coded frames conforming to the 422-10 profile MUST obey the following | Coded frames conforming to the 422-10 profile MUST obey the following | |||
| constraints: | constraints: | |||
| * chroma_format_idc MUST be equal to 2. | * chroma_format_idc MUST be equal to 2. | |||
| * bit_depth_minus8 MUST be equal to 2. | * bit_depth_minus8 MUST be equal to 2. | |||
| * pbu_type MUST be equal to 1. | * pbu_type MUST be equal to 1. | |||
| Any levels and bands constraints specified in Section 9.4 MUST be | Coded frames conforming to the 422-10 profile MUST also conform to | |||
| fulfilled. Decoders conforming to the 422-10 profile at a specific | any levels and bands constraints specified in Section 9.4. Decoders | |||
| level (identified by a specific value of L) and a specific band | conforming to the 422-10 profile at a specific level (identified by a | |||
| (identified by a specific value of B) MUST be capable of decoding all | specific value of L) and a specific band (identified by a specific | |||
| coded frames for which all of the following conditions apply: | value of B) MUST be capable of decoding all coded frames for which | |||
| all of the following conditions apply: | ||||
| * The coded frame is indicated to conform to the 422-10 profile. | * The coded frame is indicated to conform to the 422-10 profile. | |||
| * The coded frame is indicated to conform to a level (by a specific | * The coded frame is indicated to conform to a level (by a specific | |||
| value of level_idc) that is lower than or equal to level L. | value of level_idc) that is lower than or equal to level L. | |||
| * The coded frame is indicated to conform to a band (by a specific | * 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. | value of band_idc) that is lower than or equal to band B. | |||
| 9.3.3. 422-12 Profile | 9.3.3. 422-12 Profile | |||
| Conformance of a coded frame to the 422-12 profile is indicated by | Conformance of a coded frame to the 422-12 profile is indicated by | |||
| profile_idc equal to 44. | profile_idc equal to 44. | |||
| Coded frames conforming to the 422-12 profile MUST obey the following | Coded frames conforming to the 422-12 profile MUST obey the following | |||
| constraints: | constraints: | |||
| * chroma_format_idc MUST be equal to 2. | * chroma_format_idc MUST be equal to 2. | |||
| * bit_depth_minus8 MUST be in the range of 2 to 4. | * bit_depth_minus8 MUST be in the range of 2 to 4. | |||
| * pbu_type MUST be equal to 1. | * pbu_type MUST be equal to 1. | |||
| Any levels and bands constraints specified in Section 9.4 MUST be | Coded frames conforming to the 422-12 profile MUST also conform to | |||
| fulfilled. Decoders conforming to the 422-12 profile at a specific | any levels and bands constraints specified in Section 9.4. Decoders | |||
| level (identified by a specific value of L) and a specific band | conforming to the 422-12 profile at a specific level (identified by a | |||
| (identified by a specific value of B) MUST be capable of decoding all | specific value of L) and a specific band (identified by a specific | |||
| coded frames for which all of the following conditions apply: | value of B) MUST be capable of decoding all coded frames for which | |||
| all of the following conditions apply: | ||||
| * The coded frame is indicated to conform to the 422-12 profile or | * The coded frame is indicated to conform to the 422-12 profile or | |||
| the 422-10 profile. | the 422-10 profile. | |||
| * The coded frame is indicated to conform to a level (by a specific | * The coded frame is indicated to conform to a level (by a specific | |||
| value of level_idc) that is lower than or equal to level L. | value of level_idc) that is lower than or equal to level L. | |||
| * The coded frame is indicated to conform to a band (by a specific | * 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. | value of band_idc) that is lower than or equal to band B. | |||
| 9.3.4. 444-10 Profile | 9.3.4. 444-10 Profile | |||
| Conformance of a coded frame to the 444-10 profile is indicated by | Conformance of a coded frame to the 444-10 profile is indicated by | |||
| profile_idc equal to 55. | profile_idc equal to 55. | |||
| Coded frames conforming to the 444-10 profile MUST obey the following | Coded frames conforming to the 444-10 profile MUST obey the following | |||
| constraints: | constraints: | |||
| * chroma_format_idc MUST be in the range of 2 to 3. | * chroma_format_idc MUST be in the range of 2 to 3. | |||
| * bit_depth_minus8 MUST be equal to 2. | * bit_depth_minus8 MUST be equal to 2. | |||
| * pbu_type MUST be equal to 1. | * pbu_type MUST be equal to 1. | |||
| Any levels and bands constraints specified in Section 9.4 MUST be | Coded frames conforming to the 444-10 profile MUST also conform to | |||
| fulfilled. Decoders conforming to the 444-10 profile at a specific | any levels and bands constraints specified in Section 9.4. Decoders | |||
| level (identified by a specific value of L) and a specific band | conforming to the 444-10 profile at a specific level (identified by a | |||
| (identified by a specific value of B) MUST be capable of decoding all | specific value of L) and a specific band (identified by a specific | |||
| coded frames for which all of the following conditions apply: | value of B) MUST be capable of decoding all coded frames for which | |||
| all of the following conditions apply: | ||||
| * The coded frame is indicated to conform to the 444-10 profile or | * The coded frame is indicated to conform to the 444-10 profile or | |||
| the 422-10 profile. | the 422-10 profile. | |||
| * The coded frame is indicated to conform to a level (by a specific | * The coded frame is indicated to conform to a level (by a specific | |||
| value of level_idc) that is lower than or equal to level L. | value of level_idc) that is lower than or equal to level L. | |||
| * The coded frame is indicated to conform to a band (by a specific | * 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. | value of band_idc) that is lower than or equal to band B. | |||
| 9.3.5. 444-12 Profile | 9.3.5. 444-12 Profile | |||
| Conformance of a coded frame to the 444-12 profile is indicated by | Conformance of a coded frame to the 444-12 profile is indicated by | |||
| profile_idc equal to 66. | profile_idc equal to 66. | |||
| Coded frames conforming to the 444-12 profile MUST obey the following | Coded frames conforming to the 444-12 profile MUST obey the following | |||
| constraints: | constraints: | |||
| * chroma_format_idc MUST be in the range of 2 to 3. | * chroma_format_idc MUST be in the range of 2 to 3. | |||
| * bit_depth_minus8 MUST be in the range of 2 to 4. | * bit_depth_minus8 MUST be in the range of 2 to 4. | |||
| * pbu_type MUST be equal to 1. | * pbu_type MUST be equal to 1. | |||
| Any levels and bands constraints specified in Section 9.4 MUST be | Coded frames conforming to the 444-12 profile MUST also conform to | |||
| fulfilled. Decoders conforming to the 444-12 profile at a specific | any levels and bands constraints specified in Section 9.4. Decoders | |||
| level (identified by a specific value of L) and a specific band | conforming to the 444-12 profile at a specific level (identified by a | |||
| (identified by a specific value of B) MUST be capable of decoding all | specific value of L) and a specific band (identified by a specific | |||
| coded frames for which all of the following conditions apply: | value of B) MUST be capable of decoding all coded frames for which | |||
| all of the following conditions apply: | ||||
| * The coded frame is indicated to conform to the 444-12 profile, the | * 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. | 444-10 profile, the 422-12 profile, or the 422-10 profile. | |||
| * The coded frame is indicated to conform to a level (by a specific | * The coded frame is indicated to conform to a level (by a specific | |||
| value of level_idc) that is lower than or equal to level L. | value of level_idc) that is lower than or equal to level L. | |||
| * The coded frame is indicated to conform to a band (by a specific | * 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. | value of band_idc) that is lower than or equal to band B. | |||
| 9.3.6. 4444-10 Profile | 9.3.6. 4444-10 Profile | |||
| Conformance of a coded frame to the 4444-10 profile is indicated by | Conformance of a coded frame to the 4444-10 profile is indicated by | |||
| profile_idc equal to 77. | profile_idc equal to 77. | |||
| Coded frames conforming to the 4444-10 profile MUST obey the | Coded frames conforming to the 4444-10 profile MUST obey the | |||
| following constraints: | following constraints: | |||
| * chroma_format_idc MUST be in the range of 2 to 4. | * chroma_format_idc MUST be in the range of 2 to 4. | |||
| * bit_depth_minus8 MUST be equal to 2. | * bit_depth_minus8 MUST be equal to 2. | |||
| * pbu_type MUST be equal to 1. | * pbu_type MUST be equal to 1. | |||
| Any levels and bands constraints specified in Section 9.4 MUST be | Coded frames conforming to the 4444-10 profile MUST also conform to | |||
| fulfilled. Decoders conforming to the 4444-10 profile at a specific | any levels and bands constraints specified in Section 9.4. Decoders | |||
| level (identified by a specific value of L) and a specific band | conforming to the 4444-10 profile at a specific level (identified by | |||
| (identified by a specific value of B) MUST be capable of decoding all | a specific value of L) and a specific band (identified by a specific | |||
| coded frames for which all of the following conditions apply: | value of B) MUST be capable of decoding all coded frames for which | |||
| all of the following conditions apply: | ||||
| * The coded frame is indicated to conform to the 4444-10 profile, | * The coded frame is indicated to conform to the 4444-10 profile, | |||
| the 444-10 profile, or the 422-10 profile. | the 444-10 profile, or the 422-10 profile. | |||
| * The coded frame is indicated to conform to a level (by a specific | * The coded frame is indicated to conform to a level (by a specific | |||
| value of level_idc) that is lower than or equal to level L. | value of level_idc) that is lower than or equal to level L. | |||
| * The coded frame is indicated to conform to a band (by a specific | * 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. | value of band_idc) that is lower than or equal to band B. | |||
| 9.3.7. 4444-12 Profile | 9.3.7. 4444-12 Profile | |||
| Conformance of a coded frame to the 4444-12 profile is indicated by | Conformance of a coded frame to the 4444-12 profile is indicated by | |||
| profile_idc equal to 88. | profile_idc equal to 88. | |||
| Coded frames conforming to the 4444-12 profile MUST obey the | Coded frames conforming to the 4444-12 profile MUST obey the | |||
| following constraints: | following constraints: | |||
| * chroma_format_idc MUST be in the range of 2 to 4. | * chroma_format_idc MUST be in the range of 2 to 4. | |||
| * bit_depth_minus8 MUST be in the range of 2 to 4. | * bit_depth_minus8 MUST be in the range of 2 to 4. | |||
| * pbu_type MUST be equal to 1. | * pbu_type MUST be equal to 1. | |||
| Any levels and bands constraints specified in Section 9.4 MUST be | Coded frames conforming to the 4444-12 profile MUST also conform to | |||
| fulfilled. Decoders conforming to the 4444-12 profile at a specific | any levels and bands constraints specified in Section 9.4. Decoders | |||
| level (identified by a specific value of L) and a specific band | conforming to the 4444-12 profile at a specific level (identified by | |||
| (identified by a specific value of B) MUST be capable of decoding all | a specific value of L) and a specific band (identified by a specific | |||
| coded frames for which all of the following conditions apply: | value of B) MUST be capable of decoding all coded frames for which | |||
| all of the following conditions apply: | ||||
| * The coded frame is indicated to conform to the 4444-12 profile, | * 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 | the 4444-10 profile, the 444-12 profile, the 444-10 profile, the | |||
| 422-12 profile, or the 422-10 profile. | 422-12 profile, or the 422-10 profile. | |||
| * The coded frame is indicated to conform to a level (by a specific | * The coded frame is indicated to conform to a level (by a specific | |||
| value of level_idc) that is lower than or equal to level L. | value of level_idc) that is lower than or equal to level L. | |||
| * The coded frame is indicated to conform to a band (by a specific | * 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. | value of band_idc) that is lower than or equal to band B. | |||
| 9.3.8. 400-10 Profile | 9.3.8. 400-10 Profile | |||
| Conformance of a coded frame to the 400-10 profile is indicated by | Conformance of a coded frame to the 400-10 profile is indicated by | |||
| profile_idc equal to 99. | profile_idc equal to 99. | |||
| Coded frames conforming to the 400-10 profile MUST obey the following | Coded frames conforming to the 400-10 profile MUST obey the following | |||
| constraints: | constraints: | |||
| * chroma_format_idc MUST be equal to 0. | * chroma_format_idc MUST be equal to 0. | |||
| * bit_depth_minus8 MUST be equal to 2. | * bit_depth_minus8 MUST be equal to 2. | |||
| * pbu_type MUST be equal to 1. | * pbu_type MUST be equal to 1. | |||
| Any levels and bands constraints specified in Section 9.4 MUST be | Coded frames conforming to the 400-10 profile MUST also conform to | |||
| fulfilled. Decoders conforming to the 400-10 profile at a specific | any levels and bands constraints specified in Section 9.4. Decoders | |||
| level (identified by a specific value of L) and a specific band | conforming to the 400-10 profile at a specific level (identified by a | |||
| (identified by a specific value of B) MUST be capable of decoding all | specific value of L) and a specific band (identified by a specific | |||
| coded frames for which all of the following conditions apply: | value of B) MUST be capable of decoding all coded frames for which | |||
| all of the following conditions apply: | ||||
| * The coded frame is indicated to conform to the 400-10 profile. | * The coded frame is indicated to conform to the 400-10 profile. | |||
| * The coded frame is indicated to conform to a level (by a specific | * The coded frame is indicated to conform to a level (by a specific | |||
| value of level_idc) that is lower than or equal to level L. | value of level_idc) that is lower than or equal to level L. | |||
| * The coded frame is indicated to conform to a band (by a specific | * 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. | value of band_idc) that is lower than or equal to band B. | |||
| 9.4. Levels and Bands | 9.4. Levels and Bands | |||
| 9.4.1. General | 9.4.1. General | |||
| For purposes of comparison of level capabilities, a particular level | For purposes of comparison of level capabilities, a particular level | |||
| of each band is considered to be a lower level than some other level | 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 | when the value of the level_idc of the particular level of each band | |||
| is less than that of the other level. | is less than that of the other level. | |||
| skipping to change at line 2735 ¶ | skipping to change at line 2749 ¶ | |||
| its allocated memory or to take an excessive amount of resources to | its allocated memory or to take an excessive amount of resources to | |||
| decode. An overrun in allocated memory could lead to arbitrary code | decode. An overrun in allocated memory could lead to arbitrary code | |||
| execution by an attacker. The same applies to the encoder, even | execution by an attacker. The same applies to the encoder, even | |||
| though problems in encoders are typically rare. Malicious video | though problems in encoders are typically rare. Malicious video | |||
| streams MUST NOT cause the encoder to misbehave because this would | streams MUST NOT cause the encoder to misbehave because this would | |||
| allow an attacker to attack transcoding gateways. A frequent | allow an attacker to attack transcoding gateways. A frequent | |||
| security problem in image and video codecs is failure to check for | security problem in image and video codecs is failure to check for | |||
| integer overflows. An example is allocating "frame_width * | integer overflows. An example is allocating "frame_width * | |||
| frame_height" in pixel count computations without considering that | frame_height" in pixel count computations without considering that | |||
| the multiplication result may have overflowed the range of the | the multiplication result may have overflowed the range of the | |||
| arithmetic type. The implementation MUST ensure that no read outside | arithmetic type. The implementation MUST ensure that any data | |||
| allocated and initialized memory occurs. | outside of allocated and initialized memory cannot be read. | |||
| A decoder MUST NOT try to process the metadata whose type is not | A decoder MUST NOT try to process the metadata whose type is not | |||
| recognized by the implementation. Failure to process any metadata | recognized by the implementation. Failure to process any metadata | |||
| exactly according to the syntax structure specified MAY put a decoder | exactly according to the syntax structure specified MAY put a decoder | |||
| in an unknown status. | in an unknown status. | |||
| None of the content carried in APV is intended to be executable. | None of the content carried in APV is intended to be executable. | |||
| 11. IANA Considerations | 11. IANA Considerations | |||
| This document has no actions for IANA. | This document has no actions for IANA. | |||
| 12. References | 12. References | |||
| 12.1. Normative References | 12.1. Normative References | |||
| [CEA-861.3] | ||||
| CEA, "CEA-861.3, HDR Static Metadata Extension", January | ||||
| 2015. | ||||
| [CIE15] CIE, "Colorimetry, 4th Edition", DOI 10.25039/TR.015.2018, | [CIE15] CIE, "Colorimetry, 4th Edition", DOI 10.25039/TR.015.2018, | |||
| 2018, | 2018, | |||
| <https://cie.co.at/publications/colorimetry-4th-edition>. | <https://cie.co.at/publications/colorimetry-4th-edition>. | |||
| [CTA-861.3] | ||||
| CTA, "HDR Static Metadata Extensions", CTA-861.3-A, | ||||
| September 2019. | ||||
| [H273] ITU-T, "Coding-independent code points for video signal | [H273] ITU-T, "Coding-independent code points for video signal | |||
| type identification", ITU-T Recommendation H.273, ISO/ | type identification", ITU-T Recommendation H.273, ISO/ | |||
| IEC 23091-2:2025, July 2024, | IEC 23091-2:2025, July 2024, | |||
| <https://www.itu.int/rec/T-REC-H.273>. | <https://www.itu.int/rec/T-REC-H.273>. | |||
| [ISO11664-1] | ||||
| ISO, "Colorimetry - Part 1: CIE standard colorimetric | ||||
| observers", ISO/CIE 11664-1:2019, 2019, | ||||
| <https://www.iso.org/standard/74164.html>. | ||||
| [ISO9899] ISO/IEC, "Information technology - Programming languages - | [ISO9899] ISO/IEC, "Information technology - Programming languages - | |||
| C", ISO/IEC 9899:2018, 2018, | C", ISO/IEC 9899:2024, 2024, | |||
| <https://www.iso.org/standard/74528.html>. | <https://www.iso.org/standard/82075.html>. | |||
| [ITUT-T35] ITU-T, "Procedure for the allocation of ITU-T defined | [ITUT-T35] ITU-T, "Procedure for the allocation of ITU-T defined | |||
| codes for non-standard facilities", ITU-T | codes for non-standard facilities", ITU-T | |||
| Recommendation T.35, February 2000, | Recommendation T.35, February 2000, | |||
| <https://www.itu.int/rec/T-REC-T.35>. | <https://www.itu.int/rec/T-REC-T.35>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| skipping to change at line 2801 ¶ | skipping to change at line 2820 ¶ | |||
| <https://www.oscars.org/>. | <https://www.oscars.org/>. | |||
| [AOSP16APV] | [AOSP16APV] | |||
| "Android open source project version 16", | "Android open source project version 16", | |||
| <https://developer.android.com/about/versions/16/ | <https://developer.android.com/about/versions/16/ | |||
| features#apv>. | features#apv>. | |||
| [ASWF] "The Academy Software Foundation", <https://www.aswf.io/>. | [ASWF] "The Academy Software Foundation", <https://www.aswf.io/>. | |||
| [FFmpegAPVdec] | [FFmpegAPVdec] | |||
| "FFmpeg implementation of APV decoder", 19 April 2025, | "FFmpeg implementation of APV decoder", 20 November 2025, | |||
| <https://git.ffmpeg.org/gitweb/ffmpeg.git/ | <https://ffmpeg.org/download.html#release_8.0>. | |||
| commit/483cadf8d77d3260eec8781f5f18c50f27e468f8>. | ||||
| [FFmpegAPVenc] | [FFmpegAPVenc] | |||
| "FFmpeg implementation of APV encoder", 23 April 2025, | "FFmpeg implementation of APV encoder", 4 May 2025, | |||
| <https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/ | <https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/ | |||
| fab691edaf53bbf10429ef3448f1f274e5078395>. | fab691edaf53bbf10429ef3448f1f274e5078395>. | |||
| [OpenAPV] "OpenAPV", commit 1a7845a, 16 December 2025, | [OpenAPV] "OpenAPV", commit 1a7845a, 16 December 2025, | |||
| <https://github.com/AcademySoftwareFoundation/openapv>. | <https://github.com/AcademySoftwareFoundation/openapv>. | |||
| Appendix A. Raw Bitstream Format | Appendix A. Raw Bitstream Format | |||
| syntax code | type | syntax code | type | |||
| --------------------------------------------------------------|----- | --------------------------------------------------------------|----- | |||
| End of changes. 64 change blocks. | ||||
| 156 lines changed or deleted | 174 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||