Freigeben über


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.]

cmediasample-Klassenhierarchie

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
Amfilter.h (include Streams.h)
Bibliothek
Strmbase.lib (Einzelhandelsbuilds);
Strmbasd.lib (Debugbuilds)