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, IMFMediaEngine et Audio/Video Capture in 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 Audio/Video Capture dans Media Foundation au lieu de DirectShow, si 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 organisée en mémoire de sorte que la ligne supérieure de l’image apparaisse au début de la mémoire tampon, suivie de la ligne suivante, et ainsi de suite. Toutefois, ce n’est pas nécessairement le cas. Dans Windows, les bitmaps indépendantes de l’appareil (DIB) peuvent être placées en mémoire dans deux orientations différentes, de bas en haut et de haut en bas.
Dans une DIB de bas en haut, la mémoire tampon d’image commence par la ligne inférieure de 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, tous les DIB sont de bas en haut. Le diagramme suivant montre la disposition physique d’une DIB de bas en haut.
Dans une DIB descendante, 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 descendante, le premier octet en mémoire est le pixel supérieur gauche de l’image. DirectDraw utilise des DIB de haut vers le bas. Le diagramme suivant montre la disposition physique d’une DIB descendante :
Pour les DIB RVB, l’orientation de l’image est indiquée par le membre biHeight de la structure BITMAPINFOHEADER . Si biHeight est positif, l’image est de bas en haut. Si biHeight est négatif, l’image est de haut en bas.
Les DIB aux formats YUV sont toujours de haut en bas et le signe du membre biHeight est ignoré. Les décodeurs doivent proposer des formats YUV avec biHeight positif, 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 sous la forme d’un nombre positif, quelle que soit son orientation, car le FOURCC lui-même identifie un schéma de compression dont l’orientation d’image doit être comprise par tout filtre compatible.
Rubriques connexes