DirectX <-> VIP (Datenumwandlung)
-
Ich arbeite hier mit einer Grafikverarbeitungsbibliothek namens VIP (Sammlung von allen möglichen Bildfilterungs-Algorithmen) und soll dafür eine Anbindung an DirectX aufbauen. Mit der VIP-Seite komme ich recht gut klar, aber durch die DirectX Dokumentation bin ich noch nicht durchgestiegen:
- Wie komme ich an die von DirectX bereitgestellten Daten?
- In welchem Format liegen diese Daten vor?
- Wie muß ich meine eigenen Daten aufbereiten, damit DirectX sie versteht?
mfG CStoll
-
mehr als in der doku steht können wir dir hier wohl auch nicht schreiben, dort gibt es quasi eine schritt für schritt anleitung für dummis. einfacher geht es nicht.
rapso->greets();
-
Also entweder bin ich blind oder das ist zu tief in der SDK versteckt, jedenfalls habe ich diese Anleitung (noch) nicht gefunden - das nächste war ein Howto zum Aufbau eines Render-Filters, das aber auch nur die erwarteten Nachrichten erläutert hat.
-
WTF? Was für Daten soll DirectX dir auch bieten... Du gibst eher DirectX Daten. Naja Bitmap verstehts sicher, wie du die Geometry an DirectX gibst da gibts Milliarden von Möglichkeiten wär ja noch schöner wenns nur ein Format da geben würde

-
dali schrieb:
WTF? Was für Daten soll DirectX dir auch bieten... Du gibst eher DirectX Daten.
Aber irgendwie werden doch die DX-eigenen Daten auch übertragen - und da möchte ich mich dazwischenklinken.
OK, etwas detaillierter zu Situation: Ich habe eine DirectX-Datenquelle (z.B. eine Kamera oder ein AVI-File), eine Datensenke (Bildanzeige oder (wenn sowas möglich ist) ein anderes AVI-File) und eine VIP-Filterpipeline (bekommt vorne ein VBytePic rein und spuckt hinten ein anderes VBytePic wieder aus, dazwischen werden verschiedene Grafikfilter wie Gauß-Glättung, Kanten-Detektion oder Forier-Transformation auf das Bild angewendet). Jetzt möchte ich die Daten aus der Quelle bildweise durch die VIP-Pipeline durchschicken und das Ausgabebild dann an DirectX zurückgeben.
Naja Bitmap verstehts sicher, wie du die Geometry an DirectX gibst da gibts Milliarden von Möglichkeiten wär ja noch schöner wenns nur ein Format da geben würde
Die Daten liegen auf "meiner" Seite als VBytePic's (letztendlich ein 3D-Array von unsigned-char-Werten) oder ähnliches (Floats, RGB-Tripel,...) vor - und die Eingabedaten würde ich ebenfalls gerne in dieses Format umwandeln.
-
Schreib' 'nen DirectShow Filter oder DMO für den Kram.
DirectShow ist jetzt im Platform SDK. Bei Microsoft downzuladen.
-
Sgt. Nukem schrieb:
Schreib' 'nen DirectShow Filter oder DMO für den Kram.
Ja, soweit war ich auch, daß ich da einen Filter brauche. Ich hänge nur an dem "Wie" fest - womit ich wieder bei den Fragen aus dem Ursprungspost angekommen bin:
a) Wo in dem ganzen Gewirr aus Filtern, Pins und Mediatypen stecken nun die tatsächlichen Bilddaten?
b) Wie muß ich diese Daten interpretieren, damit etwas weiterverwertbares herauskommt? (da könnte der Media-Typ weiterhelfen, richtig?)c) Wie muß ich - am anderen Ende meiner VIP-Pipeline - die Daten aufbereiten, damit nachgeschaltete DirectShow-Filter etwas damit anfangen können?
-
CStoll schrieb:
Ja, soweit war ich auch, daß ich da einen Filter brauche.
Vielleicht hättest Du das einfach mal in der Frage sagen sollen...

Da steht nix von DirectShow, sondern nur DirectX. Ich denke es ging hier einigen so (wie man an der "Wieso was von DirectX holen?"-Frage sehen kann), daß überhaupt nicht klar war, was Du überhaupt willst. Bilddaten auf 3D-Objekte projezieren (Direct3D), auf ein Overlay für Video (DirectDraw), oder sonstwas...
-
Achja:
Hast Du schon Start->Programme->Microsoft Platform SDK->Microsoft Platform SDK Documentation probiert?
Da öffnet sich so ein *.chm File.
Mal unter Graphics and Multimedia -> DirectShow gucken.

http://search.msdn.microsoft.com/search/results.aspx?qu=Writing+a+DMO&View=msdn&st=b
-
Sgt. Nukem schrieb:
CStoll schrieb:
Ja, soweit war ich auch, daß ich da einen Filter brauche.
Vielleicht hättest Du das einfach mal in der Frage sagen sollen...

Sorry, wenn ich mich etwas unklar ausgedrückt habe, aber die Unterschiede zwischen den einzelnen DirectX-Komponenten hatte ich noch nicht SOO genau betrachtet

PS: Danke für die Links - da hatte ich wohl eine etwas veraltete Version der SDK vorliegen.
*geht lesen*
-
So, ich bin ein Stück weiter und werde wohl einen DMO zusammenbasteln. Allerdings bin ich noch am Suchen, wie ich meine Datenquelle "ausbremsen" kann.
Erklärung: Der DX2VIP Konverter sollte auf der einen Seite ein 1/0-DMO und auf der anderen Seite ein VIP-Operator mit einem Ausgang sein. Auf der VIP-Seite wird er per Execute() angewiesen, ein neues Bild bereitzustellen - an dieser Stelle möchte ich seiner Quelle (auf DirectX-Seite) mitteilen, daß sie genau jetzt das nächste Bild bereitstellen soll.