Share via


Método IBasicVideo::GetCurrentImage (control.h)

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na 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 Captura de Áudio/Vídeo no 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 GetCurrentImage método recupera a imagem atual aguardando no renderizador.

Sintaxe

HRESULT GetCurrentImage(
  [in, out] long *pBufferSize,
  [out]     long *pDIBImage
);

Parâmetros

[in, out] pBufferSize

Ponteiro para uma variável que contém o tamanho do buffer que o chamador está passando. Se pDIBImage for NULL, esse parâmetro receberá o tamanho do buffer necessário.

[out] pDIBImage

Ponteiro para um buffer em que a imagem completa será armazenada no formato DIB (bitmap independente do dispositivo). Converta o ponteiro para um tipo de ponteiro longo.

Retornar valor

Retorna um valor HRESULT .

Comentários

O filtro do Renderizador de Vídeo e o VMR (Renderizador de Combinação de Vídeo) implementam esse método de maneira diferente.

Somente renderizador de vídeo:

Esse método falhará se o renderizador estiver usando a aceleração do DirectDraw. Infelizmente, isso depende da configuração de hardware do usuário final, portanto, na prática, esse método não é confiável.

Pause o Renderizador de Vídeo antes de chamar esse método. Caso contrário, o método retornará VFW_E_NOT_PAUSED. Verifique se a operação de pausa foi concluída chamando IMediaControl::GetState; se a operação de pausa não tiver sido concluída, o método GetCurrentImage retornará E_UNEXPECTED. Dependendo de quais dados o filtro de origem tem disponíveis, o renderizador de vídeo não tem garantia de atender a essa solicitação. Se nenhuma imagem estiver disponível, ela retornará E_FAIL.

Somente renderizador de mixagem de vídeo:

Esse método é confiável independentemente de a VMR usar a aceleração do DirectDraw e independentemente do estado atual do grafo (em execução, parada ou pausada).

Renderizador de Vídeo e Renderizador de Combinação de Vídeo:

Para obter o tamanho do buffer necessário para manter a imagem, chame esse método com um ponteiro NULL no parâmetro pDIBImage . O método retorna o tamanho do buffer necessário no parâmetro pBufferSize . Aloque um buffer desse tamanho e chame o método novamente, com pDIBImage apontando para o buffer. Na segunda chamada, use pBufferSize para especificar o tamanho do buffer. Se o buffer for muito pequeno para manter a imagem completa, o método retornará E_OUTOFMEMORY.

Se o método for bem-sucedido, o buffer será preenchido com toda a imagem DIB, incluindo a estrutura BITMAPINFOHEADER , além de quaisquer entradas de paleta e máscaras de bits, conforme definido na estrutura BITMAPINFO do Win32. O formato da imagem depende do tipo fornecido pelo filtro de origem e não pode ser especificado com antecedência.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho control.h (inclua Dshow.h)
Biblioteca Strmiids.lib

Confira também

Códigos de erro e êxito

IBasicVideo Interface