"kleines" Programmier/Portier-Projekt

PuckPoltergeist

Grand Admiral Special
Mitglied seit
18.01.2002
Beiträge
16.734
Renomée
145
Standort
Ilmenau
Ich schlage mich die ganzen Tage schon mit einer dummen Idee herum, die ich alleine aber wohl nicht stemmen kann. VirtualDub ist ja unter Windows eine nicht unerhebliche Größe in der Video-Konvertierung/Bearbeitung. Unter Unix/Linux gibt es zwar auch ein paar nette Teile für diese Aufgaben, aber die sind alle nicht so das Wahre, und können VD auch nicht das Wasser reichen. Da VD nun unter der GPL steht, stellt sich schnell die offensichtliche Frage, wieso sollte man nicht versuchen, das nach Unix/Linux zu portieren? Das ist nun wohl kein unerheblicher Aufwand, weil es:
  1. eine Menge Fachwissen zum Thema Video-Codecs und Videoverarbeitung benötigt,
  2. nicht unerheblich Kenntnisse bei dem Entwurf und der Programmierung grafischer Oberflächen bedarf, und
  3. durchaus einiges an Kenntnis der Windowsprogrammierung notwendig ist

Der Aufwand ist also enorm, aber das Resultat lockt natürlich. Am Ende stünde dann ein Cross-Plattform-Tool für die einfache Videobearbeitung, welches sich insbesondere an den Laien richtet, aber auch für kleinere (semi)professionelle Arbeiten geeignet ist.

Ich stelle jetzt einfach mal die Frage in den Raum, ob jemand Interesse daran hat, sich an so einem Portierungprojekt zu beteiligen. Versierte Fachkräfte springen ja hier in doch ausreichender Zahl rum. Ich unterstreiche aber nochmals die Warnung: Das wird mit Sicherheit sehr zeitaufwändig, und verursacht so manche Frustsituation.
 
Zuletzt bearbeitet:
Mir war gerade langweilig, also habe ich mal ein bisschen im Quellcode herumgeguckt ...

So wie es aussieht werden direct win32-api funktionen benutzt, die man dann alle in entsprechenden x11-aufrufe umwandeln müsste (Was so direkt natürlich nicht geht).

Ich würde sagen, dass eine Neuentwicklung fasst einfacher wäre.
 
Sorry, ich hab weder einen übermäßig großen Plan von der win32 api, noch davon wie das da mit den Codecs läuft.
 
Mir war gerade langweilig, also habe ich mal ein bisschen im Quellcode herumgeguckt ...

So wie es aussieht werden direct win32-api funktionen benutzt, die man dann alle in entsprechenden x11-aufrufe umwandeln müsste (Was so direkt natürlich nicht geht).

Ich würde sagen, dass eine Neuentwicklung fasst einfacher wäre.

Ich habe den Code bis jetzt nur überflogen, aber aus rein logischer Überlegung können Win32-API-Aufrufe eigentlich nur die GUI, die Video-Darstellung oder die Aufrufe der Codec-Schnittstelle (irgendwelches DirectX-Geraffel) sein. Die Codecs selber sind ja in Windows nicht enthalten, sondern zumeist extern realisiert und dann über entsprechenden DirectX-Schnittstellen zugänglich gemacht.
Ich werde mich mal über das WE etwas mit dem Code befassen. Direkt auf X11 zu portieren hatte ich eigentlich nicht im Sinn. Das Zeuchs soll ja nach wie vor auf auf Windows laufen.
 
Die Win32-API hat ja nicht nur Darstellung bzw. GUI-Funktionen. Sondern sie kann alles (Filehandlung, Multithreading, ...). Wahrscheinlich sind damit auch die Video-Capture Funktionen realisiert.
D.h. man müsste diese Dinge in die Unixwelt portieren bzw. die entsprechenden Funktion nutzen. Und DirectX gibt es unter Unix schonmal gar nicht.

Wenn das ganze dann hinterher unter Win und Unix laufen soll, müsstest du ein GUI-Toolkit benutzen (Qt, wxWidgets o.ä.), d.h. du kannst nichts von der Original-Version verwenden.

