Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[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 |
|