CMediaSample-Klasse
[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.]
Die CMediaSample
-Klasse definiert ein Medienbeispiel, das die IMediaSample2-Schnittstelle unterstützt. Das Medienbeispiel enthält einen Zeiger auf einen Speicherpuffer und verschiedene Eigenschaften, die als geschützte Membervariablen gespeichert sind.
Medienbeispiele werden von Allocators erstellt, die von der CBaseAllocator-Klasse abgeleitet werden. Der CMediaSample
Konstruktor empfängt einen Zeiger auf einen zugeordneten Puffer zusammen mit der Größe des Puffers. Andere Eigenschaften werden in der Regel über IMediaSample-Schnittstellenmethoden festgelegt und abgerufen.
Der Lebenszyklus eines Medienbeispiels unterscheidet sich von dem der meisten COM-Objekte:
- Der Zuteilungsgeber enthält eine Liste mit kostenlosen Beispielen. Wenn ein Filter ein neues Beispiel benötigt, ruft er die IMemAllocator::GetBuffer-Methode des Zuteilungsgebers auf. Der Zuteilungsgeber ruft ein Beispiel aus seiner kostenlosen Liste ab, erhöht die Referenzanzahl des Beispiels und gibt einen Zeiger auf das Beispiel zurück.
- Nachdem der Filter mit dem Beispiel abgeschlossen wurde, wird die IUnknown::Release-Methode für das Beispiel aufgerufen. Im Gegensatz zu den meisten Objekten löscht sich das Beispiel nicht selbst, wenn die Verweisanzahl 0 erreicht. Stattdessen ruft er die IMemAllocator::ReleaseBuffer-Methode für den Allocator auf, und der Zuteilungsgeber gibt das Beispiel in die freie Liste zurück.
- Der Zuteilungsgeber zerstört keine Stichproben, bis die IMemAllocator::D ecommit-Methode aufgerufen wird.
Geschützte Membervariablen | BESCHREIBUNG |
---|---|
m_dwFlags | Beispieleigenschaftenflags. |
m_dwTypeSpecificFlags | Typspezifische Flags. |
m_pBuffer | Zeiger auf den Speicherpuffer, der die Mediendaten enthält. |
m_lActual | Länge der gültigen Daten im Puffer in Bytes. |
m_cbBuffer | Größe des Puffers in Bytes. |
m_pAllocator | Zeiger auf den Zuteilungsgeber, der dieses Beispiel erstellt hat. |
m_pNext | Zeiger auf das nächste Beispiel in der Liste der Beispiele des Zuteilungsgebers. |
m_Start | Beispielstartzeit. |
m_End | Beispielendzeit. |
m_MediaStart | Medienstartzeit. |
m_MediaEnd | Medienstoppzeit. |
m_pMediaType | Zeiger auf den Medientyp, wenn sich der Typ gegenüber dem vorherigen Beispiel im Datenstrom geändert hat. |
m_dwStreamId | Streambezeichner. |
Öffentliche Membervariablen | BESCHREIBUNG |
m_cRef | Referenzanzahl. |
Öffentliche Methoden | BESCHREIBUNG |
CMediaSample | Konstruktormethode. |
~ CMediaSample | Destruktormethode. Virtuellen. |
SetPointer | Legt den Zeiger auf den Speicherpuffer fest. |
IMediaSample-Methoden | BESCHREIBUNG |
GetPointer | Ruft einen Lese-/Schreibzeiger auf den Puffer ab. |
Getsize | Ruft die Größe des Puffers ab. |
GetTime | Ruft die Streamzeiten ab, zu denen dieses Beispiel beginnen und beenden soll. |
SetTime | Legt die Streamzeiten fest, zu denen dieses Beispiel gestartet und abgeschlossen werden soll. |
IsSyncPoint | Bestimmt, ob der Anfang des Beispiels ein Synchronisierungspunkt ist. |
SetSyncPoint | Gibt an, ob der Anfang dieses Beispiels ein Synchronisierungspunkt ist. |
IsPreroll | Bestimmt, ob es sich bei diesem Beispiel um ein Vorabrollbeispiel handelt. |
SetPreroll | Gibt an, ob es sich bei diesem Beispiel um ein Vorabrollbeispiel handelt. |
GetActualDataLength | Ruft die Länge der gültigen Daten im Puffer ab. |
SetActualDataLength | Legt die Länge der gültigen Daten im Puffer fest. |
GetMediaType | Ruft den Medientyp ab, wenn sich der Medientyp vom vorherigen Beispiel unterscheidet. |
SetMediaType | Legt den Medientyp für das Beispiel fest. |
IsDiscontinuity | Bestimmt, ob dieses Beispiel einen Umbruch im Datenstrom darstellt. |
SetDiscontinuity | Gibt an, ob dieses Beispiel einen Umbruch im Datenstrom darstellt. |
GetMediaTime | Ruft die Medienzeiten für dieses Beispiel ab. |
SetMediaTime | Legt die Medienzeiten für dieses Beispiel fest. |
IMediaSample2-Methoden | BESCHREIBUNG |
GetProperties | Ruft die Eigenschaften des Beispiels ab. |
SetProperties | Legt die Eigenschaften des Beispiels fest. |
Anforderungen
Anforderung | Wert |
---|---|
Header |
|
Bibliothek |
|