Método IVMRSurfaceAllocator::AllocateSurface (strmif.h)
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
O AllocateSurface
método aloca uma superfície DirectDraw.
Sintaxe
HRESULT AllocateSurface(
[in] DWORD_PTR dwUserID,
[in] VMRALLOCATIONINFO *lpAllocInfo,
[in] DWORD *lpdwActualBuffers,
[out] LPDIRECTDRAWSURFACE7 *lplpSurface
);
Parâmetros
[in] dwUserID
Um cookie de DWORD_PTR definido pelo aplicativo que identifica exclusivamente essa instância da VMR para uso em cenários em que uma instância do alocador-apresentador é usada com várias instâncias de VMR.
[in] lpAllocInfo
Especifica a estrutura VMRALLOCATIONINFO . Consulte Observações.
[in] lpdwActualBuffers
[out] Na entrada, esse parâmetro é usado para solicitar o número de buffers desejados. Na saída, ele recebe o número real de buffers criados.
[out] lplpSurface
Endereço de um ponteiro que recebe a superfície direct3D.
Retornar valor
Se o método for bem-sucedido, retornará S_OK. Se falhar, retornará um código de erro.
Código de retorno | Descrição |
---|---|
|
Um dos ponteiros é inválido. |
|
Em dwFlags, a AMAP_3D_TARGET foi combinada com AMAP_FORCE_SYSMEM ou AMAP_ALLOW_SYSMEM. |
|
Um ou mais membros da estrutura BITMAPINFOHEADER especificada por lpAllocInfo-lpHdr> estão incorretos. |
Comentários
Antes de chamar AllocateSurface explicitamente, um aplicativo cliente deve chamar IVMRSurfaceAllocator::FreeSurface para ter certeza de que o buffer frontal da superfície de decodificação do DirectDraw é NULL. Se não for NULL no momento em que um aplicativo chamar AllocateSurface, a versão de depuração do quartz.dll causará uma asserção.
Ao implementar esse método em um alocador-apresentador personalizado, você deve examinar o valor de lpAllocInfo-lpHdr-biBitCount>>. Se biBitCount for zero, você deverá defini-lo como a profundidade do pixel para a exibição atual. Se BiBitCount for deixado em zero, a alocação de superfície falhará e uma nova VMR (padrão) será criada.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP com SP1 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | strmif.h (inclua Dshow.h) |
Biblioteca | Strmiids.lib |