Upload
trinhtram
View
222
Download
0
Embed Size (px)
Citation preview
Microsoft DirectShow
Multimediaschnittstelle
1. Grundlagen1.1 VFW1.2 WDM, KS, WMF1.3 DirectShow - DirectX1.4 Aufgaben von DirectShow
2. Architektur2.1 COM - kurze Einführung2.2 Filter Graph Manager
3. Filter Graphen3.1 Erstellung von Filter Graphen3.2 Filter-Verbindungsprotokolle3.3 Datenfluss-Protokolle3.4 Synchronisation
4. Beispiele
5. Zusammenfassung
GliederungGliederung
• 1992 als Addon für Windows 3.1 eingeführt• Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression von Video-
/Audiodaten• Anfangs 16 Bit Architektur; mittlerweile teilweise 32 Bit.• AVI Container DateiformatNachteile:• VFW-Treiber: separate Treiber für WinNT/Win9x notwendig, keine standardisierten
gerätespezifische Kommunikationsschnittstellen (z.B.: fehlende TVTunerUnterstützung), Treibermodell inkonsistent
• Unterstützung weniger Dateiformate• nur teilweise 32 Bit Architektur• keine Synchronisationsmechanismen• AVI Container Dateiformat: begrenzt auf 2 GB, nicht streamingfähig,
Synchronisation schwierig
Neue Multimedia-/Treiberarchitektur und Dateiformat
1. Entwicklung von DirectShow1. Entwicklung von DirectShow
1. 1 VFW (Video for Windows)1. 1 VFW (Video for Windows)
Warum wurde DirectShow entwickelt?
WDM (Windows Driver Model):• Kompatibilität innerhalb der Windows-Betriebssysteme• volle 32 Bit Unterstützung• standardisierte Kommunikationsschnittstellen (Bsp.: TV-Tuner Unterstützung)
KS (Kernel Streaming):• Filter Architektur (Knoten, Pins)• Datenaustausch innerhalb des Kernel Mode: keine Kernel-/User Mode Umschaltung
geringe Latenzzeitenkeine Datenkopie in Systemspeicher
WMF (Windows Media Format):• Kompression/Dekompression von Video/Audio mit MS MPEG4 Video/Audio Codec sowie
MS Video Speech Codec.• Streaming von Video-/Audiodaten über Netzwerk (geringe Netzwerkbandbreite)• ASF Container Dateiformat (*.wmv, *.wma, *.asf):
- streamingfähig, Synchronisationsmechanismen- Dateigröße nicht begrenzt- proprietäres Dateiformat vor ISO MPEG4 Standard entwickelt QuickTime Movie
(MOV Format) als MPEG4 Standard vorgesehen
1. Entwicklung von DirectShow1.2 WDM, KS, WMF
1. Entwicklung von DirectShow1.2 WDM, KS, WMF
1. Entwicklung von DirectShow1.3 DirectShow - DirectX
1. Entwicklung von DirectShow1.3 DirectShow - DirectX
• DirectShow seit 1996 Bestandteil von DirectX• DirectX:
- Sammlung von Komponenten für verschiedene multimediale Bereiche- Schnittstellen für effiziente Kommunikation von Software mit Hardware- Hardwareunabhängige Funktionsbibliothek (bei fehlender Hardware-
unterstützung Verwendung von Softwareemulationen (optimierte Softwareroutinen mittels Assemblercode)
1. Entwicklung von DirectShow1.4 Aufgaben von DirectShow
1. Entwicklung von DirectShow1.4 Aufgaben von DirectShow
2. DES (DirectShow Editing Service)
1. Hauptaufgaben
2. Architektur2. Architektur
2. Architektur2. Architektur
2. Architektur2. Architektur
2. Architektur2. Architektur
Programmablauf für DirectShow Applikationen
Applikation
Filter Graph Manager
Source Filter(Bsp.: File Source)
Transform Filter(Bsp.: AVI Parser)
Transform Filter(Bsp.: Video Decod.)
Rendering Filter(Bsp.: Video Render)
Transform Filter(Bsp.: Audio Decod.)
Rendering Filter(Bsp.: Audio Render)
Play() Methode Stop Event
Filter Graph
2. Architektur2.1 COM - kurze Einführung
2. Architektur2.1 COM - kurze Einführung
2. Architektur2.2 Filter Graph Manager
2. Architektur2.2 Filter Graph Manager
• Zentrales Objekt von DirectShow• Erstellen und Kontrolle von Filter Graphen• Synchronisation• Ereigniss-Behandlung über Ereigniss-Warteschlange (z.B.: Filter Status, Play…)
3. Filter Graphen3.1 Erstellung von Filter Graphen
3. Filter Graphen3.1 Erstellung von Filter Graphen
• IGraphBuilder (Filter Graph Manager)::RenderFileSourceFilter einfügen; IGraphBuilder::Render
• IGraphBuilder (Filter Graph Manager)::RenderRendering Filter einfügen; IGraphBuilder::Connect
• IGraphBuilder (Filter Graph Manager)::Connect- Direkte Verbindung der Pins probieren- Filter aus dem Cache probieren- vorhandene Filter im Filter Graphen probieren- Filter über Windows-Registrierung suchen und probieren
• Filter in Kategorien unterteilt (Source Filter, Transform Filter, Rendering Filter)• Jeder Filter wird mit Major-/SubType und Prioritätswert in Registry eingetragen• Abbruch nach bestimmter Anzahl von Versuchen kein Deadlock
3. Filter Graphen3.2 Filter-Verbindungsprotokoll (MediaType Vermittlung)
3. Filter Graphen3.2 Filter-Verbindungsprotokoll (MediaType Vermittlung)
3. Filter Graphen3.2 Filter-Verbindungsprotokoll (Transport Vermittlung)
3. Filter Graphen3.2 Filter-Verbindungsprotokoll (Transport Vermittlung)
3. Filter Graphen3.2 Filter-Verbindungsprotokoll (Speicherverwaltung Vermittlung)
3. Filter Graphen3.2 Filter-Verbindungsprotokoll (Speicherverwaltung Vermittlung)
3. Filter Graphen3.3 Datenfluss (Streaming Protokoll)
3. Filter Graphen3.3 Datenfluss (Streaming Protokoll)
Memory Allocator 1 Memory Allocator 2
Source Filter Transform Filter Rendering Filter
FillBuffer() Transform
GetBuffer()Release()GetBuffer()
3. Filter Graphen3.3 Datenfluss (Streaming Protokoll)
3. Filter Graphen3.3 Datenfluss (Streaming Protokoll)
Memory Allocator 1 Memory Allocator 2
Source Filter Transform Filter Rendering Filter
FillBuffer() Transform
GetBuffer()Release()GetBuffer()
3. Filter Graphen3.3 Datenfluss (Control Protokoll)
3. Filter Graphen3.3 Datenfluss (Control Protokoll)
Pause-Zustand:
• Initialisierungsphase für Datenstreaming (z.B.: Threadgenerierung)• Datenpufferung jeder Rendering Filter erhält ein Media Sample
schnellere Reaktion auf „Run“ – Befehl•Source-/Transform-Filter ignorieren Zustandsänderung Pause/Running
Ausnahme „Live Source Filter“
3. Filter Graphen3.3 Datenfluss (Ausgewählte Protokolle)
3. Filter Graphen3.3 Datenfluss (Ausgewählte Protokolle)
EndOfStream:
Seeking/Flushing:
3. Filter Graphen3.4 Synchronisation (Grundlagen)
3. Filter Graphen3.4 Synchronisation (Grundlagen)
• Zeitgeber (ReferenceClock COM-Objekt); Zugriff über IReferenceClock Interface• Pro Filter Graph eine ReferenceClock Synchronisation aller Filter im Filter Graph mit
ReferenceClock
3. Filter Graphen3.4 Synchronisation (Auswahl der ReferenceClock)
3. Filter Graphen3.4 Synchronisation (Auswahl der ReferenceClock)
Manuelle ReferenceClock-Auswahl:
Automatische ReferenceClock-Auswahl:
• Filter Graph Manager sucht ReferenceClock-Implementationen in Filtern in Upstream-Reihenfolge (beginnend bei Rendering Filter)
• erste gefundene ReferenceClock (in Filter) wird übernommen
• keine ReferenceClock gefunden Filter Graph Manager stellt interne ReferenceClock auf Basis der System-Uhrzeit zur Verfügung
4. Beispiele4. Beispiele
//Schnittstellenzeiger definierenIGraphBuilder *pGraph;IMediaControl *pMediaControl; IMediaEvent *pEvent;
CoInitialize(NULL); //COM-Laufzeitumgebung initialisieren
//Filter Graph Manager Objekt erstellen+IGraphBuilder Schnittstellenzeiger erzeugenCoCreateInstance(CLSID_FilterGraph, …, …,IID_IGraphBuilder, (void **)&pGraph);
pGraph->RenderFile(„Beispiel.mpg“, NULL); //Graph vollautomatisch erstellen
pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);pMediaControl->Run(); //Graph starten
//Warten auf Beendigung des GraphenpGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);long evCode; pEvent->WaitForCompletion(INFINITE, &evCode);
pMediaControl->Release(); pEvent->Release(); pGraph->Release(); //Schnittstellenzeiger freigeben
CoUninitialize(); //COM-Laufzeitumgebung freigeben
ZusammenfassungZusammenfassung• Was ist DirectShow ? (Entstehung, Hauptaufgaben)• Architektur• Filter Graph Manager als Hauptbestandteil von DirectShow• Filter Graphen: Erstellung, Verbindungsprotokolle, Datenflussprotokolle,
Buffer-Management, Synchronisation
Quellen
• DirectShow SDK Dokumentation• Programming Microsoft DirectShow for Digital Video and Television / Mark D. Pesce. • Microsoft MSDN Bibliothek• http://www.gdcl.co.uk/• http://www.jmcgowan.com/avi.html• Suchmaschinen (Google) / Internet
• abhängig von Microsoft-Betriebssystemen• Windows-Programmierung notwendig
• gut dokumentiert• modulare Struktur• wiederverwendbare Komponenten (Filter)
NachteileVorteile