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

Post on 18-Aug-2019

224 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related