Share via


ISampleGrabber::GetCurrentBuffer-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.]

Hinweis

[Veraltet. Diese API kann aus zukünftigen Versionen von Windows entfernt werden.]

 

Die GetCurrentBuffer-Methode ruft eine Kopie des Puffers ab, der dem neuesten Beispiel zugeordnet ist.

Syntax

HRESULT GetCurrentBuffer(
  [in, out] long *pBufferSize,
  [out]     long *pBuffer
);

Parameter

pBufferSize [in, out]

Zeiger auf die Größe des Puffers. Wenn pBufferNULL ist, empfängt dieser Parameter die erforderliche Puffergröße in Bytes. Wenn pBuffer nicht NULL ist, legen Sie diesen Parameter gleich der Größe des Puffers in Bytes fest. Bei der Ausgabe empfängt der Parameter die Anzahl der Bytes, die in den Puffer kopiert wurden. Dieser Wert kann kleiner als die Größe des Puffers sein.

pBuffer [out]

Zeiger auf ein Array von Bytes der Größe pBufferSize oder NULL. Wenn dieser Parameter nicht NULL ist, wird der aktuelle Puffer in das Array kopiert. Wenn dieser Parameter NULL ist, empfängt der pBufferSize-Parameter die erforderliche Puffergröße.

Rückgabewert

Gibt einen der folgenden Werte zurück.

Rückgabecode Beschreibung
E_INVALIDARG
Die Beispiele werden nicht gepuffert. Rufen Sie ISampleGrabber::SetBufferSamples auf.
E_OUTOFMEMORY
Der angegebene Puffer ist nicht groß genug.
E_POINTER
NULL-Zeigerargument.
S_OK
Erfolg.
VFW_E_NOT_CONNECTED
Der Filter ist nicht verbunden.
VFW_E_WRONG_STATE
Der Filter hat noch keine Beispiele erhalten. Um ein Beispiel zu liefern, führen Sie das Diagramm aus, oder halten Sie es an.

 

Bemerkungen

Um die Pufferung zu aktivieren, rufen Sie ISampleGrabber::SetBufferSamples mit dem Wert TRUE auf.

Rufen Sie diese Methode zweimal auf. Legen Sie beim ersten Aufruf pBuffer auf NULL fest. Die Größe des Puffers wird in pBufferSize zurückgegeben. Ordnen Sie dann ein Array zu, und rufen Sie die Methode erneut auf. Übergeben Sie beim zweiten Aufruf die Größe des Arrays in pBufferSize, und übergeben Sie die Adresse des Arrays in pBuffer. Wenn das Array nicht groß genug ist, gibt die Methode E_OUTOFMEMORY zurück.

Der pBuffer-Parameter wird als langer Zeiger eingegeben, aber der Inhalt des Puffers hängt vom Format der Daten ab. Rufen Sie ISampleGrabber::GetConnectedMediaType auf, um den Medientyp des Formats abzurufen.

Rufen Sie diese Methode nicht auf, während das Filterdiagramm ausgeführt wird. Während das Filterdiagramm ausgeführt wird, überschreibt der Beispielgrabberfilter den Inhalt des Puffers, wenn er ein neues Beispiel empfängt. Die beste Möglichkeit, diese Methode zu verwenden, ist der "One-Shot-Modus", der das Diagramm beendet, nachdem das erste Beispiel empfangen wurde. Um den One-Shot-Modus festzulegen, rufen Sie ISampleGrabber::SetOneShot auf.

Der Filter puffert keine Vorabrollbeispiele oder Beispiele, in denen das dwStreamId-Element der AM_SAMPLE2_PROPERTIES-Struktur etwas anderes als AM_STREAM_MEDIA ist.

Hinweis

Die Headerdatei Qedit.h ist nicht mit Direct3D-Headern ab Version 7 kompatibel.

 

Hinweis

Um Qedit.h zu erhalten, laden Sie das Microsoft Windows SDK Update für Windows Vista und .NET Framework 3.0 herunter. Qedit.h ist im Microsoft Windows SDK für Windows 7 und .NET Framework 3.5 Service Pack 1 nicht verfügbar.

 

Anforderungen

Anforderung Wert
Header
Qedit.h
Bibliothek
Strmiids.lib

Siehe auch

Verwenden des Beispielgrabbers

ISampleGrabber-Schnittstelle