Voodooalert+x264 Logo
US+UK Flagge DE+AT Flagge
Sprache wechseln:
 

x264 Benchmark Kompilier- & Installationsanleitung für OpenBSD 5.4 - 5.5

OpenBSD Logo

Systemvoraussetzungen

Um den x264 Benchmark auf OpenBSD übersetzen und installieren zu können, muß zuerst einmal eine gewisse Basissoftware vorhanden sein. Um selbige zu installieren, werden wir uns des OpenBSD Package Managers bedienen, der vorerst aber konfiguriert werden muß. Zum gegebenen Zeitpunkt setzt der Benchmark OpenBSD 5.4 - 5.5 voraus, daher sollte aufgrund maßgeblicher künftiger Änderungen in neueren Versionen keine Gültigkeit dieser Anleitung für jene kommenden Versionen angenommen werden.

Wir konfigurieren also als Superuser root den Package Manager, und installieren auch gleich das erste Paket:


Gleich danach führen wir als der Benutzer, der den Benchmark ausführen können soll sowie als root folgenden Befehl aus:

Danach müssen alle User ausgelogged werden, was z.B. durch einen Neustart der grafischen Benutzeroberfläche erreicht werden kann, damit die Änderung angewendet wird. Wir nutzen nun die Bourne Again Shell anstatt der standardmäßigen Korn Shell. Dies vereinfacht einige folgende Schritte und wird auch von diversen Skripten, die noch ausgeführt werden müssen benötigt. Hiernach geht es mit der Softwareinstallation weiter, dieses Mal verwenden wir die Umgebungsvariable PKG_PATH, um dem Packagemanager zu zeigen, von wo er seine Pakete zu holen hat:

Im Falle von autoconf wird pkg_add mehrere verfügbare Versionen auflisten, hierbei ist einfach die neueste zu wählen.

Da OpenBSD sehr restriktiv in Bezug auf sein Limitsystem ist, werden wir selbiges auch noch anpassen müssen, um den Benchmark später ausführen zu können. Im speziellen handelt es sich hierbei um das auf 512MB pro User begrenzende Speicherlimit. Da der x264 Benchmark je nach Rechnerarchitektur und Threadanzahl zwischen 600MB - 1100MB verschlingen kann, muß hier also vorab eingegriffen werden. x264 würde ansonsten abstürzen und uns von einem malloc() Fehlschlag berichten.

Dazu editieren wir als User root die Datei /etc/login.conf mit einem beliebigen Texteditor, wie z.B. nano, welcher ebenfalls über pkg_add hinzugefügt werden kann und suchen folgende Stelle:

staff:\
        :datasize-cur=512M;\

Diese Stelle ändern wir wie folgt ab, und erhöhen damit das Standardspeicherlimit für User der Loginklasse staff von 512MB auf 2GB:

staff:\
        :datasize-cur=2048M;\

Nun muß der Benutzer, der den Benchmark später ausführen können soll noch in diese Loginklasse aufgenommen werden. Der Einfachheit halber nehmen wir an, daß der Benutzer einfach user heißt. Als root führen wir folgenden Befehl aus:

Nun wird chpass den Standardsystemeditor starten - wahrscheinlich vi - und uns den Benutzer editieren lassen. Folgende Zeile ist von Bedeutung:

Class:

Wir ergänzen:

Class: staff

Die Datei speichern und schließen wir. Erneut muß der Benutzer komplett ausgelogged sein, damit die Einstellung angewendet wird, z.B. durch Neustart der grafischen Benutzeroberfläche. Damit ist die initiale Systemkonfiguration abgeschlossen, und wir fahren mit dem Bau fort. Leider benötigt x264 auf x86 Prozessoren einen GNU Assembler der Version 2.17 oder größer, um den SSSE3 Inlineassembly bauen zu können. Da wir aus Leistungsgründen nicht zur Gänze auf Assembly verzichten wollen, müssen wir hier also nachhelfen. Der Assembler, auch gas oder einfach as genannt ist ein Bestandteil der GNU Binutils, die wir uns in Form von Quellcode herunterladen:

Zum Zeitpunkt des Verfassens dieser Anleitung war die neueste Version 2.24.51. Sollten neuere Versionen unerwartete Probleme bereiten, sollte daher auf 2.24.51 zurückgegriffen werden. In weiterer Folge wird vom Einsatz dieser Version ausgegangen. Wir entpacken die Binutils also, z.B. mit tar -xzvf ./binutils-2.24.tar.gz und wechseln danach in den neu erzeugten Ordner binutils-2.24/. Danach setzen wir folgende beiden Umgebungsvariablen, da ansonsten einige Abhängigkeiten nicht gefunden werden können:

Nach Setzen dieser Variablen sollte das Terminal nicht mehr geschlossen werden, ansonsten sind sie in einem neuen Terminal auch erneut zu setzen. Nun konfigurieren wir die Binutils und starten einen Kompilierversuch im Ordner binutils-2.24/ sitzend:

