Threads und kritische Abschnitte
[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.]
In diesem Abschnitt werden das Threading in DirectShow-Filtern und die Schritte beschrieben, die Sie ausführen sollten, um Abstürze oder Deadlocks in einem benutzerdefinierten Filter zu vermeiden.
In den Beispielen in diesem Abschnitt wird Pseudocode verwendet, um den Code zu veranschaulichen, den Sie schreiben müssen. Sie gehen davon aus, dass ein benutzerdefinierter Filter Klassen verwendet, die von den DirectShow-Basisklassen abgeleitet sind, wie folgt:
- CMyInputPin: Abgeleitet von CBaseInputPin.
- CMyOutputPin: Abgeleitet von CBaseOutputPin.
- CMyFilter: Abgeleitet von CBaseFilter.
- CMyInputAllocator: Der Vom CMemAllocator abgeleitete Zuordnungsgeber des Eingabenadels. Nicht jeder Filter benötigt einen benutzerdefinierten Zuweisungsator. Für viele Filter ist die CMemAllocator-Klasse ausreichend.
In diesem Abschnitt werden die folgenden Themen behandelt:
- Streaming- und Anwendungsthreads
- Wird angehalten
- Empfangen und Übermitteln von Beispielen
- Bereitstellen des Endes des Datenstroms
- Leeren von Daten
- Wird beendet
- Abrufen von Puffern
- Streamingthreads und filter Graph-Manager
- Zusammenfassung des Filterthreadings
Zugehörige Themen