私は初心者の開発者であり、おそらくあなたにとって些細なことであなたの助けが必要です.
このピクセル形式の画像データがあります: 256 色のパレット化された RGBA。これは FFmpeg から来て(PIX_FMT_PAL8)
おり、次のように説明されています。
PIX_FMT_RGB32 は、エンディアン固有の方法で処理されます。RGBA カラーは次のようにまとめられます。
(A << 24) | (R << 16) | (G << 8) | B
これは、リトル エンディアンの CPU アーキテクチャでは BGRA として保存され、ビッグ エンディアンの CPU では ARGB として保存されます。
ピクセル形式がパレット化された RGB (PIX_FMT_PAL8) の場合、パレット化された画像データは AVFrame.data[0] に格納されます。
パレットは AVFrame.data[1] で転送され、長さは 1024 バイト (256 個の 4 バイト エントリ) で、上記の PIX_FMT_RGB32 と同じようにフォーマットされます (つまり、エンディアン固有でもあります)。AVFrame.data[1] に格納されている個々の RGB パレット コンポーネントは、0..255 の範囲内にある必要があることにも注意してください。
AVFrame 構造体には と が含まれuint8_t *data[4]
てint linesize[4]
おり、次のように簡単に説明されています。
uint8_t *data[4]
= ピクチャ プレーンへのポインタ- 4 つのコンポーネントが与えられます。それだけです。
- 最後のコンポーネントはアルファです
int linesize[4]
= 1 行あたりのバイト数
必要なすべてのデータを含む AVFrame 構造体がありますが、それを処理する方法がわかりません。この画像データから NSImage を作成する必要があります。
これどうやってするの?