Método IVMRSurfaceAllocator::AllocateSurface (strmif.h)
[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
El AllocateSurface
método asigna una superficie de DirectDraw.
Sintaxis
HRESULT AllocateSurface(
[in] DWORD_PTR dwUserID,
[in] VMRALLOCATIONINFO *lpAllocInfo,
[in] DWORD *lpdwActualBuffers,
[out] LPDIRECTDRAWSURFACE7 *lplpSurface
);
Parámetros
[in] dwUserID
Una cookie de DWORD_PTR definida por la aplicación que identifica de forma única esta instancia de VMR para su uso en escenarios en los que se usa una instancia del asignador-moderador con varias instancias de VMR.
[in] lpAllocInfo
Especifica la estructura VMRALLOCATIONINFO . Vea la sección Comentarios.
[in] lpdwActualBuffers
[out] En la entrada, este parámetro se usa para solicitar el número de búferes deseados. En la salida, recibe el número real de búferes creados.
[out] lplpSurface
Dirección de un puntero que recibe la superficie de Direct3D.
Valor devuelto
Si el método se realiza correctamente, devuelve S_OK. Si se produce un error, devuelve un código de error.
Código devuelto | Descripción |
---|---|
|
Uno de los punteros no es válido. |
|
En dwFlags, el AMAP_3D_TARGET se combinó con AMAP_FORCE_SYSMEM o AMAP_ALLOW_SYSMEM. |
|
Uno o más miembros de la estructura BITMAPINFOHEADER especificada por lpAllocInfo-lpHdr> no son correctos. |
Comentarios
Antes de llamar explícitamente a AllocateSurface , una aplicación cliente debe llamar a IVMRSurfaceAllocator::FreeSurface para asegurarse de que el búfer frontal de la superficie de descodificación de DirectDraw es NULL. Si no es NULL en el momento en que una aplicación llama a AllocateSurface, la versión de depuración de quartz.dll provocará una aserción.
Al implementar este método en un asignador-moderador personalizado, debe examinar el valor de lpAllocInfo-lpHdr-biBitCount>>. Si biBitCount es cero, debe establecerlo en la profundidad de píxeles de la pantalla actual. Si BiBitCount se deja en cero, se producirá un error en la asignación de superficie y se creará una nueva VMR (predeterminada).
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP con SP1 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | strmif.h (incluye Dshow.h) |
Library | Strmiids.lib |