Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DirectX Multi-in Streams mit VMR9 und GMFBridge, DSPack (https://www.delphipraxis.net/194898-directx-multi-streams-mit-vmr9-und-gmfbridge-dspack.html)

TERWI 17. Jan 2018 10:44

DirectX Multi-in Streams mit VMR9 und GMFBridge, DSPack
 
Moin zusammen !
Hab ein Projekt von vor x-Jahren wieder ausgebuddelt und komme leider auch heute einfach nicht weiter.
Was soll's werden:

Ich möchte gerne div. A/V-Quellen (z.B. DVB-Empf., DVD/BR, Files in div. Typen, Streams aus dem Netz, IP-Kameras [Überwachung], die WEB-Cam u.v.m)nicht nur einzeln, sonder auch zusammen gemischt wiedergeben.
Das funktioniert auch so weit so gut, aber ...

... den 'Mix' hätte ich gerne in einem (1) Video-Window/in einem VMR9 (max. 16 Inputs) gerendert, wo ich ich dann Farbe/Helligkeit/Blende usw., Größe und Position jedes Streams definieren kann. Z. B. ein Mosaic machen und jeweils aktiven Stream (mit Ton) selektieren, ein- und ausblenden kann.

Das funktioniert prinzipiell auch - wenn man alles in einen Graphen knallt.
Hat dann aber das elementare Prob, dass IMediaSeeking nicht funzt und vor allem man nicht einzelne Streams pausieren/stoppen/löschen oder neu erzeugen kann, ohne dass der Graph hängt, blockiert oder absehbar ein Timing-Prob bekommt.

Ich habe mir vor Jahren mal die GMFBridge von Geraint Davies ausgeguckt und dazu die Demo GMFPlay (übersetzung Sebastion Zierer) modifiziert.
Dieses Tool soll es ermöglichen, Streams aus verschiedenen, einzelnen Source-Graphen zum Render-Graph hin zu entkoppeln, so dass eben o.g. Effekte nicht auftreten.

Ich hab das hier alles so weit zusammen, das ich z.B. div. Videos laden und steuern kann.
Alle Source-Graphen und der Renderer-Graph sind korrekt gebaut und befinden sich im Status "Run".
Auch die jeweiligen GMF-Sink-Filter (in Source-Graphen), bzw. GMF-Source-Filter im Render-Graph sind verbunden.

Leider sehe ich immer nur das zuerst geladene Video - egal wie ich Alpha, ZOrder und/oder OutRect der jeweiligen VMR9-Inputs einstelle.

Hat jemand da eine Idee, was ich ggf. noch falsch mache ?
Oder wie es vielleicht anders zu bewerkstelligen wäre ?

TERWI 19. Jan 2018 15:10

AW: DirectX Multi-in Streams mit VMR9 und GMFBridge, DSPack
 
Nach reichlich Hin- und Hersucherei zu Antworten werde ich irgendwie nicht wirklich fündig.
Gestern nach einem "Da war doch mal was"-Blitz hab ich's in den Abgründnen meiner Source-Allerlei wiedergefunden:
MultiVMR9 aus einem Steinzeit-DirectX-SDK (2002 ?) mit lauffähiger EXE/DLL samt allem Source. In C natürlich.

Das entspricht nahezu exakt dem, was ich mir vorgestellt hatte. Bin mir sicher, dass ich da vor ca, 10 Jahren auch schon mal dran war, aber mangels derzeitigem C-Knoff-Hoff nicht wirklich weitergekommen bin.
Hab mir heute den Source noch mal angsehen: Soooo kompliziert ist das nicht, zumal auch nicht alles übersetzt werden muss, weil schon (im DSPack) vorhanden.

Fazit: Weitere Versuche mit der GMFBridge stelle ich erst mal ein - bis vielleicht mal der passende Tipp eintrudelt.
Die MS-Version mit (beliebig) unabhängigen Einzel-Graphen und einem Fenster mit gemeinsamen Allocator-Prensenter halte ich sogar für effizienter / einfacher.

Werde mich da mal ransetzen und fortlaufend berichten.
Weitere Tipps. Infos & Fragen sind logo immer willkommen.
.... vielleicht hat's ja schon jemand fertig liegen !?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz