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 |
---|---|
|
Uno dei puntatori non è valido. |
|
In dwFlags il AMAP_3D_TARGET è stato combinato con AMAP_FORCE_SYSMEM o AMAP_ALLOW_SYSMEM. |
|
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