Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Microsoft DirectShow Multimediaschnittstelle Video DVD MP3 Song

Ähnliche Präsentationen


Präsentation zum Thema: "Microsoft DirectShow Multimediaschnittstelle Video DVD MP3 Song"—  Präsentation transkript:

1 Microsoft DirectShow Multimediaschnittstelle Video DVD MP3 Song
USB WebCam Firewire Videokamera Windows Media Player PC-Spiele Intro Pinnacle Studio - DirectShow für Verarbeitung von Multimediadaten unter Windows - DirectShow als fester Bestandteil im Betriebssystem integriert 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 VFW keine MPEG Unterstützung 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 DES: basiert auf DirectShow Architektur API für Videobearbeitung (Video-/Audioschnitt) Anordnung von Video-/Audiosamples in Timeline 2. DES (DirectShow Editing Service)

7 2. Architektur 2 Hauptbestandteile: + FilterGraph Manager
FilterGraph-Manager als Basis für Filtererstellung, Filterverbindung,, Steuerung des FilterGraphen, Events  später noch genauer erklärt Transform Filter können zusätzlich sein: Auflösungen ändern, Helligkeit, Kontrast ändern, Stereo, Chorus, auf Audiodaten legen  Effekte auf Audio/Videodaten legen Filter sind Knoten (eng. Nodes) und werden über Pins miteinander verbunden Filter können mehrere Pins (input, output) haben SourceFilter hat nur Output Pins TransformFilter hat Input, Output Pins Rendering Filter hat nur InputPins DMO (DirectX® Media Objects) Filter: Hauptsächlich benutzt für Video oder Audio Encoders, Decoders and Effekte. DirectShow unterstützt DMO über Wrapper Filter DMOs sind ähnlich der DirectShow Filter (aber wesentlich kleiner, da weniger Funktionalität unterstützt wird) Wesentlich einfachere API (einfacher zu implementieren) (keine Threadsynchronisation oder Buffer Management notwendig) In the default DMO model, the client allocates separate input buffers and output buffers. It fills the input buffers with data and delivers them to the DMO, and the DMO writes new data into the output buffers. Optionally, a DMO can support "in-place" processing. With in-place processing, the DMO writes the output directly into the input buffer, over the original data. In-place processing eliminates the need for separate buffers. On the other hand, it alters the original data, which may not be acceptable for some applications. Können auch direkt von Anwendungen benutzt werden (kein FilterGraph Manager o.ä notwendig) Mehrfache Eingänge sowie Ausgänge Einheitliches Kommunikationsmodel Übergangseffekt Filter für Timeline DES

8 2. Architektur Bei Abspielproblemen von Videos o.ä. kann man GraphEdit für Fehlersuche verwenden Verwendung von Splitter Filtern bei MPG und AVI aber nicht bei ASF Viele Standardfilter verfügbar, aus WWW können viele weitere Filter heruntergeladen werden.

9 Programmablauf für DirectShow Applikationen
2. Architektur Programmablauf für DirectShow Applikationen Applikation - jede DirectShow-Anwendung muss 3 Schritte absolvieren 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
DirectShow sowie alle anderen DirectX-Komponenten bauen auf dieser Technologie auf. Ziel von COM: Komponentenbasierte Softwareentwicklung, welche die Basis komplexer Software heutzutage darstellt Beschreibung des Aufbaus von Komponenten sowie der Kommunikation unterhalb der Komponenten Wiederverwendbarkeit von Komponenten Beispiel: -Programm und Textverarbeitung benötigen Rechtschreib-/Grammatikprüfung Sonstiges: Interfaces dürfen nicht geändert werden. Für neue Funktionen muss Interface2 eingeführt werden.  Deswegen oft Interface2 zu sehen AddRef Speicherverwaltung Jede Schnittstelle, COM-Objekt müssen von IUnknown erben Auffinden einer Klasse und ihrer Schnittstellen im System erfolgt durch zugeordnete Globally Unique Identifier (GUID) speziell ClassID (CLSID) für Klassen, InterfaceID (IID) für Schnittstellen alle CLSIDs sind zentral in der Registrierung des Client gesammelt und weisen durch Pfadangaben zur entsprechenden Komponente Client erhält von COM nach der Objektinstantiierung automatisch einen Zeiger auf eine Standardschnittstelle des Objekts

