Compartir a través de


Método IBasicVideo::GetCurrentImage (control.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 GetCurrentImage método recupera la imagen actual en espera en el representador.

Sintaxis

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

Parámetros

[in, out] pBufferSize

Puntero a una variable que contiene el tamaño del búfer que pasa el autor de la llamada. Si pDIBImage es NULL, este parámetro recibe el tamaño de búfer necesario.

[out] pDIBImage

Puntero a un búfer donde la imagen completa se almacenará en formato de mapa de bits independiente del dispositivo (DIB). Convierta el puntero en un tipo de puntero largo.

Valor devuelto

Devuelve un valor HRESULT .

Comentarios

El filtro Video Renderer y el representador de mezcla de vídeo (VMR) implementan este método de forma diferente.

Solo Video Renderer:

Este método produce un error si el representador usa la aceleración de DirectDraw. Desafortunadamente, esto depende de la configuración de hardware del usuario final, por lo que en la práctica este método no es confiable.

Pause video Renderer antes de llamar a este método. De lo contrario, el método devuelve VFW_E_NOT_PAUSED. Asegúrese de que la operación de pausa se ha completado llamando a IMediaControl::GetState; Si la operación de pausa no se ha completado, el método GetCurrentImage devuelve E_UNEXPECTED. En función de los datos que tenga disponible el filtro de origen, no se garantiza que el representador de vídeo a service esta solicitud. Si no hay ninguna imagen disponible, devuelve E_FAIL.

Solo representador de mezcla de vídeos:

Este método es confiable independientemente de si VMR usa la aceleración de DirectDraw e independientemente del estado actual del grafo (en ejecución, detenido o en pausa).

Representador de vídeo y representador de mezcla de vídeos:

Para obtener el tamaño de búfer necesario para contener la imagen, llame a este método con un puntero NULL en el parámetro pDIBImage . El método devuelve el tamaño de búfer necesario en el parámetro pBufferSize . Asigne un búfer de ese tamaño y llame al método de nuevo, con pDIBImage que apunta al búfer. En la segunda llamada, use pBufferSize para especificar el tamaño del búfer. Si el búfer es demasiado pequeño para contener la imagen completa, el método devuelve E_OUTOFMEMORY.

Si el método se ejecuta correctamente, el búfer se rellena con toda la imagen DIB, incluida la estructura BITMAPINFOHEADER , además de las entradas de paleta y máscaras de bits definidas en la estructura BITMAPINFO de Win32. El formato de la imagen depende del tipo proporcionado por el filtro de origen y no se puede especificar de antemano.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado control.h (include Dshow.h)
Library Strmiids.lib

Consulte también

Códigos de error y éxito

IBasicVideo (interfaz)