2018年12月30日

【備忘録】XMedia Recode(HEVC/H.265)の項目一覧

13)改稿.2018/01/04...1230_1229_1228_1227_1226_1225_1223_1222_1221...

> ‥検索しやすい用に、XMedia RecodeのHEVC項目を抜き書きしてます。
> 項目の値は、「洗逸」のほぼ確定値を含みます。
> ところどころにツブヤキあり。


 ‥HEVCの怪
 HDサイズで安定二倍速化できていても、FHDサイズではその最大安定倍速の半分にまで落ちる。
 又、HD二倍速に届かないソースの場合、FHD一倍速での安定再生が得られるかはエンコードを出してみないと判らない。

 (それはそのままに、サイズ差のもたらすエンコード負荷(時間コスト)の二倍に比例する)

 結論、マシンパフォーマンスが低いと、HEVC高画質でのFHD二倍速は物理的に困難。

 ∴HEVC映像を美麗二倍速にしたいなら、HDサイズが適当。
 「4K8K映像でも二倍速を!」‥なんて考えを持てる環境は、ほぼ存在し得ない。(2018)


 ‥再生支援機能があったにせよ、すべてのファイルに対して二倍速対応するかは不明。



1-13)1/一般

モード:変換
コーデック:HEVC/H.265
言語:なし
フレームレート:23.976 or 29.97
カラーモード:YUV 4:2:0 Planar 12bpp
レート制御モード:品質
品質:16.0〜17.0(間に識別差と容量比の堀がある)
プロファイル:Main‥(Main10の受難度↑↑↑↑)
レベル:Level 4.1(FHD規模向けモード)
プリセット:標準
調整:無効,フィルム粒子(どうにもならないブロッキング付きソースを一皮程度緩和してくれるらしい&低負荷)
Open GOP:□
キーフレーム間隔:120‥(初期値:自動0=250)
最小GOPサイズ:1‥(自動0)
表示モード:プログレッシブ‥※エンコ後にインターレス(ボトム)にすり替わるバグあり(XMedia Recode 3.4.5.0にて修正)
スレッド:0
Ultra HD Blu-ray:□
不適合を許可:□



1-13)2/B-フレーム

B-フレーム数:1(0〜16)
適応型B-フレーム:FULL_(オフ,高速,FULL)
B-フレームを参照に使用:□‥(参照枚数とBフレーム数に注意)
予測の重み:オン ‥セーブ設定ロード時に反映せず
B-フレームバイアス:0(−20〜100)



1-13)3/ブロッキング軽減

ブロッキング軽減:オン
ブロッキング軽減-強度:0
ブロッキング軽減-閾値:0
サンプル適応オフセット(SAO):オン
SAOとデブロッキングフィルター間の依存関係の処理方法を指定:オン



1-13)4/レート制御

VBVバッファサイズ:0(自動設定)
VBV最大ビットレート:0(自動設定)
VBV初期バッファ:0.9(初期値)(0.0〜1.0)
最小CRF:0.0(0.0〜51.0)
最大CRF:18.0‥28.0(基本値)(0.0〜51.0)/0(自動設定)
IP比率:1.4(初期値)
PB比率:1.3(初期値)
QP最小:0(0〜51)
QP最大:42 or 69(初期値)(0〜69)‥QPステップ(3)なら(42)QPステップ(4)なら(69)
QPステップ:3 or 4(0〜51)‥HDサイズなら(3)FHDサイズなら(4)
※基本的に、当方は美麗倍速再生でも見たいのでHDサイズでのQPステップ(3)にこだわっている。
ただし、QPステップ(3)は、規定の(4)よりさらに誤差は無いに等しいけど、大きいサイズでの圧縮効率は及ばない。

qComp:0.60(初期値)(0.50〜1.00)‥セーブ設定ロード時に反映せず
※0.50←(初期値)→1.00
‥0.50にすると圧縮による歪みを全体的に感じやすくなる↑
‥1.00にすると自動分散バイアスを思わせる増量↑↑

(AVCとは内訳が異なっているように思われる)
(増やしたとしても思ったほどの効果を得ていない模様)
(増量が顕著すぎるので、補強分のビットレートは「自動分散」に期待した方がまだましな雲行き)


