Frage von Hugo Kugelblitz:Ich verwende Cnr2 in Avisynth2.5, um von einem alten VHS-Band (schlechte Quali, aber
wichtiges Dokument) den chroma-noise wegzukriegen. Nach tagelangem Parameter-Schrauben
wird's auch durchaus besser, doch krieg' ich einen Defekt damit nicht weg:
Bevorzugt an den besonders bunten Stellen wechseln die Zeilen (der einzelnen Fields, d.h.
Halbframes) ihre Farben im Zebrastreifenrhythmus, d.h. mal sind z.B. die geraden
magenta, die ungeraden rot, mal umgekehrt. Wenn ich die Bilder testweise in die 3
RGB-Kanäle splitte, sehe ich, daß immer 2 der 3 Farben synchron mustern, die dritte
genau gegenläufig.
Ich bräuchte dazu einen Avisynth-Filter, der bevorzugt in der Vertikalrichtung
den periodischen Chroma-Noise der Periode 2 glättet.
Wer kennt so einen?
Oder falls es den nicht gibt und der Rat lautet "selber schreiben":
Den *.h- und *.cpp-Code zu schreiben traue ich mir noch zu, aber
wer erklärt mir kurz, wie ich im VC++ die Sourcen zu einem Projekt zusammenfasse u.
ein passendes dll-makefile schreibe (BS: Win2000)?
Danke
Gruß Hugo
Antwort von Stefan:
Such nach rmPAL für VirtualDub.
Viel Glück
Der dicke Stefan
Antwort von Stefan:
Das Zusammenstückeln von *.h und *.cpp zum Projekt ist nicht wild. Macht eigentlich alles der Projektwizard von VC++. Ist in den einschlägigen Lehrbüchern beschrieben ("VC++ in 21 Tagen" ;). Klassische Makefiles gibt es nicht mehr, weil alles von der Projektdatei gesteuert wird.
Aber es ist einfacher ein bestehendes Projekt inkl. Projektdatei zu nehmen als als ein Projekt selbst aufzusetzen. Und Du kannst in der IDE nachsehen, was wo an Includes und Binaries, Options... eingetragen ist.
Wenn Du sowieso vom vorhandenen rmPAL und dessen Source ausgehst, ist es schlauer zuerst einen VirtualDub Filter zu machen. Wie das geht, ist im VirtualDub Filter SDK ausführlich erklärt. Dort ist auch ein Projekt mit einem Dummy-Filter beschrieben.
Wenn der rmPAL Filter läuft, hast Du Deinen VC++ korrekt aufgesetzt und ein funktionierendes Projekt. Virtualdub Filter kannst Du in Avisynth reinladen und benutzen, näheres bei
http://www.avisynth.org"
Davon ausgehend geht es den klassischen Entwicklerweg... Abändern der Beispielsourcen ;)
Ich kann Dir leider nicht weiter helfen, weil ich mir noch nie die Zeit genommen habe, in die Filterprogrammierung einzusteigen.
Mehr und kompetentere Hilfe zur Avisynth-Programmierung kannst Du in Deutsch bei forum.gleitz.info erhalten. In Englisch sind
http://www.doom9.org" und
http://www.neuron2.net" und forums.virtualdub.org Infoquellen für Avisynth und VirtualDub. Man freut sich dort garantiert über einen neuen Programmierer. Aber wie in allen Foren ist es schlau, die alten Diskussionen zu überfliegen bevor man drauflos fragt.
Viel Glück
Der dicke Stefan
Antwort von Hugo Kugelblitz:
Ok. Wie in meinem Ersttext erwähnt: Den *.cpp hab' ich schnell geschrieben, aber leider
fußt meine gesamte C++-Proggi-Erfahrung noch auf der alten UNIX-Welt von anno dazumal.
Diese dll wird mein erstes Proggi in Win2000 u. VC++ 6.0 überhaupt.
Bzgl. der Handhabung von Visual C++ 6.0 in W2000 scheitere ich echt schon an so
grundlegendem wie dem Zusammenstopfen von 2 *.h u. einem *.cpp zu einem Projekt,
dem Verständnis, was VC++ dabei noch an defaults dazupackt, geschweige denn dem
Erstellen eines Makefiles, so daß das gelinkte Objekt auch noch
eine zur Avisynth-Bibliothek passende dll wird. Bitte helft mir! Ich will nicht
so dumm bleiben! :-o
Hugo
Antwort von Stefan:
Schmeiss die Farbraumkonvertierung aus der Source raus und kompiliere neu. Den Filter kannst Du dann in VD verwenden (statt full processing modus, fast processing modus verwenden) oder in Avisynth einbinden. Veröffentliche den Filter als rmPLA-YUY2 ;-)
Viel Glück
Der dicke Stefan
Antwort von Hugo Kugelblitz:
Danke, Stefan!
Der rmPAL schafft mir das Problem zu ca. 2/3 vom Hals. Wenn man aber das *.cpp
dazu anschaut, sieht man, daß der RGB-Input nimmt, etwas unsauber nach einem
YUV-Raum transformiert, dann die Chroma ändert u. danach wieder nach RGB
rückkonvertiert. Da ich in meiner Filterkette aber selbst auch schon nach YUY2
und zurück muß, wäre eine Variante davon, die gleich in YUY2 arbeitet
(u. vielleicht auch eine Avisynth- statt ein VDub-Filter wäre) wesentlich
besser; die könnte ich dann auch nach SeparateFields() auf die Halbframes
loslassen.
Hat jemand eine Idee?
:
: Such nach rmPAL für VirtualDub.
:
: Viel Glück
: Der dicke Stefan