Viele Algorithmen sind auch in Assembler - keine Ahnung, ob man das direkt übernehmen kann.

Des weiteren muss man sich fragen, wer sich für so ein Programm interessieren würde, denn unter Linux gibt es jede Menge (Kommandozeilen-)Programme zur Videoverarbeitung ...
 
Die Win32-API hat ja nicht nur Darstellung bzw. GUI-Funktionen. Sondern sie kann alles (Filehandlung, Multithreading, ...). Wahrscheinlich sind damit auch die Video-Capture Funktionen realisiert.
D.h. man müsste diese Dinge in die Unixwelt portieren bzw. die entsprechenden Funktion nutzen. Und DirectX gibt es unter Unix schonmal gar nicht.

Wenn das ganze dann hinterher unter Win und Unix laufen soll, müsstest du ein GUI-Toolkit benutzen (Qt, wxWidgets o.ä.), d.h. du kannst nichts von der Original-Version verwenden.
Das ist mir schon klar, und ich habe deswegen auch schon in Richtung Cross-Plattform Bibliotheken (Qt, wxWidgets, GTK+, SDL etc.) geschielt. Das wirklich interessante an VD ist ja die Video-Logik zum en-/decoden.

Viele Algorithmen sind auch in Assembler - keine Ahnung, ob man das direkt übernehmen kann.
Wie gesagt, ich habe den Code nur oberflächlich betrachtet. Was ich bis jetzt an Assembler-Code gesehen habe, lediglich zu Debugging-Zwecken. Darauf kann erstmal getrost verzichtet werden.

Des weiteren muss man sich fragen, wer sich für so ein Programm interessieren würde, denn unter Linux gibt es jede Menge (Kommandozeilen-)Programme zur Videoverarbeitung ...
Für Linux gibt es jede Menge Tools, das stimmt schon. Aber die können alle nicht mit VD mithalten. Entweder sind sie auf Grund ihrer Kommandozeilen-Orientierung zu komplex und aufwändig für den normalen Anwender, oder sie lassen Funktionen wie unter VD vermissen, oder auch beides. Ich habe des öfteren in Foren/auf Mailinglisten gelesen, dass wenn schon so ein gutes Tool unter der GPL existiert, warum dann jeder unter Linux sein eigenes Süppchen kocht, und VD nicht portiert wird.
 
Nunja, auf der Homepage steht, dass 457K Quelltext in Assembler ist. Ich glaube nicht, dass das alles für Debug-Zwecke ist. Ausserdem ist es so, dass sich Assembler bzw. MMX/SSE extrem gut für Bild-/Videoverarbeitung eignet und sich das für so eine Anwendung geradezu aufdrängt.

Warum VD noch niemand portiert hat, liegt wohl daran, das es einfach zu komplex ist und niemand sonderlich Lust hat sich durch den Code von anderen zu wühlen.
 
Die Codecs selber sind ja in Windows nicht enthalten, sondern zumeist extern realisiert und dann über entsprechenden DirectX-Schnittstellen zugänglich gemacht.
Sicher? Ich meine, VD verwendet hier immer noch "Video for Windows" als CODEC-Schnittstelle.
Und AviSynth bräuchte man dann vielleicht auch noch...
 
Hmm, vielleicht wäre es da eher sinnvoller, mit avisynth anzufangen.

Und ich meine, da gibt es sogar schon ein sourceforge projekt, was sich damit beschäftigt....


Edit:

Holla! http://avisynth3.unite-video.com/ auch für Linux....
 
Hallo,

gerade GUI-Programmierung finde ich persönlich grauenhaft, hab da nicht sonderlich viel Übung drin.
Und auch in C (ich nehme an, es ist in C geschrieben!?) hab ich kaum Erfahrung - aber ich wäre motiviert, falls du es noch nicht aufgegeben hast.

Meld dich dann aber bitte am besten per PN/Mail, ich schau meistens nur ins Unix/Linux-Forum.
 
Ich denke mal C/++ sollte man dafür mit geschlossenen Augen und im Tiefschlaf beherrschen. Es geht ja nicht nur darum selber irgendwelchen Mist zu verbocken, sondern den Mist zu verstehen, den andere verbockt haben ;).
 
Zurück
Oben Unten