CRI Sofdec  Last Updated: 2024-04-17 11:21 p
ビデオフレームの変換と表示について

PC版Sofdec で使用可能なビデオ出力フォーマットについて説明します。

ビデオフレーム出力フォーマット

Sofdec ライブラリのデコード結果は、独自フォーマットで保持しています。
ビデオフレーム出力バッファーにビデオフレームをコピーする際に、描画に適したフォーマットに変換します。

PC(Windows)プラットフォームでは次の2種類のビデオフレーム出力フォーマットをサポートしています。

  • 32bit ARGB テクスチャフォーマット
  • YUV個別バッファーフォーマット(PixelShader用)

ビデオフレーム出力バッファーのサイズとピッチ

デコード結果を変換するビデオフレーム出力バッファーは、アプリケーションが確保してください。
バッファーのサイズはムービーの解像度や描画のフォーマットに依存します。
出力先がテクスチャバッファーの場合、ムービーの横ピクセル数とバッファーの横幅(ピッチ)が異なる場合があります。
Sofdec のビデオフレームを変換/コピーする時は、基本的にバッファーポインタ、バッファーサイズ、ピッチの3つのパラメーターが必要となります。

ビデオフレームの出力フォーマット

(1) 32bit ARGB

32bit ARGBテクスチャフォーマットでビデオフレームを取得します。
criManaPlayer_CopyFrameToBufferARGB32 関数を使用してください。
ただし、本フォーマットでの取得には::criMana_InitializeFrameARGB32関数をライブラリ初期化直後に呼び出す必要があります。

32bit ARGBフォーマットの具体的なデータの並びは、最も汎用的なテクスチャフォーマットに準拠します。

PCの場合は、ビデオカード等の制約によりテクスチャサイズが2のべき乗に制限される場合がありますので、ピッチ指定に注意してください。
ビデオフレーム取得関数の引数pitch には実際のメモリ幅を指定します。

(2) YUV個別バッファー(Pixel Shader用)

Yバッファー、Uバッファー、Vバッファーの3つのバッファーにビデオフレームを取得します。
criManaPlayer_CopyFrameToBuffersYUV 関数を使用してください。関数引数には CriManaTextureBuffersYUV 構造体を使います。

このフォーマットは、Pixel Shader でYUV→RGBの色変換を行いながら描画するのに適しています。

Pixel Shader はアプリケーションで実装・制御する必要があります。