H.264/AVC(NAL)H.264/AVC(NAL)このページの全ては誤っているかもしれません。x264関連の記事に関してを読んでください。H.264/AVC(NAL)x264、というよりもH.264関連の文書を読む際に頻出の用語であるNALを概説してみる。本当はx264の--nal-hrdオプションの説明を書きたかったのだが、そもそもNALとは何か、という説明が必要になってしまうため、まずはNALだけの説明をすることにした。非常に端折っているため、厳密には正しくない記述があるが、ご了承願いたい。Layer(ネットワーク抽象化層)の略で、H.264の生のストリームを適当に区切る処理階層を指す。unit)を生成する。NALはH.264のデータを多様なメディア(記憶媒体や伝送媒体)に乗せるために、アクセスしやすく整形することを目的としている。Bのスタートコードを含む)として出力される。一般的に「生(raw)のH.264ストリーム」と呼ばれるものは、NALレベルの出力データであり、mp4やmkvなどのコンテナに含められる場合にも、NALレベルの整形データが使用される。semantics"で述べられている。このタイトルにNALと冠されてはいないのは、H.264のストリームを読むということは、NALを読むということに他ならないからだ。bits)という用語がある。大まかに言えば、RBSPはバイト単位で考えるNALユニットのペイロードで、SODBはビット単位で考えるRBSPの中身と考えればよい。SODBに対してバイト単位に切り上げる処理を行うとRBSPになり、RBSPにヘッダをつけたものがNALユニットになる。規格上、NALユニットの中身のフォーマットは、RBSPのシンタックスとして定義されている。elementと呼ぶ。NALユニットの種類NALユニットは様々なデータを含んでおり、概念的に、大きくVCLと非VCLに分類される。VCL-NALユニットは、ざっくり言えば圧縮されたスライスデータそのものだ。Layer:映像符号化層)という用語は、NALよりも下位の処理階層を指している。非VCL-NALユニットはその他の補助的情報を含む物だ。具体的には、以下のものが非VCL-NALユニットとして代表的だ。data(x264のr1480以降で--nal-hrdでcbrを指定した場合に使用される)補助的とは言え、これらの名前も良く目にするので、中身は知らずともその重要さはなんとなくわかるだろう。SPSにはpic_width_in_mbs(_minus1)やbit_depth_luma(_minus8)等、非常に重要な情報が含まれている。実際のデータとしては、NALユニットのヘッダ部にあるnal_unit_typeという数値データから、NALユニットの中身をある程度知ることができる。IDRピクチャのスライスデータには5が割り当てられており、これによって簡単にキーフレームを見つけることができる。デコードに必要なデータが非VCL-NALユニットにあったりするので、単純にこのNALユニットからデコードを開始すればよいとは限らない。classes"を参照のこと。紹介とは言っても、これらは1つ1つが規格書上で数ページ〜数十ページも割かれるほどのものだ。ここでは大雑把な紹介に留め、詳細はいつか個別の記事として取り扱うことがあれば、その際に述べたい。Information)SEIはピクセルデータの再現に必須ではないが、表示やバッファ管理上有用な情報を提供するためにある。SEI-NALユニットは、複数のSEIメッセージを含むことができる。そのSEIメッセージには、以下のようなものがある。point(シーク後に表示を復帰するための情報・broken_link_flagを含む)他にも色々あるがx264では使用されていないので省略。Set)ストリームのデコードに必要な、基本的な情報。Information)他にも色々あるが省略。Set)個別のピクチャ(フレーム)をデコードする上で必要な情報。他にも色々あるが省略。Delimiter)アクセスユニットの区切りを示すNALユニット。アクセスユニットとは、1枚の実効的なピクチャ(フレーム)を生成できる、NALユニットの集まり。1枚のピクチャ(フレーム)を得るためには複数のNALユニットが必要になるので、その関連する複数のNALユニットを区切るために使用される。素のH.264のストリームとしては必ずしも必要ではないが、デコーダの処理が楽になるため、関連する規格では必須とされる場合があるようだ。SEI...の優先順でアクセスユニットの開始と見なされる。VCL-NALユニットの後でこれらが現れると新たなアクセスユニットの開始と見なされる。periodを含む場合にはそれが最初でなければならなかったりもする。Perl5.010001。