共用方式為


Top-Down與 Bottom-Up DIB 的比較

[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。

如果您不熟悉圖形程式設計,您可能會預期點陣圖會在記憶體中排列,讓影像的頂端資料列出現在緩衝區開頭,後面接著下一列,依此類推。 不過,這不一定是這種情況。 在 Windows 中,裝置獨立點陣圖 (DIB) 可以放在記憶體中,以兩個不同的方向,由下而上和下而下。

在由下至下 DIB 中,影像緩衝區會以圖元的底端資料列開始,後面接著下一個資料列,依此類推。 影像的頂端資料列是緩衝區中的最後一列。 因此,記憶體中的第一個位元組是影像的左下圖元。 在 GDI 中,所有 DIB 都是由下而上。 下圖顯示由下至下 DIB 的實體配置。

下向上 dib

在由上而下 DIB 中,資料列的順序會反轉。 影像的前一列是記憶體中的第一個資料列,後面接著下一個資料列。 影像的底部資料列是緩衝區的最後一個資料列。 使用由上而下 DIB 時,記憶體中的第一個位元組是影像的左上方圖元。 DirectDraw 使用由上而下的 DIB。 下圖顯示由上而下 DIB 的實體配置:

由上至下 dib

若為 RGB DIB,影像方向是由BITMAPINFOHEADER結構的biHeight成員所表示。 如果 biHeight 為正數,則影像會由下而下。 如果 biHeight 是負數,則影像會由上而下。

YUV 格式的 DIB 一律由上而下,而且會忽略 biHeight 成員的符號。 解碼器應該提供具有正 biHeight的 YUV 格式,但也應該接受具有負 數 biHeight 的 YUV 格式,並忽略符號。

此外,任何使用 biCompression成員中FOURCC的 DIB 類型都應該將其biHeight表示為正數,不論其方向為何,因為 FOURCC本身會識別應該由任何相容篩選準則瞭解其影像方向的壓縮配置。

使用視訊畫面