クロマCbQPオフセット:0(−12〜12)
クロマCrQPオフセット:0(−12〜12)
※SSIM RDOは、ここを自動的に触ってるんだろうか?


Qぼかし:0.0‥0.5(初期値)(0.0〜5.0)--qblur --psy-rd とは異なる。
ぼかしの複雑度:1.0‥20.0(初期値)(0.0〜50.0)‥時間的に複雑さをぼかす。--cplxblur --psy-rdoq とは異なる。

※‥勘違いしてました。心理視覚的オプションとは違うらしい。何者だよこいつ(???)
とりあえずこちらは、画面の切り替えでフェードを入れると柔らかい‥という微細なニュアンスを一時的にIフレームやらに盛り込ませるということらしい。(で、フェードの代わりに、微妙にぼかすということになるのかな)
‥スンげーこだわり〜‥あーた、ズーム系の圧縮が苦手なんだから、先に専用のアルゴリズムを得てから盛って下さいよ!(そりゃ容量もかさむだろうよ)‥に思われます。‥にしても心理覚的オプションと似ているz


AQモード:自動分散←AQ有効_(無効,AQ有効,自動分散,暗い場面へのバイアス)
※自動分散(画質↑増量↑),自動分散バイアス付き(画質↑だが増量↑↑↑再生負荷↑↑)
 自動分散でもこんなに違うとは!!!(食わず嫌いだったかも)


AQ強度:1.0
QPサイズ:32(HD想定)←64(FHD想定)_(8,16,32,64)‥四分木に絡んだ項目。最大CUサイズに揃える傾向あり。
CUTree:オン
ロスレス:□‥(編集過程のプロ用?強制無劣化)
AQモーション:□‥(未だ実験的な取り組み‥テスト用かも)
厳格なCBR:□
マルチパスのレート制御に基づく改良されたマルチパス解析:□
マルチパスのレート制御に沿ってqpベースの歪みデータに基づきマルチパスを改良:□
フィルム粒度のための特殊なレート制御アルゴリズム:□‥(フィルム粒度用)
実行中に一貫性を保つためのVBVアルゴリズムを有効:□‥(フィルム粒度用)



1-13)5/動き推定

動き検索範囲80...初期値57(0〜32768)
※動き検索範囲(80)で、なぜかエンコード効率が時間換算比20%ぐらい高速に‥(オススメ)


動き検索メソッド:不均一六角形_(ダイアモンド,六角形,不均一六角形,星形,フル)

Subpel Refinement‥2(初期値)(0〜7)

ーHPEL(iters_ディレクトリ)1_4,QPEL(iters_ディレクトリ)0_4,HPEL SATD 無効
ーHPEL(iters_ディレクトリ)1_4,QPEL(iters_ディレクトリ)1_4,HPEL SATD 無効
ーHPEL(iters_ディレクトリ)1_4,QPEL(iters_ディレクトリ)1_4,HPEL SATD 無効
ーHPEL(iters_ディレクトリ)2_4,QPEL(iters_ディレクトリ)1_4,HPEL SATD 無効
ーHPEL(iters_ディレクトリ)2_4,QPEL(iters_ディレクトリ)2_4,HPEL SATD 無効
ーHPEL(iters_ディレクトリ)1_8,QPEL(iters_ディレクトリ)1_8,HPEL SATD 無効
ーHPEL(iters_ディレクトリ)2_8,QPEL(iters_ディレクトリ)1_8,HPEL SATD 無効
ーHPEL(iters_ディレクトリ)2_8,QPEL(iters_ディレクトリ)2_8,HPEL SATD 無効

※実行するsubpelの洗練の量。数字が大きいほど、より多くのsubpelの繰り返しとステップが実行される。
※(1)(2)で同じに見えるが、XMedia Recodeでは正規とは「無効」の箇所が異なる。
※{当方のカスタマイズ}×{動き検索範囲(80)}にすると、どうやら(6)と(7)の間に空気感の差が見られる。
(7)にすると圧縮比上がるので勢いに呑まれそうだが、微妙な差を見逃して高圧縮率もクソも無い。

‥ぶっちゃけ、HEVCの圧縮比50%↓とは、あなたが選んだ日用と思える画質UPレベル分を織り込んで、x264→x265換算で容量50%↓ぐらいに解釈するのが適当なのでしょう。



