Método CBaseControlVideo.GetStaticImage
[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.
Método virtual puro que invalidan las clases derivadas.
Sintaxis
virtual HRESULT GetStaticImage(
long *pBufferSize,
long *pDIBImage
) = 0;
Parámetros
-
pBufferSize
-
Puntero al tamaño del búfer de salida.
-
pDIBImage
-
Puntero al búfer de salida.
Valor devuelto
Devuelve un valor HRESULT .
Observaciones
A través de la interfaz IBasicVideo , una aplicación puede solicitar que se le dé una copia de la imagen actual en un búfer de memoria (algunos representadores pueden devolver E_NOTIMPL a esto si no lo admiten). La clase derivada determina cómo recuperar la imagen. Cuando la aplicación llama a CBaseControlVideo::GetStaticImage, llama a este método virtual puro que la clase derivada debe invalidar para implementarla. También lo llama la función miembro CBaseControlVideo::GetCurrentImage .
La clase proporciona una función miembro auxiliar, CBaseControlVideo::CopyImage, que se puede proporcionar un ejemplo que contiene una imagen y la función miembro copiará la sección pertinente de ella (basada en el rectángulo de origen actual) en el búfer de salida proporcionado por la aplicación.
En el ejemplo siguiente se muestra una implementación de esta función miembro en una clase derivada. En este ejemplo, m_pRenderer contiene un objeto de una clase derivada de CBaseVideoRenderer.
// Return a copy of the current image in the video renderer
HRESULT CVideoText::GetStaticImage(long *pBufferSize,long *pDIBImage)
{
// Get any sample the renderer may be holding.
IMediaSample *pMediaSample = m_pRenderer->GetCurrentSample();
if (pMediaSample == NULL) {
return E_UNEXPECTED;
}
// Call the base class helper method to do the work.
HRESULT hr = CopyImage(pMediaSample, // Buffer containing image
&m_pRenderer->m_mtIn, // Type representing bitmap
pBufferSize, // Size of buffer for DIB
(BYTE*) pDIBImage); // Data buffer for output
pMediaSample->Release();
return hr;
}
Requisitos
Requisito | Value |
---|---|
Encabezado |
|
Biblioteca |
|