Menu

Building FOBS on Windows

user
2007-10-10
2013-05-09
  • Mark Levine

    Mark Levine - 2007-10-10

    I'm having issues building FOBS on windows using mingw. I'm at the point where I need to execute buildFobs.sh to build the fobs4jmf.jar and the fobs4jmf.dll. So when I do this I get the following:

    scons: `.' is up to date.
    Install file: "src\cppapi\Decoder.h" as "lib\Decoder.h"
    Install file: "src\cppapi\Encoder.h" as "lib\Encoder.h"
    Install file: "src\cppapi\Error.h" as "lib\Error.h"
    Install file: "src\cppapi\Transcoder.h" as "lib\Transcoder.h"
    Install file: "src\cppapi\common.h" as "lib\common.h"
    javac -classpath resources/jmf.jar;resources/jogl.jar;resources/junit.jar -target 1.4.2 -source 1.4 -d lib\fobs4jmf\classes -sourcepath src\jmf-pi\com\moesol\bindings src\jmf-pi\com\moesol\bindings\FindAsResource.java src\jmf-pi\com\moesol\bindings\FindInSameDirectory.java src\jmf-pi\com\moesol\bindings\FindInSameDirectoryTest.java src\jmf-pi\com\moesol\bindings\FindInSameDirectoryUsingJarBaseName.java src\jmf-pi\com\moesol\bindings\FindInSameDirectoryUsingJarBaseNameTest.java src\jmf-pi\com\moesol\bindings\NativeLibraryFinder.java src\jmf-pi\com\moesol\bindings\NativeLibraryFinderStrategy.java src\jmf-pi\com\moesol\bindings\NativeLibraryFinderTest.java src\jmf-pi\com\neon\media\codec\video\mp4v\DePacketizer.java src\jmf-pi\com\neon\util\RTP.java src\jmf-pi\com\omnividea\FobsConfiguration.java src\jmf-pi\com\omnividea\media\codec\audio\JavaDecoder.java src\jmf-pi\com\omnividea\media\codec\audio\NativeDecoder.java src\jmf-pi\com\omnividea\media\codec\video\JavaDecoder.java src\jmf-pi\com\omnividea\media\codec\video\NativeDecoder.java src\jmf-pi\com\omnividea\media\content\unknown\Handler.java src\jmf-pi\com\omnividea\media\parser\video\AudioTrack.java src\jmf-pi\com\omnividea\media\parser\video\Parser.java src\jmf-pi\com\omnividea\media\parser\video\VideoTrack.java src\jmf-pi\com\omnividea\media\protocol\DataSource.java src\jmf-pi\com\omnividea\media\protocol\file\DataSource.java src\jmf-pi\com\omnividea\media\protocol\http\DataSource.java src\jmf-pi\com\omnividea\media\renderer\video\Java2DRenderer.java src\jmf-pi\com\omnividea\media\renderer\video\OpenGLRenderer.java src\jmf-pi\com\omnividea\media\renderer\video\opengl\FlatRenderer.java src\jmf-pi\com\omnividea\media\renderer\video\opengl\RenderEventListener.java
    g++ -DHAVE_AV_CONFIG_H -O3 -Iffmpeg -Iffmpeg\include\ffmpeg -Iffmpeg\libavcodec -Iffmpeg\libavformat -Iffmpeg\libswscale -Iffmpeg\libavutil -IC:\j2sdk1.4.2_16\include -IC:\j2sdk1.4.2_16\include\win32 -IC:\j2sdk1.4.2_16\include\win32 -IC:\j2sdk1.4.2_16\include\linux -Isrc\cppapi -Iresources\include -c -o src\jmf-pi\decoder.o src\jmf-pi\decoder.cpp

    This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application's support team for more information.
    scons: *** [src\jmf-pi\decoder.o] Error 3

    Notice the g++ command contains paths with single backslashes. This doesn't work in mingw. How do I get these paths to be forward slashes or double backslashes(\\) which work fine in mingw?

     
    • Mark Levine

      Mark Levine - 2007-10-18

      Ok, I was able to fix my issue with the paths by looking at how the paths were defined in scripts/fobs-sample.py.  Now I have another error:

      ....
      src/jmf-pi/decoder.cpp:375:   instantiated from here
      c:/mingw/include/c++/3.2.3/mingw32/bits/c++locale.h:50: `please_use_av_malloc'
         undeclared (first use this function)
      c:/mingw/include/c++/3.2.3/mingw32/bits/c++locale.h:50: (Each undeclared
         identifier is reported only once for each function it appears in.)
      c:/mingw/include/c++/3.2.3/mingw32/bits/c++locale.h:68: `please_use_av_free'
         undeclared (first use this function)
      scons: *** [src\jmf-pi\decoder.o] Error 1

      Has anyone seen this error before when compiling under mingw?

       
    • Mark Levine

      Mark Levine - 2007-10-18

      Found a work around for this issue. Just open src/jmf-pi/decoder.cpp. Go to line 375 and comment it out. Should be:

      //cout << "New position request: " << newTime << endl;

      So, I finally was able to get FOBS to compile, however when I run the player I get the message:

      "This application has failed to start because xvidcore.dll was not found. Re-installing the application may fix this problem."

      Anyone have any suggestions?

       
      • Jose San Pedro

        Jose San Pedro - 2007-10-18

        Mark,

        thanks for your succession of reports solving issues with Fobs compilation on windows.

        Could you provide a little bit more of information about the parameters you used to build the project? It is especially important to know which 3rd party libraries you have included in the ./configure script while building ffmpeg. If you haven't explicitely stated here the inclusion of libxvid, then it's possible that the default parameters of buildFobs.sh are not appropriate for you. Launch ./buildFobs.sh --help to receive information about the current values of build parameters. The EXTERNAL_LIBS list should not include xvid.

        If you were actually willing to include xvid support, then the problem is that the DLLs corresponding to the 3rd party libraries are not in a directory included in the PATH environment variable. Either move these DLLs to system32 or change the environment to point to the directory where your DLLs are located.

        Hope this helps!

        Jose San Pedro

        PS: More info about build parameters can be found on http://fobs.sourceforge.net/build.html

         
    • Mark Levine

      Mark Levine - 2007-10-18

      Here is the configure command I use for ffmpeg:

      ./configure --enable-gpl --enable-mp3lame --enable-vorbis --enable-libogg --enable-faad --enable-faac --enable-xvid --enable-x264 --enable-a52 --enable-mingw32 --extra-cflags=-I/home/mlevine/fobs-src/resources/include --extra-ldflags=-L/home/mlevine/fobs-src/resources/lib --extra-libs='-la52 -lvorbis -lvorbisenc -logg -lx264 -lxvidcore -lfaad -lfaac -lmp3lame' --prefix=/home/mlevine/fobs-src/resources --enable-memalign-hack

      Here are the ffmpeg dependencies I use:

      a52dec-0.7.4
      faac-1.25
      faad-2.5
      lame-3.97
      lame-3.97
      libogg-1.1.3
      libvorbis-1.1.2
      x264
      xvidcore-1.1.3

      I follow the FOBS README and use the configure commands that it recommends, usually:

      ./configure --prefix=/home/mlevine/fobs-src/resources --enable-shared=no

      with some exceptions like for vorbis:

      ./configure --prefix=/home/mlevine/fobs-src/resources --enable-shared=no --with-ogg=/home/mlevine/fobs-src/resources

      again just like it is specified in the README.

      I'm having a problem with xvidcore. It seems like FOBS is linking with the shared version of xvidcore (xvidcore.dll) instead of the static version (xvidcore.a). When it comes time for me to run the player, it is looking externally for the dll. I want it to be static like it is working for me on the Mac.

       
      • Jose San Pedro

        Jose San Pedro - 2007-10-18

        Ok,

        that clears things up a lot. I've run into this problem more than once. What is happening is that during the bulding process the script is able to locate a shared version of the xvid library in a standard path of your system (e.g. /usr/local/lib). To solve it, look around in the system directories for the xvidcore.dll file and remove it (or temporarely rename it) so that both ffmpeg and fobs build scripts are NOT able to see the shared version.

        Jose San Pedro

         
    • Mark Levine

      Mark Levine - 2007-10-19

      Jose,

      I've searched my machine for any instances of xvidcore.dll and only found it in the xvidcore source that had built it and in /home/mlevine/fobs-src/resources/lib where it installed it. Now if I try to remove the xvidcore.dll from /home/mlevine/fobs-src/resources/lib and just leave the static version there (xvidcore.a) then ffmpeg will not configure correctly. However, it does configure correctly with the static version removed and the dll present as well as them both being there. So, for some reason ffmpeg only wants the xvidcore.dll.

       

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.