Top-Down frente a Bottom-Up DIB
[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEnginey captura de audio y vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y captura de audio y vídeo en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
Si no está familiarizado con la programación de gráficos, podría esperar que se organizara un mapa de bits en memoria para que la fila superior de la imagen apareciera al principio del búfer, seguida de la siguiente fila, etc. Sin embargo, esto no es necesariamente el caso. En Windows, los mapas de bits independientes del dispositivo (DIB) se pueden colocar en memoria en dos orientaciones diferentes, de abajo arriba y de arriba abajo.
En una DIB de abajo arriba, el búfer de imágenes comienza con la fila inferior de píxeles, seguida de la siguiente fila arriba, etc. La fila superior de la imagen es la última fila del búfer. Por lo tanto, el primer byte en memoria es el píxel inferior izquierdo de la imagen. En GDI, todos los DIB están de abajo arriba. En el diagrama siguiente se muestra el diseño físico de una DIB de abajo arriba.
de dib de abajo arriba
En una DIB de arriba abajo, se invierte el orden de las filas. La fila superior de la imagen es la primera fila en memoria, seguida de la siguiente fila hacia abajo. La fila inferior de la imagen es la última fila del búfer. Con una DIB de arriba abajo, el primer byte en memoria es el píxel superior izquierdo de la imagen. DirectDraw usa DIB de arriba abajo. En el diagrama siguiente se muestra el diseño físico de una DIB de arriba abajo:
de dib de arriba abajo
Para los DIB RGB, la orientación de la imagen se indica mediante el miembro biHeight de la estructuraBITMAPINFOHEADER de. Si biHeight es positivo, la imagen está de abajo arriba. Si biHeight es negativo, la imagen está de arriba abajo.
Los DIB en formatos YUV siempre están de arriba abajo y se omite el signo de la miembro biHeight. Los descodificadores deben ofrecer formatos YUV con biHeight positivos, pero también deben aceptar formatos YUV con de negativas y omitir el signo.
Además, cualquier tipo DIB que use un FOURCC en el miembro biCompression, debe expresar su biHeight como un número positivo, independientemente de su orientación, ya que el FOURCC identifica un esquema de compresión cuya orientación de imagen debe entender cualquier filtro compatible.
Temas relacionados