Neuer Videocodec: BergWave

  • Servus,

    Am Freitag hab ich meine Prüfung zum Fachinformatiker Fachrichtung Anwendungsentwicklung erfolgreich abgeschlossen. Mein Abschlussprojekt, eine Videokomprimierungsbibliothek auf Wavelets basierend. Da ich die YV12 Farbkonvertierungsfunktionen von XviD verwende, gibt's mein Projekt auch unter der GPL.

    Im Ordner test ist ein kleines Konsolen Programm, dass Windows Bitmaps einlest, komprimiert und in eine Datei schreibt. Natürlich geht's auch in die andere Richtung. Einfach mal ohne Parameter aufrufen. Das Programm hat noch einige Bugs. Bei der Decodierung kommt ein Fehler nachdem alles decodiert wurde. Wenn ich mehr Zeit habe, dann gibt's noch eine genauere Beschreibung, aber im Moment sieht's bei mir schlecht aus. Der Quellcode ist zum teil in Deutsch dokumentiert. Ich werd' das noch ändern, aber dann komplett in Englisch. Ich hab ein kleines Beispiel dazu gepackt. Ein VfW Interface habe ich auch schon dafür Programmiert, aber es hat sich einiges geändert, aber ich werd es auf den neuesten Stand bringen. Wenn ich mehr Zeit habe, dann werd ich es auch im Englischen Forum posten, vielleicht wollen noch mehr an dem Projekt mitarbeiten.

    MfG
    Bergi

  • Hört sich spannend an!

    Kodiert das nur einzelbilder, oder richtig Video mit Bewegungsvetoren und Predition und so?

    Was für Wavelets verwendest du?

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

  • Im Moment nur Keyframes mit 5/3 Wavelets. Aber ich hab schon mal mit Bewegungsvektoren rum gespielt. Als nächstes werd ich Delta Frames einbauen, am Anfang noch ohne Bewegungsvektoren. Aber als erstes werde ich das VfW Interface wieder einbauen, so kann ich mehr User zum testen erreichen.

  • Schön, ein Release zu sehen, Bergi - Betas gab's in Diskussionen im englischen Forum ja schon vor einiger Zeit. Wird also Zeit, mal den Fortschritt seitdem zu begutachten! :daumen:

  • Zitat

    Schön, ein Release zu sehen, Bergi - Betas gab's in Diskussionen im englischen Forum ja schon vor einiger Zeit. Wird also Zeit, mal den Fortschritt seitdem zu begutachten!

    Na ja, eigentlich hab ich nicht viel an meinem Codec seit der Beta gemacht. Eigentlich wurde nur etwas aufgeräumt, jetzt sollte er ca. 10% schneller sein. Ein paar Dinge hab ich sogar wieder vom Quellecode entfernt. Ich hatte zum testen einen adaptiven Range Coder drin, bei hohen Bitraten hat er ca. 2% Bitrate gespart, aber er benötigte mehr als die doppelte Zeit für die gleichen Daten. Delta Frames hatte ich auch schon drin, aber die Implementierung hat mir nicht gefallen. Ich werd' mir in nächster Zeit wieder ein bisschen XviD Quellcode rein ziehen und ein paar Ideen sammeln für die Bewegungsvektoren. Vielleicht kommen auch noch alternative Transformationen rein. Ich hab vor einiger Zeit schon ein paar Integer DCTs programmiert. Von 4x4 bis 64x64, vielleicht kann man die adaptiv verwenden. Aber wie kann man die beste Blockgröße erkennen, ohne Brute Force? Für Freunde von Simpsons und Futurama (der eigentliche Grund wieso ich angefangen habe diesen Codec zu programmieren :) ) will ich auch noch eine Hadamard Transformation einbauen. Ich glaube bei diesem Quellmaterial kann diese Transformation noch einiges raus holen.

    Aber im Moment bin ich noch beim VfW Interface. Und Windows/Dialog Programmierung ist eigentlich nicht meine Sache. Mal schaun ob ich es bis zum Wochenende schaffe, eigentlich hat es schon einmal funktioniert, aber an der API hat sich einiges geändert.

  • Servus,

    Was hat sich geändert:
    - VfW Interface ist wieder da
    - YV12 (siehe unten)
    - XviD Farbkonvertierung mit MMX und XMM unterstützung (siehe Text)
    - makefiles für die Bibliothek, das Test Tool und VfW Interface

    ich hab das VfW Interface jetzt in den Griff bekommen. Ob YV12 funktioniert kann ich nicht sagen, da ich es schnell in der Mittagspause programmiert habe. Im Dialog wird schon mal Quant und DeadZ für P-Frames angezeigt, funktioniert aber leider noch nicht. Die Farbkonvertierung in der Binary nutzt nur die XviD C Funktionen. Wer MMX und XMM haben will muss in der makefile.inc im Ordner build den Kommentar entfernen und selbst kompilieren. Bitte schon mal testen, aber nicht zu viel erwarten.

    MfG
    Bergi

  • Zitat

    wollte nur mal freundlich anfragen ob's bald mal wieder ein update gibt

    Nach einige Debug Sessions hat sich herausgestellt, dass meine Wavelettransform einen Bug hat. Den Bug konnte ich aber leider noch nicht genau lokalisieren, vielleicht schreib ich die Funktionen komplett neu, die Geschwindigkeit könnte man sicher auch noch optimieren.
    Nur Leider hab ich im Moment schlecht Zeit, vielleicht kommt aber auch die positive Seite an meinem seit 2 Tagen defekten LNB zum Vorschein ;)

Jetzt mitmachen!

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