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 |
---|---|
|
Erfolg. |
|
Die Zuweisung wird decommittediert. |
|
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 |