Top-Down e Bottom-Up DIB
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEnginee Acquisizione audio/video in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente di usare un nuovo codice MediaPlayer, IMFMediaEngine e Acquisizione audio/video in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Se non si ha ancora una volta la programmazione grafica, ci si potrebbe aspettare che una bitmap venga disposta in memoria in modo che la riga superiore dell'immagine sia apparsa all'inizio del buffer, seguita dalla riga successiva e così via. Tuttavia, questo non è necessariamente il caso. In Windows, le bitmap indipendenti dal dispositivo (DIB) possono essere inserite in memoria in due diversi orientamenti, dal basso verso l'alto e dall'alto verso il basso.
In un DIB inferiore, il buffer di immagini inizia con la riga inferiore di pixel, seguita dalla riga successiva verso l'alto e così via. La riga superiore dell'immagine è l'ultima riga nel buffer. Pertanto, il primo byte in memoria è il pixel inferiore sinistro dell'immagine. In GDI tutti i DIB sono in basso. Il diagramma seguente illustra il layout fisico di un DIB inferiore.
dib in basso
In un DIB dall'alto verso il basso, l'ordine delle righe viene invertito. La riga superiore dell'immagine è la prima riga in memoria, seguita dalla riga successiva verso il basso. La riga inferiore dell'immagine è l'ultima riga nel buffer. Con un DIB dall'alto verso il basso, il primo byte in memoria è il pixel superiore sinistro dell'immagine. DirectDraw usa DIB dall'alto verso il basso. Il diagramma seguente mostra il layout fisico di un DIB dall'alto verso il basso:
dib dall'alto verso il basso
Per i DIB RGB, l'orientamento dell'immagine è indicato dal membro biHeight della struttura BITMAPINFOHEADER. Se biHeight è positivo, l'immagine è in basso. Se biHeight è negativo, l'immagine è dall'alto verso il basso.
I DIB nei formati YUV sono sempre dall'alto verso il basso e il segno del membro biHeight viene ignorato. I decodificatori devono offrire formati YUV con positivobiHeight, ma devono anche accettare formati YUV con negativo biHeight e ignorare il segno.
Inoltre, qualsiasi tipo DIB che utilizza un FOURCC nel membro biCompression, deve esprimere il proprio biHeight come numero positivo indipendentemente dall'orientamento, poiché il FOURCC stesso identifica uno schema di compressione il cui orientamento dell'immagine deve essere compreso da qualsiasi filtro compatibile.
Argomenti correlati