h265の階層構造
階層の目的
○ ネットワークにはさまざまな種類があり、異なるネットワーク環境には異なる特性があり、そこでの圧縮ビデオの送信は必然的に影響を受けます。たとえば、異なるネットワークの MTU は異なります。 ○ 異なるアプリケーション シナリオには、ビデオに対する異なる要件があります
。ビデオ サービスは異なる伝送プロトコルを使用することを好みます。
階層化の重要性
○ エントロピー コーディング後、コード ストリーム内のバイナリ シンボルは、実際の値に単純に対応しなくなりました。深刻な場合、シンボルの損失またはエラーにより、後続のデータが正しくデコードされなくなります。 ○ この非常に複雑な圧縮ビデオの送信を最適化します。この場合
、さまざまなデータの重要性を理解するには、コード ストリームの詳細な分析またはデコードを実行する必要がありますが、詳細な分析やコード ストリームのデコードさえも計算量が多すぎます。一般的なネットワーク機器でサポートされる高さ。
VCLとNAL
○ H.265/HEVC は、さまざまなネットワーク環境やビデオ アプリケーションに適応するために、ビデオ コーディング層 (VCL) とネットワーク アダプテーション層 (ネットワーク アブストラクト層、NAL) の 2 層アーキテクチャも採用しています。ネットワーク アダプテーション層の主なタスクは、複雑で変化しやすいネットワーク環境に適切に適応できるように、圧縮されたビデオ データを分割してカプセル化し、必要な識別を実行することです。
NALの作用機序
○ 一連の画像から構成される原映像を圧縮符号化(VCL)した後、圧縮映像ビットストリームの内容特性に応じて複数のデータセグメントに分割し、各データセグメントをカプセル化して識別することでNALUを生成します。 NALUヘッダ情報には特性情報が格納される。
NALと人物
○ NAL のサイズは、ネットワークの MTU (最大送信単位) サイズと必ずしも同じではないため、ネットワーク グループと NALU にはいくつかの組み合わせがあります。1 つのネットワーク グループには 1 つの NALU が含まれ、1 つのネットワーク グループには複数の NALU が含まれます。 、複数の NALU が 1 つのネットワーク グループに結合され、複数のネットワーク グループに 1 つの NALU が含まれます。つまり、1 つの NALU が複数のネットワーク グループに分割されます。
○ ネットワーク伝送中、ネットワークデバイスは、NALU のヘッダー情報を通じて NALU によって伝送されるビデオデータのコンテンツ特性を直接取得し、これに基づいてビデオストリームの伝送を最適化できます。
h265画像タイプ
- すべての圧縮ビデオ データは、さまざまな NALU のペイロードにカプセル化され、VPS、SPS、PPS およびその他の情報を伝送することに加えて、NALU は主にビデオ スライスの圧縮データを伝送します。
- 圧縮ビデオデータを搬送する NALU は VCLU (VCL NALU) と呼ばれ、その他の情報を搬送する NALU は非 VCLU (非 VCL NALU) と呼ばれます。
- ランダム アクセス ポイント IRAP
○ IRAP (Intra Random Access Point) を起点として、後続のビデオ ストリームは、IRAP 前のビデオ情報を参照することなく、独立して正しくデコードできます IRAP 後の最初のデコードされた画像を IRAP イメージと呼びます ○ 再生に応じて
その他の画像は順に先頭(Leading)画像と末尾(Trailing)画像に分けることができる; 先頭画像は RADL 画像と RASL 画像に分けることができる ○ h265 では IDR 画像、CRA 画像の 3 種類の IRAP 画像を
規定、BLA 画像;
○ IRAP 画像は、ビデオ ストリームを複数の相対的に対向する領域に分割し、各領域は CVS (Coded Video Sequence) と呼ばれ、CVS は、このビデオ ストリームの 2 つの隣接する IRAP 画像 (および NoRas1OutputFlag=1) 間の距離として定義されます。 ; - TSA/STSA
○ h265 の新しいイメージ タイプ。タイム ドメイン サブレイヤのスイッチング ポイントを識別するために使用されます。
ネットワーク アダプテーション レイヤ ユニット NALU
- 各 NALU には、NALU ヘッダー (ヘッダー) と NALU ロード (ペイロード) の 2 つの部分が含まれています。
- SODB
○ ビデオエンコードの過程で、異なる内容を含む圧縮データビットストリームの断片が出力されますが、このビットストリームの断片をSODB(String Of Data Bits)と呼び、SODBはバイト内のビットを並べた最も効率的な保存形式です。左から右、高いものから低いものの順に並べます。 - RBSP
○ SODB (String Of Data Bits) の後に RBSP trailing_bits (rbsp trailing_bits) を追加して、元のバイト シーケンス ペイロード (Raw Byte Sequence Payload、RBSP) を生成します; RBSP テールは、RBSP ストップ ビットと呼ばれる 1 ビットとそれに続く 0 ビット以上で構成されます0の。RBSP は整数バイトの SODB であり、RBSP のデータ型は SODB のデータ型です。 - EBSP
○ H265 では、バイトストリームフラグメントと NALU の開始コードおよび終了コードとの競合を避けるために、RBSP のバイトストリームに対して競合処理 0x3 を行う必要があります。つまり、EBSP は Encapsulated Byte Sequence Payload (Encapsulated Byte Sequence Payload)バイト シーケンス ペイロード)、処理された RBSP は NALU の負荷情報として直接使用でき、ディスクに保存してネットワーク経由で送信できます。
○ したがって、実際の最終的な NALU = ヘッダー + EBSP;
- NALU 構文
NALUヘッダー
- h264 と比較すると、h265 には NALU のコンテンツ特性を表す固定の 2 バイトのヘッダーがあります。
- これは 4 つの固定長部分で構成されます:forbidden_zero_bit、nal_unit_type、nuh_layer_id、nuh_temporal_id_plus1;
○forbidden_zero_bit は 1 ビットを占有し、MPEG-2 システムの開始ビットとの競合を防ぐために値は 0 に設定する必要があります; ○ nal_unit_type は
6 ビットを占有します、現在の NALU 負荷を識別する 情報のコンテンツ特性は NALU タイプと呼ばれます;
○ nuh_layer_id は 6 ビットを占め、現在のバージョンは値 0 をとり、将来ビデオまたは 3D ビデオをスケーリングする勇気があるかもしれません ○
nuh_temporal_id_plus1時間ドメイン識別子の 3 ビットを占め、値から 1 を引いた値は、NALU が配置されている時間ドメインを示します。レイヤーの TemporalId は 0 にはできません。
フレームタイプ分析
-
h264 の &01f と異なり、h265 の判定方法は
○ int type = (code & 0x7E ) >> 1; // 0x7E のバイナリの下位 8 ビットは 0111 1110 -
VPS: 00 00 00 01 40 01 の nuh_unit_type 値は 32
○ 40 & 0x7E = (バイナリ) 01000000 & 01111110 = 01000000
○ 01000000 >> 1 = 00100000
○ (10 進数) 00100000 = 2^ 5 = 32 -
SPS: 00 00 00 01 42 01 の nuh_unit_type 値は 33
○ 42 & 0x7E = (2 進数) 01000010 & 01111110 = 01000010 ○
01000010 >> 1 = 00100001 ○
(10 進数) 00100001 = 2 ^0 + 2^5 = 33 -
PPS: 00 00 00 01 44 01 の nuh_unit_type 値は 34
○ 44 & 0x7E = (2 進数) 01000100 & 01111110 = 01000100
○ 01000100 >> 1 = 00100010 ○ (
10 進数) 00100010 = 2 ^1 + 2^5 = 34 -
SEI: 00 00 00 01 4E 01 の nuh_unit_type 値は 39
○ 4E & 0x7E = (2 進数) 01001110 & 0111110 = 01001110
○ 01001110 >> 1 = 00100111
○ (10 進数変換) 00100111 = 2 0 +2 1+2 2+ 2 5 = 1+2+4+32 = 39 -
IDR: 00 00 00 01 26 01 の nuh_unit_type 値は 19 です
-
参照画像 (P フレームまたは B フレーム): 00 00 00 01 02 01 の nuh_unit_type 値は 1
アクセスユニット
○ h264 では、アクセス ユニット (Access Unit、AU) の概念が導入され、復号順に配置された複数の NALU として定義され、これらの NALU が復号されて正確に 1 つの画像が生成されます ○ AU は、圧縮されたビデオ ビットの基本単位と見なすことができますストリーム、圧縮 ビデオ ストリームは、連続して配置された複数の AU で構成されます。
参考
- 新世代高効率ビデオコーディング H.265HEVC の原則、標準、実装 [Wan Shuai、Yang Fuzheng 編集] 2014 年版。
- T-REC-H.265-202108-I。