IBasicVideo::GetCurrentImage-Methode (control.h)
[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.]
Die GetCurrentImage
-Methode ruft das aktuelle Bild ab, das am Renderer wartet.
Syntax
HRESULT GetCurrentImage(
[in, out] long *pBufferSize,
[out] long *pDIBImage
);
Parameter
[in, out] pBufferSize
Zeiger auf eine Variable, die die Größe des Puffers enthält, den der Aufrufer übergibt. Wenn pDIBImageNULL ist, empfängt dieser Parameter die erforderliche Puffergröße.
[out] pDIBImage
Zeiger auf einen Puffer, in dem das gesamte Bild im DIB-Format (Device-Independent Bitmap) gespeichert wird. Wandeln Sie den Zeiger in einen langen Zeigertyp um.
Rückgabewert
Gibt einen HRESULT-Wert zurück.
Hinweise
Der Videorenderer-Filter und der Video Mixing Renderer (VMR) implementieren diese Methode unterschiedlich.
Nur Videorenderer:
Diese Methode schlägt fehl, wenn der Renderer die DirectDraw-Beschleunigung verwendet. Leider hängt dies von der Hardwarekonfiguration des Endbenutzers ab, sodass diese Methode in der Praxis nicht zuverlässig ist.Halten Sie den Videorenderer an, bevor Sie diese Methode aufrufen. Andernfalls gibt die Methode VFW_E_NOT_PAUSED zurück. Stellen Sie sicher, dass der Pausenvorgang abgeschlossen ist, indem Sie IMediaControl::GetState aufrufen. wenn der Pausenvorgang nicht abgeschlossen wurde, gibt die GetCurrentImage-Methode E_UNEXPECTED zurück. Je nachdem, welche Daten der Quellfilter zur Verfügung hat, kann der Videorenderer diese Anforderung nicht bearbeiten. Wenn kein Image verfügbar ist, wird E_FAIL zurückgegeben.
Nur Videomischrenderer:
Diese Methode ist zuverlässig, unabhängig davon, ob die VMR die DirectDraw-Beschleunigung verwendet, und unabhängig vom aktuellen Graphzustand (wird ausgeführt, beendet oder angehalten).Videorenderer und Videomischrenderer:
Um die erforderliche Puffergröße für das Bild abzurufen, rufen Sie diese Methode mit einem NULL-Zeiger im pDIBImage-Parameter auf. Die -Methode gibt die erforderliche Puffergröße im pBufferSize-Parameter zurück. Ordnen Sie einen Puffer dieser Größe zu, und rufen Sie die Methode erneut auf, wobei pDIBImage auf den Puffer zeigt. Verwenden Sie beim zweiten Aufruf pBufferSize , um die Puffergröße anzugeben. Wenn der Puffer zu klein ist, um das vollständige Bild aufzunehmen, gibt die Methode E_OUTOFMEMORY zurück.Wenn die Methode erfolgreich ist, wird der Puffer mit dem gesamten DIB-Bild gefüllt, einschließlich der BITMAPINFOHEADER-Struktur , sowie mit allen Paletteneinträgen und Bitmasken, die in der Win32 BITMAPINFO-Struktur definiert sind. Das Format des Bilds hängt vom Vom Quellfilter bereitgestellten Typ ab und kann nicht im Voraus angegeben werden.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | control.h (include Dshow.h) |
Bibliothek | Strmiids.lib |