Freigeben über


CBaseControlVideo.GetStaticImage-Methode

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Reine virtuelle Methode, die abgeleitete Klassen außer Kraft setzt.

Syntax

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

Parameter

pBufferSize

Zeiger auf die Größe des Ausgabepuffers.

pDIBImage

Zeiger auf den Ausgabepuffer.

Rückgabewert

Gibt einen HRESULT-Wert zurück.

Bemerkungen

Über die IBasicVideo-Schnittstelle kann eine Anwendung anfordern, dass sie eine Kopie des aktuellen Images in einem Speicherpuffer erhält (einige Renderer können E_NOTIMPL zurückgeben, wenn sie dies nicht unterstützen). Die abgeleitete Klasse bestimmt, wie das Image abgerufen wird. Wenn die Anwendung CBaseControlVideo::GetStaticImage aufruft, ruft sie diese reine virtuelle Methode auf, die von der abgeleiteten Klasse überschrieben werden soll, um sie zu implementieren. Dies wird auch von der CBaseControlVideo::GetCurrentImage-Memberfunktion aufgerufen.

Die -Klasse stellt eine Hilfselementfunktion, CBaseControlVideo::CopyImage, bereit, die ein Beispiel mit einem Bild enthält, und die Memberfunktion kopiert den relevanten Abschnitt (basierend auf dem aktuellen Quellrechteck) in den von der Anwendung bereitgestellten Ausgabepuffer.

Im folgenden Beispiel wird eine Implementierung dieser Memberfunktion in einer abgeleiteten Klasse veranschaulicht. In diesem Beispiel enthält m_pRenderer ein Objekt einer klasse, die von CBaseVideoRenderer abgeleitet ist.

// 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;
}

Anforderungen

Anforderung Wert
Header
Ctlutil.h (include Streams.h)
Bibliothek
Strmbase.lib (Einzelhandelsbuilds);
Strmbasd.lib (Debugbuilds)

Siehe auch

CBaseControlVideo-Klasse