最大マージ:2(初期値)(1〜5)‥※ここだけ数値変更の挙動が変、数値下げるとセーブ設定ロード時に反映しない

PとBスライスで時間軸動きベクトル予測を有効:□
Pスライスで重み付け予測を有効:オン
Bスライスで重み付け予測を有効:オン

SRC Pics 分析オン
※動き分析を画面外枠を用意してまで詳細にやるらしい。



1-13)6/分析

RDO:6にしたいが4‥3(初期値)(0〜6)

参考:https://translate.google.com/translate?hl=ja&sl=en&u=https://x265.readthedocs.io/en/default/cli.html&prev=search
参考(翻訳)からの抜粋

0ーsa8dモードと分割決定、ソースピクセルのあるイントラピクセル、現在サポートされていません
1ー自動生成(イントラ)、RDOマージ/選択スキップ
2ーRDOの分割と選択のマージ/スキップ
3ーRDOモードと分割決定、sa8dに使用されるクロマ残差
4ー現在3と同じ
5ーRDO予測の決定を追加します
6ー現在5と同じ(フルRDO解析)


最大CUサイズ32←64(初期値)_(16,32、64)‥※(64)は再生負荷↑
最小CUサイズ:8(初期値)_(8,16,32,64)
最大TUサイズ16←32(初期値)_(4,8,16,32)


参照制御:3(初期値)(0〜3)
※四分木の深度で、4つのサブブロックをコーディングするために使用される参照制御。
‥(0)以外の設定では、深度は、イントラモードが4つのサブブロックのうちの少なくとも1つのブロックに対する最良のモードとして選択された場合にのみ、(インタースライスで)イントラモードを評価する。

(1)‥現在の深度で分析される参照を制限します。(だから何の制限だよ?)
(2)‥長方形と非対称のパーティションは、2N×2Nのモーションサーチで選択された参照のみを使用します。
(もしかして「モード制限」のこと??)
(3)‥(1)&(2)。各深度での2Nx2Nのモーション検索では分割されたCUからの参照のみが使用され、その深度での矩形/アンプのモーション検索では2Nx2Nで選択された参照のみが使用されます。

これらのフラグの一方または両方を有効にすると、使用している参照の数を(デコーダレベルの制限内で)増やすことができます。

※「参照の数」って、つまり対象とすべきCUやらの数ってこと?‥TUを積極的に使おうってんだからそりゃ増えるだろう。各レベルには、ピクチャー内最大スライス数に制限があるからそれへの注意喚起ってことかな。
逆から問えば、レベルを上げないとピクチャー内最大スライス数制限に対応できないソースもあると言うことだろう。
気になるならHDサイズなら4.1、FHDサイズなら5.1を当てれば良い。
ただし、レベル5以上では、CTUサイズは32×32または64×64に制限される。レベル5未満での利用可能な16×16が利用不可となる。
(refの距離&先読みスライスともに関係ないらしい)


RDOQ レベル:1(0〜3)‥(2)には、ツケ払い踏み倒しの癖あり。ここのレベル設定は心理効果(ぼかし)のスイッチを兼ねている。(3)は、さらに特定項目のスイッチらしいが項目不在。

TUイントラ深度←4(1〜4)
TUインター深度←4(1〜4)
TU制限:2‥0(初期値)(0〜2)
※CU(32)且つTU深度(2)以上でTU制限(2)が有効。
 CU(64)且つTU深度(3)以上でTU制限(2)が有効。
※数値計算上、深度(4)適応が常に発生するわけではない。それゆえ、常に深度(4)までの計算に見合った効果を得られるかには疑問が残る。又、発生率が低ければ低いほど、制限が正しければ正しいほどに、得られる圧縮効果は深度差において同じかほぼ同じになる。


ダイナミックRD:0(初期値)(0〜4)‥RDO(4)以下で有効。
※フィルム粒子専用らしい‥ダイナミックRD(1)にしてSSIM RDOをオンにしてみるべし。

分析の再利用レベル:5(初期値)(1〜10)‥セーブ設定ロード時に反映せず
※‥なにを再利用してどうするのかよく解らない。(1PASSだと無効らしい)

