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 |
|
Bibliothek |
|