präsentation directshow luedtkepdf - institut für informatik · • 1992 als addon für windows...

24
Microsoft DirectShow Multimediaschnittstelle

Upload: trinhtram

Post on 18-Aug-2019

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

Microsoft DirectShow

Multimediaschnittstelle

Page 2: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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

Page 3: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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

Page 4: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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

Page 5: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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)

Page 6: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

1. Entwicklung von DirectShow1.4 Aufgaben von DirectShow

1. Entwicklung von DirectShow1.4 Aufgaben von DirectShow

2. DES (DirectShow Editing Service)

1. Hauptaufgaben

Page 7: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

2. Architektur2. Architektur

Page 8: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

2. Architektur2. Architektur

Page 9: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

2. Architektur2. Architektur

Page 10: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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 11: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

2. Architektur2.1 COM - kurze Einführung

2. Architektur2.1 COM - kurze Einführung

Page 12: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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 13: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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

Page 14: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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

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

Page 15: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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

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

Page 16: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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

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

Page 17: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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 18: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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 19: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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 20: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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

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

EndOfStream:

Seeking/Flushing:

Page 21: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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 22: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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 23: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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

Page 24: Präsentation DirectShow LuedtkePDF - Institut für Informatik · • 1992 als Addon für Windows 3.1 eingeführt • Aufgaben: Abspielen / Aufnahme / Kompression / Dekompression

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