Partager via


Top-Down et Bottom-Up DIBs

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngineet audio/vidéo capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et capture audio/vidéo dans Media Foundation au lieu de directShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Si vous débutez avec la programmation graphique, vous pouvez vous attendre à ce qu’une bitmap soit disposée en mémoire afin que la ligne supérieure de l’image apparaisse au début de la mémoire tampon, suivie de la ligne suivante, etc. Toutefois, ce n’est pas nécessairement le cas. Dans Windows, les bitmaps indépendantes de l’appareil (DIBs) peuvent être placées en mémoire dans deux orientations différentes, en bas et en bas.

Dans une DIB de bas en haut, la mémoire tampon d’image commence par la ligne inférieure des pixels, suivie de la ligne suivante vers le haut, etc. La ligne supérieure de l’image est la dernière ligne de la mémoire tampon. Par conséquent, le premier octet en mémoire est le pixel inférieur gauche de l’image. Dans GDI, toutes les DIB sont en bas. Le diagramme suivant montre la disposition physique d’une DIB de bas en haut.

dib bas vers le haut

Dans une DIB en haut vers le bas, l’ordre des lignes est inversé. La ligne supérieure de l’image est la première ligne en mémoire, suivie de la ligne suivante vers le bas. La ligne inférieure de l’image est la dernière ligne de la mémoire tampon. Avec une DIB en haut vers le bas, le premier octet en mémoire est le pixel supérieur gauche de l’image. DirectDraw utilise des DIB de haut en bas. Le diagramme suivant montre la disposition physique d’une DIB de haut en bas :

dib haut vers le bas

Pour les bases de données RVB, l’orientation de l’image est indiquée par le membre biHeight de la structure BITMAPINFOHEADER. Si biHeight est positif, l’image est en bas. Si biHeight est négatif, l’image est en haut vers le bas.

Les diBs dans les formats YUV sont toujours en haut et le signe du membre biHeight est ignoré. Les décodeurs doivent proposer des formats YUV avec des biHeightpositifs, mais ils doivent également accepter les formats YUV avec des biHeight négatifs et ignorer le signe.

En outre, tout type DIB qui utilise un FOURCC dans le membre biCompression, doit exprimer son biHeight comme un nombre positif quel que soit son orientation, car le FOURCC lui-même identifie un schéma de compression dont l’orientation de l’image doit être comprise par n’importe quel filtre compatible.

utiliser des images vidéo