Método CBaseControlVideo.GetStaticImage
[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.]
Método virtual puro que substitui classes derivadas.
Sintaxe
virtual HRESULT GetStaticImage(
long *pBufferSize,
long *pDIBImage
) = 0;
Parâmetros
-
pBufferSize
-
Ponteiro para o tamanho do buffer de saída.
-
pDIBImage
-
Ponteiro para o buffer de saída.
Retornar valor
Retorna um valor HRESULT .
Comentários
Por meio da interface IBasicVideo , um aplicativo pode solicitar que ele tenha uma cópia da imagem atual em um buffer de memória (alguns renderizadores podem retornar E_NOTIMPL a isso se não derem suporte a ela). A classe derivada determina como recuperar a imagem. Quando o aplicativo chama CBaseControlVideo::GetStaticImage, ele chama esse método virtual puro que a classe derivada deve substituir para implementá-lo. Isso também é chamado pela função membro CBaseControlVideo::GetCurrentImage .
A classe fornece uma função de membro auxiliar, CBaseControlVideo::CopyImage, que pode receber um exemplo que contém uma imagem, e a função membro copiará a seção relevante dela (com base no retângulo de origem atual) para o buffer de saída fornecido pelo aplicativo.
O exemplo a seguir demonstra uma implementação dessa função membro em uma classe derivada. Neste exemplo, m_pRenderer contém um objeto de uma classe 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 | Valor |
---|---|
parâmetro |
|
Biblioteca |
|