Share via


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
E_POINTER
Uno de los punteros no es válido.
E_INVALIDARG
En dwFlags, el AMAP_3D_TARGET se combinó con AMAP_FORCE_SYSMEM o AMAP_ALLOW_SYSMEM.
E_FAIL
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

Consulte también

Códigos de error y éxito

IvMRSurfaceAllocator (Interfaz)

Uso del representador de mezcla de vídeos