Condividi tramite


Metodo IVMRSurfaceAllocator::AllocateSurface (strmif.h)

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il AllocateSurface metodo alloca una superficie DirectDraw.

Sintassi

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

Parametri

[in] dwUserID

Un cookie di DWORD_PTR definito dall'applicazione che identifica in modo univoco questa istanza di VMR da usare negli scenari in cui un'istanza del relatore allocatore viene usata con più istanze di VMR.

[in] lpAllocInfo

Specifica la struttura VMRALLOCATIONINFO . Vedere la sezione Osservazioni.

[in] lpdwActualBuffers

[out] In caso di input, questo parametro viene usato per richiedere il numero di buffer desiderati. Nell'output riceve il numero effettivo di buffer creati.

[out] lplpSurface

Indirizzo di un puntatore che riceve la superficie Direct3D.

Valore restituito

Se il metodo ha esito positivo, viene restituito S_OK. Se ha esito negativo, viene restituito un codice di errore.

Codice restituito Descrizione
E_POINTER
Uno dei puntatori non è valido.
E_INVALIDARG
In dwFlags il AMAP_3D_TARGET è stato combinato con AMAP_FORCE_SYSMEM o AMAP_ALLOW_SYSMEM.
E_FAIL
Uno o più membri della struttura BITMAPINFOHEADER specificati da lpAllocInfo-lpHdr> non sono corretti.

Commenti

Prima di chiamare AllocateSurface in modo esplicito, un'applicazione client deve chiamare IVMRSurfaceAllocator::FreeSurface per assicurarsi che il buffer anteriore della superficie di decodifica DirectDraw sia NULL. Se non è NULL al momento in cui un'applicazione chiama AllocateSurface, la versione di debug di quartz.dll causerà un'asserzione.

Quando si implementa questo metodo in un allocatore-relatore personalizzato, è necessario esaminare il valore di lpAllocInfo-lpHdr-biBitCount>>. Se biBitCount è zero, è necessario impostarlo sulla profondità in pixel per la visualizzazione corrente. Se BiBitCount è lasciato a zero, l'allocazione della superficie avrà esito negativo e verrà creata una nuova VMR (predefinita).

Requisiti

Requisito Valore
Client minimo supportato Windows XP con SP1 [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione strmif.h (include Dshow.h)
Libreria Strmiids.lib

Vedi anche

Codici di errore e di esito positivo

Interfaccia IVMRSurfaceAllocator

Uso del renderer di missaggio video