Now that MX Player 1.7 was released with instructions on how to build a custom FFmpeg with DTS support,has anyone tried it out?
Now that MX Player 1.7 was released with instructions on how to build a custom FFmpeg with DTS support,has anyone tried it out?
--disable-demuxer=dts \
--disable-parser=dca \
--disable-decoder=dca \
libavcodec.so
libavformat.so
libavutil.so
libswresample.so
libswscale.so
I've build ffmpeg for mxplayer successfully for my Nexus 7. MKV with DTS plays fine now.
However, there is a small detail missing in the Howto. Building as described leads to a working ffmpeg version which still doesn't handle DTS. One has to remove the following three lines from config-ffmpeg.sh:
Code:--disable-demuxer=dts \ --disable-parser=dca \ --disable-decoder=dca \
cp libavutil/libavutil.so $TARGET1/
cp libavutil/libavutil.so $TARGET2/
cp libswresample/libswresample.so $TARGET1/
cp libswresample/libswresample.so $TARGET2/
cp libavcodec/libavcodec.so $TARGET1/
cp libavcodec/libavcodec.so $TARGET2/
cp libavformat/libavformat.so $TARGET1/
cp libavformat/libavformat.so $TARGET2/
cp libswscale/libswscale.so $TARGET1/
cp libswscale/libswscale.so $TARGET2/
Hi,
I don't get it, trying to compile ffmpeg for an hour and I get stuck on some parameters in build-ffmpeg.sh... What shoud TARGET1 & TARGET2 point to ? Tried to give there the *.so found in the unpacked codecs APK and that's a no-go...
Also, this part :
is trying to copy files that doesn't exist... Maybe because first part isn't set correctly.Code:cp libavutil/libavutil.so $TARGET1/ cp libavutil/libavutil.so $TARGET2/ cp libswresample/libswresample.so $TARGET1/ cp libswresample/libswresample.so $TARGET2/ cp libavcodec/libavcodec.so $TARGET1/ cp libavcodec/libavcodec.so $TARGET2/ cp libavformat/libavformat.so $TARGET1/ cp libavformat/libavformat.so $TARGET2/ cp libswscale/libswscale.so $TARGET1/ cp libswscale/libswscale.so $TARGET2/
koljanowak, can you point me how you've done it ?
Thanks by advance :fingers-crossed:
case $1 in
neon)
TARGET1=/home/vmware/Documents/ffmpeg/ffmpeg_v7_neon__1_7.apk_FILES/lib/armeabi
TARGET2=/home/vmware/Documents/ffmpeg/ffmpeg_v7_neon__1_7.apk_FILES/output
;;
case $1 in
neon)
/usr/src/android-ndk-r8b/T1=../libs/armeabi-v7a/neon
/usr/src/android-ndk-r8b/T2=../libs/output/ffmpeg_v7_neon/armeabi
;;
Sorry but don't undestand what you did.
That's for instance what i've set for now, but doesn't work :
build-ffmpeg.sh
Code:case $1 in neon) TARGET1=/home/vmware/Documents/ffmpeg/ffmpeg_v7_neon__1_7.apk_FILES/lib/armeabi TARGET2=/home/vmware/Documents/ffmpeg/ffmpeg_v7_neon__1_7.apk_FILES/output ;;
Do you say you've modified it that way ?
Code:case $1 in neon) /usr/src/android-ndk-r8b/T1=../libs/armeabi-v7a/neon /usr/src/android-ndk-r8b/T2=../libs/output/ffmpeg_v7_neon/armeabi ;;
build-ffmpeg.sh: line 10: /usr/src/android-ndk-r8b/T1=../libs/armeabi-v7a/neon: No such file or directory
build-ffmpeg.sh: line 11: /usr/src/android-ndk-r8b/T2=../libs/output/ffmpeg_v7_neon/armeabi: No such file or directory
Those target directories are irrelevant for our use case. Placing the .so in different target directories is a part of the MX Player build process, which leads to an APK containing different versions of ffmpeg for all supported CPU types. We need to build only for our own CPU type and then copy the five .so files by hand to a folder of our own choosing on the device.Hi,
Code:cp libavutil/libavutil.so $TARGET1/ cp libavutil/libavutil.so $TARGET2/ cp libswresample/libswresample.so $TARGET1/ cp libswresample/libswresample.so $TARGET2/ cp libavcodec/libavcodec.so $TARGET1/ cp libavcodec/libavcodec.so $TARGET2/ cp libavformat/libavformat.so $TARGET1/ cp libavformat/libavformat.so $TARGET2/ cp libswscale/libswscale.so $TARGET1/ cp libswscale/libswscale.so $TARGET2/
cd ffmpeg
../config-ffmpeg.sh $1
make clean
make -j8
Those target directories are irrelevant for our use case. Placing the .so in different target directories is a part of the MX Player build process, which leads to an APK containing different versions of ffmpeg for all supported CPU types. We need to build only for our own CPU type and then copy the five .so files by hand to a folder of our own choosing on the device.
Only the first four commands in build-ffmpeg.sh are relevant, and you can even enter them by hand:
You must insert your architecture (neon, tegra2, v6_vfp, v6, v5te, x86, mips) as argument to config-ffmpeg.sh (replacing $1). And of course you have to make the necessary changes in config-ffmpeg.sh beforehand, which isCode:cd ffmpeg ../config-ffmpeg.sh $1 make clean make -j8
- change "NDK=..." to point to where you extracted your NDK,
- delete "-DMXTECHS" and "-lmxutil", as mentioned on the MX Player Howto page,
- delete the three lines disabling DTS and DCA, as mentioned in my first post.
Maybe, but it depends on how those architectures are related. A more modern ARM CPU will execute code for older ARMs, but you may miss optimizations for your CPU this way, and this could impact performance and/or battery life. Or worse, if you use code which was compiled for a more modern ARM CPU than yours, the code may contain instructions which don't work on your CPU. Also, ARM, x86 and MIPS and are not related at all and are completely incompatible.That way, we don't need to compile it for each and every platform
Maybe, but it depends on how those architectures are related. A more modern ARM CPU will execute code for older ARMs, but you may miss optimizations for your CPU this way, and this could impact performance and/or battery life. Or worse, if you use code which was compiled for a more modern ARM CPU than yours, the code may contain instructions which don't work on your CPU. Also, ARM, x86 and MIPS and are not related at all and are completely incompatible.
Awesome. I'll give it try, even through from what I've read the beta is still very buggy & laggy.
Wonder how long they'll "get away with it" before removing DTS support too.
EDIT: VLC beta is currently incompatible with the US SGS3
The impression I got is that DicePlayer switched from AdSupported&Paid versions to DonationWare in preparation of becoming AbandonWare. In any case, they removed DTS, so it's out of the running, and from the comments I read about the external dts workaround you mentioned: it doesn't work as well. VLC wins for now. Thanks, though.