モード制限オン
非対称動きパーティションの分析を有効:□‥矩形分析オンで有効。(RDOの数値で対応の内訳が異なる)
※効果が十分に得られるかどうかはソース次第。一般的に負荷が増えるだけで見返りは小さいだろう。
Nx2Nおよび2NxNの矩形動きパーティションの分析を有効オン
Bスライス内イントラモードの評価を有効オン
CUロスレス:□‥RDO(3)以上で有効。(ロスレスのフラグとセットらしい)
早期スキップ:□‥RDO(4)以上で有効。RDOの数値で対応の内訳が異なる。(フィルム粒子専用らしい)
高速イントラ:□‥RDO(4)以下で有効。
NxNイントラ予測(4x4ブロック)トランスフォームスキップのみ評価:□
RDリファイン:オンにしたいが□‥RDO(5)(6)で有効。(受難度↑↑↑画質↑↑)
4x4TU符号化ブロックのトランスフォームスキップ符号化評価を有効:□‥RDO(3)以上で有効。
SSIM RDO:□‥RDO(3)以上で有効。(増量するが画質↑‥ただし思い込み化↑)


初期のCU深度再帰をスキップオン......
※オンのままだとBフレーム無しでも微に赤ずむ繁華街
 Bフレームあり二枚前提しかしらないとその差にたぶん気が付かない

※参照:HEVCにおける色差直交変換ブロック分割に関する一検討
file:///C:/Users/%E8%A9%A9%E3%81%A8%E9%A2%A8~1/AppData/Local/Temp/KJ00008742008.pdf

 ↑の文献を鑑みるに、HEVCの四分木の分解とて、輝度信号と色差信号の分解性の双方ともに一致して適正にあるわけでは無い。結果、初期のCU‥をスキップすると、検知誤差が大きければ項目の適応(スキップ)が、必ずしも良い結果をもたらすとは限らない‥と解釈できる。(そうは書いてないけど)
 改善する手立てとしては、単純にビットレートを上げる案もあるが、スキップすることで空くビットレートの分を利用して、TU深度(4)にて、気になる誤差の分を織り込むのが、四分木の技術的な方向と考えて良いだろう。
(このスキップ項目は、単に圧縮だけを目的とした内訳だけには無いと心得るべきだろう)

 ‥それから‥

 HEVCの柱たる四分木の技術への警戒(輝度信号と色差信号の分解性の不一致)は、規格側ほどに強く、イケイケ繁華街かと思っていたそれぞれの項目は、意外にも出禁を思わせる制限のオンパレードだった。

‥出入りを厳しくすると四分木の効果は下がり、それにともない倍速再生の効果も下がる。
(こうなるととくに実写では、AVCのHi10でも良いと思えるほどだろう)
‥動き検知さえ十分なら、制限を最小にしても大丈夫かと思い、動き検索の範囲(128)にしてみたところ、圧縮効率は多少良くなる向きにあるが、よく見ると色が摩耗かすれしているように思えなくもない。
(どちらかというと、まずは、時間コストの低い検索範囲を得る方がお得だった)


分割RD分析をスキップ:□



1-13)7/量子化

最大Ausize係数:1.0(初期値)(0.5〜1.0)
TUごとに1係数の符号ビットを隠す:オン

※レート歪み最適化量子化(RDOQ)は、RDO(4)(5)(6)では暗黙的に有効になり、それ以外では暗黙的に無効。
※RDOQ レベルがスイッチになっている。RDOQ レベル(0)だと、ここを始めとしたRDOQ全般が機能しない。
ここの係数が「ぼかし」で扱われる模様。(0.5)ピカピカ←係数→普通(1.0)
大画面での視聴等を鑑みるに、初期値で十分だと思う。(金属のメタリック感オタクなら遊んでみるのもあり)
※作成容量に微々に影響する‥(0.5)微々減←係数→普通(1.0)‥フィルムの長さや二つのぼやけ値によっては甚大。
※想定外の不明なぼやけが見られるなら0.9ぐらいもあり。(ただし、全体の空気感やらとも相談する必要が伴う)

「それにしても、--psy-rd と--psy-rdoqが行方不明なんだけどさ、誰か知らない?」



1-13)8/パフォーマンス

波面並列処理:オン‥※処理を並列させて効率を上げる(先読みスレッドに絡む)
並列モード判定:□
並列動き予測:□

