DGDecode.dll und Delphi

  • Hat einer von Euch einen Weg gefunden DGDecode.dll unter Delphi zu nutzen.
    Zur Zeit benutze ich den AVISynth_C-Port um AVISynth-Scripte unter Delphi zu lesen. Nun wollte ich DGDecode.dll einbinden um d2v direkt lesen zu können, da ich plane eine AVSScript-Erstellungs-Funktion zu programmieren.

    Ich hab auch Incs PureBasic-Code hierzu angeschaut, nur bricht sein Beispielprogramm mit der neusten DGIndex beta zusammen.

    Würd mich freuen von Euch was zu hören.

  • Welchen Code? Der D2vreader?
    Was heisst zusammenbrechen genau??
    Die Funktionen der DgDecode.dll haben sich imho nicht verändert, aufruf erfolgt via Cdecl oder den Stdcall Wrapper Funktionen in der dll.

    Ich bin zu der Einsicht gekommen, dass ein direktes ansprechen der DgDecode.dll keinen Sinn macht und mit der Zeit Probleme gibt.

    a) Es mus immer die aktuelle DgDecode.dll genutzt werden, wo ebenso das äquivalente DgIndex zur d2v Erstellung genutzt wurde.
    Somit musst du in der Registry parsen, WO der aktuelle Avisynth 2.5/plugins Ordner ist. Und selbst da ist nicht klar, ob sich dann dort auch der richtige Ordner befindet. Alles Gründe weshalb (imho) Doom9 auch keine Lust hatte Dimzon's D2Vreader Idee in MeGUI zu implementieren (wenn sich das nicht geändert hat).

    b) Die Syntax der d2v ist nicht von Änderungen mit der Zeit gefreit. Neuron hat dies zwar anhand der ersten Zeile der FormatCode Version beinhaltet, aber du kannst dich vor Updaten deiner eigenen Softare nicht mehr retten.

    c) Die dgdecode.dll ist GPL, also müsstest du (imho) die Software, welche diese direkt anspricht ebenso unter der GPL veröffentlichen.

    Daher ..... Die d2v via Temp-Avisynth script und via vfw parsen (width/height/fps ...etc). Die Source AR via eines direkten Parsens des VOB Headers.

    Somit kann Neuron2 da entwickeln was das Zeug hält und dein d2v-Parsen via avisynth/vfw funtioniert immer, wenn der Nutzer deiner Software auch sonst die d2v's in seinen Avs scripten öffnen kann. Zudem kannst du somit auch RGB32 Frames reinholen und nicht lediglich RGB24, was bei manchen GDI API Calls bzw. innerhalb diverser Programmierumgebungen von Nutzen ist, da DWORD aligned.

    Habe zwar die AvsRedirekt für Programmierer weiterentwickelt, da ich damit in die Avisynth/C++ Vorgehensweise eintauchen wollte. Aber mal ehrlich ... was bringt dir ein Einholen der Frames via direktem Avisynth.dll call? Es wird lediglich 1x das vfw interface aufgerufen und somit umgehst du 2 vfw routinen. Error String Rückgabe? Ok, aber dazu gibts von Johnny im doom9 ein Beispiel via vfw inkl. avisynth GUID. Alles andere wie Fieldorder, Fieldbased ist eh nicht relevant, da es dem simplen Info() entspricht, was NICHTS über die Source in ihrem TATSÄCHLICHEN Zustand aussagt.

    Die Avisynth_C.pas hat imho den Sinn, dass man damit Delphi Filter programmierne kann. Aber dazu ein Statement von SansGrip:

    Zitat von SansGrip

    This is an interesting idea, but you must remember that a Delphi filter would almost certainly be extremely slow. C++ is slow enough when you get even slightly algorithmically complicated. To match the performance of, say, Flux you'd end up with about 10% of the code in Delphi and 90% in assembler, which kinda negates the point :).

    That said, I do think it's a worthwhile endeavour.


    Simple Filter ok, aber wenn es um interessante Algorhythmen oder deren Ansätze geht, sind diese im www fast immer als C/C++ Besipiele zu sehen.

  • Ich arbeite schon einem D2VPrase Tool für Delphi.

    D2VPrase Thread @ doom9.org
    HEX und String (Bit6 auslesen) Thread @ Delphipraxis.net

    Nur häng ich noch an PFF. Laut Handbuch von DGIndex soll der Bit6 den Wert enthalten.

    Siehe auch Post #9

    Ich benutze AVISynthC.pas um die Informationen von AVS-Dateien zu holen. Es klappt ganz gut und dient mir als Ersatz für vfw.
    Siehe auch <Delphi> Get information of AVS using VFW or AVISYNTH_C-Port by Myrsloik

  • Zitat

    Ich arbeite schon einem D2VPrase Tool für Delphi.

    Und was macht ein End-User damit?
    Wenns ein Ansatz für Programmierer sein soll .... warum sind keine Sourcen dabei??

    Zitat

    Ich benutze AVISynthC.pas um die Informationen von AVS-Dateien zu holen. Es klappt ganz gut und dient mir als Ersatz für vfw.

    Das ist mir schon klar, aber du solltest die Zeilen oben mal lesen. Dann wirst du sehen was dir die zusätzlichen Informationen gegenüber der vfw bringen, ich sage nur "GetParity()" und "IsFieldbased()".

    Lade z.B. ein TFF Avi rein und GetParity() wird immer noch BFF ausgeben.


    Zum o.g. Tool und deinem Thread bei Doom und Delphipraxis:
    Das Progressive_Frame_Flag wird dir hier ebenso NIX bringen, denn nur weil "interlaced" drauf steht ist noch lange kein interlaced drin.
    Du gehst hin und ziehst alle Informationen aus einem String Parsing der d2v Datei. Da wirst du Freude dran haben, dein Tool Up-To-Date halten zu müssen.
    Denn merke dir: Wenn sich hier etwas alle paar Monate ändert, dann ist es die Syntax einer d2v Datei. Und weil das so fix geht, ist eben auch in der ersten Zeile die Format Version angegeben, damit man die Übersicht behält.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!