Interface IMF2DBuffer (mfobjects.h)
Représente une mémoire tampon qui contient une surface à deux dimensions, telle qu’une trame vidéo.
Héritage
L’interface IMF2DBuffer hérite de l’interface IUnknown. IMF2DBuffer a également les types de membres suivants :
Méthodes
L’interface IMF2DBuffer a ces méthodes.
IMF2DBuffer ::ContiguousCopyFrom Copie les données dans cette mémoire tampon à partir d’une mémoire tampon dont le format est contigu. |
IMF2DBuffer ::ContiguousCopyTo Copie cette mémoire tampon dans la mémoire tampon de l’appelant, en convertissant les données au format contigu. |
IMF2DBuffer ::GetContiguousLength Récupère le nombre d’octets nécessaires pour stocker le contenu de la mémoire tampon dans un format contigu. |
IMF2DBuffer ::GetScanline0AndPitch Récupère un pointeur vers la mémoire tampon et la surface stride. |
IMF2DBuffer ::IsContiguousFormat Demande si la mémoire tampon est contiguë dans son format natif. |
IMF2DBuffer ::Lock2D Permet à l’appelant d’accéder à la mémoire dans la mémoire tampon. (IMF2DBuffer.Lock2D) |
IMF2DBuffer ::Unlock2D Déverrouille une mémoire tampon précédemment verrouillée. Appelez cette méthode une fois pour chaque appel à IMF2DBuffer ::Lock2D. |
Remarques
Pour obtenir un pointeur vers cette interface, appelez QueryInterface sur la mémoire tampon multimédia.
Pour utiliser une mémoire tampon 2D, il est important de connaître la foulée, qui est le nombre d’octets nécessaires pour passer d’une ligne de pixels à la suivante. La foulée peut être supérieure à la largeur de l’image, car la surface peut contenir des octets de remplissage après chaque ligne de pixels. La foulée peut également être négative si les pixels sont orientés de bas en haut en mémoire. Pour plus d’informations, consultez Image Stride.
Chaque format vidéo définit une représentation contiguë ou empaquetée. Cette représentation est compatible avec la disposition standard d’une surface DirectX dans la mémoire système, sans remplissage supplémentaire. Pour la vidéo RVB, la représentation contiguë a une hauteur égale à la largeur de l’image en octets, arrondie à la limite DWORD la plus proche. Pour la vidéo YUV, la disposition de la représentation contiguë dépend du format YUV. Pour les formats YUV planaires, le plan Y peut avoir une hauteur différente de celle des plans you et V.
Si une mémoire tampon multimédia prend en charge l’interface IMF2DBuffer , il n’est pas garanti que la mémoire tampon sous-jacente ait une représentation contiguë, car il peut y avoir des octets de remplissage supplémentaires après chaque ligne de pixels. Lorsqu’une mémoire tampon est non contiguë, les méthodes Lock et Lock2D ont des comportements différents :
- La méthode Lock2D retourne un pointeur vers la mémoire tampon sous-jacente. La mémoire tampon peut ne pas être contiguë.
- La méthode Lock retourne une mémoire tampon dont la contiguïté est garantie. Si la mémoire tampon sous-jacente n’est pas contiguë, la méthode copie les données dans une nouvelle mémoire tampon et la méthode Unlock les copie dans la mémoire tampon d’origine.
Pour les images non compressées, la quantité de données valides dans la mémoire tampon est déterminée par la largeur, la hauteur et la disposition en pixels de l’image. Pour cette raison, si vous appelez Lock2D pour accéder à la mémoire tampon, ne vous appuyez pas sur les valeurs retournées par IMFMediaBuffer ::GetCurrentLength ou IMFMediaBuffer ::GetMaxLength. De même, si vous modifiez les données dans la mémoire tampon, vous n’avez pas besoin d’appeler IMFMediaBuffer ::SetCurrentLength pour mettre à jour la taille. En règle générale, vous devez éviter de mélanger les appels aux méthodes IMF2DBuffer et IMFMediaBuffer sur la même mémoire tampon multimédia.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista [applications de bureau | applications UWP] |
Serveur minimal pris en charge | Windows Server 2008 [applications de bureau | applications UWP] |
Plateforme cible | Windows |
En-tête | mfobjects.h (include Mfidl.h) |