Condividi tramite


Top-Down e Bottom-Up DIBs

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture 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 è nuovi alla programmazione grafica, potrebbe essere previsto che una bitmap venga disposta in memoria in modo che la riga superiore dell'immagine venga visualizzata all'inizio del buffer, seguita dalla riga successiva e così via. Tuttavia, questo non è necessariamente il caso. In Windows, le bitmap indipendenti dal dispositivo possono essere posizionate in memoria in due diversi orientamenti, in basso e in basso.

In un DIB inferiore, il buffer immagine 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 database DIB sono in basso. Il diagramma seguente illustra il layout fisico di un DIB in basso.

dib in basso

In un DIB in 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 in alto verso il basso, il primo byte in memoria è il pixel superiore sinistro dell'immagine. DirectDraw usa i database DIB in alto verso il basso. Il diagramma seguente illustra il layout fisico di un DIB superiore:

dib in 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 è in alto verso il basso.

I dib nei formati YUV sono sempre in alto e il segno del membro biHeight viene ignorato. I decodificatori devono offrire formati YUV con biHeight positivi, ma devono anche accettare formati YUV con biHeight negativi e ignorare il segno.

Inoltre, qualsiasi tipo DIB che usa un FOURCC nel membro biCompression , deve esprimere il suo biHeight come numero positivo indipendentemente dal relativo orientamento, poiché il FOURCC stesso identifica uno schema di compressione il cui orientamento dell'immagine deve essere compreso da qualsiasi filtro compatibile.

Uso dei fotogrammi video