Independent Submission Y. Lim
Request for Comments: 9924 M. Park
Category: Informational M. Budagavi
ISSN: 2070-1721 R. Joshi
K. Choi
Samsung Electronics
February 2026
This document describes the bitstream format of Advanced Professional Video (APV) and its decoding process. APV is a professional video codec providing visually lossless compression mainly for recording and post production.
このドキュメントでは、Advanced Professional Video (APV) のビットストリーム形式とそのデコード プロセスについて説明します。APV は、主に録画とポストプロダクション向けに視覚的にロスレス圧縮を提供するプロフェッショナルなビデオ コーデックです。
This document is not an Internet Standards Track specification; it is published for informational purposes.
この文書は Internet Standards Track 仕様ではありません。情報提供を目的として公開されています。
This is a contribution to the RFC Series, independently of any other RFC stream. The RFC Editor has chosen to publish this document at its discretion and makes no statement about its value for implementation or deployment. Documents approved for publication by the RFC Editor are not candidates for any level of Internet Standard; see Section 2 of RFC 7841.
これは、他の RFC ストリームとは独立した、RFC シリーズへの貢献です。RFC 編集者は独自の裁量でこの文書を公開することを選択しており、実装または展開におけるこの文書の価値については何も述べていません。RFC 編集者によって出版が承認された文書は、どのレベルのインターネット標準の候補でもありません。RFC 7841 のセクション 2 を参照してください。
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc9924.
この文書の現在のステータス、正誤表、およびそれに対するフィードバックの提供方法に関する情報は、https://www.rfc-editor.org/info/rfc9924 で入手できます。
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.
Copyright (c) 2026 IETF Trust および文書の著者として特定された人物。無断転載を禁じます。
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.
この文書は、BCP 78 およびこの文書の発行日に有効な IETF 文書に関する IETF トラストの法的規定 (https://trustee.ietf.org/license-info) の対象となります。これらの文書には、この文書に関するお客様の権利と制限が記載されているため、注意深くお読みください。
1. Introduction
2. Terms
2.1. Terms and Definitions
2.2. Abbreviated Terms
3. Conventions Used in This Document
3.1. General
3.2. Operators
3.2.1. Arithmetic Operators
3.2.2. Bitwise Operators
3.3. Range Notation
3.3.1. Order of Operations Precedence
3.4. Variables, Syntax Elements, and Tables
3.5. Processes
4. Formats and Processes Used in This Document
4.1. Bitstream Formats
4.2. Source, Decoded, and Output Frame Formats
4.3. Partitioning of a Frame
4.3.1. Partitioning of a Frame into Tiles
4.3.2. Spatial or Component-Wise Partitioning
4.4. Scanning Processes
4.4.1. Zig-Zag Scan
4.4.2. Inverse Scan
5. Syntax and Semantics
5.1. Method of Specifying Syntax
5.2. Syntax Functions and Descriptors
5.2.1. byte_aligned()
5.2.2. more_data_in_tile()
5.2.3. next_bits(n)
5.2.4. read_bits(n)
5.2.5. Syntax Element Processing Functions
5.3. List of Syntax and Semantics
5.3.1. Access Unit
5.3.2. Primitive Bitstream Unit
5.3.3. Primitive Bitstream Unit Header
5.3.4. Frame
5.3.5. Frame Header
5.3.6. Frame Information
5.3.7. Quantization Matrix
5.3.8. Tile Info
5.3.9. Access Unit Information
5.3.10. Metadata
5.3.11. Filler
5.3.12. Tile
5.3.13. Tile Header
5.3.14. Tile Data
5.3.15. Macroblock Layer
5.3.16. AC Coefficient Coding
5.3.17. Byte Alignment
6. Decoding Process
6.1. MB Decoding Process
6.2. Block Reconstruction Process
6.3. Scaling and Transformation Process
6.3.1. Scaling Process for Transform Coefficients
6.3.2. Process for Scaled Transform Coefficients
7. Parsing Process
7.1. Process for Syntax Element Type h(v)
7.1.1. Process for abs_dc_coeff_diff
7.1.2. Process for coeff_zero_run
7.1.3. Process for abs_ac_coeff_minus1
7.1.4. Process for Variable-Length Codes
7.2. Codeword Generation Process for h(v) (Informative)
7.2.1. Process for abs_dc_coeff_diff
7.2.2. Process for coeff_zero_run
7.2.3. Process for abs_ac_coeff_minus1
7.2.4. Process for Variable-Length Codes
8. Metadata Information
8.1. Metadata Payload
8.2. List of Metadata Syntax and Semantics
8.2.1. Filler Metadata
8.2.2. Recommendation ITU-T T.35 Metadata
8.2.3. Mastering Display Color Volume Metadata
8.2.4. Content Light-Level Information Metadata
8.2.5. User-Defined Metadata
8.2.6. Undefined Metadata
9. Profiles, Levels, and Bands
9.1. Overview of Profiles, Levels, and Bands
9.2. Requirements on Video Decoder Capability
9.3. Profiles
9.3.1. General
9.3.2. 422-10 Profile
9.3.3. 422-12 Profile
9.3.4. 444-10 Profile
9.3.5. 444-12 Profile
9.3.6. 4444-10 Profile
9.3.7. 4444-12 Profile
9.3.8. 400-10 Profile
9.4. Levels and Bands
9.4.1. General
9.4.2. Limits of Levels and Bands
10. Security Considerations
11. IANA Considerations
12. References
12.1. Normative References
12.2. Informative References
Appendix A. Raw Bitstream Format
Appendix B. APV Implementations
B.1. OpenAPV Open Source Project
B.2. Android Open Source Project
B.3. FFmpeg Open Source Project
Authors' Addresses
This document defines the bitstream format and decoding process for the 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-quality video recording and post production. The primary purpose of the APV codec is for use in professional video recording and editing workflows for various types of content. This specification is neither the product of the IETF nor a consensus view of the community.
この文書では、Advanced Professional Video (APV) コーデックのビットストリーム形式とデコード プロセスを定義します。APV コーデックは、プロフェッショナル レベルの高品質ビデオ録画とポスト プロダクションのニーズに応えて開発されたプロフェッショナル ビデオ コーデックです。APV コーデックの主な目的は、さまざまな種類のコンテンツのプロのビデオ録画および編集ワークフローで使用することです。この仕様は、IETF の成果物でも、コミュニティの総意でもありません。
The APV codec supports the following features:
APV コーデックは次の機能をサポートしています。
* Perceptually lossless video quality that is close to the original, uncompressed quality;
* オリジナルの非圧縮品質に近い、知覚的にロスレスなビデオ品質。
* Low complexity and high throughput intra frame only coding without inter frame coding;
* フレーム間コーディングを行わない、フレーム内のみのコーディングで複雑さが低く、スループットが高い。
* Intra frame coding without prediction between pixel values but with prediction between transformed values for low delay encoding;
* 低遅延符号化の場合、ピクセル値間の予測を行わず、変換値間の予測を行うフレーム内符号化。
* High bit rates of up to a few Gbps for 2K, 4K, and 8K resolution content, enabled by a lightweight entropy coding scheme;
* 軽量エントロピーコーディングスキームによって実現される、2K、4K、および 8K 解像度のコンテンツで最大数 Gbps の高ビットレート。
* Frame tiling for immersive content and for enabling parallel encoding and decoding;
* 没入型コンテンツのためのフレーム タイル化、および並列エンコードとデコードを可能にする。
* 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 and 12 bits are currently defined);
* 4:0:0 ~ 4:4:4:4 のさまざまなクロマ サンプリング フォーマット、および 10 ~ 16 のビット深度 (注: 現在、10 ビットと 12 ビットをサポートするプロファイルのみが定義されています)。
* The ability to decode and re-encode multiple times without severe visual quality degradation; and
* 深刻な視覚的品質の低下を生じることなく、複数回デコードおよび再エンコードできる機能。そして
* Various metadata including HDR10/10+ and user-defined formats.
* HDR10/10+ やユーザー定義フォーマットを含むさまざまなメタデータ。
access unit (AU):
アクセスユニット(AU):
a collection of primitive bitstream units (PBU) including various types of frames, metadata, filler, and access unit information, associated with a specific time
特定の時間に関連付けられた、さまざまなタイプのフレーム、メタデータ、フィラー、アクセス ユニット情報を含むプリミティブ ビットストリーム ユニット (PBU) のコレクション
band:
バンド:
a defined set of constraints on the value of the maximum coded data rate of each level
各レベルの最大符号化データ レートの値に対する定義済みの一連の制約
block:
ブロック:
MxN (M-column by N-row) array of samples, or an MxN array of transform coefficients
サンプルの MxN (M 列 x N 行) 配列、または変換係数の MxN 配列
byte-aligned:
バイトアライン:
a position in a bitstream that is an integer multiple of 8 bits from the position of the first bit in the bitstream
ビットストリーム内の最初のビットの位置から 8 ビットの整数倍であるビットストリーム内の位置
chroma:
彩度:
a sample array or single sample representing one of the two color difference signals related to the primary colors, represented by the symbols Cb and Cr in 4:2:2 or 4:4:4 color format
原色に関連する 2 つの色差信号の 1 つを表すサンプル配列または単一サンプル。4:2:2 または 4:4:4 カラー形式の記号 Cb および Cr で表されます。
coded frame:
コード化されたフレーム:
a coded representation of a frame containing all macroblocks of the frame
フレームのすべてのマクロブロックを含むフレームのコード化された表現
coded representation:
コード化された表現:
a data element as represented in its coded form
コード化された形式で表されるデータ要素
component:
成分:
an array or a single sample from one of the three arrays (luma and two chroma) that compose a frame in 4:2:2, or 4:4:4 color format, or an array or a single sample from an array that compose a frame in 4:0:0 color format, or an array or a single sample from one of the four arrays that compose a frame in 4:4:4:4 color format.
4:2:2 または 4:4:4 カラー フォーマットでフレームを構成する 3 つの配列 (ルマと 2 つのクロマ) の 1 つからの配列または単一サンプル、4:0:0 カラー フォーマットでフレームを構成する配列または配列からの 1 つのサンプル、または 4:4:4:4 カラー フォーマットでフレームを構成する 4 つの配列の 1 つからの配列または 1 つのサンプル。
decoded frame:
デコードされたフレーム:
a frame derived by decoding a coded frame
コード化されたフレームをデコードすることによって得られるフレーム
decoder:
デコーダ:
an embodiment of a decoding process
復号化プロセスの実施形態
decoding process:
デコードプロセス:
a process specified that reads a bitstream and derives decoded frames from it
ビットストリームを読み取り、そこからデコードされたフレームを取得する指定されたプロセス
encoder:
エンコーダ:
an embodiment of an encoding process
符号化プロセスの実施形態
encoding process:
エンコードプロセス:
a process that produces a bitstream conforming to this document
この文書に準拠したビットストリームを生成するプロセス
flag:
フラグ:
a variable or single-bit syntax element that can take one of the two possible values: 0 and 1
2 つの値 (0 と 1) のいずれかを取り得る変数または単一ビットの構文要素
frame:
フレーム:
an array of luma samples and two corresponding arrays of chroma samples in 4:2:2 and 4:4:4 color format, or an array of samples in 4:0:0 color format, or four arrays of samples in 4:4:4:4 color format
4:2:2 および 4:4:4 カラー フォーマットのルマ サンプルの配列と 2 つの対応するクロマ サンプルの配列、または 4:0:0 カラー フォーマットのサンプルの配列、または 4:4:4:4 カラー フォーマットのサンプルの 4 つの配列
level:
レベル:
a defined set of constraints on the values that are taken by the syntax elements and variables of this document, or the value of a transform coefficient prior to scaling
このドキュメントの構文要素および変数によって取得される値、またはスケーリング前の変換係数の値に対して定義された一連の制約。
luma:
ルミナ:
a sample array or single sample representing the monochrome signal related to the primary colors, represented by the symbol or subscript Y or L
原色に関連するモノクロ信号を表すサンプル配列または単一サンプル。記号または添え字 Y または L で表されます。
macroblock (MB):
マクロブロック (MB):
a square block of luma samples and two corresponding blocks of chroma samples of a frame in 4:2:2 or 4:4:4 color format, or a square block of samples of a frame in 4:0:0 color format, or four square blocks of samples of a frame in 4:4:4:4 color format
4:2:2 または 4:4:4 カラー フォーマットのフレームのルマ サンプルの正方形ブロックとクロマ サンプルの 2 つの対応するブロック、または 4:0:0 カラー フォーマットのフレームのサンプルの正方形ブロック、または 4:4:4:4 カラー フォーマットのフレームのサンプルの 4 つの正方形ブロック
metadata:
メタデータ:
data describing various characteristics related to a bitstream without directly affecting the decoding process of it.
ビットストリームのデコードプロセスに直接影響を与えることなく、ビットストリームに関連するさまざまな特性を記述するデータ。
partitioning:
パーティショニング:
a division of a set into subsets such that each element of the set is in exactly one of the subsets
セットの各要素がサブセットの 1 つに正確に含まれるように、セットをサブセットに分割すること
prediction:
予測:
an embodiment of the prediction process
予測プロセスの一実施形態
prediction process:
予測プロセス:
use of a predictor to provide an estimate of the data element currently being decoded
現在デコードされているデータ要素の推定値を提供するための予測子の使用
predictor:
予測子:
a combination of specified values or previously decoded data elements used in the decoding process of subsequent data elements
後続のデータ要素の復号化プロセスで使用される、指定された値または以前に復号化されたデータ要素の組み合わせ
primitive bitstream unit (PBU):
プリミティブ ビットストリーム ユニット (PBU):
a data structure to construct an access unit with frame and metadata
フレームとメタデータを含むアクセスユニットを構築するデータ構造
profile:
プロフィール:
a specified subset of the syntax of this document
このドキュメントの構文の指定されたサブセット
quantization parameter (QP):
量子化パラメータ (QP):
a variable used by the decoding process for the scaling value of transform coefficients
変換係数のスケーリング値の復号化プロセスで使用される変数
raster scan:
ラスタースキャン:
a mapping of a rectangular two-dimensional pattern to a one-dimensional pattern such that the first entries in the one-dimensional pattern are from the top row of the two-dimensional pattern scanned from left to right, followed by the second, third, etc., rows of the pattern each scanned from left to right
長方形の 2 次元パターンから 1 次元パターンへのマッピング。1 次元パターンの最初のエントリは、2 次元パターンの一番上の行から左から右にスキャンされ、続いてパターンの 2 行目、3 行目など、それぞれ左から右にスキャンされます。
raw bitstream:
生のビットストリーム:
an encapsulation of a sequence of access units where a field indicating the size of an access unit precedes each access unit as defined in Appendix A
付録 A で定義されているように、アクセス ユニットのサイズを示すフィールドが各アクセス ユニットの前に置かれる、アクセス ユニットのシーケンスのカプセル化。
source:
ソース:
a term used to describe the video material or some of its attributes before the encoding process
エンコードプロセス前のビデオ素材またはその属性の一部を説明するために使用される用語
syntax element:
構文要素:
an element of data represented in the bitstream
ビットストリームで表現されるデータの要素
syntax structure:
構文構造:
zero or more syntax elements present together in a bitstream in a specified order
ビットストリーム内に指定された順序で一緒に存在する 0 個以上の構文要素
tile:
タイル:
a rectangular region of MBs within a particular tile column and a particular tile row in a frame
フレーム内の特定のタイル列および特定のタイル行内の MB の長方形領域
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 header
フレームの高さと同じ高さとフレームヘッダーの構文要素で指定された幅を持つ MB の長方形領域
tile row:
タイル行:
a rectangular region of MBs having a height specified by syntax elements in the frame header and a width equal to the width of the frame
フレームヘッダーの構文要素で指定された高さとフレームの幅に等しい幅を持つ MB の長方形領域
tile scan:
タイルスキャン:
a specific sequential ordering of MBs partitioning a frame in which the MBs are ordered consecutively in MB raster scan in a tile and the tiles in a frame are ordered consecutively in a raster scan of the tiles of the frame
フレームを分割する MB の特定の連続順序付け。MB はタイル内の MB ラスター スキャンで連続的に順序付けされ、フレーム内のタイルはフレームのタイルのラスター スキャンで連続的に順序付けされます。
transform coefficient:
変換係数:
a scalar quantity, considered to be in a frequency domain, that is associated with a particular one-dimensional or two-dimensional index
特定の 1 次元または 2 次元のインデックスに関連付けられた、周波数領域にあると考えられるスカラー量
LSB:
LSB:
least significant bit
最下位ビット
MSB:
MSB:
most significant bit
最上位ビット
RGB:
RGB:
Red, Green and Blue
赤、緑、青
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
このドキュメント内のキーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「NOT RECOMMENDED」、「MAY」、および「OPTIONAL」は、ここに示すようにすべて大文字で表示されている場合にのみ、BCP 14 [RFC2119] [RFC8174] で説明されているように解釈されます。
The operators and the order of precedence are the same as used in the C programming language [ISO9899]. However, there are some exceptions for the operators described in the Section 3.2.1 and Section 3.2.2, which follows widely used industry practices for video codecs.
演算子と優先順位は、C プログラミング言語 [ISO9899] で使用されるものと同じです。ただし、セクション 3.2.1 およびセクション 3.2.2 で説明されている演算子にはいくつかの例外があり、ビデオ コーデックに対して広く使用されている業界の慣例に従っています。
//
//
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 rounded to -1
結果をゼロに向かって四捨五入した整数の除算。たとえば、7//4 と -7//-4 は 1 に丸められ、-7//4 と 7//-4 は -1 に丸められます。
/ or div(x,y)
/ または div(x,y)
a division in mathematical equations where no truncation or rounding is intended
切り捨てや四捨五入が意図されていない数式の割り算
min(x,y)
min(x,y)
the minimum value of the values x and y
値 x と y の最小値
max(x,y)
最大(x,y)
the maximum value of the values x and y
値 x と y の最大値
ceil(x)
天井(x)
the smallest integer value that is larger than or equal to x
x 以上の最小の整数値
clip(x,y,z)
クリップ(x,y,z)
clip(x,y,z)=max(x,min(z,y))
クリップ(x,y,z)=最大(x,最小(z,y))
sum (i=x, y, f(i))
合計 (i=x, y, f(i))
a summation of f(i) with i taking all integer values from x up to and including y
i が x から y までのすべての整数値を取る f(i) の合計
log2(x)
log2(x)
the base-2 logarithm of x
x の底 2 の対数
& (bitwise "and")
& (ビット単位の「and」)
When operating on integer arguments, operates on a two's complement representation of the integer value. When operating on arguments with unequal bit depths, the bit depths are equalized by adding zeros in significant positions to the argument with lower bit depth.
整数引数を操作する場合、整数値の 2 の補数表現を操作します。ビット深度が等しくない引数を操作する場合、ビット深度が低い引数の有効な位置にゼロを追加することでビット深度が等しくなります。
| (bitwise "or")
|(ビット単位の「または」)
When operating on integer arguments, operates on a two's complement representation of the integer value. When operating on arguments with unequal bit depths, the bit depths are equalized by adding zeros in significant positions to the argument with lower bit depth.
整数引数を操作する場合、整数値の 2 の補数表現を操作します。ビット深度が等しくない引数を操作する場合、ビット深度が低い引数の有効な位置にゼロを追加することでビット深度が等しくなります。
x >> y
x >> y
arithmetic right shift of a two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. Bits shifted into the most significant bits (MSBs) as a result of the right shift have a value equal to the MSB of x prior to the shift operation.
x の 2 の補数整数表現を 2 進数 y で算術的に右シフトします。この関数は、y の非負の整数値に対してのみ定義されます。右シフトの結果として最上位ビット (MSB) にシフトされたビットは、シフト操作前の x の MSB に等しい値を持ちます。
x << y
x << y
arithmetic left shift of a two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. Bits shifted into the least significant bits (LSBs) as a result of the left shift have a value equal to 0.
x の 2 の補数整数表現を 2 進数 y で算術左シフトします。この関数は、y の非負の整数値に対してのみ定義されます。左シフトの結果として最下位ビット (LSB) にシフトされたビットの値は 0 になります。
x = y..z
x = y..z
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.
x は y から z までの整数値をとり、x、y、z は整数であり、z は y より大きくなります。
When order of precedence is not indicated explicitly by use of parentheses, operations are evaluated in the following order.
括弧を使用して優先順位が明示的に示されていない場合、演算は次の順序で評価されます。
* Operations of a higher precedence are evaluated before any operation of a lower precedence. Table 1 specifies the precedence of operations from highest to lowest; operations closer to the top of the table indicate a higher precedence.
* 優先順位の高い操作は、優先順位の低い操作よりも前に評価されます。表 1 は、操作の優先順位を最高から最低まで示しています。テーブルの先頭に近い操作ほど優先順位が高いことを示します。
* Operations of the same precedence are evaluated sequentially from left to right.
* 同じ優先順位の操作は、左から右に順番に評価されます。
+=========================================+
| operations (with operands x, y, and z) |
+=========================================+
| "x++", "x--" |
+-----------------------------------------+
| "!x", "-x" (as a unary prefix operator) |
+-----------------------------------------+
| x^y (power) |
+-----------------------------------------+
| "x * y", "x / y", "x // y", "x % y" |
+-----------------------------------------+
| "x + y", "x - y", "sum (i=x, y, f(i))" |
+-----------------------------------------+
| "x << y", "x >> y" |
+-----------------------------------------+
| "x < y", "x <= y", "x > y", "x >= y" |
+-----------------------------------------+
| "x == y", "x != y" |
+-----------------------------------------+
| "x & y" |
+-----------------------------------------+
| "x | y" |
+-----------------------------------------+
| "x && y" |
+-----------------------------------------+
| "x || y" |
+-----------------------------------------+
| "x ? y : z" |
+-----------------------------------------+
| "x..y" |
+-----------------------------------------+
| "x = y", "x += y", "x -= y" |
+-----------------------------------------+
Table 1: Operation precedence from highest (top of the table) to lowest (bottom of the table)
表 1: 操作の優先順位 (表の一番上) から最も低いもの (表の一番下)
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 element and multi-byte integers are written in big endian format. The decoding process behaves according to the value of the syntax element and to the values of previously decoded syntax elements.
各構文要素はすべて小文字の名前で説明され、その型は各行の構文コードの横に示されています。各構文要素とマルチバイト整数は、ビッグ エンディアン形式で書き込まれます。デコード プロセスは、構文要素の値と、以前にデコードされた構文要素の値に従って動作します。
In some cases, the syntax tables may use the values of other variables derived from syntax elements values. Such variables appear in the syntax tables or text, named by a mixture of lower case and uppercase letters and without any 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 with a lowercase letter are only used within the section in which they are derived.
場合によっては、構文テーブルは、構文要素の値から導出された他の変数の値を使用することがあります。このような変数は、構文テーブルまたはテキストに表示され、小文字と大文字を組み合わせて、アンダースコア文字を含まない名前が付けられます。大文字で始まる名前を持つ変数は、現在の構文構造とすべての依存構文構造のデコード用に導出されます。大文字で始まる名前を持つ変数は、変数の元の構文構造について言及することなく、後の構文構造のデコード プロセスで使用できます。小文字で始まる名前の変数は、その変数が導出されるセクション内でのみ使用されます。
Functions that specify properties of the current position in the bitstream are referred to as syntax functions. These functions are 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 by the decoding process from the bitstream.
ビットストリーム内の現在位置のプロパティを指定する関数は、構文関数と呼ばれます。これらの関数はセクション 5.2 で指定されており、デコード プロセスによってビットストリームから読み取られる次のビットの位置を示すビットストリーム ポインターの存在を前提としています。
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 elements or variables. Square brackets are used for the indexing of 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 row (vertical) index.
1 次元配列はリストと呼ばれます。2 次元配列は行列と呼ばれます。配列は構文要素または変数のいずれかになります。角括弧は配列のインデックス付けに使用されます。行列の視覚的表現を参照すると、最初の角括弧は列 (水平) インデックスとして使用され、2 番目の角括弧は行 (垂直) インデックスとして使用されます。
A specification of values of the entries in rows and columns of an array 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.
配列の行と列のエントリの値の指定は、{{...}{...}} で表すことができます。ここで、括弧の内側の各ペアは、行内の要素の値を列の昇順で指定し、行は行の昇順に並べられます。したがって、行列 s を {{1 6}{4 9}} に設定することは、s[0][0] が 1 に設定され、s[1][0] が 6 に設定され、s[0][1] が 4 に設定され、s[1][1] が 9 に設定されることを指定します。
Binary notation is indicated by enclosing the string of bit values in single quote marks. For example, '0b01000001' represents an eight-bit string having only its second and its last bits (counted from the most to the least significant bit) equal to 1.
バイナリ表記は、ビット値の文字列を一重引用符で囲むことによって示されます。たとえば、「0b01000001」は、2 番目と最後のビット (最上位ビットから最下位ビットまで数えて) のみが 1 に等しい 8 ビット文字列を表します。
Hexadecimal notation, indicated by prefixing the hexadecimal number by "0x", may be used instead of binary notation when the number of bits is an integer 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 bit) equal to 1.
ビット数が 4 の整数倍の場合、16 進数の前に「0x」を付けることで示される 16 進数表記が、2 進数表記の代わりに使用されることがあります。たとえば、0x41 は、2 番目と最後のビット (最上位ビットから最下位ビットまで数えて) のみが 1 に等しい 8 ビット文字列を表します。
A value equal to 0 represents a FALSE condition in a test statement. The value TRUE is represented by any value different from zero.
0 に等しい値は、テスト ステートメント内の FALSE 条件を表します。値 TRUE は、ゼロ以外の任意の値で表されます。
Processes are used to describe the decoding of syntax elements. A process has a separate specification and invoking. When invoking a process, the assignment of variables is specified as follows:
プロセスは、構文要素のデコードを記述するために使用されます。プロセスには個別の仕様と呼び出しがあります。プロセスを呼び出すとき、変数の割り当ては次のように指定されます。
* If the variables at the invoking and the process specification do not have the same name, the variables are explicitly assigned to lower case input or output variables of the process specification.
* 呼び出し時の変数とプロセス仕様の名前が同じでない場合、変数はプロセス仕様の小文字の入力変数または出力変数に明示的に割り当てられます。
* Otherwise (the variables at the invoking and the process specification have the same name), the assignment is implied.
* それ以外の場合 (呼び出し時の変数とプロセス仕様の名前が同じである場合)、割り当ては暗黙的に行われます。
In the specification of a process, a specific coding block is referred to by the variable name having a value equal to the address of the specific coding block.
プロセスの仕様において、特定のコーディングブロックは、そのアドレスに等しい値を持つ変数名によって参照される。
This section specifies the bitstream format of the Advanced Professional Video (APV) codec.
このセクションでは、Advanced Professional Video (APV) コーデックのビットストリーム形式を指定します。
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 format is specified in Appendix A.
生のビットストリーム形式は、アクセス ユニットのサイズを示すフィールドが各 AU の前にある一連の AU で構成されます。生のビットストリーム形式は付録 A で指定されています。
This section specifies the relationship between the source and decoded frames.
このセクションでは、ソース フレームとデコードされたフレームの間の関係を指定します。
The video source that is represented by the bitstream is a sequence of frames.
ビットストリームによって表されるビデオ ソースは、一連のフレームです。
Source and decoded frames are each comprised of one or more sample arrays:
ソース フレームとデコードされたフレームは、それぞれ 1 つ以上のサンプル配列で構成されます。
* Monochrome (for example, Luma only)
* モノクロ (たとえば、Luma のみ)
* Luma and two chroma (for example, YCbCr or YCgCo as specified in [H273]).
* 輝度と 2 つの彩度 (たとえば、[H273] で指定されている YCbCr または YCgCo)。
* Green, blue, and red (GBR, also known as RGB).
* 緑、青、赤 (GBR、RGB とも呼ばれる)。
* Arrays representing other unspecified tri-stimulus color samplings (for example, YZX, also known as XYZ as specified in [CIE15]).
* 他の未指定の 3 刺激カラー サンプリングを表す配列 (たとえば、[CIE15] で指定されている XYZ とも呼ばれる YZX)。
* Arrays representing other unspecified four color samplings
* 他の不特定の 4 つのカラー サンプリングを表す配列
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.
このドキュメントでの表記と用語の便宜上、これらの配列に関連付けられた変数と用語は、使用されている実際の色表現方法に関係なく、輝度と彩度と呼ばれることがあります。
The values of the variables SubWidthC, SubHeightC, and NumComps depend on the chroma format sampling structure as specified in Table 2. The chroma format sampling structure is signaled through chroma_format_idc. Other values of chroma_format_idc, SubWidthC, SubHeightC, and NumComps may be specified in future versions of this document.
変数 SubWidthC、SubHeightC、および NumComps の値は、表 2 で指定されているクロマ フォーマット サンプリング構造によって異なります。クロマ フォーマット サンプリング構造は、chroma_format_idc を通じて通知されます。chroma_format_idc、SubWidthC、SubHeightC、および NumComps の他の値は、このドキュメントの将来のバージョンで指定される可能性があります。
+===================+==========+===========+============+==========+
| chroma_format_idc | Chroma | SubWidthC | SubHeightC | NumComps |
| | format | | | |
+===================+==========+===========+============+==========+
| 0 | 4:0:0 | 1 | 1 | 1 |
+-------------------+----------+-----------+------------+----------+
| 1 | reserved | reserved | reserved | reserved |
+-------------------+----------+-----------+------------+----------+
| 2 | 4:2:2 | 2 | 1 | 3 |
+-------------------+----------+-----------+------------+----------+
| 3 | 4:4:4 | 1 | 1 | 3 |
+-------------------+----------+-----------+------------+----------+
| 4 | 4:4:4:4 | 1 | 1 | 4 |
+-------------------+----------+-----------+------------+----------+
| 5..7 | reserved | reserved | reserved | reserved |
+-------------------+----------+-----------+------------+----------+
Table 2: SubWidthC, SubHeightC, and NumComps values derived from chroma_format_idc
表 2: chroma_format_idc から導出された SubWidthC、SubHeightC、および NumComps の値
In 4:0:0 sampling, there is only one sample array that can be considered as the luma array.
4:0:0 サンプリングでは、luma 配列とみなせるサンプル配列は 1 つだけです。
In 4:2:2 sampling, each of the two chroma arrays has the same height and half the width of the luma array.
4:2:2 サンプリングでは、2 つのクロマ配列はそれぞれ同じ高さで、ルマ配列の半分の幅を持ちます。
In 4:4:4 sampling and 4:4:4:4 sampling, all the sample arrays have the same height and width as the luma array.
4:4:4 サンプリングおよび 4:4:4:4 サンプリングでは、すべてのサンプル配列の高さと幅は luma 配列と同じになります。
The number of bits necessary for the representation of each of the samples in the luma and chroma arrays in a video sequence is in the range of 10 to 16, inclusive.
ビデオ シーケンスのルマ配列とクロマ配列内の各サンプルの表現に必要なビット数は、10 ~ 16 の範囲内です。
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 frame are as shown in Figure 1.
chroma_format_idc の値が 2 に等しい場合、クロマ サンプルは対応するルミナンス サンプルと同じ場所に配置されます。フレーム内の公称位置は図 1 に示すとおりです。
& * & * & * & * & * ...
& * & * & * & * & * ...
& * & * & * & * & * ...
& * & * & * & * & * ...
...
& - location where both luma and chroma sample exist
* - location where only luma sample exist
Figure 1: Nominal vertical and horizontal locations of 4:2:2 luma and chroma samples in a frame
図 1: フレーム内の 4:2:2 輝度サンプルと彩度サンプルの公称垂直位置と水平位置
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 as shown in Figure 2.
各フレームで、chroma_format_idc の値が 3 または 4 に等しい場合、すべての配列サンプルが共存します。フレーム内の公称位置は図 2 に示すとおりです。
& & & & & & & & & & ...
& & & & & & & & & & ...
& & & & & & & & & & ...
& & & & & & & & & & ...
...
& - location where both luma and chroma sample exist
Figure 2: Nominal vertical and horizontal locations of 4:4:4 and 4:4:4:4 luma and chroma samples in a frame
図 2: フレーム内の 4:4:4 および 4:4:4:4 輝度および彩度サンプルの公称垂直および水平位置
Samples are processed in units of MBs. The variables MbWidth and MbHeight, which specify the width and height of the luma arrays for each MB, are defined as follows:
サンプルは MB 単位で処理されます。各 MB の luma 配列の幅と高さを指定する変数 MbWidth と MbHeight は、次のように定義されます。
* MbWidth = 16
* MB幅 = 16
* MbHeight = 16
* MB高さ = 16
The variables MbWidthC and MbHeightC, which specify the width and height of the chroma arrays for each MB, are derived as follows:
各 MB のクロマ配列の幅と高さを指定する変数 MbWidthC および MbHeightC は、次のように導出されます。
* MbWidthC = MbWidth // SubWidthC
* MbWidthC = MbWidth // サブ幅 C
* MbHeightC = MbHeight // SubHeightC
* MbHeightC = MbHeight // サブハイト C
This section specifies how a frame is partitioned into tiles.
このセクションでは、フレームをタイルに分割する方法を指定します。
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. Every tile has the same width and height, except possibly tiles at the right or bottom frame boundary when the frame width or height is not a multiple of the tile width or height, respectively. The tiles in a frame are scanned in raster order. Within a tile, the MBs are scanned in raster order. Each MB is comprised of one (MbWidth) x (MbHeight) luma array and zero, two, or three corresponding chroma sample arrays.
フレームはタイルに分割されます。タイルは、フレームの長方形の領域をカバーする MB のグループであり、他のタイルとは独立して処理されます。すべてのタイルの幅と高さは同じですが、フレームの幅または高さがそれぞれタイルの幅または高さの倍数ではない場合、右または下のフレーム境界にあるタイルが含まれる可能性があります。フレーム内のタイルはラスター順にスキャンされます。タイル内では、MB がラスター順にスキャンされます。各 MB は、1 つの (MbWidth) x (MbHeight) ルマ配列と、0、2、または 3 つの対応するクロマ サンプル配列で構成されます。
For example, a frame is divided into 6 tiles (3 tile columns and 2 tile rows) as shown in Figure 3. In this example, the tile size is defined as 4 column MBs and 4 row MBs. In case of the third and sixth tiles (in raster order), the tile size is 2 column MBs and 4 row MBs since the frame width is not a multiple of the tile width.
たとえば、図 3 に示すように、フレームは 6 つのタイル (3 タイル列と 2 タイル行) に分割されます。この例では、タイル サイズは 4 列 MB、4 行 MB として定義されています。3 番目と 6 番目のタイル (ラスター順) の場合、フレーム幅がタイル幅の倍数ではないため、タイル サイズは 2 列 MB、4 行 MB になります。
+===================+===================+=========+
# | | | # MB | MB | MB | MB # MB | MB #
+-------------------+-------------------+---------+
# | | | # MB | MB | MB | MB # MB | MB #
+----- tile -----+-------------------+---------+
# | | | # MB | MB | MB | MB # MB | MB #
+-------------------+-------------------+---------+
# | | | # MB | MB | MB | MB # MB | MB #
+===================+===================+=========+
# MB | MB | MB | MB # MB | MB | MB | MB # MB | MB #
+-------------------+-------------------+---------+
# MB | MB | MB | MB # MB | MB | MB | MB # MB | MB #
+-------------------+-------------------+---------+
# MB | MB | MB | MB # MB | MB | MB | MB # MB | MB #
+-------------------+-------------------+---------+
# MB | MB | MB | MB # MB | MB | MB | MB # MB | MB #
+===================+===================+=========+
#,= tile boundary
|,- MB boundary
Figure 3: Frame with 10 by 8 MBs that is partitioned into 6 tiles
図 3: 6 つのタイルに分割された 10 × 8 MB のフレーム
The following divisions of processing elements form spatial or component-wise partitioning:
処理要素の次の分割により、空間的またはコンポーネントごとの分割が形成されます。
* the division of each frame into components;
* 各フレームをコンポーネントに分割する。
* the division of each frame into tile columns;
* 各フレームをタイル列に分割します。
* the division of each frame into tile rows;
* 各フレームをタイル行に分割します。
* the division of each tile column into tiles;
* 各タイル列をタイルに分割する。
* the division of each tile row into tiles;
* 各タイル行をタイルに分割する。
* the division of each tile into color components;
* 各タイルを色成分に分割します。
* the division of each tile into MBs;
* 各タイルを MB に分割します。
* the division of each MB into blocks.
* 各 MB をブロックに分割します。
This process converts a two dimensional array into an one-dimensional array. The process starts at the top-left position in the block and then moves diagonally, changing direction at the edges of the block until it reaches the bottom-right position. Figure 4 shows an example of scanning order for 4x4 size block.
このプロセスでは、2 次元配列を 1 次元配列に変換します。プロセスはブロックの左上の位置から開始され、右下の位置に到達するまでブロックの端で方向を変えながら斜めに移動します。図 4 は、4x4 サイズのブロックのスキャン順序の例を示しています。
+===================+
# 00 | 01 | 05 | 06 #
+-------------------+
# 02 | 04 | 07 | 12 #
+-------------------+
# 03 | 08 | 11 | 13 #
+-------------------+
# 09 | 10 | 14 | 15 #
+===================+
Figure 4: Example of zig-zag scanning order for 4x4 block
図 4: 4x4 ブロックのジグザグ スキャン順序の例
Inputs to this process are:
このプロセスへの入力は次のとおりです。
* a variable blkWidth specifying the width of a block, and
* ブロックの幅を指定する変数 blkWidth、および
* a variable blkHeight specifying the height of a block.
* ブロックの高さを指定する変数 blkHeight。
Output of this process is the array zigZagScan[sPos].
このプロセスの出力は、配列 zigZagScan[sPos] です。
The array index sPos specifies the scan position ranging from 0 to (blkWidth * blkHeight)-1. Depending on the value of blkWidth and blkHeight, the array zigZagScan is derived as follows:
配列インデックス sPos は、0 ~ (blkWidth * blkHeight)-1 の範囲のスキャン位置を指定します。blkWidth と blkHeight の値に応じて、配列 zigZagScan は次のように導出されます。
pos = 0
zigZagScan[pos] = 0
pos++
for(line = 1; line < (blkWidth + blkHeight - 1); line++){
if(line % 2){
x = min(line, blkWidth - 1)
y = max(0, line - (blkWidth - 1))
while(x >=0 && y < blkHeight){
zigZagScan[pos] = y * blkWidth + x
pos++
x--
y++
}
}
else{
y = min(line, blkHeight - 1)
x = max(0, line - (blkHeight - 1))
while(y >= 0 && x < blkWidth){
zigZagScan[pos] = y * blkWidth + x
pos++
x++
y--
}
}
}
Figure 5: Pseudocode for zig-zag scan
図 5: ジグザグ スキャンの疑似コード
Inputs to this process are:
このプロセスへの入力は次のとおりです。
* a variable blkWidth specifying the width of a block, and
* ブロックの幅を指定する変数 blkWidth、および
* a variable blkHeight specifying the height of a block.
* ブロックの高さを指定する変数 blkHeight。
Output of this process is the array inverseScan[rPos].
このプロセスの出力は、配列 inverseScan[rPos] です。
The array index rPos specifies the raster scan position ranging from 0 to (blkWidth * blkHeight)-1. Depending on the value of blkWidth and blkHeight, the array inverseScan is derived as follows:
配列インデックス rPos は、0 ~ (blkWidth * blkHeight)-1 の範囲のラスター スキャン位置を指定します。blkWidth と blkHeight の値に応じて、配列 inverseScan は次のように導出されます。
* The variable forwardScan is derived by invoking the zig-zag scan order initialization process as specified in Section 4.4.1 with input parameters blkWidth and blkHeight.
* 変数 forwardScan は、セクション 4.4.1 で指定されているように、入力パラメータ blkWidth および blkHeight を使用してジグザグ スキャン順序の初期化プロセスを呼び出すことによって導出されます。
* The output variable inverseScan is derived as follows:
* 出力変数 inverseScan は次のように導出されます。
for(pos = 0; pos < blkWidth * blkHeight; pos++){
inverseScan[forwardScan[pos]] = pos
}
Figure 6: Pseudocode for inverse zig-zag scan
図 6: 逆ジグザグ スキャンの疑似コード
The syntax tables specify a superset of the syntax of all allowed bitstreams. Note that a decoder MUST implement some means for identifying entry points into the bitstream and some means to identify and handle non-conforming bitstreams. The methods for identifying and handling errors and other such situations are not specified in this document.
構文テーブルは、許可されているすべてのビットストリームの構文のスーパーセットを指定します。デコーダは、ビットストリームへのエントリポイントを識別するための何らかの手段と、不適合なビットストリームを識別して処理するための何らかの手段を実装しなければならないことに注意してください。エラーなどの状況を特定して処理する方法は、本書では規定されていません。
The APV bitstream is described using syntax code based on the C programming language [ISO9899] -- including use of if/else, while, and for -- as well as functions defined within this document.
APV ビットストリームは、C プログラミング言語 [ISO9899] に基づく構文コード (if/else、while、for の使用を含む) およびこの文書内で定義されている関数を使用して記述されます。
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 type referenced in that same line of syntax code by using the syntax elements processing functions defined in Section 5.2.5.
構文コードの構文テーブルは、図 7 に示すような 2 列形式で表示されます。この形式では、型列は、セクション 5.2.5 で定義された構文要素処理関数を使用して、構文コードの同じ行で参照される型を提供します。
syntax code | type
--------------------------------------------------------------|-----
ExampleSyntaxCode(){ |
operations |
syntax_element | u(n)
} |
Figure 7: A depiction of type-labeled syntax code for syntax description in this document
図 7: この文書の構文説明のためのタイプラベル付き構文コードの図
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 process from the bitstream.
このドキュメントで示されている関数は、構文の説明で使用されています。これらの関数は、デコード プロセスによってビットストリームから読み取られる次のビットの位置を示すビットストリーム ポインターの値によって表現されます。
* If the current position in the bitstream is on the last bit of a byte, i.e., the next bit in the bitstream is the first bit in a byte, the return value of byte_aligned() is equal to TRUE.
* ビットストリーム内の現在位置がバイトの最後のビットにある場合、つまり、ビットストリーム内の次のビットがバイトの最初のビットである場合、byte_aligned() の戻り値は TRUE に等しくなります。
* Otherwise, the return value of byte_aligned() is equal to FALSE.
* それ以外の場合、byte_aligned() の戻り値は FALSE と等しくなります。
* If the current position in the i-th tile() syntax structure is less than TileSize[i] in bytes from the beginning of the tile_header() syntax structure of the i-th tile, the return value of more_data_in_tile() is equal to TRUE.
* i 番目の tile() 構文構造内の現在位置が、i 番目のタイルの tile_header() 構文構造の先頭からバイト単位の TileSize[i] より小さい場合、more_data_in_tile() の戻り値は TRUE に等しくなります。
* Otherwise, the return value of more_data_in_tile() is equal to FALSE.
* それ以外の場合、more_data_in_tile() の戻り値は FALSE と等しくなります。
This function provides the next n bits in the bitstream for comparison purposes, without advancing the bitstream pointer.
この関数は、ビットストリーム ポインタを進めることなく、比較目的でビットストリーム内の次の n ビットを提供します。
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 advance the bitstream pointer.
この関数は、ビットストリームから次の n ビットを読み取ることを示し、ビットストリーム ポインタを n ビット位置だけ進めます。n が 0 に等しい場合、read_bits(n) は 0 に等しい値を返し、ビットストリーム ポインタを進めないよう指定されます。
b(8):
b(8):
byte having any pattern of bit string (8 bits). The parsing process for this descriptor is specified by the return value of the function read_bits(8).
任意のパターンのビット列(8ビット)を持つバイト。このディスクリプタの解析処理は、関数 read_bits(8) の戻り値によって指定されます。
f(n):
f(n):
fixed-pattern bit string using n bits written (from left to right) with the left bit first, i.e., big endian format. The parsing process for this descriptor is specified by the return value of the function read_bits(n).
n ビットを使用し、左ビットから順に (左から右に) 書き込まれる固定パターンのビット文字列、つまりビッグ エンディアン形式。このディスクリプタの解析処理は、関数 read_bits(n) の戻り値によって指定されます。
u(n):
国連):
unsigned integer using n bits. The parsing process for this descriptor is specified by the return value of the function read_bits(n) interpreted as a binary representation of an unsigned integer with the most significant bit written first.
n ビットを使用する符号なし整数。この記述子の解析プロセスは、最上位ビットが最初に書き込まれる符号なし整数のバイナリ表現として解釈される関数 read_bits(n) の戻り値によって指定されます。
h(v):
h(v):
variable-length entropy coded syntax element with the left bit first, i.e., big endian format. The parsing process for this descriptor is specified in Section 7.1.
左ビットが最初になる可変長エントロピー符号化構文要素、つまりビッグ エンディアン形式。この記述子の解析プロセスはセクション 7.1 で規定されています。
syntax code | type
--------------------------------------------------------------|-----
access_unit(au_size){ |
signature | f(32)
currReadSize = 4 |
do(){ |
pbu_size | u(32)
currReadSize += 4 |
pbu() |
currReadSize += pbu_size |
} while (au_size > currReadSize) |
} |
Figure 8: access unit syntax code
図 8: アクセスユニットの構文コード
signature
サイン
A four-character code that identifies the bitstream as an APV AU. The value MUST be 'aPv1' (0x61507631).
ビットストリームを APV AU として識別する 4 文字のコード。値は「aPv1」(0x61507631) でなければなりません。
pbu_size
pbu_size
the size of a primitive bitstream unit in bytes. A value of 0 is prohibited and the value of 0xFFFFFFFF for pbu_size is reserved for future use.
プリミティブ ビットストリーム ユニットのバイト単位のサイズ。値 0 は禁止されており、pbu_size の値 0xFFFFFFFF は将来の使用のために予約されています。
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 frames such as a frame with smaller resolution, zero or more metadata, and zero or more fillers.
注: AU は、1 つのプライマリ フレーム、追加ビュー用のフレームなどの 0 個以上の非プライマリ フレーム、0 個以上のアルファ フレーム、0 個以上の深度フレーム、より解像度の低いフレームなどの 0 個以上のプレビュー フレーム、0 個以上のメタデータ、および 0 個以上のフィラーで構成されます。
syntax code | type
--------------------------------------------------------------|-----
pbu(){ |
pbu_header() |
if((1 <= pbu_type && pbu_type <=2) || |
(25 <= pbu_type && pbu_type <= 27)) |
frame() |
else if(pbu_type == 65) |
au_info() |
else if(pbu_type == 66) |
metadata() |
else if (pbu_type == 67) |
filler() |
} |
Figure 9: primitive bitstream unit syntax code
図 9: プリミティブ ビットストリーム ユニットの構文コード
syntax code | type
--------------------------------------------------------------|-----
pbu_header(){ |
pbu_type | u(8)
group_id | u(16)
reserved_zero_8bits | u(8)
} |
Figure 10: primitive bitstream unit header syntax code
図 10: プリミティブ ビットストリーム ユニット ヘッダーの構文コード
pbu_type
pbu_type
indicates the type of data in a PBU listed in Table 3. Other values of pbu_type are reserved for future use.
は、表 3 にリストされている PBU 内のデータのタイプを示します。pbu_type のその他の値は、将来の使用のために予約されています。
+==========+=========================+=======+
| pbu_type | meaning | notes |
+==========+=========================+=======+
| 0 | reserved | |
+----------+-------------------------+-------+
| 1 | primary frame | |
+----------+-------------------------+-------+
| 2 | non-primary frame | |
+----------+-------------------------+-------+
| 3...24 | reserved | |
+----------+-------------------------+-------+
| 25 | preview frame | |
+----------+-------------------------+-------+
| 26 | depth frame | |
+----------+-------------------------+-------+
| 27 | alpha frame | |
+----------+-------------------------+-------+
| 28...64 | reserved | |
+----------+-------------------------+-------+
| 65 | access unit information | |
+----------+-------------------------+-------+
| 66 | metadata | |
+----------+-------------------------+-------+
| 67 | filler | |
+----------+-------------------------+-------+
| 68...255 | reserved | |
+----------+-------------------------+-------+
Table 3: List of PBU types
表 3: PBU タイプのリスト
Note: A PBU with pbu_type equal to 65 (access unit information) may happen in an AU. If it exists, it MUST be the first PBU in an AU, and it can be ignored by a decoder.
注: pbu_type が 65 (アクセス ユニット情報) の PBU が AU で発生する可能性があります。存在する場合、それは AU 内の最初の PBU でなければならず、デコーダは無視できます。
group_id
グループID
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 primary frame and a non-primary frame 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 pbu_type MUST be greater than 64. The value of 0xFFFF for group_id is reserved for future use.
符号化フレームとメタデータを関連付ける識別子を示します。1 つの AU 内で 3 つ以上のフレームが同じ group_id を持つことができます。プライマリ フレームと非プライマリ フレームは異なる group_id 値を持たなければなりません (MUST)。また、2 つの非プライマリ フレームは異なる group_id 値を持たなければなりません (MUST)。group_id の値が 0 に等しい場合、pbu_type の値は 64 より大きくなければなりません。group_id の値 0xFFFF は、将来の使用のために予約されています。
reserved_zero_8bits
予約済み_zero_8bits
MUST be equal to 0 in bitstreams conforming to the profiles specified in Section 9. Values of reserved_zero_8bits greater than 0 are reserved for future use. Decoders conforming to the profiles specified in Section 9 MUST ignore PBU with values of reserved_zero_8bits greater than 0.
セクション9で指定されたプロファイルに準拠するビットストリームでは、0に等しくなければなりません。0より大きいreserved_zero_8bitsの値は、将来の使用のために予約されています。セクション9で指定されたプロファイルに準拠するデコーダは、reserved_zero_8bitsの値が0より大きいPBUを無視しなければなりません(MUST)。
syntax code | type
--------------------------------------------------------------|-----
frame(){ |
frame_header() |
for(i = 0; i < NumTiles; i++){ |
tile_size[i] | u(32)
tile(i) |
} |
filler() |
} |
Figure 11: frame() syntax code
図 11: Frame() 構文コード
tile_size[i]
タイルサイズ[i]
indicates the size in bytes of i-th tile data (i.e., tile(i)) in raster order in a frame. The value of 0 for tile_size[i] is reserved for future use.
フレーム内のラスター順の i 番目のタイル データ (つまり、tile(i)) のサイズをバイト単位で示します。tile_size[i] の値 0 は、将来の使用のために予約されています。
The variable TileSize[i] is set equal to tile_size[i].
変数 TileSize[i] は tile_size[i] に等しく設定されます。
syntax code | type
--------------------------------------------------------------|-----
frame_header(){ |
frame_info() |
reserved_zero_8bits | u(8)
color_description_present_flag | u(1)
if(color_description_present_flag){ |
color_primaries | u(8)
transfer_characteristics | u(8)
matrix_coefficients | u(8)
full_range_flag | u(1)
} |
use_q_matrix | u(1)
if(use_q_matrix){ |
quantization_matrix() |
} |
tile_info() |
reserved_zero_8bits | u(8)
byte_alignment() |
} |
Figure 12: frame_header() syntax code
図 12: Frame_header() 構文コード
reserved_zero_8bits
予約済み_zero_8bits
MUST be equal to 0 in bitstreams conforming to the profiles specified in Section 9. Values of reserved_zero_8bits greater than 0 are reserved for future use. Decoders conforming to the profiles specified in Section 9 MUST ignore PBU with values of reserved_zero_8bits greater than 0.
セクション9で指定されたプロファイルに準拠するビットストリームでは、0に等しくなければなりません。0より大きいreserved_zero_8bitsの値は、将来の使用のために予約されています。セクション9で指定されたプロファイルに準拠するデコーダは、reserved_zero_8bitsの値が0より大きいPBUを無視しなければなりません(MUST)。
color_description_present_flag equal to 1
color_description_present_flag が 1 に等しい
specifies that color_primaries, transfer_characteristics, and matrix_coefficients are present. color_description_present_flag equal to 0 specifies that color_primaries, transfer_characteristics, and matrix_coefficients are not present.
color_primaries、transfer_characteristics、matrix_coefficients が存在することを指定します。color_description_present_flag が 0 に等しい場合は、color_primaries、transfer_characteristics、matrix_coefficients が存在しないことを指定します。
color_primaries
color_primaries
MUST have the semantics of ColourPrimaries as specified in [H273]. When the color_primaries syntax element is not present, the value of color_primaries is inferred to be equal to 2.
[H273] で指定されているように、ColourPrimaries のセマンティクスを持たなければなりません。color_primaries 構文要素が存在しない場合、color_primaries の値は 2 に等しいと推測されます。
transfer_characteristics
伝達特性
MUST have the semantics of TransferCharacteristics as specified in [H273]. When the transfer_characteristics syntax element is not present, the value of transfer_characteristics is inferred to be equal to 2.
[H273] で指定されている TransferCharacteristics のセマンティクスを持たなければなりません (MUST)。transfer_characteristics 構文要素が存在しない場合、transfer_characteristics の値は 2 に等しいと推測されます。
matrix_coefficients
行列係数
MUST have the semantics of MatrixCoefficients as specified in [H273]. When the matrix_coefficients syntax element is not present, the value of matrix_coefficients is inferred to be equal to 2.
[H273] で指定されている MatrixCoefficients のセマンティクスを持たなければなりません (MUST)。math_coefficients 構文要素が存在しない場合、matrix_coefficients の値は 2 に等しいと推測されます。
full_range_flag
フルレンジフラグ
MUST have the semantics of VideoFullRangeFlag as specified in [H273]. When the full_range_flag syntax element is not present, the value of full_range_flag is inferred to be equal to 0.
[H273] で指定されている VideoFullRangeFlag のセマンティクスを持たなければなりません (MUST)。full_range_flag 構文要素が存在しない場合、full_range_flag の値は 0 に等しいと推測されます。
use_q_matrix
use_q_matrix
with a value of 1 specifies that the quantization matrices are present. A value of 0 specifies that the quantization matrices are not present.
値 1 は、量子化行列が存在することを指定します。値 0 は、量子化行列が存在しないことを指定します。
reserved_zero_8bits
予約済み_zero_8bits
MUST be equal to 0 in bitstreams conforming to the profiles specified in Section 9. Values of reserved_zero_8bits greater than 0 are reserved for future use. Decoders conforming to the profiles specified in Section 9 MUST ignore PBU with values of reserved_zero_8bits greater than 0.
セクション9で指定されたプロファイルに準拠するビットストリームでは、0に等しくなければなりません。0より大きいreserved_zero_8bitsの値は、将来の使用のために予約されています。セクション9で指定されたプロファイルに準拠するデコーダは、reserved_zero_8bitsの値が0より大きいPBUを無視しなければなりません(MUST)。
syntax code | type
--------------------------------------------------------------|-----
frame_info(){ |
profile_idc | u(8)
level_idc | u(8)
band_idc | u(3)
reserved_zero_5bits | u(5)
frame_width | u(24)
frame_height | u(24)
chroma_format_idc | u(4)
bit_depth_minus8 | u(4)
capture_time_distance | u(8)
reserved_zero_8bits | u(8)
} |
Figure 13: frame_info() syntax code
図 13: Frame_info() 構文コード
profile_idc
プロフィールIDC
indicates a profile to which the coded frame conforms as specified in Section 9. Bitstreams SHALL NOT contain values of profiles_idc other than those specified in Section 9. Other values of profile_idc are reserved for future use.
セクション 9 で指定されているように、符号化されたフレームが準拠するプロファイルを示します。ビットストリームには、セクション 9 で指定されたもの以外の profiles_idc の値が含まれてはなりません (SHALL NOT)。profile_idc の他の値は、将来の使用のために予約されています。
level_idc
レベルIDC
indicates a level to which the coded frame conforms as specified in Section 9. Bitstreams SHALL NOT contain values of level_idc other than those specified in Section 9. Other values of level_idc are reserved for future use.
セクション 9 で指定されているように、符号化されたフレームが準拠するレベルを示します。ビットストリームには、セクション 9 で指定されたもの以外の level_idc の値を含めてはなりません (SHALL NOT)。level_idc の他の値は、将来の使用のために予約されています。
band_idc
バンドIDC
specifies a maximum coded data rate of level_idc as specified in Section 9. Bitstreams SHALL NOT contain values of band_idc other 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 future use.
セクション 9 で指定されているように、level_idc の最大符号化データ レートを指定します。ビットストリームには、セクション 9 で指定されたもの以外の Band_idc の値が含まれてはなりません (SHALL NOT)。band_idc の値は 0 から 3 の範囲内でなければなりません (MUST)。band_idc の他の値は将来の使用のために予約されています。
reserved_zero_5bits
予約済み_zero_5bits
MUST be equal to 0 in bitstreams conforming to the profiles specified in Section 9. Values of reserved_zero_8bits greater than 0 are reserved for future use. Decoders conforming to the profiles specified in Section 9 MUST ignore PBU with values of reserved_zero_8bits greater than 0.
セクション9で指定されたプロファイルに準拠するビットストリームでは、0に等しくなければなりません。0より大きいreserved_zero_8bitsの値は、将来の使用のために予約されています。セクション9で指定されたプロファイルに準拠するデコーダは、reserved_zero_8bitsの値が0より大きいPBUを無視しなければなりません(MUST)。
frame_width
フレーム幅
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 value of 2. The value 0 is reserved for future use.
フレームの幅を輝度サンプルの単位で指定します。chroma_format_idc の値が 2 の場合、frame_width は 2 の倍数でなければなりません。値 0 は将来の使用のために予約されています。
frame_height
フレームの高さ
specifies the height of the frame in units of luma samples. The value 0 is reserved for future use.
フレームの高さを輝度サンプルの単位で指定します。値 0 は将来の使用のために予約されています。
The variables FrameWidthInMbsY, FrameHeightInMbsY, FrameWidthInSamplesY, FrameHeightInSamplesY, FrameWidthInSamplesC, FrameHeightInSamplesC, FrameSizeInMbsY, and FrameSizeInSamplesY are derived as follows:
変数 FrameWidthInMbsY、FrameHeightInMbsY、FrameWidthInSamplesY、FrameHeightInSamplesY、FrameWidthInSamplesC、FrameHeightInSamplesC、FrameSizeInMbsY、および FrameSizeInSamplesY は次のように導出されます。
* FrameWidthInSamplesY = frame_width
* FrameWidthInSamplesY = フレーム幅
* FrameHeightInSamplesY = frame_height
* FrameHeightInSamplesY = フレームの高さ
* FrameWidthInMbsY = ceil(FrameWidthInSamplesY / MbWidth)
* FrameWidthInMbsY = ceil(FrameWidthInSamplesY / MbWidth)
* FrameHeightInMbsY = ceil(FrameHeightInSamplesY / MbHeight)
* FrameHeightInMbsY = ceil(FrameHeightInSamplesY / MbHeight)
* FrameWidthInSamplesC = FrameWidthInSamplesY // SubWidthC
* FrameWidthInSamplesC = FrameWidthInSamplesY // SubWidthC
* FrameHeightInSamplesC = FrameHeightInSamplesY // SubHeightC
* FrameHeightInSamplesC = FrameHeightInSamplesY // サブハイト C
* FrameSizeInMbsY = FrameWidthInMbsY * FrameHeightInMbsY
* FrameSizeInMbsY = FrameWidthInMbsY * FrameHeightInMbsY
* FrameSizeInSamplesY = FrameWidthInSamplesY * FrameHeightInSamplesY
* FrameSizeInSamplesY = FrameWidthInSamplesY * FrameHeightInSamplesY
chroma_format_idc
chroma_format_idc
specifies the chroma sampling relative to the luma sampling as specified in Table 2. The value of chroma_format_idc MUST be 0, 2, 3, or 4. Other values are reserved for future use.
表 2 で指定されている輝度サンプリングを基準とした彩度サンプリングを指定します。chroma_format_idc の値は 0、2、3、または 4 でなければなりません。他の値は将来の使用のために予約されています。
bit_depth_minus8
bit_ Depth_minus8
specifies the bit depth of the samples. The variables BitDepth and QpBdOffset are derived as follows:
サンプルのビット深度を指定します。変数 BitDepth と QpBdOffset は次のように導出されます。
* BitDepth = bit_depth_minus8 + 8
* ビット深度 = ビット深度マイナス 8 + 8
* QpBdOffset = bit_depth_minus8 * 6
* QpBdOffset = ビット深度マイナス 8 * 6
bit_depth_minus8 MUST be in the range of 2 to 8, inclusive. Other values are reserved for future use.
bit_ Depth_minus8 は 2 ~ 8 の範囲内でなければなりません (両端の値を含む)。他の値は将来の使用のために予約されています。
capture_time_distance
キャプチャ時間_距離
indicates the time difference between the capture time of the frames in the previous access unit and frames in the current access unit in milliseconds if there has been any access unit preceding the access unit this frame belongs to.
このフレームが属するアクセス ユニットの前にアクセス ユニットがあった場合、前のアクセス ユニットのフレームのキャプチャ時間と現在のアクセス ユニットのフレームの時間差をミリ秒単位で示します。
reserved_zero_8bits
予約済み_zero_8bits
MUST be equal to 0 in bitstreams conforming to the profiles specified in Section 9. Values of reserved_zero_8bits greater than 0 are reserved for future use. Decoders conforming to the profiles specified in Section 9 MUST ignore PBU with values of reserved_zero_8bits greater than 0.
セクション9で指定されたプロファイルに準拠するビットストリームでは、0に等しくなければなりません。0より大きいreserved_zero_8bitsの値は、将来の使用のために予約されています。セクション9で指定されたプロファイルに準拠するデコーダは、reserved_zero_8bitsの値が0より大きいPBUを無視しなければなりません(MUST)。
syntax code | type
--------------------------------------------------------------|-----
quantization_matrix(){ |
for(i = 0; i < NumComps; i++){ |
for(y = 0; y < 8; y++){ |
for(x = 0; x < 8; x++){ |
q_matrix[i][x][y] | u(8)
} |
} |
} |
} |
Figure 14: quantization_matrix() syntax code
図 14: quantization_matrix() 構文コード
q_matrix[i][x][y]
q_matrix[i][x][y]
specifies a scaling value in the quantization matrices. When 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 component; when chroma_format_idc is equal to 2 or 3, the value of the index i is equal to 0 for Y component, 1 for Cb, and 2 for Cr. The value of 0 for q_matrix[i][x][y] is reserved for future use.
量子化行列のスケーリング値を指定します。q_matrix[i][x][y] が存在しない場合、16 に等しいと推測されます。配列インデックス i は色コンポーネントのインジケーターを指定します。chroma_format_idc が 2 または 3 に等しい場合、インデックス i の値は、Y コンポーネントの場合は 0、Cb の場合は 1、Cr の場合は 2 に等しくなります。q_matrix[i][x][y] の値 0 は、将来の使用のために予約されています。
The quantization matrix, QMatrix[i][x][y], is derived as follows:
量子化行列 QMatrix[i][x][y] は次のように導出されます。
* QMatrix[i][x][y] = q_matrix[i][x][y]
* QMatrix[i][x][y] = q_matrix[i][x][y]
syntax code | type
--------------------------------------------------------------|-----
tile_info(){ |
tile_width_in_mbs | u(20)
tile_height_in_mbs | u(20)
startMb = 0 |
for(i = 0; startMb < FrameWidthInMbsY; i++){ |
ColStarts[i] = startMb * MbWidth |
startMb += tile_width_in_mbs |
} |
ColStarts[i] = FrameWidthInMbsY*MbWidth |
TileCols = i |
startMb = 0 |
for(i = 0; startMb < FrameHeightInMbsY; i++){ |
RowStarts[i] = startMb * MbHeight |
startMb += tile_height_in_mbs |
} |
RowStarts[i] = FrameHeightInMbsY*MbHeight |
TileRows = i |
NumTiles = TileCols * TileRows |
tile_size_present_in_fh_flag | u(1)
if(tile_size_present_in_fh_flag){ |
for(i = 0; i < NumTiles; i++){ |
tile_size_in_fh[i] | u(32)
} |
} |
} |
Figure 15: tile_info() syntax code
図 15: tile_info() 構文コード
tile_width_in_mbs
tile_width_in_mbs
specifies the width of a tile in units of MBs.
タイルの幅を MB 単位で指定します。
tile_height_in_mbs
tile_height_in_mbs
specifies the height of a tile in units of MBs.
タイルの高さを MB 単位で指定します。
tile_size_present_in_fh_flag
tile_size_present_in_fh_flag
equal to 1 specifies that tile_size_in_fh[i] is present in the frame header. tile_size_present_in_fh_flag equal to 0 specifies that tile_size_in_fh[i] is not present in the frame header.
1 に等しい場合は、tile_size_in_fh[i] がフレーム ヘッダーに存在することを指定します。tile_size_present_in_fh_flagが0に等しい場合は、tile_size_in_fh[i]がフレームヘッダーに存在しないことを指定します。
tile_size_in_fh[i]
タイルサイズ_in_fh[i]
indicates the size in bytes of i-th tile data in raster order in a frame. The value of tile_size_in_fh[i] MUST have the same value with tile_size[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 future use.
フレーム内のラスター順の i 番目のタイル データのサイズをバイト単位で示します。tile_size_in_fh[i] の値は、tile_size[i] と同じ値でなければなりません。存在しない場合、tile_size_in_fh[i] の値は tile_size[i] と等しいと推測されます。tile_size_in_fh[i] の値 0 は、将来の使用のために予約されています。
syntax code | type
--------------------------------------------------------------|-----
au_info(){ |
num_frames | u(16)
for(i = 0; i < num_frames; i++){ |
pbu_type | u(8)
group_id | u(16)
reserved_zero_8bits | u(8)
frame_info() |
} |
reserved_zero_8bits | u(8)
byte_alignment() |
filler() |
} |
Figure 16: au_info() syntax code
図 16: au_info() 構文コード
num_frames
num_frames
indicates the number of frames contained in the current AU.
は、現在のAUに含まれるフレームの数を示します。
pbu_type
pbu_type
has the same semantics as pbu_type in the pbu_header() syntax.
pbu_header() 構文の pbu_type と同じセマンティクスを持ちます。
Note: The value of pbu_type MUST be 1, 2, 25, 26, or 27 in bitstreams conforming to this document.
注: この文書に準拠するビットストリームでは、pbu_type の値は 1、2、25、26、または 27 でなければなりません。
group_id
グループID
has the same semantics as group_id in the pbu_header() syntax.
pbu_header() 構文の group_id と同じセマンティクスを持ちます。
reserved_zero_8bits
予約済み_zero_8bits
MUST be equal to 0 in bitstreams conforming to the profiles specified in Section 9. Values of reserved_zero_8bits greater than 0 are reserved for future use. Decoders conforming to the profiles specified in Section 9 MUST ignore PBU with values of reserved_zero_8bits greater than 0.
セクション9で指定されたプロファイルに準拠するビットストリームでは、0に等しくなければなりません。0より大きいreserved_zero_8bitsの値は、将来の使用のために予約されています。セクション9で指定されたプロファイルに準拠するデコーダは、reserved_zero_8bitsの値が0より大きいPBUを無視しなければなりません(MUST)。
syntax code | type
--------------------------------------------------------------|-----
metadata(){ |
metadata_size | u(32)
currReadSize = 0 |
do{ |
payloadType = 0 |
while(next_bits(8) == 0xFF){ |
ff_byte | f(8)
payloadType += ff_byte |
currReadSize++ |
} |
metadata_payload_type | u(8)
payloadType += metadata_payload_type |
currReadSize++ |
|
payloadSize = 0 |
while(next_bits(8) == 0xFF){ |
ff_byte | f(8)
payloadSize += ff_byte |
currReadSize++ |
} |
metadata_payload_size | u(8)
payloadSize += metadata_payload_size |
currReadSize++ |
|
metadata_payload(payloadType, payloadSize) |
currReadSize += payloadSize |
} while(metadata_size > currReadSize) |
filler() |
} |
Figure 17: metadata() syntax code
図 17:metadata() 構文コード
metadata_size
メタデータのサイズ
specifies the size of metadata before filler() in the current PBU.
現在の PBU 内の filler() の前のメタデータのサイズを指定します。
ff_byte
ff_バイト
is a byte equal to 0xFF.
は 0xFF に等しいバイトです。
metadata_payload_type
メタデータペイロードタイプ
specifies the last byte of the payload type of a metadata.
メタデータのペイロード タイプの最後のバイトを指定します。
metadata_payload_size
メタデータペイロードサイズ
specifies the last byte of the payload size of a metadata.
メタデータのペイロード サイズの最後のバイトを指定します。
Syntax and semantics of metadata_payload() are specified in Section 8.
metadata_payload() の構文とセマンティクスはセクション 8 で規定されています。
syntax code | type
--------------------------------------------------------------|-----
filler(){ |
while(next_bits(8) == 0xFF) |
ff_byte | f(8)
} |
Figure 18: filler() syntax code
図 18: filler() 構文コード
ff_byte
ff_バイト
is a byte equal to 0xFF.
は 0xFF に等しいバイトです。
syntax code | type
--------------------------------------------------------------|-----
tile(tileIdx){ |
tile_header(tileIdx) |
for(i = 0; i < NumComps; i++){ |
tile_data(tileIdx, i) |
} |
while(more_data_in_tile()){ |
tile_dummy_byte | b(8)
} |
} |
Figure 19: tile() syntax code
図 19: tile() 構文コード
tile_dummy_byte
タイル_ダミー_バイト
has any pattern of 8-bit string.
8 ビット文字列の任意のパターンを持ちます。
syntax code | type
--------------------------------------------------------------|-----
tile_header(tileIdx){ |
tile_header_size | u(16)
tile_index | u(16)
for(i = 0; i < NumComps; i++){ |
tile_data_size[i] | u(32)
} |
for(i = 0; i < NumComps; i++){ |
tile_qp[i] | u(8)
} |
reserved_zero_8bits | u(8)
byte_alignment() |
} |
Figure 20: tile_header() syntax code
図 20: tile_header() 構文コード
tile_header_size
タイルヘッダーサイズ
indicates the size of the tile header in bytes.
タイルヘッダーのサイズをバイト単位で示します。
tile_index
タイルインデックス
specifies the tile index in raster order in a frame. tile_index MUST have the same value as tileIdx.
フレーム内のラスター順にタイル インデックスを指定します。tile_index は、tileIdx と同じ値でなければなりません。
tile_data_size[i]
タイルデータサイズ[i]
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 component; when chroma_format_idc is equal to 2 or 3, the value of the index i is equal to 0 for Y component, 1 for Cb, and 2 for Cr. The value of 0 for tile_data_size[i] is reserved for future use.
タイル内の i 番目の色成分データのサイズをバイト単位で示します。配列インデックス i は、色コンポーネントのインジケーターを指定します。chroma_format_idc が 2 または 3 に等しい場合、インデックス i の値は、Y コンポーネントの場合は 0、Cb の場合は 1、Cr の場合は 2 に等しくなります。tile_data_size[i] の値 0 は、将来の使用のために予約されています。
tile_qp[i]
タイル_qp[i]
specifies the quantization parameter value for i-th color component. The array index i specifies an indicator for the color component; when chroma_format_idc is equal to 2 or 3, the value of the index i is equal to 0 for Y component, 1 for Cb, and 2 for Cr. The Qp[i] to be used for the MBs in the tile are derived as follows:
i 番目の色成分の量子化パラメータ値を指定します。配列インデックス i は、色コンポーネントのインジケーターを指定します。chroma_format_idc が 2 または 3 に等しい場合、インデックス i の値は、Y コンポーネントの場合は 0、Cb の場合は 1、Cr の場合は 2 に等しくなります。タイル内の MB に使用される Qp[i] は次のように導出されます。
* 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] は、-QpBdOffset から 51 までの範囲内でなければなりません (両端の値を含む)。
reserved_zero_8bits
予約済み_zero_8bits
MUST be equal to 0 in bitstreams conforming to the profiles specified in Section 9. Values of reserved_zero_8bits greater than 0 are reserved for future use. Decoders conforming to the profiles specified in Section 9 MUST ignore PBU with values of reserved_zero_8bits greater than 0.
セクション9で指定されたプロファイルに準拠するビットストリームでは、0に等しくなければなりません。0より大きいreserved_zero_8bitsの値は、将来の使用のために予約されています。セクション9で指定されたプロファイルに準拠するデコーダは、reserved_zero_8bitsの値が0より大きいPBUを無視しなければなりません(MUST)。
syntax code | type
--------------------------------------------------------------|-----
tile_data(tileIdx, cIdx){ |
x0 = ColStarts[tileIdx % TileCols] |
y0 = RowStarts[tileIdx // TileCols] |
numMbColsInTile = (ColStarts[tileIdx % TileCols + 1] - |
ColStarts[tileIdx % TileCols]) // MbWidth |
numMbRowsInTile = (RowStarts[tileIdx // TileCols + 1] - |
RowStarts[tileIdx // TileCols]) // MbHeight |
numMbsInTile = numMbColsInTile * numMbRowsInTile |
PrevDC = 0 |
PrevDcDiff = 20 |
Prev1stAcLevel = 0 |
for(i = 0; i < numMbsInTile; i++){ |
xMb = x0 + ((i % numMbColsInTile) * MbWidth) |
yMb = y0 + ((i // numMbColsInTile) * MbHeight) |
macroblock_layer(xMb, yMb, cIdx) |
} |
byte_alignment() |
} |
Figure 21: tile_data() syntax code
図 21: tile_data() 構文コード
The tile_data() syntax calculates the location of the macroblocks belonging to each tile and collects them.
tile_data() 構文は、各タイルに属するマクロブロックの位置を計算し、それらを収集します。
syntax code | type
--------------------------------------------------------------|-----
macroblock_layer(xMb, yMb, cIdx){ |
subW = (cIdx == 0)? 1 : SubWidthC |
subH = (cIdx == 0)? 1 : SubHeightC |
blkWidth = (cIdx == 0)? MbWidth : MbWidthC |
blkHeight = (cIdx == 0)? MbHeight : MbHeightC |
TrSize = 8 |
for(y = 0; y < blkHeight; y += TrSize){ |
for(x = 0; x < blkWidth; x += TrSize){ |
abs_dc_coeff_diff | h(v)
if(abs_dc_coeff_diff) |
sign_dc_coeff_diff | u(1)
TransCoeff[cIdx][xMb // subW + x][yMb // subH + y] = |
PrevDC + abs_dc_coeff_diff * |
(1 - 2*sign_dc_coeff_diff) |
PrevDC = |
TransCoeff[cIdx][xMb // subW + x][yMb // subH + y] |
PrevDcDiff = abs_dc_coeff_diff |
ac_coeff_coding(xMb // subW + x, yMb // subH + y, |
log2(TrSize), log2(TrSize), cIdx) |
} |
} |
} |
Figure 22: macroblock_layer() syntax code
図 22:macroblock_layer() 構文コード
abs_dc_coeff_diff
abs_dc_coeff_diff
specifies the absolute value of the difference between the current DC transform coefficient level and PrevDC.
現在の DC 変換係数レベルと PrevDC の差の絶対値を指定します。
sign_dc_coeff_diff
サイン_dc_coeff_diff
specifies the sign of the difference between the current DC transform coefficient level and PrevDC. sign_dc_coeff_diff equal to 0 specifies that the difference has a positive value. sign_dc_coeff_diff equal to 1 specifies that the difference has a negative value.
現在の DC 変換係数レベルと PrevDC の差の符号を指定します。0 に等しいsign_dc_coeff_diff は、差が正の値であることを指定します。1 に等しいsign_dc_coeff_diff は、差が負の値であることを指定します。
The transform coefficients are represented by the arrays TransCoeff[cIdx][x0][y0]. The array indices x0, y0 specify the location (x0, y0) relative to the top-left sample for each component of the frame. The array index cIdx specifies an indicator for the color component; when chroma_format_idc is equal to 2 or 3, the value of the index i is equal to 0 for Y component, 1 for Cb, and 2 for Cr. The value of TransCoeff[cIdx][x0][y0] MUST be in the range of -32768 to 32767, inclusive.
変換係数は、配列 TransCoeff[cIdx][x0][y0] で表されます。配列インデックス x0、y0 は、フレームの各コンポーネントの左上のサンプルを基準とした位置 (x0、y0) を指定します。配列インデックス cIdx は、色コンポーネントのインジケーターを指定します。chroma_format_idc が 2 または 3 に等しい場合、インデックス i の値は、Y コンポーネントの場合は 0、Cb の場合は 1、Cr の場合は 2 に等しくなります。TransCoeff[cIdx][x0][y0] の値は、-32768 ~ 32767 の範囲内でなければなりません (両端の値を含む)。
syntax code | type
--------------------------------------------------------------|-----
ac_coeff_coding(x0, y0, log2BlkWidth, log2BlkHeight, cIdx){ |
scanPos = 1 |
firstAC = 1 |
PrevLevel = Prev1stAcLevel |
PrevRun = 0 |
do{ |
coeff_zero_run | h(v)
for(i = 0; i < coeff_zero_run; i++){ |
blkPos = ScanOrder[scanPos] |
xC = blkPos & ((1 << log2BlkWidth) - 1) |
yC = blkPos >> log2BlkWidth |
TransCoeff[cIdx][x0+xC][y0 + yC] = 0 |
scanPos++ |
} |
PrevRun = coeff_zero_run |
if(scanPos < (1 << (log2BlkWidth + log2BlkHeight))){ |
abs_ac_coeff_minus1 | h(v)
sign_ac_coeff | u(1)
level = (abs_ac_coeff_minus1 + 1) * |
(1 - 2 * sign_ac_coeff) |
blkPos = ScanOrder[scanPos] |
xC = blkPos & ((1 << log2BlkWidth) - 1) |
yC = blkPos >> log2BlkWidth |
TransCoeff[cIdx][x0 + xC][y0 + yC] = level |
scanPos++ |
PrevLevel = abs_ac_coeff_minus1 + 1 |
if(firstAC == 1){ |
firstAC = 0 |
Prev1stAcLevel = PrevLevel |
} |
} |
} while(scanPos < (1 << (log2BlkWidth + log2BlkHeight))) |
} |
Figure 23: ac_coeff_coding() syntax code
図 23: ac_coeff_coding() 構文コード
coeff_zero_run
coeff_zero_run
specifies the number of zero-valued transform coefficient levels that are located before the position of the next non-zero transform coefficient level in a scan of transform coefficient levels.
変換係数レベルのスキャンにおいて、次の非ゼロ変換係数レベルの位置の前に位置するゼロ値の変換係数レベルの数を指定します。
abs_ac_coeff_minus1
abs_ac_coeff_minus1
plus 1 specifies the absolute value of an AC transform coefficient level at the given scanning position.
プラス 1 は、指定されたスキャン位置での AC 変換係数レベルの絶対値を指定します。
sign_ac_coeff
サイン_ac_coeff
specifies the sign of an AC transform coefficient level for the given scanning position. sign_ac_coeff equal to 0 specifies that the corresponding 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.
指定されたスキャン位置の AC 変換係数レベルの符号を指定します。0に等しいsign_ac_coeffは、対応するAC変換係数レベルが正の値を持つことを指定する。1に等しいsign_ac_coeffは、対応するAC変換係数レベルが負の値を持つことを指定する。
The array ScanOrder[sPos] specifies the mapping of the zig-zag scan position sPos, ranging from 0 to (1 << log2BlkWidth) * (1 << log2BlkHeight) - 1, inclusive, to a raster scan position rPos. ScanOrder is derived by invoking Section 4.4.1 with input parameters blkWidth equal to (1 << log2BlkWidth) and blkHeight equal to (1 << log2BlkHeight).
配列 ScanOrder[sPos] は、ジグザグ スキャン位置 sPos のマッピングを指定します。範囲は 0 ~ (1 << log2BlkWidth) * (1 << log2BlkHeight) - 1 (両端の値を含む) で、ラスター スキャン位置 rPos までです。ScanOrder は、(1 << log2BlkWidth) に等しい入力パラメータ blkWidth および (1 << log2BlkHeight) に等しい blkHeight を使用してセクション 4.4.1 を呼び出すことによって導出されます。
syntax code | type
--------------------------------------------------------------|-----
byte_alignment(){ |
while(!byte_aligned()) |
alignment_bit_equal_to_zero | f(1)
} |
Figure 24: byte_alignment() syntax code
図 24: byte_alignment() 構文コード
alignment_bit_equal_to_zero
アラインメントビットがゼロに等しい
MUST be equal to 0.
0に等しくなければなりません。
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 this process is a decoded frame.
このプロセスは、ビットストリームからデコードされたフレームを取得するために呼び出されます。このプロセスへの入力は、コード化されたフレームのビットストリームです。このプロセスの出力は、デコードされたフレームです。
The decoding process operates as follows for the current frame:
デコード プロセスは、現在のフレームに対して次のように動作します。
* The syntax structure for a coded frame is parsed to obtain the parsed syntax structures.
* コード化されたフレームの構文構造が解析されて、解析された構文構造が取得されます。
* The processes in Sections 6.1, 6.2, and 6.3 specify the decoding processes using syntax elements in all syntax structures. For bitstreams conforming to this document, the coded tiles of the frame 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 form a partitioning of the frame.
* セクション 6.1、6.2、および 6.3 のプロセスは、すべての構文構造の構文要素を使用して復号化プロセスを指定します。この文書に準拠するビットストリームの場合、フレームの符号化されたタイルには、フレームのタイルへの分割とタイルの MB への分割がフレームの分割を形成するように、フレームのすべての MB のタイル データが含まれなければなりません (MUST)。
* After all the tiles in the current frame have been decoded, the decoded frame is cropped using the cropping rectangle if FrameWidthInSamplesY is not equal to FrameWidthInMbsY * MbWidth or FrameHeightInSamplesY is not equal to FrameHeightInMbsY * MbHeight.
* 現在のフレーム内のすべてのタイルがデコードされた後、FrameWidthInSamplesY が FrameWidthInMbsY * MbWidth に等しくない、または FrameHeightInSamplesY が FrameHeightInMbsY * MbHeight に等しくない場合、デコードされたフレームはトリミング四角形を使用してトリミングされます。
* The cropping rectangle, which specifies the samples of a frame that are output, is derived as follows:
* 出力されるフレームのサンプルを指定するトリミング四角形は、次のように導出されます。
- The cropping rectangle contains the luma samples with horizontal frame coordinates from 0 to FrameWidthInSampleY - 1 and vertical frame coordinates from 0 to FrameHeightInSamplesY - 1, inclusive.
- トリミング四角形には、0 ~ FrameWidthInSampleY - 1 の水平フレーム座標と 0 ~ FrameHeightInSamplesY - 1 の垂直フレーム座標を持つ輝度サンプルが含まれます。
- The cropping rectangle contains the two chroma arrays having frame coordinates (x//SubWidthC, y//SubHeightC), where (x,y) are the frame coordinates of the specified luma samples.
- トリミング四角形には、フレーム座標 (x//SubWidthC, y//SubHeightC) を持つ 2 つのクロマ配列が含まれています。ここで、(x,y) は指定された輝度サンプルのフレーム座標です。
This process is invoked for each MB.
このプロセスは MB ごとに呼び出されます。
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 sample of the current frame. Outputs of this process are the reconstructed samples of all color components. The total number of color components is indicated by the value of NumComps for the 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
このプロセスへの入力は、現在のフレームの左上の輝度サンプルを基準とした現在の輝度 MB の左上のサンプルを指定する輝度位置 (xMb、yMb) です。このプロセスの出力は、すべての色成分の再構成されたサンプルです。カラーコンポーネントの総数は、現在の MB の NumComps の値によって示されます。たとえば、chroma_format_idc が 2 または 3 の場合、NumComps の値は 3 に等しく、Y 成分、Cb 成分、Cr 成分の 3 つの成分が再構築されます。
The following steps apply:
次の手順が適用されます。
* Let recSamples[0] be a (MbWidth)x(MbHeight) array of the reconstructed samples of the first color component (when chroma_format_idc is equal to 2 or 3, Y).
* recSamples[0] を、最初の色成分の再構成サンプルの (MbWidth)x(MbHeight) 配列とします (chroma_format_idc が 2 または 3、Y に等しい場合)。
* The block reconstruction process as specified in Section 6.2 is invoked with the luma location (xMb, yMb), the variable nBlkW set 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], which is the reconstructed samples of the first color component for the current MB.
* セクション 6.2 で指定されているブロック再構成プロセスは、輝度位置 (xMb, yMb)、MbWidth に等しく設定された変数 nBlkW、MbHeight に等しく設定された変数 nBlkH、0 に等しく設定された変数 cIdx、および (MbWidth)x(MbHeight) 配列 recSamples[0] を入力として呼び出されます。出力は、(MbWidth)x(MbHeight) 配列 recSamples[0] の修正バージョンであり、現在の MB の最初の色成分の再構築されたサンプルです。
* 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. For example, when chroma_format_idc is equal to 2 or 3, recSamples[1] is the Cb color component.
* chroma_format_idc が 0 に等しくない場合、recSamples[1] を 2 番目の色成分の再構成サンプルの (MbWidthC)x(MbHeightC) 配列とします。たとえば、chroma_format_idc が 2 または 3 に等しい場合、recSamples[1] は Cb カラー コンポーネントになります。
* When chroma_format_idc is not equal to 0, the block reconstruction process 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 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 the (MbWidthC)x(MbHeightC) array recSamples[1], which is the reconstructed samples of the second color component for the current MB.
* chroma_format_idc が 0 に等しくない場合、セクション 6.2 で指定されているブロック再構成プロセスが、輝度位置 (xMb, yMb)、MbWidthC に等しく設定された変数 nBlkW、MbHeightC に等しく設定された変数 nBlkH、1 に等しく設定された変数 cIdx、および (MbWidthC)x(MbHeightC) 配列 recSamples[1] を入力として呼び出されます。出力は、(MbWidthC)x(MbHeightC) 配列 recSamples[1] の修正バージョンであり、現在の MB の 2 番目の色成分の再構築されたサンプルです。
* 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. For example, when chroma_format_idc is equal to 2 or 3, recSamples[2] is the Cr color component.
* chroma_format_idc が 0 に等しくない場合、recSamples[2] を 3 番目の色成分の再構成サンプルの (MbWidthC)x(MbHeightC) 配列とします。たとえば、chroma_format_idc が 2 または 3 の場合、recSamples[2] は Cr カラー コンポーネントになります。
* When chroma_format_idc is not equal to 0, the block reconstruction process 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 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 the (MbWidthC)x(MbHeightC) array recSamples[2], which is the reconstructed samples of the third color component for the current MB.
* chroma_format_idc が 0 に等しくない場合、セクション 6.2 で指定されているブロック再構成プロセスが、輝度位置 (xMb, yMb)、MbWidthC に等しく設定された変数 nBlkW、MbHeightC に等しく設定された変数 nBlkH、2 に等しく設定された変数 cIdx、および (MbWidthC)x(MbHeightC) 配列 recSamples[2] を入力として呼び出されます。出力は、(MbWidthC)x(MbHeightC) 配列 recSamples[2] の修正バージョンであり、現在の MB の 3 番目の色コンポーネントの再構築されたサンプルです。
* When chroma_format_idc is equal to 4, let recSamples[3] be a (MbWidthC)x(MbHeightC) array of the reconstructed samples of the fourth color component.
* chroma_format_idc が 4 に等しい場合、recSamples[3] を 4 番目の色成分の再構成サンプルの (MbWidthC)x(MbHeightC) 配列とします。
* When chroma_format_idc is equal to 4, the block reconstruction process 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 MbHeightC, the variable cIdx set equal to 3, and the (MbWidthC)x(MbHeightC) array recSamples[3] as inputs. The output is a modified version of the (MbWidthC)x(MbHeightC) array recSamples[3], which is the reconstructed samples of the fourth color component for the current MB.
* chroma_format_idc が 4 に等しい場合、セクション 6.2 で指定されているブロック再構築プロセスが、輝度位置 (xMb, yMb)、MbWidthC に設定された変数 nBlkW、MbHeightC に設定された変数 nBlkH、3 に設定された変数 cIdx、および (MbWidthC)x(MbHeightC) 配列 recSamples[3] を入力として呼び出されます。出力は、(MbWidthC)x(MbHeightC) 配列 recSamples[3] の修正バージョンであり、現在の MB の 4 番目の色コンポーネントの再構築されたサンプルです。
Inputs to this process are:
このプロセスへの入力は次のとおりです。
* 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,
* 現在のフレームの左上の輝度サンプルを基準とした現在の MB の左上のサンプルを指定する輝度位置 (xMb、yMb)、
* two variables nBlkW and nBlkH specifying the width and the height of the current block,
* 現在のブロックの幅と高さを指定する 2 つの変数 nBlkW と nBlkH、
* a variable cIdx specifying the color component of the current block, and
* 現在のブロックの色コンポーネントを指定する変数 cIdx、および
* an (nBlkW)x(nBlkH) array of recSamples of a reconstructed block.
* 再構成されたブロックの recSamples の (nBlkW)x(nBlkH) 配列。
Output of this process is a modified version of the (nBlkW)x(nBlkH) array recSamples of reconstructed samples.
このプロセスの出力は、再構成されたサンプルの (nBlkW)x(nBlkH) 配列 recSamples の修正バージョンです。
The following applies:
以下が適用されます。
* The variables numBlkX and numBlkY are derived as follows:
* 変数 numBlkX と numBlkY は次のように導出されます。
- numBlkX = nBlkW // TrSize
- numBlkX = nBlkW // TrSize
- numBlkY = nBlkH // TrSize
- numBlkY = nBlkH // TrSize
* For yIdx = 0..numBlkY - 1, the following applies:
* yIdx = 0..numBlkY - 1 の場合、次が適用されます。
- For xIdx = 0..numBlkX - 1, the following applies:
- xIdx = 0..numBlkX - 1 の場合、次が適用されます。
o The variables xBlk and yBlk are derived as follows:
o 変数 xBlk と yBlk は次のように導出されます。
+ 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
o The scaling and transformation process as specified in Section 6.3 is invoked with the location (xBlk, yBlk), the variable cIdx set equal to cIdx, the transform width nBlkW set equal to TrSize, and the transform height nBlkH set equal to TrSize as inputs. The output is a (TrSize)x(TrSize) array r of a reconstructed block.
o セクション 6.3 で指定されているスケーリングおよび変換プロセスは、位置 (xBlk, yBlk)、cIdx に等しく設定された変数 cIdx、TrSize に等しく設定された変換幅 nBlkW、および TrSize に等しく設定された変換高さ nBlkH を入力として呼び出されます。出力は、再構成されたブロックの (TrSize)x(TrSize) 配列 r です。
o The (TrSize)x(TrSize) array recSamples is modified as follows:
o (TrSize)x(TrSize) 配列 recSamples は次のように変更されます。
+ recSamples[(xIdx * TrSize) + i, (yIdx * TrSize) + j] = r[i,j], with i=0..TrSize-1, j=0..TrSize-1
+ recSamples[(xIdx * TrSize) + i, (yIdx * TrSize) + j] = r[i,j]、i=0..TrSize-1、j=0..TrSize-1
Inputs to this process are:
このプロセスへの入力は次のとおりです。
* a location (xBlkY, yBlkY) of the current color component specifying the top-left sample of the current block relative to the top-left sample of the current frame,
* 現在のフレームの左上のサンプルを基準とした現在のブロックの左上のサンプルを指定する現在のカラー コンポーネントの位置 (xBlkY、yBlkY)、
* a variable cIdx specifying the color component of the current block,
* 現在のブロックの色コンポーネントを指定する変数 cIdx、
* a variable nBlkW specifying the width of the current block, and
* 現在のブロックの幅を指定する変数 nBlkW、および
* a variable nBlkH specifying the height of the current block.
* 現在のブロックの高さを指定する変数 nBlkH。
Output of this process is the (nBlkW)x(nBlkH) array of reconstructed samples r with elements r[x][y].
このプロセスの出力は、要素 r[x][y] を含む再構成されたサンプル r の (nBlkW)x(nBlkH) 配列です。
The quantization parameter qP is derived as follows:
量子化パラメータ qP は次のように導出されます。
* qP = Qp[cIdx] + QpBdOffset
* qP = Qp[cIdx] + QpBdOffset
The (nBlKW)x(nBlkH) array of reconstructed samples r is derived as follows:
再構成されたサンプル r の (nBlKW)x(nBlkH) 配列は次のように導出されます。
* The scaling process for transform coefficients as specified in Section 6.3.1 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(nBlkH) array of scaled transform coefficients d.
* セクション 6.3.1 で指定された変換係数のスケーリング プロセスは、ブロック位置 (xBlkY、yBlkY)、ブロック幅 nBlkW およびブロック高さ nBlkH、色成分変数 cIdx、および量子化パラメータ qP を入力として呼び出されます。出力は、スケーリングされた変換係数 d の (nBlkW)x(nBlkH) 配列です。
* The transformation process for scaled transform coefficients as specified in Section 6.3.2 is invoked with the block location (xBlkY, yBlkY), the block width nBlkW and the block height nBlkH, the color component variable cIdx, and the (nBlkW)x(nBlkH) array of scaled transform coefficients d as inputs. The output is an (nBlkW)x(nBlkH) array of reconstructed samples r.
* セクション 6.3.2 で指定されているスケーリングされた変換係数の変換プロセスは、ブロック位置 (xBlkY, yBlkY)、ブロック幅 nBlkW およびブロック高さ nBlkH、色成分変数 cIdx、およびスケーリングされた変換係数 d の (nBlkW)x(nBlkH) 配列を入力として呼び出します。出力は、再構成されたサンプル r の (nBlkW)x(nBlkH) 配列です。
* The variable bdShift is derived as follows:
* 変数 bdShift は次のように導出されます。
- bdShift = 20 - BitDepth
- bdShift = 20 - ビット深度
* The reconstructed sample values r[x][y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1 are modified as follows:
* x = 0..nBlkW - 1、y = 0..nBlkH - 1 の再構成されたサンプル値 r[x][y] は次のように変更されます。
- r[x][y] = clip(0, (1 << BitDepth)-1, ((r[x][y]+(1 << (bdShift-1)))>>bdShift) + (1 << (BitDepth-1)))
- r[x][y] = クリップ(0, (1 << BitDepth)-1, ((r[x][y]+(1 << (bdShift-1)))>>bdShift) + (1 << (BitDepth-1)))
Inputs to this process are:
このプロセスへの入力は次のとおりです。
* a location (xBlkY, yBlkY) of the current color component specifying the top-left sample of the current block relative to the top-left sample of the current frame,
* 現在のフレームの左上のサンプルを基準とした現在のブロックの左上のサンプルを指定する現在のカラー コンポーネントの位置 (xBlkY、yBlkY)、
* a variable nBlkW specifying the width of the current block,
* 現在のブロックの幅を指定する変数 nBlkW、
* a variable nBlkH specifying the height of the current block,
* 現在のブロックの高さを指定する変数 nBlkH、
* a variable cIdx specifying the color component of the current block, and
* 現在のブロックの色コンポーネントを指定する変数 cIdx、および
* a variable qP specifying the quantization parameter.
* 量子化パラメータを指定する変数 qP。
Output of this process is the (nBlkW)x(nBlkH) array d of scaled transform coefficients with elements d[x][y].
このプロセスの出力は、要素 d[x][y] を持つスケーリングされた変換係数の (nBlkW)x(nBlkH) 配列 d です。
The variable bdShift is derived as follows:
変数 bdShift は次のように導出されます。
* bdShift = BitDepth + ((log2(nBlkW) + log2(nBlkH)) // 2) - 5
* bdShift = BitDepth + ((log2(nBlkW) + log2(nBlkH)) // 2) - 5
The list levelScale[] is specified as follows:
リスト levelScale[] は次のように指定されます。
* levelScale[k] = {40, 45, 51, 57, 64, 71} with k = 0..5.
* levelScale[k] = {40, 45, 51, 57, 64, 71}、k = 0..5。
For the derivation of the scaled transform coefficients d[x][y] with x = 0..nBlkW - 1, y = 0..nBlkH - 1, the following applies:
x = 0..nBlkW - 1、y = 0..nBlkH - 1 でのスケーリングされた変換係数 d[x][y] の導出には、以下が適用されます。
* The scaled transform coefficient d[x][y] is derived as follows:
* スケーリングされた変換係数 d[x][y] は次のように導出されます。
- d[x][y] = clip(-32768, 32767, ((TransCoeff[cIdx][xBlkY][yBlkY] * QMatrix[cIdx][x][y] * levelScale[qP % 6] << (qP//6)) + (1 << (bdShift-1)) >> bdShift))
- d[x][y] = Clip(-32768, 32767, ((TransCoeff[cIdx][xBlkY][yBlkY] * QMatrix[cIdx][x][y] * levelScale[qP % 6] << (qP//6)) + (1 << (bdShift-1)) >> bdShift))
Inputs to this process are:
このプロセスへの入力は次のとおりです。
* a location (xBlkY, yBlkY) of the current color component specifying the top-left sample of the current block relative to the top-left sample of the current frame,
* 現在のフレームの左上のサンプルを基準とした現在のブロックの左上のサンプルを指定する現在のカラー コンポーネントの位置 (xBlkY、yBlkY)、
* a variable nBlkW specifying the width of the current block,
* 現在のブロックの幅を指定する変数 nBlkW、
* a variable nBlkH specifying the height of the current block, and
* 現在のブロックの高さを指定する変数 nBlkH、および
* an (nBlkW)x(nBlkH) array d of scaled transform coefficients with elements d[x][y].
* 要素 d[x][y] を持つスケーリングされた変換係数の (nBlkW)x(nBlkH) 配列 d。
Output of this process is the (nBlkW)x(nBlkH) array r of reconstructed samples with elements r[x][y].
このプロセスの出力は、要素 r[x][y] を含む再構成されたサンプルの (nBlkW)x(nBlkH) 配列 r です。
The (nBlkW)x(nBlkH) array r of reconstructed samples is derived as follows:
再構成されたサンプルの (nBlkW)x(nBlkH) 配列 r は次のように導出されます。
* 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 process as specified in Section 6.3.2.2 for each column x = 0..nBlkW - 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.
* スケーリングされた変換係数 d[x][y] (x = 0..nBlkW - 1、y = 0..nBlkH - 1) の各 (垂直) 列は、各列 x = に対してセクション 6.3.2.2 で指定されている 1 次元変換プロセスを呼び出すことによって、x = 0..nBlkW - 1、y = 0..nBlkH - 1 で e[x][y] に変換されます。0..nBlkW - 1 (変換ブロック nBlkH のサイズ)、および入力として y = 0..nBlkH - 1 を持つリスト d[x][y]。出力は、y = 0..nBlkH - 1 のリスト e[x][y] です。
* The following applies:
* 以下が適用されます。
- g[x][y] = (e[x][y] + 64) >> 7
- g[x][y] = (e[x][y] + 64) >> 7
* 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 specified in Section 6.3.2.2 for each row y = 0..nBlkH - 1 with the 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.
* 結果の配列 g[x][y] (x = 0..nBlkW - 1、y = 0..nBlkH - 1) の各 (水平) 行は、各行 y = に対してセクション 6.3.2.2 で指定されている 1 次元変換プロセスを呼び出すことによって、x = 0..nBlkW - 1、y = 0..nBlkH - 1 の r[x][y] に変換されます。0..nBlkH - 1 (変換ブロック nBlkW のサイズ)、およびリスト g[x][y] (x = 0..nBlkW - 1 を入力)。出力はリスト r[x][y] (x = 0..nBlkW - 1) です。
Inputs to this process are:
このプロセスへの入力は次のとおりです。
* a variable nTbS specifying the sample size of scaled transform coefficients, and
* スケーリングされた変換係数のサンプル サイズを指定する変数 nTbS、および
* a list of scaled transform coefficients x with elements x[j], with j = 0..(nTbS - 1).
* 要素 x[j] を持つスケーリングされた変換係数 x のリスト (j = 0..(nTbS - 1))。
Output of this process is the list of transformed samples y with elements y[i], with i = 0..(nTbS - 1).
このプロセスの出力は、要素 y[i] (i = 0..(nTbS - 1)) を含む変換されたサンプル y のリストです。
The transformation matrix derivation process as specified in Section 6.3.2.3 is invoked with the transform size nTbS as input, and the transformation matrix transMatrix as output.
セクション 6.3.2.3 で指定されている変換行列導出プロセスは、変換サイズ nTbS を入力として、変換行列 transMatrix を出力として呼び出されます。
The list of transformed samples y[i] with i = 0..(nTbS - 1) is derived as follows:
変換されたサンプル y[i] (i = 0..(nTbS - 1)) のリストは次のように導出されます。
* y[i] = sum(j = 0, nTbS - 1, transMatrix[i][j] * x[j])
* y[i] = sum(j = 0, nTbS - 1, transMatrix[i][j] * x[j])
Input to this process is a variable nTbS specifying the horizontal sample size of scaled transform coefficients.
このプロセスへの入力は、スケーリングされた変換係数の水平サンプル サイズを指定する変数 nTbS です。
Output of this process is the transformation matrix transMatrix.
このプロセスの出力は、変換行列 transMatrix です。
The transformation matrix transMatrix is derived based on nTbs as follows:
変換行列 transMatrix は、次のように nTbs に基づいて導出されます。
* If nTbS is equal to 8, the following applies:
* nTbS が 8 に等しい場合、次が適用されます。
transMatrix[m][n] =
{
{ 64, 64, 64, 64, 64, 64, 64, 64 }
{ 89, 75, 50, 18, -18, -50, -75, -89 }
{ 84, 35, -35, -84, -84, -35, 35, 84 }
{ 75, -18, -89, -50, 50, 89, 18, -75 }
{ 64, -64, -64, 64, 64, -64, -64, 64 }
{ 50, -89, 18, 75, -75, -18, 89, -50 }
{ 35, -84, 84, -35, -35, 84, -84, 35 }
{ 18, -50, 75, -89, 89, -75, 50, -18 }
}
Figure 25: Transform matrix for nTbS == 8
図 25: nTbS == 8 の変換行列
This process is invoked for the parsing of syntax elements with descriptor h(v) in Section 5.3.15 and Section 5.3.16.
このプロセスは、セクション 5.3.15 およびセクション 5.3.16 の記述子 h(v) を使用して構文要素を解析するために呼び出されます。
Inputs to this process are bits for the abs_dc_coeff_diff syntax element. Output of this process is a value of the abs_dc_coeff_diff syntax element. The variable kParam is derived as follows:
このプロセスへの入力は、abs_dc_coeff_diff 構文要素のビットです。このプロセスの出力は、abs_dc_coeff_diff 構文要素の値です。変数 kParam は次のように導出されます。
kParam = clip(0, 5, PrevDcDiff >> 1)
kParam = クリップ(0, 5, PrevDcDiff >> 1)
The value of syntax element abs_dc_coeff_diff is obtained by invoking the parsing process for variable-length codes as specified in Section 7.1.4 with kParam.
構文要素 abs_dc_coeff_diff の値は、セクション 7.1.4 で指定されている可変長コードの解析プロセスを kParam で呼び出すことによって取得されます。
Inputs to this process are bits for the coeff_zero_run syntax element.
このプロセスへの入力は、coeff_zero_run 構文要素のビットです。
Output of this process is a value of the coeff_zero_run syntax element.
このプロセスの出力は、coeff_zero_run 構文要素の値です。
The variable kParam is derived as follows:
変数 kParam は次のように導出されます。
kParam = clip(0, 2, PrevRun >> 2)
kParam = クリップ(0, 2, 前の実行 >> 2)
The value of syntax element coeff_zero_run is obtained by invoking the parsing process for variable-length codes as specified in Section 7.1.4 with kParam.
構文要素 coeff_zero_run の値は、セクション 7.1.4 で kParam を使用して指定された可変長コードの解析プロセスを呼び出すことによって取得されます。
Inputs to this process are bits for the abs_ac_coeff_minus1 syntax element.
このプロセスへの入力は、abs_ac_coeff_minus1 構文要素のビットです。
Output of this process is a value of the abs_ac_coeff_minus1 syntax element.
このプロセスの出力は、abs_ac_coeff_minus1 構文要素の値です。
The variable kParam is derived as follows:
変数 kParam は次のように導出されます。
kParam = clip(0, 4, PrevLevel >> 2)
kParam = クリップ(0, 4, PrevLevel >> 2)
The value of syntax element abs_ac_coeff_minus1 is obtained by invoking the parsing process for variable-length codes as specified in Section 7.1.4 with kParam.
構文要素 abs_ac_coeff_minus1 の値は、セクション 7.1.4 で指定されている可変長コードの解析プロセスを kParam で呼び出すことによって取得されます。
Input to this process is kParam.
このプロセスへの入力は kParam です。
Output of this process is a value, symbolValue, of a syntax element.
このプロセスの出力は、構文要素の値、symbolValue です。
The symbolValue is derived as follows:
symbolValue は次のように導出されます。
symbolValue = 0
parseExpGolomb = 1
k = kParam
stopLoop = 0
if(read_bits(1) == 1){
parseExpGolomb = 0
}
else{
if(read_bits (1) == 0){
symbolValue += (1 << k)
parseExpGolomb = 0
}
else{
symbolValue += (2 << k)
parseExpGolomb = 1
}
}
if(parseExpGolomb){
do{
if(read_bits(1) == 1){
stopLoop = 1
}
else{
symbolValue += (1 << k)
k++
}
} while(!stopLoop)
}
if(k > 0)
symbolValue += read_bits(k)
Figure 26: Parsing process of symbolValue
図 26:symbolValue の解析プロセス
where the value returned from read_bits(n) is interpreted as a binary representation of an n-bit unsigned integer with the most significant bit written first.
ここで、read_bits(n) から返される値は、最上位ビットが最初に書き込まれる n ビットの符号なし整数のバイナリ表現として解釈されます。
This process specifies the code generation process for syntax elements with descriptor h(v).
このプロセスは、記述子 h(v) を使用して構文要素のコード生成プロセスを指定します。
Input to this process is a symbol value of the abs_dc_coeff_diff syntax element.
このプロセスへの入力は、abs_dc_coeff_diff 構文要素のシンボル値です。
Output of this process is a codeword of the abs_dc_coeff_diff syntax element.
このプロセスの出力は、abs_dc_coeff_diff 構文要素のコードワードです。
The variable kParam is derived as follows:
変数 kParam は次のように導出されます。
kParam = clip(0, 5, PrevDcDiff >> 1)
kParam = クリップ(0, 5, PrevDcDiff >> 1)
The codeword of syntax element abs_dc_coeff_diff is obtained by invoking the generation process for variable-length codes as specified in Section 7.2.4 with the symbol value symbolValue and kParam.
シンタックス要素 abs_dc_coeff_diff のコードワードは、セクション 7.2.4 で指定された可変長コードの生成プロセスを、シンボル値 simpleValue および kParam を使用して呼び出すことによって取得されます。
Input to this process is a symbol value of the coeff_zero_run syntax element.
このプロセスへの入力は、coeff_zero_run 構文要素のシンボル値です。
Output of this process is a codeword of the coeff_zero_run syntax element.
このプロセスの出力は、coeff_zero_run 構文要素のコードワードです。
The variable kParam is derived as follows:
変数 kParam は次のように導出されます。
kParam = clip(0, 2, PrevRun >> 2)
kParam = クリップ(0, 2, 前の実行 >> 2)
The codeword of syntax element coeff_zero_run is obtained by invoking the generation process for variable-length codes as specified in Section 7.2.4 with the symbol value symbolValue and kParam.
シンタックス要素 coeff_zero_run のコードワードは、セクション 7.2.4 で指定されているように、シンボル値 simpleValue および kParam を使用して可変長コードの生成プロセスを呼び出すことによって取得されます。
Input to this process is a symbol value of the abs_ac_coeff_minus1 syntax element.
このプロセスへの入力は、abs_ac_coeff_minus1 構文要素のシンボル値です。
Output of this process is a codeword of the abs_ac_coeff_minus1 syntax element.
このプロセスの出力は、abs_ac_coeff_minus1 構文要素のコードワードです。
The variable kParam is derived as follows:
変数 kParam は次のように導出されます。
kParam = clip(0, 4, PrevLevel >> 2)
kParam = クリップ(0, 4, PrevLevel >> 2)
The codeword of syntax element abs_ac_coeff_minus1 is obtained by invoking the generation for variable-length codes as specified in Section 7.2.4 with the symbol value symbolValue and kParam.
構文要素 abs_ac_coeff_minus1 のコードワードは、セクション 7.2.4 で指定されているように、シンボル値 simpleValue および kParam を使用して可変長コードの生成を呼び出すことによって取得されます。
Inputs to this process are symbolVal and kParam
このプロセスへの入力は、symbolVal と kParam です。
Output of this process is a codeword of a syntax element.
このプロセスの出力は、構文要素のコードワードです。
The codeword is derived as follows:
コードワードは次のように導出されます。
PrefixVLCTable[3][2] = {{1, 0}, {0, 0}, {0, 1}}
symbolValue = symbolVal
valPrefixVLC = clip(0, 2, symbolVal >> kParam)
bitCount = 0
k = kParam
while(symbolValue >= (1 << k)){
symbolValue -= (1 << k)
if(bitCount < 2)
put_bits(PrefixVLCTable[valPrefixVLC][bitCount], 1)
else
put_bits(0, 1)
if(bitCount >= 2)
k++
bitCount++
}
if(bitCount < 2)
put_bits(PrefixVLCTable[valPrefixVLC][bitCount], 1)
else
put_bits(1, 1)
if(k > 0)
put_bits(symbolValue, k)
Figure 27: Generating bits from symbolValue
図 27:symbolValue からのビットの生成
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 significant bit written first.
ここで、put_bits(v, n) から生成されたコードワードは、n ビットの符号なし整数値 v のバイナリ表現として解釈され、最上位ビットが最初に書き込まれます。
syntax code | type
--------------------------------------------------------------|-----
metadata_payload(payloadType, payloadSize){ |
if(payloadType == 4){ |
metadata_itu_t_t35(payloadSize) |
} |
else if(payloadType == 5){ |
metadata_mdcv(payloadSize) |
} |
else if(payloadType == 6){ |
metadata_cll(payloadSize) |
} |
else if(payloadType == 10){ |
metadata_filler(payloadSize) |
} |
else if(payloadType == 170){ |
metadata_user_defined(payloadSize) |
} |
else{ |
metadata_undefined(payloadSize) |
} |
byte_alignment() |
} |
Figure 28: metadata_payload() syntax code
図 28:metadata_payload() 構文コード
The syntax and semantics of each type of metadata are defined in Section 8.2.
各タイプのメタデータの構文とセマンティクスはセクション 8.2 で定義されています。
syntax code | type
--------------------------------------------------------------|-----
metadata_filler(payloadSize){ |
for(i = 0; i < payloadSize; i++){ |
ff_byte | f(8)
} |
} |
ff_byte
ff_バイト
is a byte equal to 0xFF.
は 0xFF に等しいバイトです。
This metadata contains information registered as specified in [ITUT-T35].
このメタデータには、[ITUT-T35] で指定されているように登録された情報が含まれます。
syntax code | type
--------------------------------------------------------------|-----
metadata_itu_t_t35(payloadSize){ |
itu_t_t35_country_code | b(8)
readSize = payloadSize - 1 |
|
if(itu_t_t35_country_code == 0xFF){ |
itu_t_t35_country_code_extension | b(8)
readSize-- |
} |
|
for(i = 0; i < readSize; i++){ |
itu_t_t35_payload[i] | b(8)
} |
} |
Figure 29: metadata_itu_t_t35() syntax code
図 29:metadata_itu_t_t35() 構文コード
itu_t_t35_country_code
itu_t_t35_国コード
MUST be a byte having the semantics of country code as specified in Annex A of [ITUT-T35].
[ITUT-T35] の付録 A で指定されている国コードのセマンティクスを持つバイトでなければなりません (MUST)。
itu_t_t35_country_code_extension
itu_t_t35_国コード拡張子
MUST be a byte having the semantics of country code as specified in Annex B of [ITUT-T35].
[ITUT-T35] の付録 B で指定されている国コードのセマンティクスを持つバイトでなければなりません (MUST)。
itu_t_t35_payload[i]
itu_t_t35_ペイロード[i]
MUST be a byte having the semantics of data registered as specified in [ITUT-T35].
[ITUT-T35] で指定されているように登録されたデータのセマンティクスを持つバイトでなければなりません。
The terminal provider code and terminal provider oriented code as specified in [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 MUST be data having syntax and semantics as specified by the entity identified by the [ITUT-T35] country code and terminal provider code. Note that any metadata to be carried with this type of payload is expected to have been registered through either national administrator, the Alliance for Telecommunications Industry Solutions (ATIS) or the ITUT-T Telecommunication Standardization Bureau (TSB) as specified in [ITUT-T35].
[ITUT-T35] で指定されている端末プロバイダー コードおよび端末プロバイダー指向コードは、itu_t_t35_payload の最初の 1 バイト以上に含まれなければなりません (MUST)。itu_t_t35_payload データ内の残りのバイトは、[ITUT-T35] 国コードと端末プロバイダー コードで識別されるエンティティによって指定された構文とセマンティクスを持つデータでなければなりません (MUST)。このタイプのペイロードで運ばれるメタデータは、[ITUT-T35] で指定されているように、国家管理者、電気通信産業ソリューション同盟 (ATIS)、または ITUT-T 電気通信標準化局 (TSB) のいずれかを通じて登録されていることが期待されることに注意してください。
syntax code | type
--------------------------------------------------------------|-----
metadata_mdcv(payloadSize){ |
for(i = 0; i < 3; i++){ |
primary_chromaticity_x[i] | u(16)
primary_chromaticity_y[i] | u(16)
} |
white_point_chromaticity_x | u(16)
white_point_chromaticity_y | u(16)
max_mastering_luminance | u(32)
min_mastering_luminance | u(32)
} |
Figure 30: metadata_mdcv() syntax code
図 30:metadata_mdcv() 構文コード
primary_chromaticity_x[i]
プライマリ色度_x[i]
specifies a 0.16 fixed-point format of X chromaticity coordinate of mastering display in terms of CIE 1931 as specified in [ISO11664-1], where i = 0, 1, 2 specifies Red, Green, Blue, respectively.
[ISO11664-1] で指定されている CIE 1931 に基づくマスタリング ディスプレイの X 色度座標の 0.16 固定小数点形式を指定します。ここで、i = 0、1、2 はそれぞれ赤、緑、青を指定します。
primary_chromaticity_y[i]
プライマリ色度_y[i]
specifies a 0.16 fixed-point format of Y chromaticity coordinate of mastering display in terms of CIE 1931 as specified in [ISO11664-1], where i = 0, 1, 2 specifies Red, Green, Blue, respectively.
[ISO11664-1] で指定されている CIE 1931 に基づくマスタリング ディスプレイの Y 色度座標の 0.16 固定小数点形式を指定します。ここで、i = 0、1、2 はそれぞれ赤、緑、青を指定します。
white_point_chromaticity_x
ホワイトポイント_クロマシティ_x
specifies a 0.16 fixed-point format of white point X chromaticity coordinate of mastering display in terms of CIE 1931 as specified in [ISO11664-1].
[ISO11664-1] で規定されている CIE 1931 に基づくマスタリング ディスプレイの白色点 X 色度座標の 0.16 固定小数点形式を指定します。
white_point_chromaticity_y
ホワイトポイント色度_y
specifies a 0.16 fixed-point format of white point Y chromaticity coordinate as mastering display in terms of CIE 1931 as specified in [ISO11664-1].
[ISO11664-1] で規定されている CIE 1931 に基づくマスタリング表示として、白色点 Y 色度座標の 0.16 固定小数点形式を指定します。
max_mastering_luminance
max_mastering_luminance
is a 24.8 fixed-point format of maximum display mastering luminance, represented in candelas per square meter.
最大ディスプレイ マスタリング輝度の 24.8 固定小数点形式であり、平方メートルあたりのカンデラで表されます。
min_mastering_luminance
min_mastering_luminance
is an 18.14 fixed-point format of minimum display mastering luminance, represented in candelas per square meter.
最小ディスプレイ マスタリング輝度の 18.14 固定小数点形式であり、平方メートルあたりのカンデラで表されます。
syntax code | type
--------------------------------------------------------------|-----
metadata_cll(payloadSize){ |
max_cll | u(16)
max_fall | u(16)
} |
Figure 31: metadata_cll() syntax code
図 31:metadata_cll() 構文コード
max_cll
max_cll
specifies the maximum content light level information as specified in [CTA-861.3], Appendix A.
[CTA-861.3]、付録 A で指定されている最大コンテンツ ライト レベル情報を指定します。
max_fall
max_fall
specifies the maximum frame-average light level information as specified in [CTA-861.3], Appendix A.
[CTA-861.3]、付録 A で指定されている最大フレーム平均光レベル情報を指定します。
This metadata has user data identified by a universal unique identifier as specified in [RFC9562], the contents of which are not specified in this document.
このメタデータには、[RFC9562] で指定されている汎用一意識別子によって識別されるユーザー データが含まれていますが、その内容はこの文書では指定されていません。
syntax code | type
------------------------------------------------------------|-----
metadata_user_defined(payloadSize){ |
uuid | u(128)
for(i = 0; i < (payloadSize - 16); i++) |
user_defined_data_payload[i] | b(8)
} |
Figure 32: metadata_user_defined() syntax code
図 32:metadata_user_define() 構文コード
uuid
uuid
MUST be a 128-bit value specified as a generated Universally Unique Identifier (UUID) according to the procedures specified in [RFC9562].
[RFC9562] で指定された手順に従って、生成された汎用固有識別子 (UUID) として指定された 128 ビット値でなければなりません (MUST)。
user_defined_data_payload[i]
ユーザー定義データペイロード[i]
MUST be a byte having user-defined syntax and semantics as specified by the UUID generator.
UUID ジェネレーターによって指定されたユーザー定義の構文とセマンティクスを持つバイトでなければなりません。
syntax code | type
--------------------------------------------------------------|-----
metadata_undefined(payloadSize){ |
for(i = 0; i < payloadSize; i++){ |
undefined_metadata_payload_byte[i] | b(8)
} |
} |
Figure 33: metadata_undefined() syntax code
図 33:metadata_unknown() 構文コード
undefined_metadata_payload_byte[i]
未定義_メタデータ_ペイロード_バイト[i]
is a byte reserved for future use.
は将来の使用のために予約されているバイトです。
Profiles, levels, and bands specify restrictions on a coded frame and hence limits on the capabilities needed to decode the coded frame. Profiles, levels, and bands are also used to indicate interoperability points between individual decoder implementations.
プロファイル、レベル、および帯域は、符号化されたフレームに対する制限を指定するため、符号化されたフレームを復号化するために必要な機能も制限されます。プロファイル、レベル、バンドは、個々のデコーダ実装間の相互運用性ポイントを示すためにも使用されます。
Each profile specifies a subset of algorithmic features and limits that MUST be supported by all decoders conforming to that profile.
各プロファイルは、そのプロファイルに準拠するすべてのデコーダによってサポートされなければならないアルゴリズム機能と制限のサブセットを指定します。
NOTE: This document does not include individually selectable "options" at the decoder, as this would increase interoperability difficulties.
注: このドキュメントには、デコーダで個別に選択できる「オプション」は含まれていません。これは、相互運用性がさらに困難になるためです。
NOTE: Encoders are not required to make use of any particular subset of features supported in a profile.
注: エンコーダは、プロファイルでサポートされている機能の特定のサブセットを利用する必要はありません。
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 profile, a level with a band generally corresponds to a particular decoder processing load and memory capability. The constraints set by levels and bands are orthogonal to the constraints defined by 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 B can be combined with either profile X or profile Y to specifically define two different sets of constraints.
バンドが付いた各レベルは、このドキュメントの構文要素が取り得る値に対する一連の制限を指定します。任意のプロファイルについて、帯域のあるレベルは通常、特定のデコーダ処理負荷とメモリ能力に対応します。レベルおよびバンドによって設定された制約は、プロファイルによって定義された制約と直交しているため、同じレベルおよびバンド定義のセットがすべてのプロファイルで使用されます。たとえば、特定のレベル L および特定の帯域 B をプロファイル X またはプロファイル Y と組み合わせて、2 つの異なる制約セットを具体的に定義できます。
NOTE: Individual implementations may support a different level for each supported profile.
注: 個々の実装では、サポートされているプロファイルごとに異なるレベルがサポートされる場合があります。
Capabilities of video decoders conforming to this document are specified in terms of the ability to decode video streams conforming to the constraints of profiles, levels, and bands specified in this section. When expressing the capabilities of a decoder for a specified profile, the level and the band supported for that profile MUST also be expressed.
この文書に準拠するビデオ デコーダの機能は、このセクションで指定されるプロファイル、レベル、および帯域の制約に準拠するビデオ ストリームをデコードする能力の観点から指定されます。指定されたプロファイルのデコーダの機能を表現する場合、そのプロファイルでサポートされるレベルと帯域も表現しなければなりません(MUST)。
Specific values are specified for the syntax elements profile_idc, level_idc, and band_idc. All other values of profile_idc, level_idc, and band_idc are reserved for future use.
構文要素 profile_idc、level_idc、および Band_idc には特定の値が指定されます。profile_idc、level_idc、およびband_idcの他のすべての値は、将来の使用のために予約されています。
NOTE: Decoders SHALL NOT infer that a reserved value of profile_idc between the values specified in this document indicates intermediate capabilities between the specified profiles, as there are no restrictions on the method to be chosen for the use of such future reserved values. However, decoders MUST infer that a reserved value of level_idc and a reserved value of band_idc between the values specified in this document indicates intermediate capabilities between the specified levels.
注: デコーダは、この文書で指定された値の間にある profile_idc の予約値が、指定されたプロファイル間の中間機能を示すものであると推論してはならない (SHALL NOT)。これは、そのような将来の予約値の使用のために選択される方法に制限がないためである。ただし、デコーダは、この文書で指定された値の間の level_idc の予約値と Band_idc の予約値が、指定されたレベル間の中間機能を示すと推論しなければなりません (MUST)。
All constraints for a coded frame that are specified are constraints for the coded frame that are activated when the bitstream of the access unit is decoded.
指定された符号化フレームの制約はすべて、アクセス ユニットのビットストリームが復号化されるときにアクティブになる符号化フレームの制約です。
Conformance of a coded frame to the 422-10 profile is indicated by profile_idc equal to 33.
コード化フレームが 422-10 プロファイルに準拠していることは、profile_idc が 33 に等しいことで示されます。
Coded frames conforming to the 422-10 profile MUST obey the following constraints:
422-10 プロファイルに準拠するコード化フレームは、次の制約に従わなければなりません。
* chroma_format_idc MUST be equal to 2.
* chroma_format_idc は 2 に等しくなければなりません。
* bit_depth_minus8 MUST be equal to 2.
* bit_ Depth_minus8 は 2 に等しくなければなりません。
* pbu_type MUST be equal to 1.
* pbu_type は 1 でなければなりません。
Coded frames conforming to the 422-10 profile MUST also conform to any levels and bands constraints specified in Section 9.4. Decoders conforming to the 422-10 profile at a specific level (identified by a specific value of L) and a specific band (identified by a specific value of B) MUST be capable of decoding all coded frames for which all of the following conditions apply:
422-10 プロファイルに準拠する符号化フレームは、セクション 9.4 で指定されたレベルおよび帯域の制約にも準拠しなければなりません (MUST)。特定のレベル (L の特定の値で識別される) および特定の帯域 (B の特定の値で識別される) で 422-10 プロファイルに準拠するデコーダは、以下の条件がすべて適用されるすべての符号化フレームを復号できなければなりません (MUST)。
* The coded frame is indicated to conform to the 422-10 profile.
* コード化されたフレームは 422-10 プロファイルに準拠していることが示されています。
* 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.
* コード化されたフレームは、レベル L 以下のレベル (level_idc の特定の値によって) に準拠することが示されます。
* The coded frame is indicated to conform to a band (by a specific value of band_idc) that is lower than or equal to band B.
* 符号化されたフレームは、帯域 B 以下の帯域 (band_idc の特定の値によって) に準拠することが示されます。
Conformance of a coded frame to the 422-12 profile is indicated by profile_idc equal to 44.
コード化フレームが 422-12 プロファイルに準拠していることは、profile_idc が 44 に等しいことで示されます。
Coded frames conforming to the 422-12 profile MUST obey the following constraints:
422-12 プロファイルに準拠するコード化フレームは、次の制約に従わなければなりません。
* chroma_format_idc MUST be equal to 2.
* chroma_format_idc は 2 に等しくなければなりません。
* bit_depth_minus8 MUST be in the range of 2 to 4.
* bit_ Depth_minus8 は 2 ~ 4 の範囲でなければなりません。
* pbu_type MUST be equal to 1.
* pbu_type は 1 でなければなりません。
Coded frames conforming to the 422-12 profile MUST also conform to any levels and bands constraints specified in Section 9.4. Decoders conforming to the 422-12 profile at a specific level (identified by a specific value of L) and a specific band (identified by a specific value of B) MUST be capable of decoding all coded frames for which all of the following conditions apply:
422-12 プロファイルに準拠する符号化フレームは、セクション 9.4 で指定されたレベルおよび帯域の制約にも準拠しなければなりません (MUST)。特定のレベル (L の特定の値で識別される) および特定の帯域 (B の特定の値で識別される) で 422-12 プロファイルに準拠するデコーダは、以下の条件がすべて適用されるすべての符号化フレームを復号できなければなりません (MUST)。
* The coded frame is indicated to conform to the 422-12 profile or the 422-10 profile.
* コード化されたフレームは、422-12 プロファイルまたは 422-10 プロファイルに準拠することが示されています。
* 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.
* コード化されたフレームは、レベル L 以下のレベル (level_idc の特定の値によって) に準拠することが示されます。
* The coded frame is indicated to conform to a band (by a specific value of band_idc) that is lower than or equal to band B.
* 符号化されたフレームは、帯域 B 以下の帯域 (band_idc の特定の値によって) に準拠することが示されます。
Conformance of a coded frame to the 444-10 profile is indicated by profile_idc equal to 55.
コード化フレームが 444-10 プロファイルに準拠していることは、profile_idc が 55 に等しいことで示されます。
Coded frames conforming to the 444-10 profile MUST obey the following constraints:
444-10 プロファイルに準拠するコード化フレームは、次の制約に従わなければなりません。
* chroma_format_idc MUST be in the range of 2 to 3.
* chroma_format_idc は 2 ~ 3 の範囲でなければなりません。
* bit_depth_minus8 MUST be equal to 2.
* bit_ Depth_minus8 は 2 に等しくなければなりません。
* pbu_type MUST be equal to 1.
* pbu_type は 1 でなければなりません。
Coded frames conforming to the 444-10 profile MUST also conform to any levels and bands constraints specified in Section 9.4. Decoders conforming to the 444-10 profile at a specific level (identified by a specific value of L) and a specific band (identified by a specific value of B) MUST be capable of decoding all coded frames for which all of the following conditions apply:
444-10 プロファイルに準拠する符号化フレームは、セクション 9.4 で指定されたレベルおよび帯域の制約にも準拠しなければなりません (MUST)。特定のレベル (L の特定の値で識別される) および特定の帯域 (B の特定の値で識別される) で 444-10 プロファイルに準拠するデコーダは、以下の条件がすべて適用されるすべての符号化フレームを復号できなければなりません (MUST)。
* The coded frame is indicated to conform to the 444-10 profile or the 422-10 profile.
* コード化されたフレームは、444-10 プロファイルまたは 422-10 プロファイルに準拠することが示されています。
* 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.
* コード化されたフレームは、レベル L 以下のレベル (level_idc の特定の値によって) に準拠することが示されます。
* The coded frame is indicated to conform to a band (by a specific value of band_idc) that is lower than or equal to band B.
* 符号化されたフレームは、帯域 B 以下の帯域 (band_idc の特定の値によって) に準拠することが示されます。
Conformance of a coded frame to the 444-12 profile is indicated by profile_idc equal to 66.
コード化フレームが 444-12 プロファイルに準拠していることは、profile_idc が 66 に等しいことで示されます。
Coded frames conforming to the 444-12 profile MUST obey the following constraints:
444-12 プロファイルに準拠するコード化フレームは、次の制約に従わなければなりません。
* chroma_format_idc MUST be in the range of 2 to 3.
* chroma_format_idc は 2 ~ 3 の範囲でなければなりません。
* bit_depth_minus8 MUST be in the range of 2 to 4.
* bit_ Depth_minus8 は 2 ~ 4 の範囲でなければなりません。
* pbu_type MUST be equal to 1.
* pbu_type は 1 でなければなりません。
Coded frames conforming to the 444-12 profile MUST also conform to any levels and bands constraints specified in Section 9.4. Decoders conforming to the 444-12 profile at a specific level (identified by a specific value of L) and a specific band (identified by a specific value of B) MUST be capable of decoding all coded frames for which all of the following conditions apply:
444-12 プロファイルに準拠する符号化フレームは、セクション 9.4 で指定されたレベルおよび帯域の制約にも準拠しなければなりません (MUST)。特定のレベル (L の特定の値で識別される) および特定の帯域 (B の特定の値で識別される) で 444-12 プロファイルに準拠するデコーダは、以下の条件がすべて適用されるすべての符号化フレームを復号できなければなりません (MUST)。
* 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-12 プロファイル、444-10 プロファイル、422-12 プロファイル、または 422-10 プロファイルに準拠することが示されています。
* 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.
* コード化されたフレームは、レベル L 以下のレベル (level_idc の特定の値によって) に準拠することが示されます。
* The coded frame is indicated to conform to a band (by a specific value of band_idc) that is lower than or equal to band B.
* 符号化されたフレームは、帯域 B 以下の帯域 (band_idc の特定の値によって) に準拠することが示されます。
Conformance of a coded frame to the 4444-10 profile is indicated by profile_idc equal to 77.
コード化フレームが 4444-10 プロファイルに準拠していることは、profile_idc が 77 に等しいことで示されます。
Coded frames conforming to the 4444-10 profile MUST obey the following constraints:
4444-10 プロファイルに準拠するコード化フレームは、次の制約に従わなければなりません。
* chroma_format_idc MUST be in the range of 2 to 4.
* chroma_format_idc は 2 ~ 4 の範囲でなければなりません。
* bit_depth_minus8 MUST be equal to 2.
* bit_ Depth_minus8 は 2 に等しくなければなりません。
* pbu_type MUST be equal to 1.
* pbu_type は 1 でなければなりません。
Coded frames conforming to the 4444-10 profile MUST also conform to any levels and bands constraints specified in Section 9.4. Decoders conforming to the 4444-10 profile at a specific level (identified by a specific value of L) and a specific band (identified by a specific value of B) MUST be capable of decoding all coded frames for which all of the following conditions apply:
4444-10 プロファイルに準拠する符号化フレームは、セクション 9.4 で指定されたレベルおよび帯域の制約にも準拠しなければなりません (MUST)。特定のレベル (L の特定の値で識別される) および特定の帯域 (B の特定の値で識別される) で 4444-10 プロファイルに準拠するデコーダは、以下の条件がすべて適用されるすべての符号化フレームを復号できなければなりません (MUST)。
* The coded frame is indicated to conform to the 4444-10 profile, the 444-10 profile, or the 422-10 profile.
* コード化されたフレームは、4444-10 プロファイル、444-10 プロファイル、または 422-10 プロファイルに準拠することが示されています。
* 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.
* コード化されたフレームは、レベル L 以下のレベル (level_idc の特定の値によって) に準拠することが示されます。
* The coded frame is indicated to conform to a band (by a specific value of band_idc) that is lower than or equal to band B.
* 符号化されたフレームは、帯域 B 以下の帯域 (band_idc の特定の値によって) に準拠することが示されます。
Conformance of a coded frame to the 4444-12 profile is indicated by profile_idc equal to 88.
コード化フレームが 4444-12 プロファイルに準拠していることは、profile_idc が 88 に等しいことで示されます。
Coded frames conforming to the 4444-12 profile MUST obey the following constraints:
4444-12 プロファイルに準拠するコード化フレームは、次の制約に従わなければなりません。
* chroma_format_idc MUST be in the range of 2 to 4.
* chroma_format_idc は 2 ~ 4 の範囲でなければなりません。
* bit_depth_minus8 MUST be in the range of 2 to 4.
* bit_ Depth_minus8 は 2 ~ 4 の範囲でなければなりません。
* pbu_type MUST be equal to 1.
* pbu_type は 1 でなければなりません。
Coded frames conforming to the 4444-12 profile MUST also conform to any levels and bands constraints specified in Section 9.4. Decoders conforming to the 4444-12 profile at a specific level (identified by a specific value of L) and a specific band (identified by a specific value of B) MUST be capable of decoding all coded frames for which all of the following conditions apply:
4444-12 プロファイルに準拠する符号化フレームは、セクション 9.4 で指定されたレベルおよび帯域の制約にも準拠しなければなりません (MUST)。特定のレベル (L の特定の値で識別される) および特定の帯域 (B の特定の値で識別される) で 4444-12 プロファイルに準拠するデコーダは、以下の条件がすべて適用されるすべての符号化フレームを復号できなければなりません (MUST)。
* 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.
* コード化されたフレームは、4444-12 プロファイル、4444-10 プロファイル、444-12 プロファイル、444-10 プロファイル、422-12 プロファイル、または 422-10 プロファイルに準拠することが示されています。
* 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.
* コード化されたフレームは、レベル L 以下のレベル (level_idc の特定の値によって) に準拠することが示されます。
* The coded frame is indicated to conform to a band (by a specific value of band_idc) that is lower than or equal to band B.
* 符号化されたフレームは、帯域 B 以下の帯域 (band_idc の特定の値によって) に準拠することが示されます。
Conformance of a coded frame to the 400-10 profile is indicated by profile_idc equal to 99.
コード化フレームが 400-10 プロファイルに準拠していることは、profile_idc が 99 に等しいことで示されます。
Coded frames conforming to the 400-10 profile MUST obey the following constraints:
400-10 プロファイルに準拠するコード化フレームは、次の制約に従わなければなりません。
* chroma_format_idc MUST be equal to 0.
* chroma_format_idc は 0 に等しくなければなりません。
* bit_depth_minus8 MUST be equal to 2.
* bit_ Depth_minus8 は 2 に等しくなければなりません。
* pbu_type MUST be equal to 1.
* pbu_type は 1 でなければなりません。
Coded frames conforming to the 400-10 profile MUST also conform to any levels and bands constraints specified in Section 9.4. Decoders conforming to the 400-10 profile at a specific level (identified by a specific value of L) and a specific band (identified by a specific value of B) MUST be capable of decoding all coded frames for which all of the following conditions apply:
400-10 プロファイルに準拠する符号化フレームは、セクション 9.4 で指定されたレベルおよび帯域の制約にも準拠しなければなりません (MUST)。特定のレベル (L の特定の値で識別される) および特定の帯域 (B の特定の値で識別される) で 400-10 プロファイルに準拠するデコーダは、以下の条件がすべて適用されるすべての符号化フレームを復号できなければなりません (MUST)。
* The coded frame is indicated to conform to the 400-10 profile.
* コード化されたフレームは 400-10 プロファイルに準拠していることが示されています。
* 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.
* コード化されたフレームは、レベル L 以下のレベル (level_idc の特定の値によって) に準拠することが示されます。
* The coded frame is indicated to conform to a band (by a specific value of band_idc) that is lower than or equal to band B.
* 符号化されたフレームは、帯域 B 以下の帯域 (band_idc の特定の値によって) に準拠することが示されます。
For purposes of comparison of level capabilities, a particular 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 is less than that of the other level.
レベル機能を比較する目的で、各帯域の特定のレベルの level_idc の値が他のレベルの値よりも小さい場合、各帯域の特定のレベルは他のレベルよりも低いレベルであると見なされます。
* The luma sample rate (luma samples per second) MUST be less than or equal to the "Max luma sample rate".
* ルマ サンプル レート (1 秒あたりのルマ サンプル) は、「最大ルマ サンプル レート」以下でなければなりません。
* The coded data rate (bits per second) MUST be less than or equal to the "Max coded data rate".
* コード化データ レート (ビット/秒) は、「最大コード化データ レート」以下でなければなりません。
* The value of tile_width_in_mbs MUST be greater than or equal to 16.
* tile_width_in_mbs の値は 16 以上でなければなりません。
* The value of tile_height_in_mbs MUST be greater than or equal to 8.
* tile_height_in_mbs の値は 8 以上でなければなりません。
* The value of TileCols MUST be less than or equal to 20.
* TileCols の値は 20 以下でなければなりません。
* The value of TileRows MUST be less than or equal to 20.
* TileRows の値は 20 以下でなければなりません。
Table 4 specifies the limits for each level of each band. A level to which a coded frame conforms is indicated by the syntax elements level_idc and band_idc as follows:
表 4 に、各帯域の各レベルの制限を示します。符号化されたフレームが準拠するレベルは、次のように構文要素 level_idc および Band_idc によって示されます。
* level_idc MUST be set equal to a value of 30 times the level number specified in Table 4.
* level_idc は、表 4 で指定されたレベル番号の 30 倍の値に設定しなければなりません (MUST)。
+=======+==================+=====================================+
| level | Max luma sample | Max coded data rate (Mbit/s) |
| | rate (samples/s) | |
| | +=====================================+
| | | band_idc== |
| | +========+========+=========+=========+
| | | 0 | 1 | 2 | 3 |
+=======+==================+========+========+=========+=========+
| 1 | 3,041,280 | 8 | 11 | 15 | 23 |
+-------+------------------+--------+--------+---------+---------+
| 1.1 | 6,082,560 | 16 | 21 | 30 | 45 |
+-------+------------------+--------+--------+---------+---------+
| 2 | 15,667,200 | 39 | 54 | 76 | 114 |
+-------+------------------+--------+--------+---------+---------+
| 2.1 | 31,334,400 | 78 | 108 | 152 | 227 |
+-------+------------------+--------+--------+---------+---------+
| 3 | 66,846,720 | 114 | 159 | 222 | 333 |
+-------+------------------+--------+--------+---------+---------+
| 3.1 | 133,693,440 | 227 | 317 | 444 | 666 |
+-------+------------------+--------+--------+---------+---------+
| 4 | 265,420,800 | 455 | 637 | 892 | 1,338 |
+-------+------------------+--------+--------+---------+---------+
| 4.1 | 530,841,600 | 910 | 1,274 | 1,784 | 2,675 |
+-------+------------------+--------+--------+---------+---------+
| 5 | 1,061,683,200 | 1,820 | 2,548 | 3,567 | 5,350 |
+-------+------------------+--------+--------+---------+---------+
| 5.1 | 2,123,366,400 | 3,639 | 5,095 | 7,133 | 10,699 |
+-------+------------------+--------+--------+---------+---------+
| 6 | 4,777,574,400 | 7,278 | 10,189 | 14,265 | 21,397 |
+-------+------------------+--------+--------+---------+---------+
| 6.1 | 8,493,465,600 | 14,556 | 20,378 | 28,529 | 42,793 |
+-------+------------------+--------+--------+---------+---------+
| 7 | 16,986,931,200 | 29,111 | 40,756 | 57,058 | 85,586 |
+-------+------------------+--------+--------+---------+---------+
| 7.1 | 33,973,862,400 | 58,222 | 81,511 | 114,115 | 171,172 |
+-------+------------------+--------+--------+---------+---------+
Table 4: General level limits
表 4: 一般的なレベル制限
Table 5 shows widely used typical configurations of resolution and frame rates of video and corresponding levels for them.
表 5 は、ビデオの解像度とフレーム レートの広く使用されている一般的な構成と、それらに対応するレベルを示しています。
+==========+============+==================+===============+=======+
| use case | resolution | frame per second | luma sample | level |
| | | | per second | |
+==========+============+==================+===============+=======+
| 720p | 1280 x 720 | 30 | 27,648,000 | 2.1 |
+----------+------------+------------------+---------------+-------+
| FHD | 1920 x | 30 | 62,208,000 | 3 |
| | 1080 | | | |
+----------+------------+------------------+---------------+-------+
| UHD 4K | 3840 x | 60 | 497,664,000 | 4.1 |
| | 2160 | | | |
+----------+------------+------------------+---------------+-------+
| UHD 4K | 3840 x | 120 | 995,328,000 | 5 |
| | 2160 | | | |
+----------+------------+------------------+---------------+-------+
| UHD 8K | 7680 x | 60 | 1,990,656,000 | 5.1 |
| | 4320 | | | |
+----------+------------+------------------+---------------+-------+
| UHD 8K | 7680 x | 120 | 3,981,312,000 | 6 |
| | 4320 | | | |
+----------+------------+------------------+---------------+-------+
Table 5: Example of typical video configurations and corresponding levels (informative)
表 5: 一般的なビデオ構成と対応するレベルの例 (参考)
Like any other audio or video codec, APV should not be used with insecure ciphers or cipher modes that are vulnerable to known plaintext attacks. Some of the header bits as well as the padding are easily predictable.
他のオーディオまたはビデオ コーデックと同様に、APV は、既知の平文攻撃に対して脆弱な安全でない暗号または暗号モードでは使用しないでください。ヘッダー ビットの一部とパディングは簡単に予測できます。
A decoder MUST be robust against any non-compliant or malicious payloads. Malicious payloads MUST NOT cause the decoder to overrun its allocated memory 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 to the encoder, even though problems in encoders are typically rare. Malicious video streams MUST NOT cause the encoder to misbehave because this would allow an attacker to attack transcoding gateways. A frequent security problem in image and video codecs is failure to check for integer overflows. An example is allocating "frame_width * frame_height" in pixel count computations without considering that the multiplication result may have overflowed the range of the arithmetic type. The implementation MUST ensure that any data outside of allocated and initialized memory cannot be read.
デコーダは、非準拠または悪意のあるペイロードに対して堅牢でなければなりません。悪意のあるペイロードにより、デコーダが割り当てられたメモリをオーバーランしたり、デコードに過剰なリソースを消費したりしてはなりません。割り当てられたメモリがオーバーランすると、攻撃者による任意のコードの実行につながる可能性があります。エンコーダでの問題は通常はまれですが、同じことがエンコーダにも当てはまります。悪意のあるビデオ ストリームは、攻撃者がトランスコーディング ゲートウェイを攻撃できるようになるため、エンコーダの誤動作を引き起こしてはなりません。画像およびビデオ コーデックで頻繁に発生するセキュリティ問題は、整数オーバーフローのチェックに失敗することです。例としては、乗算結果が算術タイプの範囲をオーバーフローした可能性を考慮せずに、ピクセル数の計算で「frame_width * Frame_height」を割り当てることが挙げられます。実装では、割り当てられ初期化されたメモリ以外のデータは読み取れないようにする必要があります。
A decoder MUST NOT try to process the metadata whose type is not recognized by the implementation. Failure to process any metadata exactly according to the syntax structure specified MAY put a decoder in an unknown status.
デコーダは、実装によってタイプが認識されないメタデータを処理しようとしてはなりません (MUST NOT)。指定された構文構造に従ってメタデータを正確に処理できない場合、デコーダが不明なステータスになる可能性があります。
None of the content carried in APV is intended to be executable.
APV に含まれるコンテンツはいずれも、実行可能であることを意図したものではありません。
This document has no actions for IANA.
この文書には IANA に対する措置はありません。
[CIE15] CIE, "Colorimetry, 4th Edition", DOI 10.25039/TR.015.2018,
2018,
<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
type identification", ITU-T Recommendation H.273, ISO/
IEC 23091-2:2025, July 2024,
<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 -
C", ISO/IEC 9899:2024, 2024,
<https://www.iso.org/standard/82075.html>.
[ITUT-T35] ITU-T, "Procedure for the allocation of ITU-T defined
codes for non-standard facilities", ITU-T
Recommendation T.35, February 2000,
<https://www.itu.int/rec/T-REC-T.35>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC9562] Davis, K., Peabody, B., and P. Leach, "Universally Unique
IDentifiers (UUIDs)", RFC 9562, DOI 10.17487/RFC9562, May
2024, <https://www.rfc-editor.org/info/rfc9562>.
[AMPAS] "Academy of Motion Picture Arts and Sciences",
<https://www.oscars.org/>.
[AOSP16APV]
"Android open source project version 16",
<https://developer.android.com/about/versions/16/
features#apv>.
[ASWF] "The Academy Software Foundation", <https://www.aswf.io/>.
[FFmpegAPVdec]
"FFmpeg implementation of APV decoder", 20 November 2025,
<https://ffmpeg.org/download.html#release_8.0>.
[FFmpegAPVenc]
"FFmpeg implementation of APV encoder", 4 May 2025,
<https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/
fab691edaf53bbf10429ef3448f1f274e5078395>.
[OpenAPV] "OpenAPV", commit 1a7845a, 16 December 2025,
<https://github.com/AcademySoftwareFoundation/openapv>.
syntax code | type
--------------------------------------------------------------|-----
raw_bitstream_access_unit(){ |
au_size | u(32)
access_unit(au_size) |
} |
Figure 34: raw_bitstream_access_unit() syntax code
図 34: raw_bitstream_access_unit() 構文コード
au_size
au_size
indicates the size of access unit in bytes. 0 is prohibited and 0xFFFFFFFF is reserved.
アクセスユニットのサイズをバイト単位で示します。0 は禁止されており、0xFFFFFFFF は予約されています。
The Academy Software Foundation (ASWF) [ASWF], jointly founded by the Academy of Motion Picture Arts and Science (AMPAS) [AMPAS] and the Linux Foundation, has created an open source software development project conformant to this document [OpenAPV]. The project also provides various test vectors for verification of the implementations at <https://github.com/AcademySoftwareFoundation/openapv/tree/main/test/ bitstream>.
映画芸術科学アカデミー (AMPAS) [AMPAS] と Linux Foundation が共同で設立したアカデミー ソフトウェア財団 (ASWF) [ASWF] は、この文書に準拠したオープン ソース ソフトウェア開発プロジェクト [OpenAPV] を作成しました。このプロジェクトでは、実装を検証するためのさまざまなテスト ベクトルも <https://github.com/AcademySoftwareFoundation/openapv/tree/main/test/bitstream> で提供しています。
The Android open source project (AOSP) has implemented Advanced Professional Video (APV) conformant to this document [AOSP16APV].
Android オープンソース プロジェクト (AOSP) は、この文書 [AOSP16APV] に準拠した Advanced Professional Video (APV) を実装しました。
The FFmpeg project is developing an APV decoder [FFmpegAPVdec] and an APV encoder [FFmpegAPVenc] conformant to this document.
FFmpeg プロジェクトは、この文書に準拠した APV デコーダ [FFmpegAPVdec] と APV エンコーダ [FFmpegAPVenc] を開発しています。
Youngkwon Lim
Samsung Electronics
6105 Tennyson Pkwy, Ste 300
Plano, TX 75024
United States of America
Email: yklwhite@gmail.com
Minwoo Park
Samsung Electronics
34, Seongchon-gil, Seocho-gu
Seoul
3573
Republic of Korea
Email: m.w.park@samsung.com
Madhukar Budagavi
Samsung Electronics
6105 Tennyson Pkwy, Ste 300
Plano, TX 75024
United States of America
Email: m.budagavi@samsung.com
Rajan Joshi
Samsung Electronics
11488 Tree Hollow Ln
San Diego, CA 92128
United States of America
Email: rajan_joshi@ieee.org
Kwang Pyo Choi
Samsung Electronics
34 Seongchon-gil Seocho-gu
Seoul
3573
Republic of Korea
Email: kwangpyo.choi@gmail.com