Encoding H.264 using the x264 Command Line Interface:CQMの前フリから
CQMとは、Custom Quantisation Matrix (または Matrices、カスタム量子化マトリクス)の省略形です。量子化マトリクスは格子状に配置された数字(*数列、行列*)からなり、それぞれの数字は quantum(*量子*)と呼ばれます。これは、これらの数字がどのくらい画像を劣化させるかを決めるという事です。
大きなquantumで構成された数列ほど映像をソフトにします。小さなquantumで構成された数列ほどディテイルが残ります。x264のデフォル トは、"flat 16" マトリクスです。全てのquantumは16で、特別なデコードは一切必要ありません。これとは別に、カスタム量子化マトリクス機能はHigh Profileの機能で、実際のデコードに必要なリソースは全く変わらないにも関わらず、デコーダ側にそれ専用のサポートが必要になります(*1)。
Xvidのカスタムマトリクスでは、ほとんどデフォルトのH.263量子化形式で問題はありませんでした(*2)。x264でも flat 16で多くのケースで問題はないと思わますが、中には、高周波係数領域(*high frequency co-efficient area*)を大きなquantumで埋めたマトリクスで精細なディテイルを僅かにぼかし、圧縮しやすくしたい事があるかもしれません。
理想的なCQMを定義するためには様々な方法があります。利用可能なオプションは以下の通り:
x264cli | MEncoder -x264encopts | メモ(*常用jvt 、HP、QT7非互換*) | ||
---|---|---|---|---|
--cqm <string> デフォルトのflatマトリクスか内蔵のJVTマトリクスを選択する (JVTマトリクスはH.264規格策定のパートナーであるJoint Video Teamが作った)。マトリクスはx264.exeに内蔵されているのでCQMの使い方としては全く簡単だ。外部ファイル要らないから。
|
cqm=<flat|jvt|<filename>> 事前に定義済みのカスタム量子化(quantization)マトリクス か、JMフォーマットのマトリクスファイルを使う。
flat 事前に定義済みのflat 16 matrixを使う (default)。 jvt 事前に定義済みの JVT matrixを使う。 <filename> JMフォーマットのmatrixファイルを使う NOTE: Windows のCMD.EXEユーザは、全てのCQMリストを使おうとする場合、コマンドラインの構文解析で問題が起こり得る。これはコマンドラインに最大長制限があ るため。そうした場合、リストをJMフォーマットCQMファイルに入れて上記の設定でロードする事を推奨。 |
な んとなくJVT常用。 Xvidでquant_type=mpegに変えた時はうわなにこれスゲェって 感じだったが、そこまでの違いは感じなかった。それでも闇階調の"フレームごとにぱたぱたと変わる"ブロックノイズ削減に若干の効果がある。 外 部ファイル 下記にいくつか公開されている。 Doom9: collection of available AVC custom quant matrices Bond 氏によるとJVTはcomparable to the "mpeg" matrix of mpeg-4 aspとの事。ならば横幅640以上ではせめてJVTはマストだと思う。 外部ファ イルの作成 MeGUIは "MEncoder GUI" だが、ffmpegXと同様、様々なツールが詰まっているようだ。こうしたエンコード・スイートにはマトリクスエディタが付属している事がある。 MEncoder 本体の機能にカスタムマトリクスエディタは見当たらないので、テキストエディタか。 |
||
--cqmfile <string> カスタムマトリクスを使いたければ、このオプションが他よりは実用的だろ う。このオプションで外部マトリクスファイルを読み込める。読み込めるのはJM互 換形式(JMはレファレンスエンコーダ)。Doom9に外部マトリクスのリストがある。
他の全ての--cqm関連オプションに優先。 |
||||
--cqm4 <list> 全ての4x4量子化マトリクスの指定。入力はカンマ区切りの16個の整数 でなければならない。このオプションは実験には良いかもしれないが、コマンドラインがひどく長 くなる。特に他の量子化マトリクスも指定するなら尚更だ。
|
--cqm4i 輝度と彩度
|
--cqm4iy 個別設定
|
cqm4iy=<list> (also see cqm) 4x4イントラ輝度。
コンマ区切り整数16個、各数値の範囲は1-255。 |
|
--cqm4ic 個別設定
|
cqm4ic=<list> (also see cqm) 4x4イントラ彩度。
コンマ区切り整数16個、各数値の範囲は1-255。 |
|||
--cqm4p 輝度と彩度
|
--cqm4py 個別設定
|
cqm4py=<list> (also see cqm) 4x4インター輝度。
コンマ区切り整数16個、各数値の範囲は1-255。 |
||
--cqm4pc 個別設定
|
cqm4pc=<list> (also see cqm) 4x4インター彩度。
コンマ区切り整数16個、各数値の範囲は1-255。 |
|||
--cqm8 <list> 全ての8x8 量子化マトリクスの指定。入力はカンマ区切りの64個の整数でなければならない。ほか、前項に同じ。
|
--cqm8i 輝度と彩度
|
- | cqm8iy=<list> (also see cqm) 8x8イントラ輝度。
コンマ区切り整数64個、各数値の範囲は1-255。 |
|
- | - | cqm8ic がないのは入力がYUV4:2:0限定だから? | ||
--cqm8p 輝度と彩度
|
- | cqm8py=<list> (also see cqm) 8x8インター輝度。
コンマ区切り整数16個、各数値の範囲は1-255。 |
||
- | - | cqm8pc がないのは入力がYUV4:2:0限定だから? |