Dies wird einen Großteil der Binutils bauen, und bei GNU ld abstürzen. Bis zu diesem Punkt sind aber genug Teile der GNU Binutils inklusive des GNU Assemblers kompiliert. Bevor wir den Assembler einsetzen, werden wir ihn aber mit sauberer Targetdefinition neu bauen. Wir wechseln also in das Verzeichnis binutils-2.24/gas/, und führen folgende Befehlskette exakt aus:

Danach deaktivieren wir noch temporär den veralteten gas 2.15, indem wir ihn umbenennen:

Nun sollte sich der neue Assembler melden, wenn man as -version eingibt. Wird der Befehl nicht gefunden, muß gegebenenfalls die Datei /usr/local/bin/amd64-unknown-openbsd5.4-as o.ä. in /usr/local/bin/as umbenannt werden. Damit ist die initiale Umgebung für den Bau der Benchmarkkomponenten geschaffen.

Nun geht es ans Eingemachte:

Die Benchmark-Software selbst

Um x264 benutzen zu können, brauchen wir die Decodingfilter von libavcodec (kurz libav) und den x264 Encoder selbst, der im Verlauf der Installation gegen libav linked wird. Weiters natürlich das Benchmarkvideo, das als Input verwendet wird, Downloadmirror zum Download des letzteren sind am Ende der [Benchmarkergebnisliste] verfügbar. Als Ersatz für libav kann man auch ffmpeg/ffms verwenden, wenn man dies möchte. Wir werden uns hier aber auf libav beschränken.

Bevor wir loslegen, müssen noch einige Variablen gesetzt werden, die z.T. sicherstellen, daß ab jetzt der neuere GCC 4.8.1, also der neuere C/C++ Compiler verwendet wird, den wir ganz zu Anfang installiert haben. Erneut gilt, daß diese Variablen verloren gehen, wenn man das Terminal schließt. Danach müßten sie also neu gesetzt werden:

Der Einfachheit halber nehmen wir hier an, daß die Dateien nun in /home/user/x264src/ liegen. Auf der Konsole wechseln wir also in dieses Verzeichnis, und beginnen mit libav. Entpackt wird das Archiv mit tar -xzvf <filename.tgz>, wonach es einen libav Ordner gibt. In diesen Ordner wechsle man nun, und beginne mit Konfiguration und Bau:

Damit ist libav installiert, und wir können mit x264 selbst fortfahren.

Zuerst entpacken wir - wieder im Verzeichnis /home/user/x264src den x264 Quellcode ca. wie folgt: tar -xjvf last_x264.tar.bz2 und wechseln dann in das neu erzeugte x264 Unterverzeichnis.

Für x264 selbst müssen wir noch sicherstellen, daß alle Skripte des Buildsystems ausgeführt werden können. Einige Skripte haben ggf. eine falsche Shebang Zeile ganz zu Anfang definiert. Je nach x264 Version sind zumindest die Datei configure, ggf. auch noch version.sh oder bei älteren Versionen auch andere betroffen. Wir schauen hier jeweils auf die erste Zeile. Sieht selbige wie folgt aus, so ist einzugreifen:

#!/bin/bash

Dies ersetzen wir durch:

#!/usr/local/bin/bash

Jetzt kann es losgehen:

Damit ist auch x264 installiert und betriebsbereit! Die Funktion der Software läßt sich einfach über x264 --version prüfen. Funktioniert das, und zeigt das Binary an, daß es gegen libswscale und libavformat linked ist, dann hat alles sauber funktioniert. Nun kann man folgendes Benchmarkscript herunterladen:

Diese Datei launchbenchmark.sh kopieren wir nun in einen für den Benchmark gedachten Unterordner, den wir ggf. anlegen: mkdir -p /home/user/x264benchmark. In diesem Ordner sollte auch das Inputvideo elephantsdream_source.264 landen.

Nun kann man den Benchmark im Prinzip ausführen, hierzu gebe man einfach folgendes ein, während man im Ordner /home/user/x264benchmark sitzt und nachdem man geprüft hat, daß das Script auch ausführbar ist (chmod +x ./launchbenchmark.sh):

Das könnte dann zum Beispiel so aussehen (Klicken, um zu vergrößern), das Ergebnis ist danach einfach von der Konsole abzulesen, interessant ist der Wert nach der Zeile "Real", sobald der Test durchgelaufen ist:

NetBSD Screenshot

Je nach Maschine kann das jetzt durchwegs mehrere Stunden, in extremen Fällen auch Tage, Wochen oder Monate dauern. Bei Problemen mit dieser Anleitung oder weiteren Fragen zum x264 Benchmark auf OpenBSD bitte einfach im [entsprechenden Forumsthread] nachfragen.

[Zurück zur x264 Benchmark Ergebnisliste]

[Anleitung kommentieren]