Bedarfserhebung: "Zukunftssicherer" x265 Benchmark

  • Ok, wenn du bestimmte API Calls (also auf Windows mein ich jetzt) hast, die was passendes liefern, laß mich wissen welche, bzw. wie der Code ausschaut. Die Command Line Tools hab ich soweit fertig, CLI Skript morgen noch polieren..

    Ajo, und ich bitte nochmals zu bedenken, es sollte dann ein Windows Binary sein, das alle Zielplattformen unterstüzt, also von NT 5.2 (XP x64, Server 2003 x64) bis NT 10.0 (Windows 10).

    Kannst es ggf. unter Linux statisch linken? Sodaß man das Binary einfach nur saugen und starten muß, egal auf welcher Distro man sitzt und welche Libs man hat? Ich versteh schon, daß das der Anforderung "kleine Binary Size" widerspricht, aber Einfachheit für den Benutzer geht vor Size.

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Statisch linken wuerde es platform abhaengig machen. Also kann es dann nicht unbedingt fuer ARM bauen und so. Und bei Qt waeren die binaries riesig. Ich hatte mal eine >50mb grosse .exe Datei, fuer ein kleines Programm. Und die API calls werde ich mich reinlesen. Unter Linux ist das etwas einfacher, aber werde mir auch Windows ansehen. Host und Hypervisor wird etwas laenger dauern. Da kommt etwas mehr code in frage dann.

    Gebaut wird bei mir auf x64, hab kein XP64 zum testen da. Eigentlich nur Win7 64bit und 10 64bit.

    Ansonsten kann ich das mit dem Statisch in Angriff nehmen. Dauert nur ein paar Tage, da ich Qt von anfang an statisch linken muss.

    Ich werde dir am Wochenende oder kurz danach einen kleinen Prototypen zeigen.

  • Es soll *NUR* 64-Bit Architekturen stützen! Geht auch gar nicht anders bei dem RAM Verbrauch (~16GB). Das betrifft sowohl x86, wie auch ARM, PowerPC, MIPS, was auch immer. Aber 32-Bit kannst du komplett ausgrenzen. Und man muß ja nicht für jede Plattform ein statisches Binary haben, grade nur für die gängigeren.

    50-100MB ginge noch, kann man ja mit 7zip/LZMA2 zusammenpressen.

    @Windows Versionen: Mach's wie ich. Meine "Build Farm" ist eine einzige x64 Linux Maschine. Die Build- und Testsysteme laufen als VBox VMs drauf (Win2000, XP, XP x64, 7 x64, 10 x64). Und halt auch noch andere VMs zur Not (FreeBSD 9, 10, 11, MacOS X, Solaris usw.).

    Virtualisierung hat ja doch einiges simpler gemacht.

    Und: Es ist davon auszugehen, daß nicht jeder eine GUI braucht. Ein User, der es zuwege bringt sich ein Solaris oder ein BSD UNIX @ ARM aufzusetzen, der wird wohl auch keine GUI mehr brauchen, der wird sich eher freuen wenn er keine braucht. ;)

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Hehe ja. Das mit Windows Information ist relativ einfach, aber viel Arbeit. MS macht es halt nicht leicht den Versions string auszulesen. Darf man hinterher selber machen :rolleyes:

  • Ihr wollt QT einsetzen?
    Nicht gut. Nehmt GTK, da steckt keine Firma dahinter.
    Für das Bibliothekenproblem könnte man auch das GUI-Binary in einer Interpretersprache wie Java schreiben. Das bringt ja standardmäßig bereits passende Libs für eine GUI mit. Das Programm muss ja nicht schnell sein, es muss nur funktionieren, den der Rest läuft ja außerhalb als "Backend".


    Wär sogar denkbar, daß man die 32-bit Version in Zukunft ganz fallen läßt...


    Ein logischer Schritt.

    "Du bist und bleibst a Mensch und du kannst eben net deine menschlichkeit überwinden."

    Dennis_50300

    3 Mal editiert, zuletzt von CryptonNite (3. Februar 2017 um 14:57)

  • Hab Mal losgelegt in meiner Lieblingsshell, da kriegst Ausschlag davon! :spitze: Ist alles noch dreckig und bei weitem nicht fertig. Die kaputt aussehenden Umlaute übrigens gehören so, damit der Kommandointerpreter das auf einer deutschen cmd richtig ausgibt (schas Encoding). Diese Version erkennt es, wenn x265 unerwartet abbricht/abstürzt und kann derartige Fehler abfangen und behandeln. Auf Debug Level 1 auf einer eigentlich nicht ausführbefähigten 32-Bit Maschine:

    [Blockierte Grafik: http://www.xin.at/x265/worklog/development/pics/x265bench-prealpha-debug-lvl1.png]
    Rechnen tut x265 hier gar nichts, es zeigt derweil nur seine Version Strings an. (Klicken zum Vergrößern)

    transcoder.bat (Workerskript, das vom Hauptskript aufgerufen wird):

    Code
    :: No command echoing:@ECHO OFF:: All variables are local:SETLOCAL:: Setting return value output file nameSET "stdErr=%1"SET "x265err=0":: Pass 1:.\x265 --version 1>NULIF %ERRORLEVEL% NEQ 0 SET "x265err=1":: Pass 2:.\x265 --version 1>NULIF %ERRORLEVEL% NEQ 0 SET "x265err=1":: Note that timethis will raise the ERRORLEVEL, so we can set our return:: value properly (which we'll do), but it won't work for error detection:: in normal cases! Hence, we have to write to an error file too!ECHO %x265err% >%stdErr%:: Terminating:EXIT /B %x265err%ENDLOCAL

    Ändert man den x265 Aufruf z.B. den "Pass 1" von .\x265.exe --version auf ein falsches .\x265.exe -version (ein "-" weniger genügt), so erklärt x265 einem, daß es die Option nicht versteht und liefert einen Rückgabewert von "1" (Fehler) statt "0" (OK) zurück. Das Abfangen funktioniert:

    Natürlich ist auch das noch nicht perfekt, könnte ja sein, daß der Fehler gar nicht erst erkannt wird. Dazu muß ich mir noch ein ordentliches Logging einfallen lassen...

    [ Hier sollte das Hauptskript stehen, aber weil dann der Post zu groß wird, steht es einen Post weiter unten ]


    RESULTS.txt (Is halt noch sehr primitiv):

    Edit: Huch, einen Typo im Skript gfunden. :P

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

    Einmal editiert, zuletzt von GrandAdmiralThrawn (3. Februar 2017 um 14:54)

  • Und launch_x265benchmark.bat (Hauptskript):

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Sieht gut aus. Ich hab angefangen etwas in QT-5.8 zusammen zu basteln. Hab zwei Dialoge soweit und bin dabei das Hardware auszulesen zu implementieren. Windows api koennte ruhig mal modular sein. So viel zugemuellter kack auf einen Haufen :rolleyes:

  • Kannst es für ein XP x64 / Server 2003 x64 Target bauen? Ich kann's ja bei mir testen und dir ggf. die entsprechenden Rückmeldungen geben.

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Habe einige Entwickler sagen hören, daß es wohl gehen, aber auch ein Alptraum sein würde... Von daher... :topmodel:

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Hm? Das war auf der Shell recht simpel, per wmic.exe aus der WMI Klasse OS holen?

    Code
    C:\>wmic OS get Caption, Version
    Caption                                              Version
    Microsoft(R) Windows(R) XP Professional x64 Edition  5.2.3790

    Außerdem isses fraglich, ob wir das doppelt machen sollen, das is ja eigentlich kein Job für ein Frontend, sondern eher für's Backend?

    @Linux: Für'n Entwickler sicher einfacher, aber für'n User auch? Deswegen meinte ich statisch linken. Dynamisch gelinkte Binaries sind eine Pestilenz auf Linux, wenn's um Software geht, die man fernab der Pakentmanagementsysteme ausrollen will. Von selber kompilieren red ich da noch gar nicht..

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Heh,ja wmi ist totaler Müll. Also als API. Weiß auch nicht ob das sooo sinnvoll ist. Wie auch immer, der Start Knopf ist da. Alles was ich brauche sind die scripts zum Ausführen. Baue trotzdem ein wenig hwinfo ein. Wollte ich schon immer Mal machen!

  • Ich werde dir Mal eine simple, kleine Pseudoversion zusammenflicken nächste Woche, damit du Mal weißt was für eine Art Output x265 erzeugt, dann kannst schaun ob du das in ein GUI Fenster redirecten oder sonstwie abfangen kannst (damit der User sieht was passiert, oder einen Progress Meter bekommen kann).

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Je nachdem wie ich das Ausführen kann ich den Output in einem extra Fenster ausgeben lassen. Auch wenn es Ausgabe in ein Terminal ist. Zumindest in Linux geht es. Hab das unter Windows noch nicht getestet.

  • Die cmd treibt mich noch in den Wahnsinn, aber hier ist Mal eine hoffentlich lauffähige Prealpha für Windows:

    [x265 Benchmark, 2017-02-06] (pre-Alpha)

    Diese Version hat weitaus geringere Systemanforderungen, und kodiert nur 2 × 30 Frames in 720p, damit es schnell geht. Getestet wurde sie auf XP x64, Win7 x64 und Win10 x64. Für XP x64 gibt's noch eine wmic Weiche bei den CPU Infos, hier müßte ich noch programmatisch prüfen, ob KB932370 installiert ist, sonst fehlen der WMI Klasse "CPU" ein paar Properties die ich auslesen können will.

    Das Launcherskript prüft derweilen auf OS Bitness, verfügbaren RAM, Diskspace, eine installierte Visual C++ 2010 Runtime (x265.exe brauchts), paßt sich der Usersprache an (unterstützt werden Deutsch und Englisch, auf anderen Systemen rennt's einfach Englisch) und kann abnormale Abstürze von x265.exe detektieren.

    Prüfsummenchecks gibt's noch keine, das kommt erst irgendwann. Wird aber fix mit eingebaut, um zu verifizieren, daß die EXE Files und das Inputvideo sauber sind! Outputverifikation wird wohl nicht möglich sein, da der Output je nach Parallelisierung wohl nicht mehr über alle Systeme deterministisch sein wird. Najo. Ein kleiner Wermutstropfen, immerhin schon besser als alles was der x264bench bisher an Checks hatte (nämlich genau NULL, rofl).

    Edit: Ah, schon ein Henne/Ei Problem bei zwei der Detektionen gefunden. Najo, derweil wurscht.

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

    4 Mal editiert, zuletzt von GrandAdmiralThrawn (9. Mai 2017 um 11:16)

  • So ich hab die Alpha mal laufen lassen:
    00:00:51.031 | Bier.jpg | 2/4/4 | Intel Xeon E5450 | 48GB ECC DDR-II/667 CL5-(5-5-18 nach Spec bei cl5 --> nicht ausgelesen) | Supermicro X7DCA-L | Win XP Pro SP2 X64

    Fazit geht nur zu schnell :D