IVMRSurfaceAllocator ::AllocateSurface, méthode (strmif.h)
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La 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.]
La AllocateSurface
méthode alloue une surface DirectDraw.
Syntaxe
HRESULT AllocateSurface(
[in] DWORD_PTR dwUserID,
[in] VMRALLOCATIONINFO *lpAllocInfo,
[in] DWORD *lpdwActualBuffers,
[out] LPDIRECTDRAWSURFACE7 *lplpSurface
);
Paramètres
[in] dwUserID
Un cookie DWORD_PTR défini par l’application qui identifie de manière unique cette instance du vmR pour une utilisation dans des scénarios où une instance de l’allocator-présentateur est utilisée avec plusieurs instances VMR.
[in] lpAllocInfo
Spécifie la structure VMRALLOCATIONINFO . Consultez la section Notes.
[in] lpdwActualBuffers
[out] En entrée, ce paramètre est utilisé pour demander le nombre de mémoires tampons souhaitées. À la sortie, il reçoit le nombre réel de mémoires tampons créées.
[out] lplpSurface
Adresse d’un pointeur qui reçoit la surface Direct3D.
Valeur retournée
Si la méthode réussit, retourne S_OK. En cas d'échec, retourne un code d'erreur.
Code de retour | Description |
---|---|
|
L’un des pointeurs n’est pas valide. |
|
Dans dwFlags, le AMAP_3D_TARGET a été combiné avec AMAP_FORCE_SYSMEM ou AMAP_ALLOW_SYSMEM. |
|
Un ou plusieurs membres de la structure BITMAPINFOHEADER spécifiés par lpAllocInfo-lpHdr> sont incorrects. |
Remarques
Avant d’appeler explicitement AllocateSurface , une application cliente doit appeler IVMRSurfaceAllocator ::FreeSurface pour s’assurer que la mémoire tampon frontale de décodage DirectDraw est NULL. S’il n’est pas NULL au moment où une application appelle AllocateSurface, la version de débogage de quartz.dll entraîne une assertion.
Lorsque vous implémentez cette méthode dans un allocator-presenter personnalisé, vous devez examiner la valeur de lpAllocInfo-lpHdr-biBitCount>>. Si biBitCount est égal à zéro, vous devez le définir sur la profondeur de pixels de l’affichage actuel. Si BiBitCount est laissé à zéro, l’allocation de surface échoue et une nouvelle machine virtuelle (par défaut) est créée.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP avec SP1 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | strmif.h (include Dshow.h) |
Bibliothèque | Strmiids.lib |