Please excuse the quite inconsistent use of env and export, I will clean this up when I find the time.
Currently this set includes the following libraries:
- libx264(h264)
- libmp3lame (MP3)
- libfaac (AAC)
- libvpx (VP8/VP9)
Including
- libfreetype
- fontconfig
Eventually you also have to add the zlib library.
After configuring each library, compile it with make and then call make install to install it.
The prefix parameter causes the libraries to be placed in lib under /usr/local/powerpc-none-linux-gnuspe as proposed by the Synology toolchain.
zlib
Download it from here and configure it:CC=powerpc-none-linux-gnuspe-gcc \ ./configure --prefix=/usr/local/powerpc-none-linux-gnuspe
libx264
Retrieve the libx264 code via GIT:git clone git://git.videolan.org/x264.git libx264
The configuration can be invoked via
env \ CC=/usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe-gcc \ LD=/usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe-ld \ RANLIB=/usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe-ranlib \ CFLAGS="-I/usr/local/powerpc-none-linux-gnuspe/include -mcpu=8548 \ -mhard-float -mfloat-gprs=double" \ LDFLAGS="-L/usr/local/powerpc-none-linux-gnuspe/lib" && \ ./configure \ --prefix=/usr/local/powerpc-none-linux-gnuspe --cross-prefix=powerpc-none-linux-gnuspe- \ --enable-shared --disable-asm --host=powerpc-none-linux-gnuspe \ --disable-opencl \ --disable-avs \ --disable-ffms \ --disable-gpac \ --disable-lavf \ --disable-swscale \ --enable-pic \ --enable-strip
libmp3lame
Get the source code on Sourceforge and configure it:./configure \ --prefix=/usr/local/powerpc-none-linux-gnuspe \ --host=powerpc-none-linux-gnuspe \ --enable-shared \ --disable-static \ --disable-decoder
libfaac
Get the source code on www.audiocoding.com and configure it:./configure --prefix=/usr/local/powerpc-none-linux-gnuspe/ \ --host=powerpc-none-linux-gnuspe
libvpx
Fetch the source code:git clone https://chromium.googlesource.com/webm/libvpx libvpxand configure it:
export LDFLAGS="-L/usr/local/powerpc-none-linux-gnuspe/lib" export CROSS=powerpc-none-linux-gnuspe- export CFLAGS="-I/usr/local/powerpc-none-linux-gnuspe/include -mcpu=8548 \ -mhard-float -mfloat-gprs=double" ./configure \ --prefix=/usr/local/powerpc-none-linux-gnuspe \ --enable-shared \ --target=ppc32-linux-gcc \ --enable-vp8 \ --enable-vp9 \ --disable-examples \ --disable-docs \ --enable-postproc \ --enable-vp9-postproc \ --enable-pic \ --disable-altivec \ --disable-use_x86inc \ --disable-unit_tests \ --libc=/usr/local/powerpc-none-linux-gnuspe/powerpc-none-linux-gnuspe/libc/lib/
FFmpeg
Retrieve the FFmpeg source code via GIT:git clone git://source.ffmpeg.org/ffmpeg.git ffmpegThe compilation of the FFMPEG source code to be run QorIQ/PPC systems requires a little patch.
--- ffmpeg/libavcodec/ppc/dsputil_ppc.c 2012-02-17 18:20:07.000000000 +0000 +++ ffmpeg-patched/libavcodec/ppc/dsputil_ppc.c 2012-10-18 22:15:50.740992688 +0100 @@ -116,7 +116,11 @@ /* below the constraint "b" seems to mean "Address base register" in gcc-3.3 / RS/6000 speaks. seems to avoid using r0, so.... */ + #if 1 + __asm__ volatile("dcbz %0, %1" : : "r" (fakedata_middle), "r" (zero)); + #else __asm__ volatile("dcbzl %0, %1" : : "b" (fakedata_middle), "r" (zero)); + #endif for (i = 0; i < 1024 ; i ++) { if (fakedata[i] == (char)0)
A possible configuration for FFmpeg could be as follows.
Important is to disable of the Altivec code. When left enabled, the execution of the binaries fails with a segmentation fault.
Additionally I have disabled debugging, some audio/input/output filters, ffplay and ffserver that are not required in my case.
# # FFMPEG configuration calling script # env \ CFLAGS="-mcpu=8548 \ -mhard-float \ -mfloat-gprs=double" \ MARCH="-mcpu=8548 -mhard-float -mfloat-gprs=double" \ LDFLAGS="-L/usr/local/powerpc-none-linux-gnuspe/lib -L/usr/local/powerpc-none-linux-gnuspe/source/faac-1.28/libfaac/.libs" \ && export PKG_CONFIG_PATH=/usr/local/powerpc-none-linux-gnuspe/lib/pkgconfig/ \ && ./configure --prefix=/usr/local/powerpc-none-linux-gnuspe \ --cross-prefix=/usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe- \ --enable-cross-compile \ --disable-yasm \ --disable-altivec \ --target-os=linux\ --arch=ppc \ --cpu=e500v2 \ --enable-pic \ --enable-pthreads \ --disable-debug \ --enable-libx264 \ --enable-libmp3lame \ --enable-libfaac \ --disable-swscale-alpha \ --disable-indev=alsa \ --disable-indev=dv1394 \ --disable-outdev=alsa \ --disable-encoder=dca \ --disable-encoder=ac3 \ --disable-encoder=ac3_fixed \ --disable-encoder=eac3 \ --disable-decoder=dca \ --disable-decoder=eac3 \ --disable-decoder=truehd \ --disable-iconv \ --disable-podpages \ --disable-ffplay \ --disable-ffserver \ --enable-gpl \ --enable-version3 \ --enable-nonfree --disable-doc \ --extra-cflags='-I/usr/local/powerpc-none-linux-gnuspe/include' \ --extra-ldflags='-L/usr/local/powerpc-none-linux-gnuspe/lib' \ --enable-shared \ --disable-static \ --extra-version=ses \ --enable-libfreetype \ --pkg-config=pkg-config \ --enable-fontconfig \ --enable-optimizations \ --enable-libvpx