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:
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?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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?
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?
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?
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
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.
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
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.