Freigeben über


IVMRSurfaceAllocator::AllocateSurface-Methode (strmif.h)

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Die AllocateSurface -Methode weist eine DirectDraw-Oberfläche zu.

Syntax

HRESULT AllocateSurface(
  [in]  DWORD_PTR            dwUserID,
  [in]  VMRALLOCATIONINFO    *lpAllocInfo,
  [in]  DWORD                *lpdwActualBuffers,
  [out] LPDIRECTDRAWSURFACE7 *lplpSurface
);

Parameter

[in] dwUserID

Ein anwendungsdefiniertes DWORD_PTR Cookie, das diese instance der VMR für die Verwendung in Szenarien eindeutig identifiziert, in denen eine instance des Zuteilungs-Referenten mit mehreren VMR-Instanzen verwendet wird.

[in] lpAllocInfo

Gibt die VMRALLOCATIONINFO-Struktur an. Siehe Hinweise.

[in] lpdwActualBuffers

[out] Bei der Eingabe wird dieser Parameter verwendet, um die anzahl der gewünschten Puffer anzufordern. Bei der Ausgabe empfängt es die tatsächliche Anzahl der erstellten Puffer.

[out] lplpSurface

Adresse eines Zeigers, der die Direct3D-Oberfläche empfängt.

Rückgabewert

Wenn die Methode erfolgreich ist, wird S_OK zurückgegeben. Bei einem Fehler wird ein Fehlercode zurückgegeben.

Rückgabecode Beschreibung
E_POINTER
Einer der Zeiger ist ungültig.
E_INVALIDARG
In dwFlags wurde die AMAP_3D_TARGET mit AMAP_FORCE_SYSMEM oder AMAP_ALLOW_SYSMEM kombiniert.
E_FAIL
Mindestens ein Element der BITMAPINFOHEADER-Struktur, die von lpAllocInfo-lpHdr> angegeben wird, ist falsch.

Hinweise

Vor dem expliziten Aufrufen von AllocateSurface sollte eine Clientanwendung IVMRSurfaceAllocator::FreeSurface aufrufen, um sicherzustellen, dass der DirectDraw-Decodierungs-Frontpuffer NULL ist. Wenn es zum Zeitpunkt, zu dem eine Anwendung AllocateSurface aufruft, nicht NULL ist, verursacht die Debugversion von quartz.dll eine Assertion.

Wenn Sie diese Methode in einem benutzerdefinierten Zuweisungs-Presenter implementieren, müssen Sie den Wert von lpAllocInfo-lpHdr-biBitCount >>untersuchen. Wenn biBitCount 0 ist, müssen Sie es auf die Pixeltiefe für die aktuelle Anzeige festlegen. Wenn BiBitCount bei 0 belassen wird, tritt bei der Oberflächenzuordnung ein Fehler auf, und es wird eine neue VMR (Standardeinstellung) erstellt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP mit SP1 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile strmif.h (include Dshow.h)
Bibliothek Strmiids.lib

Weitere Informationen

Fehler- und Erfolgscodes

IVMRSurfaceAllocator-Schnittstelle

Verwenden des Videomischrenderers