Codecvergleich mit GStreamer durch SSIM

Mai 18th, 2012 by Kai

Während der Wirrungen bezüglich des HTML5-Videostandards hatte ich (noch lange bevor WebM existierte) einen Blick auf Dirac geworfen, einen alternativen Codec der BBC Research Labs. Nach subjektiven Vergleichen und einiger Benutzung, fehlte mir dennoch ein Verfahren, um mehr verlässliche Aussagen über die Qualität (sowie zu erwartende Größe) eines komprimierten Videos zu machen. Anstelle des „alten“ PSNR wurde SSIM zur Differenzanalyse zwischen Original und dem komprimierten Bild verwendet. GStreamer bietet sich durch starke Flexibilität an – ein Testframework wurde in Python mit Django umgesetzt. Leider steht der Out-of-the-box-Verwendung noch einiges im Wege; gerade die SSIM-Berechnung ist noch nicht als eigenständiges GStreamer-Element implementiert, was Geschwindigkeit und Stabilität verbessern würden. Auch die generelle Anbindung der GStreamer-Mainloop in die Webapplikation wäre besser durch einen daemon zu lösen. Daher kommt hier jetzt noch kein Quellcode…

Ausarbeitung (Kurs Digitales Video): Der Dirac-Wavelet-Codec und automatisierter Qualitätsvergleich mit Hilfe des GStreamer-Frameworks

Die erhobenen Daten sind nur beispielhaft und erheben keinen Anspruch auf vollständige Charakterisierung der Codecs. Denn der Zeitaufwand für SSIM ist groß – und somit ist die Eingabesequenz sehr kurz gewählt.

Arduino N64 Controller Library und Tetris-Port

März 26th, 2012 by Kai

Moved to GitHub: https://github.com/pothos/arduino-n64-controller-library

Die Arduino-Plattform (arduino.cc) bietet einen einfachen Einstieg in die Microcontroller-Programmierung und ist gerade im Nicht-Geek-Bereich eine Erfolgsgeschichte. Die vielen Bibliotheken ermöglichen es, hauptsächlich auf der „Organisationsebene“ zu bleiben – in kurzer Zeit war aus der Kombination von TVout, dem verfügbaren Tetris-Clone und einigen Modifikationen zum Speichern der Highscore im EEPROM eine archaische Spielkonsole aufgebaut. Dank dieser Anleitung konnte ein N64-Controller benutzt werden. Während für NES relativ viel Quellcode verfügbar ist, gibt es keine komfortable N64-Controller-Library, da wegen exaktem Timing Inline-Assembler verwendet wird und der PIN fest eingeschrieben ist. Meine Bibliothek ist vielleicht nicht in schönster Manier geschrieben und alles andere als optimal in der Codegröße, aber für eine Erstveröffentlichung sollte es ausreichen – komfortabel ist sie zumindest (auch alle möglichen PINs von 0 bis 13 können unabhängig voneinander für Controller benutzt werden).

Die Lizenz ist unklar, es handelt sich hauptsächlich um Modifikationen und Zusammenstellungen. Der Tetris-Port „Simple Tetris Clone“ ist z.B. unter der MIT-License veröffentlicht, die meisten Bibliotheken unter der (L)GPL.

Version 1 der Library (26.03.2012) 2 der Library (26.07.2012),

getestet auf Arduino Uno: N64Controller

Hier der Quelltext für das Spiel: N64Tetris

Beispielquellcode:

#include <N64Controller.h>
N64Controller player1 (12); // PIN 12
void setup() {
    player1.begin(); // Initialisierung
}
void loop() {
    delay(30);
    player1.update(); // Tastenzustand auslesen
    if (player1.button_A() && player1.button_D_down()
        || player1.button_Start()) { // bitte keinen Sinn suchen
        int xachse = player1.axis_x(); // kann negativ oder positiv sein,
                                   // je nach Ausrichtung des Analog-Sticks
    }
    // …
}

Facharbeit

Oktober 23rd, 2010 by Kai

Ich habe meine Facharbeit in Mathe geschrieben zum Thema Public-Key-Kryptographie am Beispiel des RSA-Verfahrens: heutige Umsetzung und Implementierung.

Hier sind die Links:

Facharbeit als PDF oder online ohne PDF-Viewer (kein PDF-Viewer? → pdfreaders.org)

als ODT (LibreOffice) – falls ihr wissen wollt, wie die Formeln geschrieben werden

schnelles hybrides Verschlüsselungs-Programm aufbauend auf dem Facharbeits-Code (src)

das kompilierte Programm für Linux (64 Bit) braucht die Ubuntu-Pakete libgmp3c2 libgmpxx4ldbl und zum Kompilieren libgmp3-dev

und das kompilierte Programm für Linux (32 Bit)

das kompilierte Programm für Windows