Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow -...

22
Microsoft DirectShow Multimediaschnittstell

Transcript of Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow -...

Page 1: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

Microsoft DirectShow

Multimediaschnittstelle

Page 2: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

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 Graphen 3.1 Erstellung von Filter Graphen

3.2 Filter-Verbindungsprotokolle 3.3 Datenfluss-Protokolle 3.4 Synchronisation

4. Beispiele

5. Zusammenfassung

GliederungGliederung

Page 3: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

• 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 Dateiformat

Nachteile:

• VFW-Treiber: separate Treiber für WinNT/Win9x notwendig, keine standardisierten gerätespezifische Kommunikationsschnittstellen (z.B.: fehlende TVTuner Unterstü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?

Page 4: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

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 Latenzzeiten keine 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 DirectShow 1.2 WDM, KS, WMF

1. Entwicklung von DirectShow 1.2 WDM, KS, WMF

Page 5: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

1. Entwicklung von DirectShow 1.3 DirectShow - DirectX

1. Entwicklung von DirectShow 1.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)

Page 6: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

1. Entwicklung von DirectShow 1.4 Aufgaben von DirectShow

1. Entwicklung von DirectShow 1.4 Aufgaben von DirectShow

2. DES (DirectShow Editing Service)

1. Hauptaufgaben

Page 7: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

2. Architektur2. Architektur

Page 8: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

2. Architektur2. Architektur

Page 9: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.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

Page 10: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

2. Architektur2.1 COM - kurze Einführung

2. Architektur2.1 COM - kurze Einführung

Page 11: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

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…)

Page 12: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

3. Filter Graphen3.1 Erstellung von Filter Graphen

3. Filter Graphen3.1 Erstellung von Filter Graphen

• IGraphBuilder (Filter Graph Manager)::RenderFile SourceFilter einfügen; IGraphBuilder::Render

• IGraphBuilder (Filter Graph Manager)::Render Rendering 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

Page 13: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

3. Filter Graphen3.2 Filter-Verbindungsprotokoll (MediaType Vermittlung)

3. Filter Graphen3.2 Filter-Verbindungsprotokoll (MediaType Vermittlung)

Page 14: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

3. Filter Graphen3.2 Filter-Verbindungsprotokoll (Transport Vermittlung)

3. Filter Graphen3.2 Filter-Verbindungsprotokoll (Transport Vermittlung)

Page 15: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

3. Filter Graphen3.2 Filter-Verbindungsprotokoll (Speicherverwaltung Vermittlung)

3. Filter Graphen3.2 Filter-Verbindungsprotokoll (Speicherverwaltung Vermittlung)

Page 16: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

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()

Page 17: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

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“

Page 18: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

3. Filter Graphen3.3 Datenfluss (Ausgewählte Protokolle)

3. Filter Graphen3.3 Datenfluss (Ausgewählte Protokolle)

EndOfStream:

Seeking/Flushing:

Page 19: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

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

Page 20: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

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

Page 21: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

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 Graphen pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);long evCode; pEvent->WaitForCompletion(INFINITE, &evCode); pMediaControl->Release(); pEvent->Release(); pGraph->Release(); //Schnittstellenzeiger

freigebenCoUninitialize(); //COM-Laufzeitumgebung freigeben

Page 22: Microsoft DirectShow Multimediaschnittstelle. 1.Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow 2.Architektur.

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

Vorteile Nachteile

• gut dokumentiert• modulare Struktur• wiederverwendbare Komponenten (Filter)

• abhängig von Microsoft-Betriebssystemen• Windows-Programmierung notwendig