Compartir a través de


Top-Down frente a dibs de Bottom-Up

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/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 Audio/Video Capture 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 un mapa de bits se organizara en memoria para que la fila superior de la imagen apareciera al principio del búfer, seguida de la fila siguiente, 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 hacia 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, todas las DIB están de abajo arriba. En el diagrama siguiente se muestra el diseño físico de una DIB de abajo arriba.

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:

dib de arriba abajo

Para DIB RGB, la orientación de la imagen se indica mediante el miembro biHeight de la estructura BITMAPINFOHEADER . Si biHeight es positivo, la imagen está de abajo arriba. Si biHeight es negativo, la imagen está de arriba abajo.

Las DIB en formatos YUV siempre están de arriba abajo y se omite el signo del miembro biHeight . Los descodificadores deben ofrecer formatos YUV con biHeight positivo, pero también deben aceptar formatos YUV con biHeight negativo e ignorar el signo.

Además, cualquier tipo de 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 propio FOURCC identifica un esquema de compresión cuya orientación de imagen debe entenderse por cualquier filtro compatible.

Trabajar con fotogramas de vídeo