次の方法で共有


Top-Down DIB と Bottom-Up DIB

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

グラフィックス プログラミングを初めて使用する場合は、イメージの先頭行がバッファーの先頭に表示され、その後に次の行などが表示されるように、ビットマップがメモリ内に配置される可能性があります。 ただし、必ずしもそうであるとは限りません。 Windows では、デバイスに依存しないビットマップ (DIB) を、ボトムアップとトップダウンの 2 つの異なる向きでメモリに配置できます。

ボトムアップ DIB では、イメージ バッファーはピクセルの下の行から始まり、次の行が上に続きます。 イメージの先頭行は、バッファー内の最後の行です。 したがって、メモリ内の最初のバイトは、画像の左下のピクセルです。 GDI では、すべての DIB がボトムアップされます。 次の図は、ボトムアップ DIB の物理レイアウトを示しています。

ボトムアップディブ

トップダウン DIB では、行の順序が逆になります。 イメージの先頭行はメモリ内の最初の行で、次の行は下に続きます。 イメージの一番下の行は、バッファー内の最後の行です。 トップダウン DIB では、メモリ内の最初のバイトは画像の左上のピクセルです。 DirectDraw では、トップダウン DIB が使用されます。 次の図は、トップダウン DIB の物理レイアウトを示しています。

トップダウン ディブ

RGB DIB の場合、イメージの向きは BITMAPINFOHEADER 構造体の biHeight メンバーによって示されます。 biHeight が正の場合、画像はボトムアップになります。 biHeight が負の場合、画像は上から下に表示されます。

YUV 形式の DIB は常にトップダウンされ、 biHeight メンバーの符号は無視されます。 デコーダーは、正 の biHeight を持つ YUV 形式を提供する必要がありますが、負の biHeight を持つ YUV 形式も受け入れて、記号を無視する必要があります。

また、BICompression メンバーで FOURCC を使用する DIB 型では、FOURCC 自体が互換性のあるフィルターによってイメージの向きを理解する必要がある圧縮スキームを識別するため、その biHeight は、その向きに関係なく正の数として表現する必要があります。

ビデオ フレームの操作