※x265では、WPPはエンコード時のパフォーマンスを向上させるだけでなく、デコーダのスレッド化も可能にするため、デフォルトで有効になっています。



1-13)9/スライス判断

シーンチェンジ感度:125‥初期値40(0〜900)
※AVCのそれとは異なりMAX値(900)だからIフレームが一番に多くなる次第に無いことが判明。いじってみた感触では、(40)から概ね変動得ず。強度が無意味になるぐらいに感度変更されている模様。(125)はおまじない程度でーす。

※‥RC先読みとの絡みが大きい。端数に当たると多くなる程度の差。適正に長めにすると整ったように減る。
自動で増やせないんだったら、サーチ用途に無意味(倍速効果半減)だし、HEVCのIフレームの扱いがAVCとは異なっているらしく、増えてくと半端なく増量しちゃうんで、そりゃ最短数を狙うだけなんだけど‥
そうなると参照距離(2)Bフレーム(1)VS.参照距離(3)Bピラミッド(2)なんだけど、基本的には前者の方が倍速はすこし↑ぐらいの差。その分鮮明↑。圧縮で差が出るようなら躊躇する意味合いは大きくない。
(AVCのBピラミッドは参照4枚からなんだけど、HEVCは枚数上限が7枚だそうで3枚からでも大丈夫らしい‥?)


シーンカット検出バイアス(0〜100)
※無闇に値を変更しても有り得ない箇所にIフレームが注入されてしまう。やはり、バイアスという名だけに注意が必要。
※この値は、シーンカット検出に使用されるフレームのインターコストとイントラコストの割合を表します。
たとえば、(5)基本値は、フレームのインターコストがそのフレームのイントラコストの95%以上である場合に、そのフレームをシーンカットとして検出することを示します。5〜15の値が推奨されています。
※↑という計算だから、値を増やしてもフレームが無駄に位置ズレするだけ。多量的な傾向として(5)が一番に適当らしいけど、Bフレームの構成次第ではちびちびズレるようなのでもどかしい奴だよこいつッ。


RC先読み:120‥初期値20(最大連続bフレーム数〜250)
※サーチ用途に意味が無くなったので60から120に変更しました。又GOPの最大範囲値に揃えないと効率が上がりません。


先読みスライス:0(0〜16)‥(実験的な要素が大)
先読みスレッド:0(0〜16)
参照フレーム:2‥初期値3(0〜16)
CTU情報:0_(0,1,2,4,6)‥不明。要API関数。
周期的なイントラ更新を有効:□‥(できればIフレームを追加したくない低ビットレート向け、正確性に欠く)



1-13)10/空間軸/イントラ

32x32イントラブロックのスムージング(強):□‥(初期値オン)
※高画質希望ならオフの方が良いと思う(とくにDVDからのアップコンバート)

制約付きのイントラ予測:□
※最大マージ(5)用のペナルティー制御っぽい。
わざわざ付けるぐらいなら最大マージ(2)で良いと思う。最大マージにしてもまだまだ実験的なんだろうと思う。




1-13)11/ビットストリーム

Annex B:オン‥※規格印(外すとデコード時に映像表示キャンセル)
リピートヘッダ:□
AUD:□
HRD:オン‥※デコード用(内部データ構造の整理収納)セーブ設定ロード時に反映せず
情報:オン
時間軸レイヤー:□
ハッシュ:なし_(なし,MD5,CRC,チェックサム)



1-13)12/ビデオユーザビリティ

ビデオ形式:指定なし
カラー優先度:指定なし_(指定なし,BT709など)
行列係数:BT709_(指定なし,BT709など)
伝送特性:指定なし_(指定なし,BT709など)
範囲:制限_(未確定,制限,完全)
最大輝度:0(最大値不明)
最小輝度:0(最大値不明)
最大CLL:0(最大値不明)
最大FALL:0(最大値不明)

※カラー優先度,行列係数,伝送特性はソースにより設定が変わるので
 一定の形式に揃えたいなら逐一チェックが必要っぽ。
(‥試した感じではソースの構成に沿うのが手頃らしい)


1-13)13/クロップ/プレビュー

##解像度##

スケーリング:双三次スプライン
ディザリング:自動



posted by 木田舎滝ゆる里 at 22:12 | Comment(0) | HEVCと洗逸と受難 | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。