モノトーンの伝説日記

Apex Legends, Splatoon, Programming, and so on...

<mini> カラマネ対応(映像処理のみ) OBS Studio について

 カラマネに対応している OBS Studio の設定とかについて書きます。

github.com

↑カラマネ用ブランチです。

1. transfer

 ガンマカーブですね。OETF のカーブでは次のような曲線になります。

f:id:mntone:20170406133404p:plain

 xvYCC は BT.709 の 0~1 以外の範囲を定義したいわゆる拡張規格で,出力は xvYCC 固定になっています。このあたりはおいおい追加するか BT.709 をデフォにするか検討します。

 デフォルトに関しては xvYCC 固定です。

2. colorprim

 色域変換のための行列決定ですね。BT.2020 と BT.709 といった色空間を変更し,適切な RGB 値にマッピングさせます。

 BT.709 と BT.2020 の色域の比較は以下を見るとよいでしょう。

http://trendy.nikkeibp.co.jp/article/column/20150629/1065402/?SS=expand-digital&FD=-102139740

 当然 BT.2020 のほうが広いですから,RGB(255, 0, 0) といった信号を BT.709 で表すことはできません。しかし表現できる限界まで飽和させます。

 デフォルトに関しては次のようなアルゴリズムで決定します。

if (width <= 720 && height <= 486)
  VIDEO_CP_NTSC;
else if (width <= 720 && height <= 576)
  VIDEO_CP_PAL;
else if (width == 4096 && height == 2160)
  VIDEO_CP_DCI_P3;
else if (width >= 3840 && height >= 2160)
  VIDEO_CP_PAL;
else
  VIDEO_CP_BT709;

3. colormatrix

 YUV⇔RGB 変換行列です。ここだけは映像知識かじっている人はよく聞く話なので割愛します。

 デフォルトに関しては次のようなアルゴリズムで決定します。

if (height < 720)
  VIDEO_CM_BT601;
else if (height >= 2160)
  VIDEO_CM_BT2020NC;
else
  VIDEO_CM_BT709;

最後に

 作成者は Adobe RGB や BT.2020 を正しく表示できる環境を持っていないため,実際の画面と比較して報告いただけるとうれしいです。