CBaseAllocator.GetBuffer-Methode
[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 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 freigeben.
-
pStartTime
-
Zeiger auf die Startzeit des Beispiels.
-
pEndTime
-
Zeiger auf die Endzeit des Beispiels.
-
dwFlags
-
Bitweise Kombination von 0 oder mehr Flags. Die Basisklasse unterstützt das folgende Flag.
Wert Bedeutung - AM_GBF_NOWAIT
Warten Sie nicht, bis ein Puffer verfügbar ist.
Rückgabewert
Gibt einen der folgenden HRESULT-Werte zurück.
Rückgabecode | Beschreibung |
---|---|
|
Erfolg. |
|
Die Zuweisung wurde nicht committet. |
|
Timeout. |
Bemerkungen
Sofern der Aufrufer das AM_GBF_NOWAIT-Flag in dwFlags nicht angibt, blockiert diese Methode, 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 dafür verantwortlich, alle anderen Eigenschaften im Beispiel festzulegen, z. B. die Zeitstempel, die Medienzeiten oder die 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 Video Renderer-Filter 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 auf dem Semaphor (CBaseAllocator::m_hSem) auf. Wenn ein Beispiel verfügbar wird, ruft es die CBaseAllocator::ReleaseBuffer-Methode auf dem Allocator auf, wodurch die Semaphoranzahl um m_lCount erhöht wird (wodurch die wartenden Threads freigegeben werden) und m_lCount wieder auf Null festgelegt wird.
Anforderungen
Anforderung | Wert |
---|---|
Header |
|
Bibliothek |
|