11 Zentrales Objekt von DirectShow
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.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 Vollautomatisch: GraphEdit: „Render MediaFile(Audio.wav)“ Button GraphEdit: Vollautomatisch.grf laden und anhand IGraphBuilder erklären Halbautomatisch: 1) - GraphEdit: „Render MediaFile(Video.mov)“ Button - Manuelles ändern des Graphen (ImageEffects einfügen) 2) - (ImageEffects einfügen) - GraphEdit: „Render MediaFile(Video.mov)“ Button Manuell: - GraphEdit: Manuell.grf laden Dynamic Graph Building ????

13 3.2 Filter-Verbindungsprotokoll (MediaType Vermittlung)
3. Filter Graphen 3.2 Filter-Verbindungsprotokoll (MediaType Vermittlung) 3 Schritte notwendig, wenn 2 Filter miteinander verbunden werden sollen 1. Schritt: Medientyp aushandeln

14 3.2 Filter-Verbindungsprotokoll (Transport Vermittlung)
3. Filter Graphen 3.2 Filter-Verbindungsprotokoll (Transport Vermittlung) 2. Schritt: Transportprotokoll zwischen zwei Filtern aushandeln Push Model: Häufigste Transportart Pull Model: - Nur bei Source/Parser Filtern verwendet Kernel Streaming: - Nur Steuerdaten über Pins transportieren

15 3.2 Filter-Verbindungsprotokoll (Speicherverwaltung Vermittlung)
3. Filter Graphen 3.2 Filter-Verbindungsprotokoll (Speicherverwaltung Vermittlung) - 3. Schritt: Speicherverwaltung immer zwischen zwei Filtern aushandeln

16 3.3 Datenfluss (Streaming Protokoll)
3. Filter Graphen 3.3 Datenfluss (Streaming Protokoll) Source Filter Transform Filter Rendering Filter FillBuffer() Transform TransInPlace Filter: + Allocator muss dergleiche sein GetBuffer() Release() GetBuffer() Memory Allocator 1 Memory Allocator 2

17 3.3 Datenfluss (Control Protokoll)
3. Filter Graphen 3.3 Datenfluss (Control Protokoll) Von Render zu Source Filter sinnvoll, weil + keine Samples verloren gehen + FilterGraph vor Deadlocks schützen Pause-Zustand hauptsächlich für: - Datenpufferung, um schnell starten zu können 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.3 Datenfluss (Ausgewählte Protokolle)
3. Filter Graphen 3.3 Datenfluss (Ausgewählte Protokolle) Seeking/Flushing: EndOfStream:

19 3.4 Synchronisation (Grundlagen)
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 - Audio knacksen eher störend als Video ruckeln aber: Reference Clock nicht nur an Audio Renderer möglich. timeEnd notwendig für beispielsweise AVI-Splitter: dieser erkennet Framerate am ersten erhaltenen validen TimeStamp (timeend-timestart) Stream time is often called "relative reference time" since, by definition, stream time is equivalent to reference time minus start time when the graph is running.

20 3.4 Synchronisation (Auswahl der ReferenceClock)
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 FilterGraph in Software kann durch GraphEdit sichtbar gemacht werden

22 Zusammenfassung Quellen
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 Suchmaschinen (Google) / Internet Vorteile Nachteile gut dokumentiert modulare Struktur wiederverwendbare Komponenten (Filter) abhängig von Microsoft-Betriebssystemen Windows-Programmierung notwendig Was fehlt noch: Directshow Editing Service (Videobearbeitung) Filtererstellung


Herunterladen ppt "Microsoft DirectShow Multimediaschnittstelle Video DVD MP3 Song"

Ähnliche Präsentationen


Google-Anzeigen