Condividi tramite


Metodo CBaseControlVideo.GetStaticImage

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Metodo virtuale puro che le classi derivate eseguono l'override.

Sintassi

virtual HRESULT GetStaticImage(
   long *pBufferSize,
   long *pDIBImage
) = 0;

Parametri

pBufferSize

Puntatore alle dimensioni del buffer di output.

pDIBImage

Puntatore al buffer di output.

Valore restituito

Restituisce un valore HRESULT .

Commenti

Tramite l'interfaccia IBasicVideo , un'applicazione può richiedere che venga fornita una copia dell'immagine corrente in un buffer di memoria( alcuni renderer possono restituire E_NOTIMPL a questo se non lo supportano). La classe derivata determina come recuperare l'immagine. Quando l'applicazione chiama CBaseControlVideo::GetStaticImage, chiama questo metodo virtuale puro che la classe derivata deve eseguire l'override per implementarla. Viene chiamato anche dalla funzione membro CBaseControlVideo::GetCurrentImage .

La classe fornisce una funzione membro helper, CBaseControlVideo::CopyImage, che può essere fornita un esempio che contiene un'immagine e la funzione membro copia la sezione pertinente (in base al rettangolo di origine corrente) nel buffer di output fornito dall'applicazione.

Nell'esempio seguente viene illustrata un'implementazione di questa funzione membro in una classe derivata. In questo esempio m_pRenderer contiene un oggetto di una classe derivata da 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;
}

Requisiti

Requisito Valore
Intestazione
Ctlutil.h (includere Streams.h)
Libreria
Strmbase.lib (build al dettaglio);
Strmbasd.lib (build di debug)

Vedi anche

Classe CBaseControlVideo