Wie x264 + mp4 support in Visual C++ 2008 Express kompilieren?

  • Was soweit klappt:
    1. Visual C++ 2008 Express bei http://www.microsoft.com/express/vc/ herunterladen und installieren
    2. x264 source code herunterladen (lade in selber mit linux herunter und führe auch dort eventuelle patches aus)
    3. NASM bei http://nasm.sourceforge.net/ herunterladen und die nasm.exe ins x264 Verzeichnis packen
    4. x264\build\win32\x264.vcproj in Visual C++ 2008 Express importieren
    5. die Zeile __attribute__((force_align_arg_pointer)) in der encoder.c auskommentieren (wird wohl für gcc gebraucht, stört aber mit vc++)
    6. auf release umstellen und x264 binary erstellen lassen
    -> soweit so gut, aber wie krieg ich noch mp4 support dazu ?

    Mit MinGW reicht ein:
    configure --enable-avis-input --enable-mp4-output --enable-pthread --extra-cflags="-Ic:/programme/gpac/include" --extra-ldflags="-Lc:/programme/gpac/bin/gcc"

    Aber was muss ich in Visual C++ 2008 Express machen?

    Falls also jemand Visual C++ 2008 Express mit gpac support kompiliert würde ich mich freuen, wenn er kurz in ein paar Schritten schreiben würde wie es geht.

    Danke :)

    Cu Selur

    Ps.: Ja, ich bin ein Visual C++ 2008 Express Noob :)

  • Warum sollten den die Assemblerfunktionen deaktiviert sein, NASM wird ja benutzt, welches doch für den Assemblercode zuständig ist.
    Habe eher das Problem, dass die CPU Auslastung anstatt ca. 98% nur 26% ist, multithreading mag noch nicht so recht. (was auch erklärt, warum die Geschwindigkeit des vc builds aktuell etwa nur 1/4 des mingw builds ist)

    Würde vor allem lieber mit MSVC kompilieren, da die build Umgebung unkomplizierter aufzusetzen ist als für MinGW und ich für sx264 eh VC benutze, da MinGW extrem langsam beim Linken ist.

    Cu Selur

  • MSVC hat ein Problem mit dem Stack-Alignment! Das selbe Problem existiert wohl auch beim ICL. Daher würden alle Assembler-Funktionen, die auf ein korrektes Stack-Alignment angewiesen sind, crashen, wenn man x264 mit MSVC oder ICL kompiliert. Dass der Assembler-Code selbst von YASM (soweit ich weiß ist NASM nicht mehr empfohlen) assembliert wurden, spielt keine Rolle. Das Problem liegt ja außerhalb des Assembler-Codes, der Crash tritt dann aber innerhalb des Assembler-Codes auf. Aus genau diesem Grund werden mittlerweile auch alle betroffenen Assembler-Funktionen in x264 deaktiviert, sofern man MSVC/ICL benutzt. Des resultierende Build ist dann zwar laaaaangsam, aber dafür crasht es wenigstens nicht. Würde trotzdem vorerst bei GCC bleiben, um x264 zu kompilieren...

    Zitat

    commit ad1d7a4a585bc7f995ced5152557a4f5306275bf r892
    Author: Gabriel Bouvigne <gabriel.bouvigne@joost.com>
    Date: Thu Jun 26 21:09:55 2008 -0600

    some asm functions require aligned stack. disable these when compiling with msvc/icc.


    Um MinGW zu installieren, würde ich TDM's Installer empfehlen. Dann noch MSYS, Git und YASM drauf hauen und fertig :)
    http://www.tdragon.net/recentgcc/


    BTW: Wenn die CPU Auslastung nur bei 25% liegt (anstatt bei fast 100% mit einem Referenz-Build), dann ist in deinem Build vermutlich pthreads deaktiviert...

Jetzt mitmachen!

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