HDR TV で HDR ビデオを表示するシンプルなビデオ プレーヤーを作成したいと考えています。例えば、この「LG Chess HDR」の動画。HEVC でエンコードされ、ビット深度は 10 ビット、ピクセル形式は YUV420P10LE で、BT2020 色空間と PQ 伝達関数に関するメタデータが含まれています。
このNVIDIA の記事で、次のことがわかりました。
ディスプレイ ドライバーは、scRGB バック バッファーを取得し、現在接続されているディスプレイが期待する標準に変換します。一般に、これは色空間を sRGB 原色から BT に変換することを意味します。2020 プライマリー、適切なレベルへのスケーリング、および PQ のようなメカニズムによるエンコード。また、そのディスプレイ接続が必要な場合は、RGB から YCC などの変換を実行する可能性があります。
これは、プレーヤーがscRGB 色空間でピクセルをレンダリングする必要があることを意味します(線形エンコーディング、sRGB 原色、全範囲は -0.5 から +7.5 未満)。したがって、ソース ビデオからこの色空間で、できれば FP16 ピクセル形式 (ハーフ フロート、1 つのカラー チャネルあたり 16 ビット) でフレームを取得する必要があります。ビデオを HDR にレンダリングするための次の単純なパイプラインにたどり着きました。
source HDR video in BT2020 color space with applied PQ -> [some video library] ->
-> video frames with colors in scRGB color space -> [my program] ->
-> rendered video on HDR TV with applied conversions by display driver
このライブラリとして FFmpeg を使用しようとしていますが、scRGB 色空間でソース HDR ビデオからフレームを取得する方法がわかりません。
フレームを取得し、フィルター API について知るために、現在はsws_scale FFmpeg メソッドを使用しています。しかし、すべてのソース ビデオのメタデータを解析せずにこれらの機能を使用して scRGB で透過的にフレームを取得し、それらのカスタム ビデオ フィルタを作成する方法に関する情報やヘルプは見つかりませんでした。
FFmpeg を使用して scRGB 色空間でフレームを取得するために何ができるか教えてください。誰かが私がそれを行うことができる他のライブラリを教えてもらえますか?