NEWS
TECH BLOG / 11月 5, 2018
世界最高峰ビデオ プリプロセッシングフィルター
セルジオ サンズ ロドリゲス(博士): “Quality has no Substitute. “(クオリティに代わるものはない)。これは、次世代没入型メディアの最先端ツール開発を目的として、EUが資金を提供するImmersifyプロジェクトのスローガンです。Spin Digitalは、常に映像の最終クオリティを重視しています。そのため、Spin Digitalが開発するHEVCエンコーダ(Spin Enc)とその高精度プリプロセッシングフィルター(Spin Filter)所定のビットレートに対して最大限の品質を実現するように最適化されています。
フィルターと実装について
エンコーダだけではなく、プリプロセッシングフィルターも映像の最終クオリティを決定する重要なポイントです。元素材を圧縮する前に通常は、解像度スケーリング(8Kから4Kや4KからFHD)もしくは、投影から配信の際のカラーフォーマット変換(4:4:4 12ビットから4:2:0 10ビット、8ビット)などの変換が必要とされます。したがって、ビデオフィルターは、最大限に最高の品質が維持されるように実装する必要があります。
ビデオフィルターは、最大限に最高の品質が維持されるように実装する必要があります。
Spin Filterは、浮動小数点で動作し、マルチスレッドおよびSIMD命令でパフォーマンスが最適化されています。下記、ご参照:
オペレーション | オプション |
---|---|
解像度スケーリング | Nearest, neighbor, bilinear, bicubic, Lanczos2, Lanczos3 |
クロマサンプル、ピクセルフォーマット変換 | 4:2:0, 4:2:2, 4:4:4, RGB |
ビット深度変換 | 8-, 10-, 12-bit |
カラースペース変換 | BT.601, BT.709, DCI-P3, BT.2020 |
トランスファーファンクション変換 | SDR, PQ (ST2084), HLG (BT.2100) |
トランスフォーム | Cropping, padding, rotation, mirroring |
ブレンディング | Image overlays |
サーフィカルフォーマット変換 | Equirectangular, cubemap, rectilinear, dynamic viewport, rotation |
これらのフィルターをつなぎ合わせ、要求される変換パイプラインを得ることができます。これらフィルターの連動は、フィルターオプションで指定することができます。
下記は、エンコード前の変換例です:
# Input video: 8Kp60, RGB 8-bit # Output video: 4Kp60, YUV 4:2:0 10-bit, QP 30 # Filter chain: # - "s:w=3840,": resolution scaling from 8K to 4K # - "f:pixfmt=420p,": chroma sampling conversion from RGB to YUV 4:2:0 # - "f:bd=10": bit depth conversion from 8-bit to 10-bit. ./spinenc -s 7680x4320 -r 60 --fmt rgbp:8 -i raw.rgb --filter s:w=3840,f:pixfmt=420p,f:bd=10 -q 30 -o out.hevc
映像をエンコードする前に、SpinEncは、ユーザが行ったすべての操作をリスト表示します。下記のようにフィルターの連動を確認することが可能です:
Filter config ------------- Resolution scaling (7680x4320)->(3840x2160) imeth=lanc3 Color conversion rgb->yuv Chroma conversion 444p->420p Bit depth conversion 8b->10b
フィルターの順列は、コマンドラインで指定された順列と正確に一致しています。デフォルトのスケーリングがlanc3(Lanczos filter with 3 lobes)であることも確認できます。コマンドラインには、記載されていませんが、4:2:0はYUVでしか使用されないので、RGBからYUVへの色変換も適用されています。
自動変換ツール
入力フォーマットによっては、要求する出力フォーマットを生成する変換パイプラインを構築することが難しいときがあります。これは、特に要求する操作の数が多い時に発生します。
他にもビデオフィルターを連動させる方法がいくつかあります。例えば、2つのフィルター(フィルターA、フィルターB)は、2つの可能なチェーン(フィルターA -> フィルターB、フィルターB -> フィルターA)と最大6つのチェーンの3つのフィルターとなります。すべての可能な組合せは、処理速度は同等にもかかわらず、同じ出力ビデオを生成するわけではありません。言い換えれば、いくつかのフィルター連動の方法が優れた品質を生成する場合があります。
Spin Digitalは、映像品質と処理速度を考慮した最良のフィルター連動の構成を簡素化する自動変換ツールを開発しました。
Example 1
前サンプルのコマンドラインの結果がこのツールで、オプション”a”で有効になり、次に表示:
./spinenc -s 7680x4320 -r 60 --fmt rgbp:8 -i raw.rgb --filter a:w=3840:cf=420:bd=10 -q 30 -o out.hevc
生成された変換パイプライン:
Filter config ------------- Bit depth conversion 8b->10b Resolution scaling (7680x4320)->(3840x2160) imeth=lanc3 Color conversion rgb->yuv Chroma conversion 444p->420p
確認できるように、自動ビット深度アップコンバージョンフィルターが最初に処理され、2番目に解像度ダウンスケーリング、最後にクロマサンプリングダウンスケーリングが行われています。
Spin Digitalは、映像品質と処理速度を考慮した最良のフィルター連動の構成を簡素化する自動変換ツールを開発しました。
Example 2
さらに複雑なフィルター連動がある例の分析:
# Input video: equirectangular (erp), 4Kp60, bt709l (limited range), YUV 4:2:0 10-bit # Output video: cubemap (cmp), 4Kp60, bt2020l (limited range), YUV 4:2:2 10-bit, QP 30 # Filter chain: # - "a:cs=bt2020l": color space conversion from bt709l to bt2020l # - ":cf=422": chroma sampling conversion from 4:2:0 to 4:2:2 # - ":geom=cmp": geometry conversion from erp to cmp ./spinenc -s 4096x2048 -r 60 -f 420p:10 --geom erp -i raw.yuv --filter a:cs=bt2020l:cf=422:geom=cmp -q 30 -o out.hevc
この例での変換パイプライン:
Filter config ------------- Chroma conversion 420p->444p Color conversion bt709l->bt2020l lut=33 Chroma conversion 444p->422p Geometry projection erp->cmp (4096x2048)->(3456x2304) imeth=lanc3
フィルターの実行順列は、1)4:2:0から4:4:4へのクロマサンプリング変換、2)bt709lからbt2020lへの色空間変換、3)4:4:4から4:2:2へのクロマサンプリング変換、4)エクイレクタングラーからキューブマップへのサーフィカルフォーマット変換。
確認できるように、自動変換ツールでは、4:2:0から4:4:4へのアップスケールと色変換後の4:4:4から4:2:2へのダウンスケーリングのように、コマンドラインで指定されていないフィルターが使用されています。これらの追加されたフィルターは、色変換が4:4:4フォーマットでのみ動作するために必要になります。このように、このツールを使用するユーザは、複雑で重要な操作を習得しておく必要はありません。
Spin Filter パッケージ
ビデオプロセッシングフィルターは、下記の製品に搭載:
- Spin Enc: スタンドアローンのHEVCエンコーダ(SpinEnc)のプリプロセッシングモジュールとして、また、FFmpeg トランスコーダ (spinffmpeg)のプラグインとして
- Spin SDK: Spin Digital HEVC SDKのコンポーネントとして