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
Ctlutil.h (inclua Streams.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)

Confira também

Classe CBaseControlVideo