Partager via


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
E_POINTER
L’un des pointeurs n’est pas valide.
E_INVALIDARG
Dans dwFlags, le AMAP_3D_TARGET a été combiné avec AMAP_FORCE_SYSMEM ou AMAP_ALLOW_SYSMEM.
E_FAIL
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

Voir aussi

Codes d’erreur et de réussite

IVMRSurfaceAllocator Interface

Utilisation du convertisseur de mixage vidéo