Freigeben über


IMemAllocator::GetBuffer-Methode (strmif.h)

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Die GetBuffer-Methode ruft ein Medienbeispiel ab, das einen leeren Puffer enthält.

Syntax

HRESULT GetBuffer(
  [out] IMediaSample   **ppBuffer,
  [in]  REFERENCE_TIME *pStartTime,
  [in]  REFERENCE_TIME *pEndTime,
  [in]  DWORD          dwFlags
);

Parameter

[out] ppBuffer

Empfängt einen Zeiger auf die IMediaSample-Schnittstelle des Puffers. Der Aufrufer muss die Schnittstelle freigeben.

[in] pStartTime

Zeiger auf die Startzeit des Beispiels oder NULL.

[in] pEndTime

Zeiger auf die Endzeit des Beispiels oder NULL.

[in] dwFlags

Bitweise Kombination aus null oder mehr der folgenden Flags:

Flag Beschreibung
AM_GBF_NOTASYNCPOINT Dieses Beispiel ist kein Synchronisierungspunkt. Dynamische Formatänderungen sind in diesem Beispiel nicht zulässig. Wenn es auf dem Overlay-Mixer oder der VMR aufgerufen wird, bedeutet dieses Flag, dass der zurückgegebene Puffer ein Image enthält, das mit dem zuletzt übermittelten Image identisch ist.
AM_GBF_PREVFRAMESKIPPED Dieses Beispiel ist das erste nach einer Diskontinuität. (Nur der Videorenderer verwendet dieses Flag.)
AM_GBF_NOWAIT Warten Sie nicht, bis ein Puffer verfügbar ist.
AM_GBF_NODDSURFACELOCK Wird mit dem Video Mixing Renderer Filter 7 verwendet, um eine entsperrte DirectDraw-Oberfläche anzufordern. Weitere Informationen finden Sie unter Arbeiten mit Direct3D-Renderzielen.

Rückgabewert

Gibt einen HRESULT-Wert zurück. Mögliche Werte sind die in der folgenden Tabelle gezeigten Werte.

Rückgabecode Beschreibung
S_OK
Erfolg.
VFW_E_NOT_COMMITTED
Die Zuweisung wird decommittediert.
VFW_E_TIMEOUT
Timeout.

Bemerkungen

Standardmäßig blockiert diese Methode, bis ein kostenloses Beispiel verfügbar ist oder die Zuweisung entfernt wird. Wenn der Aufrufer das AM_GBF_NOWAIT-Flag angibt und kein Beispiel verfügbar ist, kann die Zuweisung sofort mit dem Rückgabewert VFW_E_TIMEOUT zurückgeben. Zuweisungen sind jedoch nicht erforderlich, um dieses Flag zu unterstützen.

Das in ppBuffer zurückgegebene Beispiel verfügt über einen gültigen Pufferzeiger. Der Aufrufer ist dafür verantwortlich, alle anderen Eigenschaften im Beispiel festzulegen, z. B. die Zeitstempel, die Medienzeiten oder die Synchronisierungspunkteigenschaft. (Weitere Informationen finden Sie unter IMediaSample.)

Die Parameter pStartTime und pEndTime werden nicht auf das Beispiel angewendet. Die Zuweisung kann diese Werte verwenden, um zu bestimmen, welcher Puffer abgerufen wird. Beispielsweise verwendet der Video Renderer-Filter diese Werte, um den Wechsel zwischen DirectDraw-Oberflächen zu synchronisieren. Um den Zeitstempel für das Beispiel festzulegen, rufen Sie die IMediaSample::SetTime-Methode auf.

Sie müssen die IMemAllocator::Commit-Methode aufrufen, bevor Sie diese Methode aufrufen. Diese Methode schlägt fehl, nachdem die IMemAllocator::D ecommit-Methode aufgerufen wurde.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile strmif.h (include Dshow.h)
Bibliothek Strmiids.lib

Siehe auch

Fehler- und Erfolgscodes

IMemAllocator-Schnittstelle