CBaseAllocator.GetBuffer-Methode

Die GetBuffer -Methode ruft ein Medienbeispiel ab, das einen Puffer enthält. Diese Methode implementiert die IMemAllocator::GetBuffer-Methode.

Syntax

HRESULT GetBuffer(
   IMediaSample   **ppBuffer,
   REFERENCE_TIME *pStartTime,
   REFERENCE_TIME *pEndTime,
   DWORD          dwFlags
);

Parameter

ppBuffer

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

pStartTime

Zeiger auf die Startzeit des Beispiels.

pEndTime

Zeiger auf die Endzeit des Beispiels.

dwFlags

Bitweise Kombination von null oder mehr Flags. Die Basisklasse unterstützt das folgende Flag.

Wert Bedeutung
AM _ GBF _ NOWAIT
Warten Sie nicht, bis ein Puffer verfügbar wird.

Rückgabewert

Gibt einen der folgenden HRESULT-Werte zurück.

Rückgabecode Beschreibung
S _ OK
Erfolg.
VFW _ E _ NOT _ COMMITTED
Für allocator wurde kein Committed für die Zuweisungs-.
VFW _ E _ TIMEOUT
Timed out.

Hinweise

Sofern der Aufrufer das AM _ GBF _ NOWAIT-Flag in dwFlags nicht angibt, wird diese Methode blockiert, bis das nächste Beispiel verfügbar ist.

Das abgerufene Medienbeispiel verfügt über einen gültigen Zeiger auf den zugeordneten Puffer. Der Aufrufer ist für das Festlegen anderer Eigenschaften im Beispiel verantwortlich, z. B. zeitstempel, medienzeit oder Synchronisierungspunkteigenschaft. Weitere Informationen finden Sie unter IMediaSample.

In der Basisklasse werden die Parameter pStartTime und pEndTime ignoriert. Abgeleitete Klassen können diese Werte verwenden. Beispielsweise verwendet die Zuweisung für den Videorendererfilter diese Werte, um den Wechsel zwischen DirectDraw-Oberflächen zu synchronisieren.

Wenn die Methode auf ein Beispiel warten muss, erhöht sie die Anzahl der wartenden Objekte (CBaseAllocator::m _ lCount) und ruft die WaitForSingleObject-Funktion für das Semaphor auf (CBaseAllocator::m _ hSem). Wenn ein Beispiel verfügbar wird, ruft es die CBaseAllocator::ReleaseBuffer-Methode für die Zuweisung auf, wodurch die Semaphoranzahl um m _ lCount erhöht wird (wodurch die wartenden Threads frei werden) und m _ lCount wieder auf 0 (null) gesetzt wird.

Anforderungen

Anforderung Wert
Header
Amfilter.h (include Streams.h)
Bibliothek
Strmbase.lib (Einzelhandels-Builds);
Strmbasd.lib (Debugbuilds)

Siehe auch

CBaseAllocator-Klasse