1 / 22

Microsoft DirectShow

Multimediaschnittstelle. Microsoft DirectShow. Gliederung. Grundlagen 1.1 VFW 1.2 WDM, KS, WMF 1.3 DirectShow - DirectX 1.4 Aufgaben von DirectShow Architektur 2.1 COM - kurze Einführung 2.2 Filter Graph Manager Filter Graphen 3.1 Erstellung von Filter Graphen

gala
Download Presentation

Microsoft DirectShow

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Multimediaschnittstelle Microsoft DirectShow

  2. Gliederung • Grundlagen • 1.1 VFW • 1.2 WDM, KS, WMF • 1.3 DirectShow - DirectX • 1.4 Aufgaben von DirectShow • Architektur • 2.1 COM - kurze Einführung • 2.2 Filter Graph Manager • Filter Graphen • 3.1 Erstellung von Filter Graphen • 3.2 Filter-Verbindungsprotokolle • 3.3 Datenfluss-Protokolle • 3.4 Synchronisation • Beispiele • Zusammenfassung

  3. 1. Entwicklung von DirectShow Warum wurde DirectShow entwickelt? 1. 1 VFW (Video for Windows) • 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

  4. 1. Entwicklung von DirectShow 1.2 WDM, KS, WMF 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

  5. 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)

  6. 1. Entwicklung von DirectShow 1.4 Aufgaben von DirectShow 1. Hauptaufgaben 2. DES (DirectShow Editing Service)

  7. 2. Architektur

  8. 2. Architektur

  9. 2. Architektur Programmablauf für DirectShow Applikationen Applikation Play() Methode Stop Event Filter Graph Manager Filter Graph Transform Filter (Bsp.: Video Decod.) Rendering Filter (Bsp.: Video Render) Source Filter (Bsp.: File Source) Transform Filter (Bsp.: AVI Parser) Transform Filter (Bsp.: Audio Decod.) Rendering Filter (Bsp.: Audio Render)

  10. 2. Architektur 2.1 COM - kurze Einführung

  11. 2. Architektur 2.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…)

  12. 3. Filter Graphen 3.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

  13. 3. Filter Graphen 3.2 Filter-Verbindungsprotokoll (MediaType Vermittlung)

  14. 3. Filter Graphen 3.2 Filter-Verbindungsprotokoll (Transport Vermittlung)

  15. 3. Filter Graphen 3.2 Filter-Verbindungsprotokoll (Speicherverwaltung Vermittlung)

  16. 3. Filter Graphen 3.3 Datenfluss (Streaming Protokoll) Source Filter Transform Filter Rendering Filter FillBuffer() Transform GetBuffer() Release() GetBuffer() Memory Allocator 1 Memory Allocator 2

  17. 3. Filter Graphen 3.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“

  18. 3. Filter Graphen 3.3 Datenfluss (Ausgewählte Protokolle) Seeking/Flushing: EndOfStream:

  19. 3. Filter Graphen 3.4 Synchronisation (Grundlagen) • Zeitgeber (ReferenceClock COM-Objekt); Zugriff über IReferenceClock Interface • Pro Filter Graph eine ReferenceClock  Synchronisation aller Filter im Filter Graph mit • ReferenceClock

  20. 3. Filter Graphen 3.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

  21. 4. Beispiele //Schnittstellenzeiger definieren IGraphBuilder *pGraph; IMediaControl *pMediaControl; IMediaEvent *pEvent; CoInitialize(NULL); //COM-Laufzeitumgebung initialisieren //Filter Graph Manager Objekt erstellen+IGraphBuilder Schnittstellenzeiger erzeugen CoCreateInstance(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 freigeben CoUninitialize(); //COM-Laufzeitumgebung freigeben

  22. Zusammenfassung • 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

More Related