diff options
Diffstat (limited to 'recipes/gstreamer')
35 files changed, 2539 insertions, 0 deletions
diff --git a/recipes/gstreamer/gst-common.inc b/recipes/gstreamer/gst-common.inc new file mode 100644 index 0000000000..c6a3fd057d --- /dev/null +++ b/recipes/gstreamer/gst-common.inc @@ -0,0 +1,19 @@ +SECTION = "multimedia" +PRIORITY = "optional" +LICENSE = "LGPL" +HOMEPAGE = "http://www.gstreamer.net/" + +DEFAULT_PREFERENCE = "-1" + +inherit autotools pkgconfig + +OE_LT_RPATH_ALLOW = "any" +OE_LT_RPATH_ALLOW[export]="1" + +AUTOTOOLS_STAGE_PKGCONFIG = "1" + +do_stage() { + autotools_stage_all +} + + diff --git a/recipes/gstreamer/gst-ffmpeg-0.10.4/configure-hack.diff b/recipes/gstreamer/gst-ffmpeg-0.10.4/configure-hack.diff new file mode 100644 index 0000000000..0c3b5b162f --- /dev/null +++ b/recipes/gstreamer/gst-ffmpeg-0.10.4/configure-hack.diff @@ -0,0 +1,10 @@ +--- /tmp/configure.ac 2008-07-03 19:47:44.000000000 +0200 ++++ gst-ffmpeg-0.10.4/configure.ac 2008-07-03 19:47:57.000000000 +0200 +@@ -294,7 +294,6 @@ + AC_SUBST(FFMPEG_CO_DIR) + AC_SUBST(FFMPEG_SVN) + AC_SUBST(FFMPEG_REVISION) +- AC_CONFIG_SUBDIRS(gst-libs/ext/ffmpeg) + AC_MSG_NOTICE([Using included FFMpeg code]) + fi + diff --git a/recipes/gstreamer/gst-ffmpeg-0.10.6/configure-hack.diff b/recipes/gstreamer/gst-ffmpeg-0.10.6/configure-hack.diff new file mode 100644 index 0000000000..0c3b5b162f --- /dev/null +++ b/recipes/gstreamer/gst-ffmpeg-0.10.6/configure-hack.diff @@ -0,0 +1,10 @@ +--- /tmp/configure.ac 2008-07-03 19:47:44.000000000 +0200 ++++ gst-ffmpeg-0.10.4/configure.ac 2008-07-03 19:47:57.000000000 +0200 +@@ -294,7 +294,6 @@ + AC_SUBST(FFMPEG_CO_DIR) + AC_SUBST(FFMPEG_SVN) + AC_SUBST(FFMPEG_REVISION) +- AC_CONFIG_SUBDIRS(gst-libs/ext/ffmpeg) + AC_MSG_NOTICE([Using included FFMpeg code]) + fi + diff --git a/recipes/gstreamer/gst-ffmpeg/armv5.patch b/recipes/gstreamer/gst-ffmpeg/armv5.patch new file mode 100644 index 0000000000..794709cc5b --- /dev/null +++ b/recipes/gstreamer/gst-ffmpeg/armv5.patch @@ -0,0 +1,1509 @@ +diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/configure.ac gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/configure.ac +--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/configure.ac 2006-09-23 15:35:21.000000000 +0200 ++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/configure.ac 2007-05-01 12:23:39.000000000 +0200 +@@ -190,7 +190,7 @@ + ARCH_X86=yes + ;; + # armv4l is a subset of armv5tel +- armv4l|armv5tel) ++ arm|armv4l|armv5tel|armv5te) + TARGET_ARCH="armv4l" + ARCH_ARMV4L=yes + ;; +@@ -364,11 +364,8 @@ + AC_FF_ALLOW_DISABLE(HAVE_IWMMXT, iwmmxt, use ARM/IWMMXT optimizations,[ + if test x$TARGET_ARCH = xarmv4l; then + AC_MSG_CHECKING(for support of IWMMXT optimizations) +- AC_TRY_RUN([ +- int main () { ++ AC_TRY_COMPILE(,[ + __asm__ __volatile__ ("wunpckelub wr6, wr4"); +- return 0; +- } + ],[ HAVE_IWMMXT=yes && AC_MSG_RESULT(yes) ],[ + HAVE_IWMMXT=no && AC_MSG_RESULT(no) ]) + else +@@ -376,6 +373,19 @@ + fi + ]) + ++dnl ARMV5TE ++AC_FF_ALLOW_DISABLE(HAVE_ARMV5TE, armv5te, use ARMV5TE optimizations,[ ++ if test x$TARGET_ARCH = xarmv4l; then ++ AC_MSG_CHECKING(for support of ARMV5TE specific instructions) ++ AC_TRY_COMPILE(, [ ++ __asm__ __volatile__ ("smulbb a4,ip,a3"); ++ ],[ HAVE_ARMV5TE=yes && AC_MSG_RESULT(yes) ],[ ++ HAVE_ARMV5TE=no && AC_MSG_RESULT(no) ]) ++ else ++ HAVE_ARMV5TE=no ++ fi ++]) ++ + dnl GProf (-p) + AC_FF_ALLOW_ENABLE(HAVE_GPROF, gprof, profiling with gprof,[ + GPROF_FLAGS="-p" +diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm.c gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm.c +--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm.c 2006-09-20 20:55:37.000000000 +0200 ++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm.c 2007-05-01 12:23:40.000000000 +0200 + * ARMv4L optimized DSP utils + * Copyright (c) 2001 Lionel Ulmer. + * +- * This library is free software; you can redistribute it and/or ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. ++ * version 2.1 of the License, or (at your option) any later version. + * +- * This library is distributed in the hope that it will be useful, ++ * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public +- * License along with this library; if not, write to the Free Software ++ * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +-#include "dsputil.h" ++#include "../dsputil.h" + #ifdef HAVE_IPP + #include "ipp.h" + #endif +@@ -27,6 +29,12 @@ + extern void j_rev_dct_ARM(DCTELEM *data); + extern void simple_idct_ARM(DCTELEM *data); + ++extern void simple_idct_armv5te(DCTELEM *data); ++extern void simple_idct_put_armv5te(uint8_t *dest, int line_size, ++ DCTELEM *data); ++extern void simple_idct_add_armv5te(uint8_t *dest, int line_size, ++ DCTELEM *data); ++ + /* XXX: local hack */ + static void (*ff_put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); + static void (*ff_add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); +@@ -196,8 +204,10 @@ + ff_add_pixels_clamped = c->add_pixels_clamped; + + if(idct_algo == FF_IDCT_AUTO){ +-#ifdef HAVE_IPP ++#if defined(HAVE_IPP) + idct_algo = FF_IDCT_IPP; ++#elif defined(HAVE_ARMV5TE) ++ idct_algo = FF_IDCT_SIMPLEARMV5TE; + #else + idct_algo = FF_IDCT_ARM; + #endif +@@ -213,6 +223,13 @@ + c->idct_add= simple_idct_ARM_add; + c->idct = simple_idct_ARM; + c->idct_permutation_type= FF_NO_IDCT_PERM; ++#ifdef HAVE_ARMV5TE ++ } else if (idct_algo==FF_IDCT_SIMPLEARMV5TE){ ++ c->idct_put= simple_idct_put_armv5te; ++ c->idct_add= simple_idct_add_armv5te; ++ c->idct = simple_idct_armv5te; ++ c->idct_permutation_type = FF_NO_IDCT_PERM; ++#endif + #ifdef HAVE_IPP + } else if (idct_algo==FF_IDCT_IPP){ + c->idct_put= simple_idct_ipp_put; +--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm_s.S 2006-02-19 00:04:59.000000000 +0100 ++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm_s.S 2007-05-01 12:23:40.000000000 +0200 +@@ -2,20 +2,29 @@ + @ ARMv4L optimized DSP utils + @ Copyright (c) 2004 AGAWA Koji <i (AT) atty (DOT) jp> + @ +-@ This library is free software; you can redistribute it and/or ++@ This file is part of FFmpeg. ++@ ++@ FFmpeg is free software; you can redistribute it and/or + @ modify it under the terms of the GNU Lesser General Public + @ License as published by the Free Software Foundation; either +-@ version 2 of the License, or (at your option) any later version. ++@ version 2.1 of the License, or (at your option) any later version. + @ +-@ This library is distributed in the hope that it will be useful, ++@ FFmpeg is distributed in the hope that it will be useful, + @ but WITHOUT ANY WARRANTY; without even the implied warranty of + @ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + @ Lesser General Public License for more details. + @ + @ You should have received a copy of the GNU Lesser General Public +-@ License along with this library; if not, write to the Free Software ++@ License along with FFmpeg; if not, write to the Free Software + @ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + @ ++#if defined(__ARM_ARCH_5__) || \ ++ defined(__ARM_ARCH_5T__) || \ ++ defined(__ARM_ARCH_5TE__) ++#define PLD(code...) code ++#else ++#define PLD(code...) ++#endif + + .macro ADJ_ALIGN_QUADWORD_D shift, Rd0, Rd1, Rd2, Rd3, Rn0, Rn1, Rn2, Rn3, Rn4 + mov \Rd0, \Rn0, lsr #(\shift * 8) +@@ -74,7 +83,7 @@ + put_pixels16_arm: + @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) + @ block = word aligned, pixles = unaligned +- pld [r1] ++ PLD ( pld [r1] ) + stmfd sp!, {r4-r11, lr} @ R14 is also called LR + adr r5, 5f + ands r4, r1, #3 +@@ -85,7 +94,7 @@ + ldmia r1, {r4-r7} + add r1, r1, r2 + stmia r0, {r4-r7} +- pld [r1] ++ PLD ( pld [r1] ) + subs r3, r3, #1 + add r0, r0, r2 + bne 1b +@@ -95,7 +104,7 @@ + ldmia r1, {r4-r8} + add r1, r1, r2 + ADJ_ALIGN_QUADWORD_D 1, r9, r10, r11, r12, r4, r5, r6, r7, r8 +- pld [r1] ++ PLD ( pld [r1] ) + subs r3, r3, #1 + stmia r0, {r9-r12} + add r0, r0, r2 +@@ -106,7 +115,7 @@ + ldmia r1, {r4-r8} + add r1, r1, r2 + ADJ_ALIGN_QUADWORD_D 2, r9, r10, r11, r12, r4, r5, r6, r7, r8 +- pld [r1] ++ PLD ( pld [r1] ) + subs r3, r3, #1 + stmia r0, {r9-r12} + add r0, r0, r2 +@@ -117,7 +126,7 @@ + ldmia r1, {r4-r8} + add r1, r1, r2 + ADJ_ALIGN_QUADWORD_D 3, r9, r10, r11, r12, r4, r5, r6, r7, r8 +- pld [r1] ++ PLD ( pld [r1] ) + subs r3, r3, #1 + stmia r0, {r9-r12} + add r0, r0, r2 +@@ -136,7 +145,7 @@ + put_pixels8_arm: + @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) + @ block = word aligned, pixles = unaligned +- pld [r1] ++ PLD ( pld [r1] ) + stmfd sp!, {r4-r5,lr} @ R14 is also called LR + adr r5, 5f + ands r4, r1, #3 +@@ -147,7 +156,7 @@ + ldmia r1, {r4-r5} + add r1, r1, r2 + subs r3, r3, #1 +- pld [r1] ++ PLD ( pld [r1] ) + stmia r0, {r4-r5} + add r0, r0, r2 + bne 1b +@@ -157,7 +166,7 @@ + ldmia r1, {r4-r5, r12} + add r1, r1, r2 + ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r12 +- pld [r1] ++ PLD ( pld [r1] ) + subs r3, r3, #1 + stmia r0, {r4-r5} + add r0, r0, r2 +@@ -168,7 +177,7 @@ + ldmia r1, {r4-r5, r12} + add r1, r1, r2 + ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r12 +- pld [r1] ++ PLD ( pld [r1] ) + subs r3, r3, #1 + stmia r0, {r4-r5} + add r0, r0, r2 +@@ -179,7 +188,7 @@ + ldmia r1, {r4-r5, r12} + add r1, r1, r2 + ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r12 +- pld [r1] ++ PLD ( pld [r1] ) + subs r3, r3, #1 + stmia r0, {r4-r5} + add r0, r0, r2 +@@ -198,7 +207,7 @@ + put_pixels8_x2_arm: + @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) + @ block = word aligned, pixles = unaligned +- pld [r1] ++ PLD ( pld [r1] ) + stmfd sp!, {r4-r10,lr} @ R14 is also called LR + adr r5, 5f + ands r4, r1, #3 +@@ -210,7 +219,7 @@ + ldmia r1, {r4-r5, r10} + add r1, r1, r2 + ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10 +- pld [r1] ++ PLD ( pld [r1] ) + RND_AVG32 r8, r9, r4, r5, r6, r7, r12 + subs r3, r3, #1 + stmia r0, {r8-r9} +@@ -223,7 +232,7 @@ + add r1, r1, r2 + ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10 + ADJ_ALIGN_DOUBLEWORD_D 2, r8, r9, r4, r5, r10 +- pld [r1] ++ PLD ( pld [r1] ) + RND_AVG32 r4, r5, r6, r7, r8, r9, r12 + subs r3, r3, #1 + stmia r0, {r4-r5} +@@ -236,7 +245,7 @@ + add r1, r1, r2 + ADJ_ALIGN_DOUBLEWORD_D 2, r6, r7, r4, r5, r10 + ADJ_ALIGN_DOUBLEWORD_D 3, r8, r9, r4, r5, r10 +- pld [r1] ++ PLD ( pld [r1] ) + RND_AVG32 r4, r5, r6, r7, r8, r9, r12 + subs r3, r3, #1 + stmia r0, {r4-r5} +@@ -248,7 +257,7 @@ + ldmia r1, {r4-r5, r10} + add r1, r1, r2 + ADJ_ALIGN_DOUBLEWORD_D 3, r6, r7, r4, r5, r10 +- pld [r1] ++ PLD ( pld [r1] ) + RND_AVG32 r8, r9, r6, r7, r5, r10, r12 + subs r3, r3, #1 + stmia r0, {r8-r9} +@@ -267,7 +276,7 @@ + put_no_rnd_pixels8_x2_arm: + @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) + @ block = word aligned, pixles = unaligned +- pld [r1] ++ PLD ( pld [r1] ) + stmfd sp!, {r4-r10,lr} @ R14 is also called LR + adr r5, 5f + ands r4, r1, #3 +@@ -279,7 +288,7 @@ + ldmia r1, {r4-r5, r10} + add r1, r1, r2 + ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10 +- pld [r1] ++ PLD ( pld [r1] ) + NO_RND_AVG32 r8, r9, r4, r5, r6, r7, r12 + subs r3, r3, #1 + stmia r0, {r8-r9} +@@ -292,7 +301,7 @@ + add r1, r1, r2 + ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10 + ADJ_ALIGN_DOUBLEWORD_D 2, r8, r9, r4, r5, r10 +- pld [r1] ++ PLD ( pld [r1] ) + NO_RND_AVG32 r4, r5, r6, r7, r8, r9, r12 + subs r3, r3, #1 + stmia r0, {r4-r5} +@@ -305,7 +314,7 @@ + add r1, r1, r2 + ADJ_ALIGN_DOUBLEWORD_D 2, r6, r7, r4, r5, r10 + ADJ_ALIGN_DOUBLEWORD_D 3, r8, r9, r4, r5, r10 +- pld [r1] ++ PLD ( pld [r1] ) + NO_RND_AVG32 r4, r5, r6, r7, r8, r9, r12 + subs r3, r3, #1 + stmia r0, {r4-r5} +@@ -317,7 +326,7 @@ + ldmia r1, {r4-r5, r10} + add r1, r1, r2 + ADJ_ALIGN_DOUBLEWORD_D 3, r6, r7, r4, r5, r10 +- pld [r1] ++ PLD ( pld [r1] ) + NO_RND_AVG32 r8, r9, r6, r7, r5, r10, r12 + subs r3, r3, #1 + stmia r0, {r8-r9} +@@ -338,7 +347,7 @@ + put_pixels8_y2_arm: + @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) + @ block = word aligned, pixles = unaligned +- pld [r1] ++ PLD ( pld [r1] ) + stmfd sp!, {r4-r11,lr} @ R14 is also called LR + adr r5, 5f + ands r4, r1, #3 +@@ -352,13 +361,13 @@ + add r1, r1, r2 + 6: ldmia r1, {r6-r7} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + RND_AVG32 r8, r9, r4, r5, r6, r7, r12 + ldmia r1, {r4-r5} + add r1, r1, r2 + stmia r0, {r8-r9} + add r0, r0, r2 +- pld [r1] ++ PLD ( pld [r1] ) + RND_AVG32 r8, r9, r6, r7, r4, r5, r12 + subs r3, r3, #1 + stmia r0, {r8-r9} +@@ -369,18 +378,18 @@ + 2: + ldmia r1, {r4-r6} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6 + 6: ldmia r1, {r7-r9} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 1, r7, r8, r9 + RND_AVG32 r10, r11, r4, r5, r7, r8, r12 + stmia r0, {r10-r11} + add r0, r0, r2 + ldmia r1, {r4-r6} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6 + subs r3, r3, #1 + RND_AVG32 r10, r11, r7, r8, r4, r5, r12 +@@ -392,18 +401,18 @@ + 3: + ldmia r1, {r4-r6} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6 + 6: ldmia r1, {r7-r9} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 2, r7, r8, r9 + RND_AVG32 r10, r11, r4, r5, r7, r8, r12 + stmia r0, {r10-r11} + add r0, r0, r2 + ldmia r1, {r4-r6} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6 + subs r3, r3, #1 + RND_AVG32 r10, r11, r7, r8, r4, r5, r12 +@@ -415,18 +424,18 @@ + 4: + ldmia r1, {r4-r6} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6 + 6: ldmia r1, {r7-r9} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 3, r7, r8, r9 + RND_AVG32 r10, r11, r4, r5, r7, r8, r12 + stmia r0, {r10-r11} + add r0, r0, r2 + ldmia r1, {r4-r6} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6 + subs r3, r3, #1 + RND_AVG32 r10, r11, r7, r8, r4, r5, r12 +@@ -447,7 +456,7 @@ + put_no_rnd_pixels8_y2_arm: + @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) + @ block = word aligned, pixles = unaligned +- pld [r1] ++ PLD ( pld [r1] ) + stmfd sp!, {r4-r11,lr} @ R14 is also called LR + adr r5, 5f + ands r4, r1, #3 +@@ -461,13 +470,13 @@ + add r1, r1, r2 + 6: ldmia r1, {r6-r7} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + NO_RND_AVG32 r8, r9, r4, r5, r6, r7, r12 + ldmia r1, {r4-r5} + add r1, r1, r2 + stmia r0, {r8-r9} + add r0, r0, r2 +- pld [r1] ++ PLD ( pld [r1] ) + NO_RND_AVG32 r8, r9, r6, r7, r4, r5, r12 + subs r3, r3, #1 + stmia r0, {r8-r9} +@@ -478,18 +487,18 @@ + 2: + ldmia r1, {r4-r6} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6 + 6: ldmia r1, {r7-r9} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 1, r7, r8, r9 + NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12 + stmia r0, {r10-r11} + add r0, r0, r2 + ldmia r1, {r4-r6} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6 + subs r3, r3, #1 + NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12 +@@ -501,18 +510,18 @@ + 3: + ldmia r1, {r4-r6} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6 + 6: ldmia r1, {r7-r9} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 2, r7, r8, r9 + NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12 + stmia r0, {r10-r11} + add r0, r0, r2 + ldmia r1, {r4-r6} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6 + subs r3, r3, #1 + NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12 +@@ -524,18 +533,18 @@ + 4: + ldmia r1, {r4-r6} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6 + 6: ldmia r1, {r7-r9} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 3, r7, r8, r9 + NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12 + stmia r0, {r10-r11} + add r0, r0, r2 + ldmia r1, {r4-r6} + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6 + subs r3, r3, #1 + NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12 +@@ -562,7 +571,7 @@ + ldmia r1, {r8-r10} + .endif + add r1, r1, r2 +- pld [r1] ++ PLD ( pld [r1] ) + .if \align == 0 + ADJ_ALIGN_DOUBLEWORD_D 1, r4, r5, r6, r7, r8 + .elseif \align == 1 +@@ -624,7 +633,7 @@ + put_pixels8_xy2_arm: + @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) + @ block = word aligned, pixles = unaligned +- pld [r1] ++ PLD ( pld [r1] ) + stmfd sp!, {r4-r11,lr} @ R14 is also called LR + adrl r12, 5f + ands r4, r1, #3 +@@ -661,7 +670,7 @@ + put_no_rnd_pixels8_xy2_arm: + @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) + @ block = word aligned, pixles = unaligned +- pld [r1] ++ PLD ( pld [r1] ) + stmfd sp!, {r4-r11,lr} @ R14 is also called LR + adrl r12, 5f + ands r4, r1, #3 +diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt.c gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt.c +--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt.c 2006-02-19 00:04:59.000000000 +0100 ++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt.c 2007-05-01 12:23:40.000000000 +0200 +@@ -2,18 +2,20 @@ + * iWMMXt optimized DSP utils + * Copyright (c) 2004 AGAWA Koji + * +- * This library is free software; you can redistribute it and/or ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. ++ * version 2.1 of the License, or (at your option) any later version. + * +- * This library is distributed in the hope that it will be useful, ++ * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public +- * License along with this library; if not, write to the Free Software ++ * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt_rnd.h gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt_rnd.h +--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt_rnd.h 2006-09-20 20:55:37.000000000 +0200 ++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt_rnd.h 2007-05-01 12:23:40.000000000 +0200 +@@ -2,18 +2,20 @@ + * iWMMXt optimized DSP utils + * copyright (c) 2004 AGAWA Koji + * +- * This library is free software; you can redistribute it and/or ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. ++ * version 2.1 of the License, or (at your option) any later version. + * +- * This library is distributed in the hope that it will be useful, ++ * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public +- * License along with this library; if not, write to the Free Software ++ * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/Makefile.am gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/Makefile.am +--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/Makefile.am 2006-09-22 06:07:23.000000000 +0200 ++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/Makefile.am 2007-05-01 12:23:40.000000000 +0200 +@@ -7,9 +7,14 @@ + iwmmxt_libs = libiwmmxt.la + endif + ++if HAVE_ARMV5TE ++armv5te_libs = libarmv5te.la ++endif ++ + noinst_LTLIBRARIES = \ + libarmv4l.la \ +- $(iwmmxt_libs) ++ $(iwmmxt_libs) \ ++ $(armv5te_libs) + + libarmv4l_la_SOURCES = \ + jrevdct_arm.S \ +@@ -18,6 +23,9 @@ + dsputil_arm.c \ + mpegvideo_arm.c + ++libarmv5te_la_SOURCES = \ ++ simple_idct_armv5te.S ++ + libiwmmxt_la_SOURCES = \ + dsputil_iwmmxt.c \ + mpegvideo_iwmmxt.c +diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mathops.h gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mathops.h +--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mathops.h 2006-09-22 06:07:23.000000000 +0200 ++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mathops.h 2007-05-01 12:23:40.000000000 +0200 +@@ -2,18 +2,20 @@ + * simple math operations + * Copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> et al + * +- * This library is free software; you can redistribute it and/or ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. ++ * version 2.1 of the License, or (at your option) any later version. + * +- * This library is distributed in the hope that it will be useful, ++ * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public +- * License along with this library; if not, write to the Free Software ++ * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@@ -39,9 +41,9 @@ + # define MAC16(rt, ra, rb) \ + asm ("smlabb %0, %2, %3, %0" : "=r" (rt) : "0" (rt), "r" (ra), "r" (rb)); + /* signed 16x16 -> 32 multiply */ +-# define MUL16(ra, rb) \ +- ({ int __rt;\ +- asm ("smulbb %0, %1, %2" : "=r" (__rt) : "r" (ra), "r" (rb)); ++# define MUL16(ra, rb) \ ++ ({ int __rt; \ ++ asm ("smulbb %0, %1, %2" : "=r" (__rt) : "r" (ra), "r" (rb)); \ + __rt; }) + + #endif +diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_arm.c gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_arm.c +--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_arm.c 2006-02-19 00:04:59.000000000 +0100 ++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_arm.c 2007-05-01 12:23:40.000000000 +0200 +@@ -1,25 +1,27 @@ + /* + * Copyright (c) 2002 Michael Niedermayer + * +- * This library is free software; you can redistribute it and/or ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. ++ * version 2.1 of the License, or (at your option) any later version. + * +- * This library is distributed in the hope that it will be useful, ++ * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public +- * License along with this library; if not, write to the Free Software ++ * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +-#include "dsputil.h" +-#include "mpegvideo.h" +-#include "avcodec.h" ++#include "../dsputil.h" ++#include "../mpegvideo.h" ++#include "../avcodec.h" + + extern void MPV_common_init_iwmmxt(MpegEncContext *s); + +diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_iwmmxt.c gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_iwmmxt.c +--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_iwmmxt.c 2006-09-20 20:55:37.000000000 +0200 ++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_iwmmxt.c 2007-05-01 12:23:40.000000000 +0200 +@@ -1,18 +1,20 @@ + /* + * copyright (c) 2004 AGAWA Koji + * +- * This library is free software; you can redistribute it and/or ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. ++ * version 2.1 of the License, or (at your option) any later version. + * +- * This library is distributed in the hope that it will be useful, ++ * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public +- * License along with this library; if not, write to the Free Software ++ * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_arm.S gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_arm.S +--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_arm.S 2006-09-20 20:55:37.000000000 +0200 ++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_arm.S 2007-05-01 12:23:40.000000000 +0200 +@@ -5,18 +5,20 @@ + * + * Author: Frederic Boulay <dilb@handhelds.org> + * +- * This library is free software; you can redistribute it and/or ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. ++ * version 2.1 of the License, or (at your option) any later version. + * +- * This library is distributed in the hope that it will be useful, ++ * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public +- * License along with this library; if not, write to the Free Software ++ * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The function defined in this file, is derived from the simple_idct function +diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_armv5te.S gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_armv5te.S +--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_armv5te.S 1970-01-01 01:00:00.000000000 +0100 ++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_armv5te.S 2007-05-01 12:23:40.000000000 +0200 +@@ -0,0 +1,718 @@ ++/* ++ * Simple IDCT ++ * ++ * Copyright (c) 2001 Michael Niedermayer <michaelni@gmx.at> ++ * Copyright (c) 2006 Mans Rullgard <mru@inprovide.com> ++ * ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#define W1 22725 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ ++#define W2 21407 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ ++#define W3 19266 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ ++#define W4 16383 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ ++#define W5 12873 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ ++#define W6 8867 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ ++#define W7 4520 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ ++#define ROW_SHIFT 11 ++#define COL_SHIFT 20 ++ ++#define W13 (W1 | (W3 << 16)) ++#define W26 (W2 | (W6 << 16)) ++#define W57 (W5 | (W7 << 16)) ++ ++ .text ++ .align ++w13: .long W13 ++w26: .long W26 ++w57: .long W57 ++ ++ .align ++ .func idct_row_armv5te ++idct_row_armv5te: ++ str lr, [sp, #-4]! ++ ++ ldrd v1, [a1, #8] ++ ldrd a3, [a1] /* a3 = row[1:0], a4 = row[3:2] */ ++ orrs v1, v1, v2 ++ cmpeq v1, a4 ++ cmpeq v1, a3, lsr #16 ++ beq row_dc_only ++ ++ mov v1, #(1<<(ROW_SHIFT-1)) ++ mov ip, #16384 ++ sub ip, ip, #1 /* ip = W4 */ ++ smlabb v1, ip, a3, v1 /* v1 = W4*row[0]+(1<<(RS-1)) */ ++ ldr ip, [pc, #(w26-.-8)] /* ip = W2 | (W6 << 16) */ ++ smultb a2, ip, a4 ++ smulbb lr, ip, a4 ++ add v2, v1, a2 ++ sub v3, v1, a2 ++ sub v4, v1, lr ++ add v1, v1, lr ++ ++ ldr ip, [pc, #(w13-.-8)] /* ip = W1 | (W3 << 16) */ ++ ldr lr, [pc, #(w57-.-8)] /* lr = W5 | (W7 << 16) */ ++ smulbt v5, ip, a3 ++ smultt v6, lr, a4 ++ smlatt v5, ip, a4, v5 ++ smultt a2, ip, a3 ++ smulbt v7, lr, a3 ++ sub v6, v6, a2 ++ smulbt a2, ip, a4 ++ smultt fp, lr, a3 ++ sub v7, v7, a2 ++ smulbt a2, lr, a4 ++ ldrd a3, [a1, #8] /* a3=row[5:4] a4=row[7:6] */ ++ sub fp, fp, a2 ++ ++ orrs a2, a3, a4 ++ beq 1f ++ ++ smlabt v5, lr, a3, v5 ++ smlabt v6, ip, a3, v6 ++ smlatt v5, lr, a4, v5 ++ smlabt v6, lr, a4, v6 ++ smlatt v7, lr, a3, v7 ++ smlatt fp, ip, a3, fp ++ smulbt a2, ip, a4 ++ smlatt v7, ip, a4, v7 ++ sub fp, fp, a2 ++ ++ ldr ip, [pc, #(w26-.-8)] /* ip = W2 | (W6 << 16) */ ++ mov a2, #16384 ++ sub a2, a2, #1 /* a2 = W4 */ ++ smulbb a2, a2, a3 /* a2 = W4*row[4] */ ++ smultb lr, ip, a4 /* lr = W6*row[6] */ ++ add v1, v1, a2 /* v1 += W4*row[4] */ ++ add v1, v1, lr /* v1 += W6*row[6] */ ++ add v4, v4, a2 /* v4 += W4*row[4] */ ++ sub v4, v4, lr /* v4 -= W6*row[6] */ ++ smulbb lr, ip, a4 /* lr = W2*row[6] */ ++ sub v2, v2, a2 /* v2 -= W4*row[4] */ ++ sub v2, v2, lr /* v2 -= W2*row[6] */ ++ sub v3, v3, a2 /* v3 -= W4*row[4] */ ++ add v3, v3, lr /* v3 += W2*row[6] */ ++ ++1: add a2, v1, v5 ++ mov a3, a2, lsr #11 ++ bic a3, a3, #0x1f0000 ++ sub a2, v2, v6 ++ mov a2, a2, lsr #11 ++ add a3, a3, a2, lsl #16 ++ add a2, v3, v7 ++ mov a4, a2, lsr #11 ++ bic a4, a4, #0x1f0000 ++ add a2, v4, fp ++ mov a2, a2, lsr #11 ++ add a4, a4, a2, lsl #16 ++ strd a3, [a1] ++ ++ sub a2, v4, fp ++ mov a3, a2, lsr #11 ++ bic a3, a3, #0x1f0000 ++ sub a2, v3, v7 ++ mov a2, a2, lsr #11 ++ add a3, a3, a2, lsl #16 ++ add a2, v2, v6 ++ mov a4, a2, lsr #11 ++ bic a4, a4, #0x1f0000 ++ sub a2, v1, v5 ++ mov a2, a2, lsr #11 ++ add a4, a4, a2, lsl #16 ++ strd a3, [a1, #8] ++ ++ ldr pc, [sp], #4 ++ ++row_dc_only: ++ orr a3, a3, a3, lsl #16 ++ bic a3, a3, #0xe000 ++ mov a3, a3, lsl #3 ++ mov a4, a3 ++ strd a3, [a1] ++ strd a3, [a1, #8] ++ ++ ldr pc, [sp], #4 ++ .endfunc ++ ++ .macro idct_col ++ ldr a4, [a1] /* a4 = col[1:0] */ ++ mov ip, #16384 ++ sub ip, ip, #1 /* ip = W4 */ ++#if 0 ++ mov v1, #(1<<(COL_SHIFT-1)) ++ smlabt v2, ip, a4, v1 /* v2 = W4*col[1] + (1<<(COL_SHIFT-1)) */ ++ smlabb v1, ip, a4, v1 /* v1 = W4*col[0] + (1<<(COL_SHIFT-1)) */ ++ ldr a4, [a1, #(16*4)] ++#else ++ mov v1, #((1<<(COL_SHIFT-1))/W4) /* this matches the C version */ ++ add v2, v1, a4, asr #16 ++ rsb v2, v2, v2, lsl #14 ++ mov a4, a4, lsl #16 ++ add v1, v1, a4, asr #16 ++ ldr a4, [a1, #(16*4)] ++ rsb v1, v1, v1, lsl #14 ++#endif ++ ++ smulbb lr, ip, a4 ++ smulbt a3, ip, a4 ++ sub v3, v1, lr ++ sub v5, v1, lr ++ add v7, v1, lr ++ add v1, v1, lr ++ sub v4, v2, a3 ++ sub v6, v2, a3 ++ add fp, v2, a3 ++ ldr ip, [pc, #(w26-.-8)] ++ ldr a4, [a1, #(16*2)] ++ add v2, v2, a3 ++ ++ smulbb lr, ip, a4 ++ smultb a3, ip, a4 ++ add v1, v1, lr ++ sub v7, v7, lr ++ add v3, v3, a3 ++ sub v5, v5, a3 ++ smulbt lr, ip, a4 ++ smultt a3, ip, a4 ++ add v2, v2, lr ++ sub fp, fp, lr ++ add v4, v4, a3 ++ ldr a4, [a1, #(16*6)] ++ sub v6, v6, a3 ++ ++ smultb lr, ip, a4 ++ smulbb a3, ip, a4 ++ add v1, v1, lr ++ sub v7, v7, lr ++ sub v3, v3, a3 ++ add v5, v5, a3 ++ smultt lr, ip, a4 ++ smulbt a3, ip, a4 ++ add v2, v2, lr ++ sub fp, fp, lr ++ sub v4, v4, a3 ++ add v6, v6, a3 ++ ++ stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp} ++ ++ ldr ip, [pc, #(w13-.-8)] ++ ldr a4, [a1, #(16*1)] ++ ldr lr, [pc, #(w57-.-8)] ++ smulbb v1, ip, a4 ++ smultb v3, ip, a4 ++ smulbb v5, lr, a4 ++ smultb v7, lr, a4 ++ smulbt v2, ip, a4 ++ smultt v4, ip, a4 ++ smulbt v6, lr, a4 ++ smultt fp, lr, a4 ++ rsb v4, v4, #0 ++ ldr a4, [a1, #(16*3)] ++ rsb v3, v3, #0 ++ ++ smlatb v1, ip, a4, v1 ++ smlatb v3, lr, a4, v3 ++ smulbb a3, ip, a4 ++ smulbb a2, lr, a4 ++ sub v5, v5, a3 ++ sub v7, v7, a2 ++ smlatt v2, ip, a4, v2 ++ smlatt v4, lr, a4, v4 ++ smulbt a3, ip, a4 ++ smulbt a2, lr, a4 ++ sub v6, v6, a3 ++ ldr a4, [a1, #(16*5)] ++ sub fp, fp, a2 ++ ++ smlabb v1, lr, a4, v1 ++ smlabb v3, ip, a4, v3 ++ smlatb v5, lr, a4, v5 ++ smlatb v7, ip, a4, v7 ++ smlabt v2, lr, a4, v2 ++ smlabt v4, ip, a4, v4 ++ smlatt v6, lr, a4, v6 ++ ldr a3, [a1, #(16*7)] ++ smlatt fp, ip, a4, fp ++ ++ smlatb v1, lr, a3, v1 ++ smlabb v3, lr, a3, v3 ++ smlatb v5, ip, a3, v5 ++ smulbb a4, ip, a3 ++ smlatt v2, lr, a3, v2 ++ sub v7, v7, a4 ++ smlabt v4, lr, a3, v4 ++ smulbt a4, ip, a3 ++ smlatt v6, ip, a3, v6 ++ sub fp, fp, a4 ++ .endm ++ ++ .align ++ .func idct_col_armv5te ++idct_col_armv5te: ++ str lr, [sp, #-4]! ++ ++ idct_col ++ ++ ldmfd sp!, {a3, a4} ++ adds a2, a3, v1 ++ mov a2, a2, lsr #20 ++ orrmi a2, a2, #0xf000 ++ add ip, a4, v2 ++ mov ip, ip, asr #20 ++ orr a2, a2, ip, lsl #16 ++ str a2, [a1] ++ subs a3, a3, v1 ++ mov a2, a3, lsr #20 ++ orrmi a2, a2, #0xf000 ++ sub a4, a4, v2 ++ mov a4, a4, asr #20 ++ orr a2, a2, a4, lsl #16 ++ ldmfd sp!, {a3, a4} ++ str a2, [a1, #(16*7)] ++ ++ subs a2, a3, v3 ++ mov a2, a2, lsr #20 ++ orrmi a2, a2, #0xf000 ++ sub ip, a4, v4 ++ mov ip, ip, asr #20 ++ orr a2, a2, ip, lsl #16 ++ str a2, [a1, #(16*1)] ++ adds a3, a3, v3 ++ mov a2, a3, lsr #20 ++ orrmi a2, a2, #0xf000 ++ add a4, a4, v4 ++ mov a4, a4, asr #20 ++ orr a2, a2, a4, lsl #16 ++ ldmfd sp!, {a3, a4} ++ str a2, [a1, #(16*6)] ++ ++ adds a2, a3, v5 ++ mov a2, a2, lsr #20 ++ orrmi a2, a2, #0xf000 ++ add ip, a4, v6 ++ mov ip, ip, asr #20 ++ orr a2, a2, ip, lsl #16 ++ str a2, [a1, #(16*2)] ++ subs a3, a3, v5 ++ mov a2, a3, lsr #20 ++ orrmi a2, a2, #0xf000 ++ sub a4, a4, v6 ++ mov a4, a4, asr #20 ++ orr a2, a2, a4, lsl #16 ++ ldmfd sp!, {a3, a4} ++ str a2, [a1, #(16*5)] ++ ++ adds a2, a3, v7 ++ mov a2, a2, lsr #20 ++ orrmi a2, a2, #0xf000 ++ add ip, a4, fp ++ mov ip, ip, asr #20 ++ orr a2, a2, ip, lsl #16 ++ str a2, [a1, #(16*3)] ++ subs a3, a3, v7 ++ mov a2, a3, lsr #20 ++ orrmi a2, a2, #0xf000 ++ sub a4, a4, fp ++ mov a4, a4, asr #20 ++ orr a2, a2, a4, lsl #16 ++ str a2, [a1, #(16*4)] ++ ++ ldr pc, [sp], #4 ++ .endfunc ++ ++ .align ++ .func idct_col_put_armv5te ++idct_col_put_armv5te: ++ str lr, [sp, #-4]! ++ ++ idct_col ++ ++ ldmfd sp!, {a3, a4} ++ ldr lr, [sp, #32] ++ add a2, a3, v1 ++ movs a2, a2, asr #20 ++ movmi a2, #0 ++ cmp a2, #255 ++ movgt a2, #255 ++ add ip, a4, v2 ++ movs ip, ip, asr #20 ++ movmi ip, #0 ++ cmp ip, #255 ++ movgt ip, #255 ++ orr a2, a2, ip, lsl #8 ++ sub a3, a3, v1 ++ movs a3, a3, asr #20 ++ movmi a3, #0 ++ cmp a3, #255 ++ movgt a3, #255 ++ sub a4, a4, v2 ++ movs a4, a4, asr #20 ++ movmi a4, #0 ++ cmp a4, #255 ++ ldr v1, [sp, #28] ++ movgt a4, #255 ++ strh a2, [v1] ++ add a2, v1, #2 ++ str a2, [sp, #28] ++ orr a2, a3, a4, lsl #8 ++ rsb v2, lr, lr, lsl #3 ++ ldmfd sp!, {a3, a4} ++ strh a2, [v2, v1]! ++ ++ sub a2, a3, v3 ++ movs a2, a2, asr #20 ++ movmi a2, #0 ++ cmp a2, #255 ++ movgt a2, #255 ++ sub ip, a4, v4 ++ movs ip, ip, asr #20 ++ movmi ip, #0 ++ cmp ip, #255 ++ movgt ip, #255 ++ orr a2, a2, ip, lsl #8 ++ strh a2, [v1, lr]! ++ add a3, a3, v3 ++ movs a2, a3, asr #20 ++ movmi a2, #0 ++ cmp a2, #255 ++ movgt a2, #255 ++ add a4, a4, v4 ++ movs a4, a4, asr #20 ++ movmi a4, #0 ++ cmp a4, #255 ++ movgt a4, #255 ++ orr a2, a2, a4, lsl #8 ++ ldmfd sp!, {a3, a4} ++ strh a2, [v2, -lr]! ++ ++ add a2, a3, v5 ++ movs a2, a2, asr #20 ++ movmi a2, #0 ++ cmp a2, #255 ++ movgt a2, #255 ++ add ip, a4, v6 ++ movs ip, ip, asr #20 ++ movmi ip, #0 ++ cmp ip, #255 ++ movgt ip, #255 ++ orr a2, a2, ip, lsl #8 ++ strh a2, [v1, lr]! ++ sub a3, a3, v5 ++ movs a2, a3, asr #20 ++ movmi a2, #0 ++ cmp a2, #255 ++ movgt a2, #255 ++ sub a4, a4, v6 ++ movs a4, a4, asr #20 ++ movmi a4, #0 ++ cmp a4, #255 ++ movgt a4, #255 ++ orr a2, a2, a4, lsl #8 ++ ldmfd sp!, {a3, a4} ++ strh a2, [v2, -lr]! ++ ++ add a2, a3, v7 ++ movs a2, a2, asr #20 ++ movmi a2, #0 ++ cmp a2, #255 ++ movgt a2, #255 ++ add ip, a4, fp ++ movs ip, ip, asr #20 ++ movmi ip, #0 ++ cmp ip, #255 ++ movgt ip, #255 ++ orr a2, a2, ip, lsl #8 ++ strh a2, [v1, lr] ++ sub a3, a3, v7 ++ movs a2, a3, asr #20 ++ movmi a2, #0 ++ cmp a2, #255 ++ movgt a2, #255 ++ sub a4, a4, fp ++ movs a4, a4, asr #20 ++ movmi a4, #0 ++ cmp a4, #255 ++ movgt a4, #255 ++ orr a2, a2, a4, lsl #8 ++ strh a2, [v2, -lr] ++ ++ ldr pc, [sp], #4 ++ .endfunc ++ ++ .align ++ .func idct_col_add_armv5te ++idct_col_add_armv5te: ++ str lr, [sp, #-4]! ++ ++ idct_col ++ ++ ldr lr, [sp, #36] ++ ++ ldmfd sp!, {a3, a4} ++ ldrh ip, [lr] ++ add a2, a3, v1 ++ mov a2, a2, asr #20 ++ sub a3, a3, v1 ++ and v1, ip, #255 ++ adds a2, a2, v1 ++ movmi a2, #0 ++ cmp a2, #255 ++ movgt a2, #255 ++ add v1, a4, v2 ++ mov v1, v1, asr #20 ++ adds v1, v1, ip, lsr #8 ++ movmi v1, #0 ++ cmp v1, #255 ++ movgt v1, #255 ++ orr a2, a2, v1, lsl #8 ++ ldr v1, [sp, #32] ++ sub a4, a4, v2 ++ rsb v2, v1, v1, lsl #3 ++ ldrh ip, [v2, lr]! ++ strh a2, [lr] ++ mov a3, a3, asr #20 ++ and a2, ip, #255 ++ adds a3, a3, a2 ++ movmi a3, #0 ++ cmp a3, #255 ++ movgt a3, #255 ++ mov a4, a4, asr #20 ++ adds a4, a4, ip, lsr #8 ++ movmi a4, #0 ++ cmp a4, #255 ++ movgt a4, #255 ++ add a2, lr, #2 ++ str a2, [sp, #28] ++ orr a2, a3, a4, lsl #8 ++ strh a2, [v2] ++ ++ ldmfd sp!, {a3, a4} ++ ldrh ip, [lr, v1]! ++ sub a2, a3, v3 ++ mov a2, a2, asr #20 ++ add a3, a3, v3 ++ and v3, ip, #255 ++ adds a2, a2, v3 ++ movmi a2, #0 ++ cmp a2, #255 ++ movgt a2, #255 ++ sub v3, a4, v4 ++ mov v3, v3, asr #20 ++ adds v3, v3, ip, lsr #8 ++ movmi v3, #0 ++ cmp v3, #255 ++ movgt v3, #255 ++ orr a2, a2, v3, lsl #8 ++ add a4, a4, v4 ++ ldrh ip, [v2, -v1]! ++ strh a2, [lr] ++ mov a3, a3, asr #20 ++ and a2, ip, #255 ++ adds a3, a3, a2 ++ movmi a3, #0 ++ cmp a3, #255 ++ movgt a3, #255 ++ mov a4, a4, asr #20 ++ adds a4, a4, ip, lsr #8 ++ movmi a4, #0 ++ cmp a4, #255 ++ movgt a4, #255 ++ orr a2, a3, a4, lsl #8 ++ strh a2, [v2] ++ ++ ldmfd sp!, {a3, a4} ++ ldrh ip, [lr, v1]! ++ add a2, a3, v5 ++ mov a2, a2, asr #20 ++ sub a3, a3, v5 ++ and v3, ip, #255 ++ adds a2, a2, v3 ++ movmi a2, #0 ++ cmp a2, #255 ++ movgt a2, #255 ++ add v3, a4, v6 ++ mov v3, v3, asr #20 ++ adds v3, v3, ip, lsr #8 ++ movmi v3, #0 ++ cmp v3, #255 ++ movgt v3, #255 ++ orr a2, a2, v3, lsl #8 ++ sub a4, a4, v6 ++ ldrh ip, [v2, -v1]! ++ strh a2, [lr] ++ mov a3, a3, asr #20 ++ and a2, ip, #255 ++ adds a3, a3, a2 ++ movmi a3, #0 ++ cmp a3, #255 ++ movgt a3, #255 ++ mov a4, a4, asr #20 ++ adds a4, a4, ip, lsr #8 ++ movmi a4, #0 ++ cmp a4, #255 ++ movgt a4, #255 ++ orr a2, a3, a4, lsl #8 ++ strh a2, [v2] ++ ++ ldmfd sp!, {a3, a4} ++ ldrh ip, [lr, v1]! ++ add a2, a3, v7 ++ mov a2, a2, asr #20 ++ sub a3, a3, v7 ++ and v3, ip, #255 ++ adds a2, a2, v3 ++ movmi a2, #0 ++ cmp a2, #255 ++ movgt a2, #255 ++ add v3, a4, fp ++ mov v3, v3, asr #20 ++ adds v3, v3, ip, lsr #8 ++ movmi v3, #0 ++ cmp v3, #255 ++ movgt v3, #255 ++ orr a2, a2, v3, lsl #8 ++ sub a4, a4, fp ++ ldrh ip, [v2, -v1]! ++ strh a2, [lr] ++ mov a3, a3, asr #20 ++ and a2, ip, #255 ++ adds a3, a3, a2 ++ movmi a3, #0 ++ cmp a3, #255 ++ movgt a3, #255 ++ mov a4, a4, asr #20 ++ adds a4, a4, ip, lsr #8 ++ movmi a4, #0 ++ cmp a4, #255 ++ movgt a4, #255 ++ orr a2, a3, a4, lsl #8 ++ strh a2, [v2] ++ ++ ldr pc, [sp], #4 ++ .endfunc ++ ++ .align ++ .global simple_idct_armv5te ++ .func simple_idct_armv5te ++simple_idct_armv5te: ++ stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, lr} ++ ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ ++ sub a1, a1, #(16*7) ++ ++ bl idct_col_armv5te ++ add a1, a1, #4 ++ bl idct_col_armv5te ++ add a1, a1, #4 ++ bl idct_col_armv5te ++ add a1, a1, #4 ++ bl idct_col_armv5te ++ ++ ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc} ++ .endfunc ++ ++ .align ++ .global simple_idct_add_armv5te ++ .func simple_idct_add_armv5te ++simple_idct_add_armv5te: ++ stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr} ++ ++ mov a1, a3 ++ ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ ++ sub a1, a1, #(16*7) ++ ++ bl idct_col_add_armv5te ++ add a1, a1, #4 ++ bl idct_col_add_armv5te ++ add a1, a1, #4 ++ bl idct_col_add_armv5te ++ add a1, a1, #4 ++ bl idct_col_add_armv5te ++ ++ add sp, sp, #8 ++ ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc} ++ .endfunc ++ ++ .align ++ .global simple_idct_put_armv5te ++ .func simple_idct_put_armv5te ++simple_idct_put_armv5te: ++ stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr} ++ ++ mov a1, a3 ++ ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ add a1, a1, #16 ++ bl idct_row_armv5te ++ ++ sub a1, a1, #(16*7) ++ ++ bl idct_col_put_armv5te ++ add a1, a1, #4 ++ bl idct_col_put_armv5te ++ add a1, a1, #4 ++ bl idct_col_put_armv5te ++ add a1, a1, #4 ++ bl idct_col_put_armv5te ++ ++ add sp, sp, #8 ++ ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc} ++ .endfunc +diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/avcodec.h gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/avcodec.h +--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/avcodec.h 2006-09-20 20:55:36.000000000 +0200 ++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/avcodec.h 2007-05-01 12:23:40.000000000 +0200 +@@ -1217,6 +1217,7 @@ + #define FF_IDCT_IPP 13 + #define FF_IDCT_XVIDMMX 14 + #define FF_IDCT_CAVS 15 ++#define FF_IDCT_SIMPLEARMV5TE 16 + + /** + * slice count. +diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/Makefile.am gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/Makefile.am +--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/Makefile.am 2006-09-22 06:07:23.000000000 +0200 ++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/Makefile.am 2007-05-01 12:23:40.000000000 +0200 +@@ -19,7 +19,10 @@ + if HAVE_IWMMXT + iwmmxt_libs = armv4l/libiwmmxt.la + endif +-armv4l_libs = armv4l/libarmv4l.la $(iwmmxt_libs) ++if HAVE_ARMV5TE ++armv5te_libs = armv4l/libarmv5te.la ++endif ++armv4l_libs = armv4l/libarmv4l.la $(iwmmxt_libs) $(armv5te_libs) + armv4l_dirs = armv4l + endif + diff --git a/recipes/gstreamer/gst-ffmpeg/autotools.patch b/recipes/gstreamer/gst-ffmpeg/autotools.patch new file mode 100644 index 0000000000..76e7ac6486 --- /dev/null +++ b/recipes/gstreamer/gst-ffmpeg/autotools.patch @@ -0,0 +1,21 @@ +Index: gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/configure.ac +=================================================================== +--- gst-ffmpeg-0.10.2.orig/gst-libs/ext/ffmpeg/configure.ac 2008-08-20 00:20:19.177850039 +0200 ++++ gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/configure.ac 2008-08-20 00:26:24.567809464 +0200 +@@ -27,13 +27,15 @@ + + AM_MAINTAINER_MODE + AC_GNU_SOURCE ++ ++AC_PROG_LIBTOOL + AM_PROG_AS + AC_PROG_CC ++AC_PROG_CXX + AC_PROG_INSTALL + AC_SYS_LARGEFILE + AC_STDC_HEADERS + AM_DISABLE_STATIC +-AC_PROG_LIBTOOL + + dnl Warning for anyone using these custom macros. + dnl before asking me questions on why it doesn't work and why you diff --git a/recipes/gstreamer/gst-ffmpeg/lower-rank.diff b/recipes/gstreamer/gst-ffmpeg/lower-rank.diff new file mode 100644 index 0000000000..4e81e379b2 --- /dev/null +++ b/recipes/gstreamer/gst-ffmpeg/lower-rank.diff @@ -0,0 +1,13 @@ +Lower the rank of ffmpeg plugin so codecs that hook into accelerated pieces (e.g. dsp or hw engines) can get picked over this + +--- /tmp/gstffmpegdec.c 2009-03-05 09:31:15.000000000 +0100 ++++ gst-ffmpeg-0.10.6/ext/ffmpeg/gstffmpegdec.c 2009-03-05 09:33:09.000000000 +0100 +@@ -2588,7 +2588,7 @@ + case CODEC_ID_MSMPEG4V3: + case CODEC_ID_H264: + case CODEC_ID_COOK: +- rank = GST_RANK_PRIMARY; ++ rank = GST_RANK_SECONDARY; + break; + case CODEC_ID_DVVIDEO: + /* we have a good dv decoder, fast on both ppc as well as x86. they say diff --git a/recipes/gstreamer/gst-ffmpeg_0.10.2.bb b/recipes/gstreamer/gst-ffmpeg_0.10.2.bb new file mode 100644 index 0000000000..d41a013cba --- /dev/null +++ b/recipes/gstreamer/gst-ffmpeg_0.10.2.bb @@ -0,0 +1,32 @@ +DESCRIPTION = "FFmpeg-based GStreamer plug-in" +SECTION = "multimedia" +PRIORITY = "optional" +LICENSE = "LGPL" +HOMEPAGE = "http://www.gstreamer.net/" +DEPENDS = "gstreamer gst-plugins-base zlib" +PR = "r2" + +inherit autotools pkgconfig + +SRC_URI = "http://gstreamer.freedesktop.org/src/${PN}/${PN}-${PV}.tar.bz2 \ + file://armv5.patch;patch=1 \ + file://autotools.patch;patch=1 \ + " + +FILES_${PN} += "${libdir}/gstreamer-0.10/*.so" +FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug" +FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a" + +EXTRA_OECONF = "--disable-sdltest --disable-ffplay --disable-freetypetest \ + --disable-vorbis --disable-vorbistest --disable-encoders \ + --disable-v4l --disable-audio-oss --disable-dv1394 \ + --disable-vhook --disable-ffmpeg --disable-ffserver \ + --enable-pp --disable-decoder-vorbis" + +# We do this because the install program is called with -s which causes it to +# call "strip" and it then mangles cross compiled stuff.. +PATH_prepend="${CROSS_DIR}/${TARGET_SYS}/bin:" + +# Hack to get STAGING_LIBDIR into the linker path when building ffmpeg +CC = "${CCACHE} ${HOST_PREFIX}gcc ${TARGET_CC_ARCH} -L${STAGING_LIBDIR}" + diff --git a/recipes/gstreamer/gst-ffmpeg_0.10.4.bb b/recipes/gstreamer/gst-ffmpeg_0.10.4.bb new file mode 100644 index 0000000000..c7a2d2e433 --- /dev/null +++ b/recipes/gstreamer/gst-ffmpeg_0.10.4.bb @@ -0,0 +1,31 @@ +DESCRIPTION = "FFmpeg-based GStreamer plug-in" +SECTION = "multimedia" +PRIORITY = "optional" +LICENSE = "LGPL" +HOMEPAGE = "http://www.gstreamer.net/" +DEPENDS = "ffmpeg gstreamer gst-plugins-base zlib" +PR = "r7" + +inherit autotools pkgconfig + +SRC_URI = "http://gstreamer.freedesktop.org/src/${PN}/${PN}-${PV}.tar.bz2 \ + file://configure-hack.diff;patch=1 \ +" + +FILES_${PN} += "${libdir}/gstreamer-0.10/*.so" +FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug" +FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a" + +EXTRA_OECONF = "--disable-sdltest --disable-ffplay --disable-freetypetest \ + --disable-vorbis --disable-vorbistest --disable-encoders \ + --disable-v4l --disable-audio-oss --disable-dv1394 \ + --disable-vhook --with-system-ffmpeg --disable-ffserver \ + --enable-pp --disable-decoder-vorbis" + +# We do this because the install program is called with -s which causes it to +# call "strip" and it then mangles cross compiled stuff.. +PATH_prepend="${CROSS_DIR}/${TARGET_SYS}/bin:" + +# Hack to get STAGING_LIBDIR into the linker path when building ffmpeg +CC = "${CCACHE} ${HOST_PREFIX}gcc ${TARGET_CC_ARCH} -L${STAGING_LIBDIR}" + diff --git a/recipes/gstreamer/gst-ffmpeg_0.10.6.bb b/recipes/gstreamer/gst-ffmpeg_0.10.6.bb new file mode 100644 index 0000000000..20cea128dd --- /dev/null +++ b/recipes/gstreamer/gst-ffmpeg_0.10.6.bb @@ -0,0 +1,32 @@ +DESCRIPTION = "FFmpeg-based GStreamer plug-in" +SECTION = "multimedia" +PRIORITY = "optional" +LICENSE = "LGPL" +HOMEPAGE = "http://www.gstreamer.net/" +DEPENDS = "ffmpeg gstreamer gst-plugins-base zlib" +PR = "r1" + +inherit autotools pkgconfig + +SRC_URI = "http://gstreamer.freedesktop.org/src/${PN}/${PN}-${PV}.tar.bz2 \ + file://configure-hack.diff;patch=1 \ + file://lower-rank.diff;patch=1 \ +" + +FILES_${PN} += "${libdir}/gstreamer-0.10/*.so" +FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug" +FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a" + +EXTRA_OECONF = "--disable-sdltest --disable-ffplay --disable-freetypetest \ + --disable-vorbis --disable-vorbistest --disable-encoders \ + --disable-v4l --disable-audio-oss --disable-dv1394 \ + --disable-vhook --with-system-ffmpeg --disable-ffserver \ + --enable-pp --disable-decoder-vorbis" + +# We do this because the install program is called with -s which causes it to +# call "strip" and it then mangles cross compiled stuff.. +PATH_prepend="${CROSS_DIR}/${TARGET_SYS}/bin:" + +# Hack to get STAGING_LIBDIR into the linker path when building ffmpeg +CC = "${CCACHE} ${HOST_PREFIX}gcc ${TARGET_CC_ARCH} -L${STAGING_LIBDIR}" + diff --git a/recipes/gstreamer/gst-meta-base_0.10.bb b/recipes/gstreamer/gst-meta-base_0.10.bb new file mode 100644 index 0000000000..c54429aca8 --- /dev/null +++ b/recipes/gstreamer/gst-meta-base_0.10.bb @@ -0,0 +1,56 @@ +# Based on its sibling on Poky which is copyright (C) 2006,2007 OpenedHand LTD + +DESCRIPTION = "Gstreamer package groups" +DEPENDS = "gstreamer gst-plugins-base gst-plugins-bad gst-plugins-good \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'gst-plugins-ugly', d)}" + +PR = "r12" + +PACKAGES = "${PN}-dbg \ + gst-meta-base \ + gst-meta-audio \ + gst-meta-debug \ + gst-meta-video" + +ALLOW_EMPTY = "1" + +RDEPENDS_gst-meta-base = "\ + gstreamer \ + gst-plugin-playbin \ + gst-plugin-decodebin \ + gst-plugin-volume \ + gst-plugin-audioconvert \ + gst-plugin-audioresample \ + gst-plugin-typefindfunctions \ + gst-plugin-autodetect" + +RRECOMMENDS_gst-meta-base = "\ + gst-plugin-gnomevfs \ + gst-plugin-alsa \ + gst-plugin-ximagesink \ + gst-plugin-videoscale \ + gst-plugin-videorate \ + gst-plugin-ffmpegcolorspace" + +RDEPENDS_gst-meta-audio = "\ + gst-meta-base \ + gst-plugin-ivorbis \ + gst-plugin-ogg \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'gst-plugin-mad', d)} \ + gst-plugin-id3demux \ + gst-plugin-wavparse" + +RDEPENDS_gst-meta-debug = "\ + gst-meta-base \ + gst-plugin-debug \ + gst-plugin-audiotestsrc \ + gst-plugin-videotestsrc" + +RDEPENDS_gst-meta-video = "\ + gst-meta-base \ + gst-plugin-avi \ + gst-plugin-matroska \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'gst-plugin-mpegstream gst-plugin-mpegaudioparse gst-plugin-mpegvideoparse gst-plugin-mpeg2dec', d)}" + +RRECOMMENDS_gst-meta-video = "\ + gst-meta-audio" diff --git a/recipes/gstreamer/gst-plugin-pulse/dont-overload-pulseaudio.patch b/recipes/gstreamer/gst-plugin-pulse/dont-overload-pulseaudio.patch new file mode 100644 index 0000000000..377a4f9589 --- /dev/null +++ b/recipes/gstreamer/gst-plugin-pulse/dont-overload-pulseaudio.patch @@ -0,0 +1,13 @@ +Index: gst-pulse-0.9.7/src/pulsesink.c +=================================================================== +--- gst-pulse-0.9.7.orig/src/pulsesink.c ++++ gst-pulse-0.9.7/src/pulsesink.c +@@ -477,6 +477,8 @@ static guint gst_pulsesink_write(GstAudi + length -= l; + + sum += l; ++ ++ usleep( 500 ); + } + + pa_threaded_mainloop_unlock(pulsesink->mainloop); diff --git a/recipes/gstreamer/gst-plugin-pulse_0.9.7.bb b/recipes/gstreamer/gst-plugin-pulse_0.9.7.bb new file mode 100644 index 0000000000..cfa200ef3d --- /dev/null +++ b/recipes/gstreamer/gst-plugin-pulse_0.9.7.bb @@ -0,0 +1,29 @@ +DESCRIPTION = "GStreamer plugin for using pulse audio as sink and source" +HOMEPAGE = "http://0pointer.de/lennart/projects/gst-pulse/" +LICENSE = "GPL" +DEPENDS = "gstreamer pulseaudio gst-plugins-base" +PR = "r1" + +SRC_URI = "http://0pointer.de/lennart/projects/gst-pulse/gst-pulse-${PV}.tar.gz \ + file://dont-overload-pulseaudio.patch;patch=1" +S = "${WORKDIR}/gst-pulse-${PV}" + +inherit autotools + +EXTRA_OECONF = "--disable-lynx" +GST_LIBV = 0.10 + +do_install() { + install -d ${D}${libdir}/gstreamer-${GST_LIBV}/ + install -m 0755 src/.libs/libgstpulse.so ${D}${libdir}/gstreamer-${GST_LIBV} +} + +export GST_MODDIR=${libdir}/gstreamer-0.10 + +FILES_${PN} = "${libdir}/gstreamer-0.10/libgstpulse.so" +FILES_${PN}-dev = "\ + ${libdir}/gstreamer-0.10/libgstpulse.a \ + ${libdir}/gstreamer-0.10/libgstpulse.la \ + ${libdir}/gstreamer-0.10/libgstpulse.so*" +FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug" + diff --git a/recipes/gstreamer/gst-plugins-bad/cross-compile.patch b/recipes/gstreamer/gst-plugins-bad/cross-compile.patch new file mode 100644 index 0000000000..cc4d972f3e --- /dev/null +++ b/recipes/gstreamer/gst-plugins-bad/cross-compile.patch @@ -0,0 +1,44 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- gst-plugins-bad-0.10.3/configure.ac~cross-compile ++++ gst-plugins-bad-0.10.3/configure.ac +@@ -398,35 +398,7 @@ + GST_CHECK_FEATURE(FAAD, [AAC decoder plug-in], faad, [ + HAVE_FAAD="yes" + GST_CHECK_LIBHEADER(FAAD, faad, faacDecOpen, -lm, faad.h, +- FAAD_LIBS="-lfaad -lm", HAVE_FAAD="no") +- if test $HAVE_FAAD = "yes"; then +- AC_MSG_CHECKING([Checking for FAAD >= 2]) +- AC_TRY_RUN([ +- +-#include <faad.h> +-#if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE) +-#error Not faad2 +-#else +-#include <string.h> +- +-int main() +-{ +-char version[9] = FAAD2_VERSION; +-// a release candidate of 2.0 is not enought for us +-if ( strstr( version, "2.0 RC" ) ) { return 1; } +- +-return 0; +-} +- +-#endif +- ], [ +- HAVE_FAAD="yes" +- AC_MSG_RESULT(yes) +- ], [ +- HAVE_FAAD="no" +- AC_MSG_RESULT(no) +- ]) +- fi ++ FAAD_LIBS="-lfaad -lm") + AS_SCRUB_INCLUDE(FAAD_CFLAGS) + AC_SUBST(FAAD_LIBS) + ]) diff --git a/recipes/gstreamer/gst-plugins-bad/gst-plugins-directfb-fix.patch b/recipes/gstreamer/gst-plugins-bad/gst-plugins-directfb-fix.patch new file mode 100644 index 0000000000..f8f516bc44 --- /dev/null +++ b/recipes/gstreamer/gst-plugins-bad/gst-plugins-directfb-fix.patch @@ -0,0 +1,32 @@ +--- gst-plugins-bad-0.10.5-r1.orig/gst-plugins-bad-0.10.5/examples/directfb/gstdfb.c 2007-08-24 08:23:23.000000000 +0100 ++++ gst-plugins-bad-0.10.5-r1/gst-plugins-bad-0.10.5/examples/directfb/gstdfb.c 2007-08-24 08:24:28.000000000 +0100 +@@ -35,7 +35,7 @@ + #include <math.h> + #include <time.h> + +-#include <directfb.h> ++#include <directfb/directfb.h> + #include <gst/gst.h> + #include <string.h> + +--- gst-plugins-bad-0.10.5-r1.orig/gst-plugins-bad-0.10.5/ext/directfb/dfb-example.c 2007-08-24 08:23:24.000000000 +0100 ++++ gst-plugins-bad-0.10.5-r1/gst-plugins-bad-0.10.5/ext/directfb/dfb-example.c 2007-08-24 08:24:41.000000000 +0100 +@@ -1,5 +1,5 @@ + +-#include <directfb.h> ++#include <directfb/directfb.h> + #include <gst/gst.h> + + static IDirectFB *dfb = NULL; + +--- gst-plugins-bad-0.10.5-r1.orig/gst-plugins-bad-0.10.5/ext/directfb/dfbvideosink.h 2007-08-24 08:23:24.000000000 +0100 ++++ gst-plugins-bad-0.10.5-r1/gst-plugins-bad-0.10.5/ext/directfb/dfbvideosink.h 2007-08-24 08:24:56.000000000 +0100 +@@ -22,7 +22,7 @@ + + #include <gst/video/gstvideosink.h> + +-#include <directfb.h> ++#include <directfb/directfb.h> + + G_BEGIN_DECLS + diff --git a/recipes/gstreamer/gst-plugins-bad/ivorbis-thumb.patch b/recipes/gstreamer/gst-plugins-bad/ivorbis-thumb.patch new file mode 100644 index 0000000000..c94a788987 --- /dev/null +++ b/recipes/gstreamer/gst-plugins-bad/ivorbis-thumb.patch @@ -0,0 +1,11 @@ +--- bad/ext/ivorbis/vorbisdec.c~ 2008-01-22 09:55:22.000000000 +0000 ++++ bad/ext/ivorbis/vorbisdec.c 2008-10-27 20:12:43.000000000 +0000 +@@ -792,7 +792,7 @@ + } + + /* Taken from Tremor, misc.h */ +-#ifdef _ARM_ASSEM_ ++#if defined(_ARM_ASSEM_) && !defined(__thumb__) + static inline ogg_int32_t + CLIP_TO_15 (ogg_int32_t x) + { diff --git a/recipes/gstreamer/gst-plugins-bad/vorbisdec.h b/recipes/gstreamer/gst-plugins-bad/vorbisdec.h new file mode 100644 index 0000000000..3bc29f22e6 --- /dev/null +++ b/recipes/gstreamer/gst-plugins-bad/vorbisdec.h @@ -0,0 +1,87 @@ +/* -*- c-basic-offset: 2 -*- + * GStreamer + * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu> + * + * Tremor modifications <2006>: + * Chris Lord, OpenedHand Ltd. <chris@openedhand.com>, http://www.o-hand.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#ifndef __GST_IVORBIS_DEC_H__ +#define __GST_IVORBIS_DEC_H__ + + +#include <gst/gst.h> +#include <tremor/ivorbiscodec.h> + +G_BEGIN_DECLS + +#define GST_TYPE_IVORBIS_DEC \ + (gst_ivorbis_dec_get_type()) +#define GST_IVORBIS_DEC(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_IVORBIS_DEC,GstIVorbisDec)) +#define GST_IVORBIS_DEC_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_IVORBIS_DEC,GstIVorbisDecClass)) +#define GST_IS_IVORBIS_DEC(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_IVORBIS_DEC)) +#define GST_IS_IVORBIS_DEC_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_IVORBIS_DEC)) + +typedef struct _GstIVorbisDec GstIVorbisDec; +typedef struct _GstIVorbisDecClass GstIVorbisDecClass; + +/** + * GstIVorbisDec: + * + * Opaque data structure. + */ +struct _GstIVorbisDec { + GstElement element; + + GstPad * sinkpad; + GstPad * srcpad; + + vorbis_dsp_state vd; + vorbis_info vi; + vorbis_comment vc; + vorbis_block vb; + guint64 granulepos; + + gboolean initialized; + + GList *queued; + + GstSegment segment; + gboolean discont; + + GstClockTime cur_timestamp; /* only used with non-ogg container formats */ + GstClockTime prev_timestamp; /* only used with non-ogg container formats */ + + GList *pendingevents; + GstTagList *taglist; +}; + +struct _GstIVorbisDecClass { + GstElementClass parent_class; +}; + +GType gst_ivorbis_dec_get_type(void); + +G_END_DECLS + +#endif /* __GST_IVORBIS_DEC_H__ */ diff --git a/recipes/gstreamer/gst-plugins-bad/vorbisenc.h b/recipes/gstreamer/gst-plugins-bad/vorbisenc.h new file mode 100644 index 0000000000..7170baacd3 --- /dev/null +++ b/recipes/gstreamer/gst-plugins-bad/vorbisenc.h @@ -0,0 +1,101 @@ +/* GStreamer + * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#ifndef __VORBISENC_H__ +#define __VORBISENC_H__ + + +#include <config.h> +#include <gst/gst.h> + +#include <tremor/codec.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define GST_TYPE_VORBISENC \ + (vorbisenc_get_type()) +#define GST_VORBISENC(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VORBISENC,VorbisEnc)) +#define GST_VORBISENC_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_VORBISENC,VorbisEncClass)) +#define GST_IS_VORBISENC(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VORBISENC)) +#define GST_IS_VORBISENC_CLASS(obj) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VORBISENC)) + +typedef struct _VorbisEnc VorbisEnc; +typedef struct _VorbisEncClass VorbisEncClass; + +struct _VorbisEnc { + GstElement element; + + GstPad *sinkpad, + *srcpad; + + ogg_stream_state os; /* take physical pages, weld into a logical + stream of packets */ + ogg_page og; /* one Ogg bitstream page. Vorbis packets are inside */ + ogg_packet op; /* one raw packet of data for decode */ + + vorbis_info vi; /* struct that stores all the static vorbis bitstream + settings */ + vorbis_comment vc; /* struct that stores all the user comments */ + + vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ + vorbis_block vb; /* local working space for packet->PCM decode */ + + gboolean eos; + + gboolean managed; + gint bitrate; + gint min_bitrate; + gint max_bitrate; + gfloat quality; + gboolean quality_set; + gint serial; + + gint channels; + gint frequency; + + guint64 samples_in; + guint64 bytes_out; + + GstCaps *metadata; + + gboolean setup; + gboolean flush_header; + gchar *last_message; +}; + +struct _VorbisEncClass { + GstElementClass parent_class; +}; + +GType vorbisenc_get_type(void); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#endif /* __VORBISENC_H__ */ diff --git a/recipes/gstreamer/gst-plugins-bad_0.10.6.bb b/recipes/gstreamer/gst-plugins-bad_0.10.6.bb new file mode 100644 index 0000000000..df7bf75852 --- /dev/null +++ b/recipes/gstreamer/gst-plugins-bad_0.10.6.bb @@ -0,0 +1,12 @@ +require gst-plugins.inc +PR = "r2" + +SRC_URI += "file://vorbisenc.h file://vorbisdec.h \ + file://gst-plugins-directfb-fix.patch;patch=1;pnum=2 \ + file://ivorbis-thumb.patch;patch=1" +DEPENDS += "gst-plugins-base directfb" + +do_compile_prepend() { + # work around missing files in upstream tarball (upstream bug #454078) + install -m 0644 ${WORKDIR}/vorbis*.h ${S}/ext/ivorbis/ +} diff --git a/recipes/gstreamer/gst-plugins-base_0.10.17.bb b/recipes/gstreamer/gst-plugins-base_0.10.17.bb new file mode 100644 index 0000000000..0a1f17fcd8 --- /dev/null +++ b/recipes/gstreamer/gst-plugins-base_0.10.17.bb @@ -0,0 +1,12 @@ +require gst-plugins.inc + +PROVIDES += "gst-plugins" + +# gst-plugins-base only builds the alsa plugin +# if alsa has been built and is present. You will +# not get an error if this is not present, just +# a missing alsa plugin +DEPENDS += "alsa-lib libsm virtual/libx11 freetype gnome-vfs libxv" + +PR = "r5" + diff --git a/recipes/gstreamer/gst-plugins-base_0.10.22.bb b/recipes/gstreamer/gst-plugins-base_0.10.22.bb new file mode 100644 index 0000000000..92f2f56fa3 --- /dev/null +++ b/recipes/gstreamer/gst-plugins-base_0.10.22.bb @@ -0,0 +1,12 @@ +require gst-plugins.inc + +PROVIDES += "gst-plugins" + +PR = "r1" + +# gst-plugins-base only builds the alsa plugin +# if alsa has been built and is present. You will +# not get an error if this is not present, just +# a missing alsa plugin +DEPENDS += "alsa-lib libsm virtual/libx11 freetype gnome-vfs libxv" + diff --git a/recipes/gstreamer/gst-plugins-good_0.10.13.bb b/recipes/gstreamer/gst-plugins-good_0.10.13.bb new file mode 100644 index 0000000000..b77d1fcf47 --- /dev/null +++ b/recipes/gstreamer/gst-plugins-good_0.10.13.bb @@ -0,0 +1,11 @@ +require gst-plugins.inc + +PR = "r1" + +inherit gconf + +EXTRA_OECONF += " --enable-experimental --enable-gst_v4l2 --enable-gconftool --enable-external --with-check=no" +DEPENDS += "jpeg libtheora gst-plugins-base esound" + +PACKAGES =+ "gst-plugin-gconfelements" +FILES_gst-plugin-gconfelements += "${sysconfdir}/gconf" diff --git a/recipes/gstreamer/gst-plugins-ugly-sid/gstsid_autofoo_HACK.patch b/recipes/gstreamer/gst-plugins-ugly-sid/gstsid_autofoo_HACK.patch new file mode 100644 index 0000000000..963ddde97e --- /dev/null +++ b/recipes/gstreamer/gst-plugins-ugly-sid/gstsid_autofoo_HACK.patch @@ -0,0 +1,107 @@ +Index: gst-plugins-ugly-0.10.7/m4/gst-sid.m4 +=================================================================== +--- gst-plugins-ugly-0.10.7.orig/m4/gst-sid.m4 ++++ gst-plugins-ugly-0.10.7/m4/gst-sid.m4 +@@ -16,14 +16,7 @@ if test $HAVE_SIDPLAY = "yes"; then + + LIBS="-lsidplay" + +- AC_TRY_RUN([ +- #include <sidplay/player.h> +- int main() +- { sidTune tune = sidTune(0); } +- ], +- HAVE_SIDPLAY="yes", +- HAVE_SIDPLAY="no", +- HAVE_SIDPLAY="no") ++ HAVE_SIDPLAY="yes" + + LIBS="$ac_libs_safe" + +Index: gst-plugins-ugly-0.10.7/ext/Makefile.am +=================================================================== +--- gst-plugins-ugly-0.10.7.orig/ext/Makefile.am ++++ gst-plugins-ugly-0.10.7/ext/Makefile.am +@@ -1,67 +1,5 @@ +-if USE_A52DEC +-A52DEC_DIR = a52dec +-else +-A52DEC_DIR = +-endif +- +-if USE_AMRNB +- AMRNB_DIR = amrnb +-else +- AMRNB_DIR = +-endif +- +-if USE_DVDREAD +- DVDREAD_DIR = dvdread +-else +- DVDREAD_DIR = +-endif +- +-if USE_DVDNAV +- DVDNAV_DIR = dvdnav +-else +- DVDNAV_DIR = +-endif +- +-if USE_LAME +-LAME_DIR = lame +-else +-LAME_DIR = +-endif +- +-if USE_MAD +-MAD_DIR = mad +-else +-MAD_DIR = +-endif +- +-if USE_MPEG2DEC +-MPEG2DEC_DIR = mpeg2dec +-else +-MPEG2DEC_DIR = +-endif +- +-if USE_SIDPLAY + SIDPLAY_DIR = sidplay +-else +-SIDPLAY_DIR = +-endif + +-SUBDIRS = \ +- $(A52DEC_DIR) \ +- $(AMRNB_DIR) \ +- $(DVDREAD_DIR) \ +- $(DVDNAV_DIR) \ +- $(LAME_DIR) \ +- $(MAD_DIR) \ +- $(MPEG2DEC_DIR) \ +- $(SIDPLAY_DIR) ++SUBDIRS = sidplay + +-DIST_SUBDIRS = \ +- a52dec \ +- amrnb \ +- dvdnav \ +- dvdread \ +- lame \ +- mad \ +- mpeg2dec \ +- sidplay ++DIST_SUBDIRS = sidplay +Index: gst-plugins-ugly-0.10.7/Makefile.am +=================================================================== +--- gst-plugins-ugly-0.10.7.orig/Makefile.am ++++ gst-plugins-ugly-0.10.7/Makefile.am +@@ -1,7 +1,7 @@ + DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc + + SUBDIRS = \ +- gst-libs gst ext docs m4 tests common po ++ ext docs m4 tests common po + + # include before EXTRA_DIST for win32 assignment + include $(top_srcdir)/common/win32.mak diff --git a/recipes/gstreamer/gst-plugins-ugly-sid_0.10.7.bb b/recipes/gstreamer/gst-plugins-ugly-sid_0.10.7.bb new file mode 100644 index 0000000000..77c4184c29 --- /dev/null +++ b/recipes/gstreamer/gst-plugins-ugly-sid_0.10.7.bb @@ -0,0 +1,17 @@ +require gst-plugins.inc +DEPENDS += "gst-plugins-base libsidplay" +PROVIDES += "gst-plugin-sid" +PR = "r5" + +SRC_URI = "\ + http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.bz2 \ + file://gstsid_autofoo_HACK.patch;patch=1 \ +" +S = "${WORKDIR}/gst-plugins-ugly-${PV}" + +python() { + # Don't build, if we are building an ENTERPRISE distro + enterprise = bb.data.getVar("ENTERPRISE_DISTRO", d, 1) + if enterprise != "1": + raise bb.parse.SkipPackage("gst-plugins-ugly-sid will only build if ENTERPRISE_DISTRO == 1") +} diff --git a/recipes/gstreamer/gst-plugins-ugly/gstmad_16bit.patch b/recipes/gstreamer/gst-plugins-ugly/gstmad_16bit.patch new file mode 100644 index 0000000000..c766a5b916 --- /dev/null +++ b/recipes/gstreamer/gst-plugins-ugly/gstmad_16bit.patch @@ -0,0 +1,110 @@ +diff -urN gst-plugins-ugly-0.10.10.orig/ext/mad/gstmad.c gst-plugins-ugly-0.10.10/ext/mad/gstmad.c +--- gst-plugins-ugly-0.10.10.orig/ext/mad/gstmad.c 2008-11-08 15:48:46.000000000 +0100 ++++ gst-plugins-ugly-0.10.10/ext/mad/gstmad.c 2009-02-20 02:24:20.000000000 +0100 +@@ -65,8 +65,8 @@ + GST_STATIC_CAPS ("audio/x-raw-int, " + "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", " + "signed = (boolean) true, " +- "width = (int) 32, " +- "depth = (int) 32, " ++ "width = (int) 16, " ++ "depth = (int) 16, " + "rate = (int) { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, " + "channels = (int) [ 1, 2 ]") + ); +@@ -407,7 +407,7 @@ + + mad = GST_MAD (GST_PAD_PARENT (pad)); + +- bytes_per_sample = mad->channels * 4; ++ bytes_per_sample = mad->channels << 1; + + switch (src_format) { + case GST_FORMAT_BYTES: +@@ -832,13 +832,11 @@ + return res; + } + +-static inline gint32 ++static inline gint16 + scale (mad_fixed_t sample) + { +-#if MAD_F_FRACBITS < 28 + /* round */ +- sample += (1L << (28 - MAD_F_FRACBITS - 1)); +-#endif ++ sample += (1L << (MAD_F_FRACBITS - 16)); + + /* clip */ + if (sample >= MAD_F_ONE) +@@ -846,13 +844,8 @@ + else if (sample < -MAD_F_ONE) + sample = -MAD_F_ONE; + +-#if MAD_F_FRACBITS < 28 + /* quantize */ +- sample >>= (28 - MAD_F_FRACBITS); +-#endif +- +- /* convert from 29 bits to 32 bits */ +- return (gint32) (sample << 3); ++ return sample >> (MAD_F_FRACBITS + 1 - 16); + } + + /* do we need this function? */ +@@ -1263,8 +1256,8 @@ + caps = gst_caps_new_simple ("audio/x-raw-int", + "endianness", G_TYPE_INT, G_BYTE_ORDER, + "signed", G_TYPE_BOOLEAN, TRUE, +- "width", G_TYPE_INT, 32, +- "depth", G_TYPE_INT, 32, ++ "width", G_TYPE_INT, 16, ++ "depth", G_TYPE_INT, 16, + "rate", G_TYPE_INT, rate, "channels", G_TYPE_INT, nchannels, NULL); + + gst_pad_set_caps (mad->srcpad, caps); +@@ -1581,7 +1574,7 @@ + to skip and send the remaining pcm samples */ + + GstBuffer *outbuffer = NULL; +- gint32 *outdata; ++ gint16 *outdata; + mad_fixed_t const *left_ch, *right_ch; + + if (mad->need_newsegment) { +@@ -1612,7 +1605,7 @@ + /* will attach the caps to the buffer */ + result = + gst_pad_alloc_buffer_and_set_caps (mad->srcpad, 0, +- nsamples * mad->channels * 4, GST_PAD_CAPS (mad->srcpad), ++ nsamples * mad->channels * 2, GST_PAD_CAPS (mad->srcpad), + &outbuffer); + if (result != GST_FLOW_OK) { + /* Head for the exit, dropping samples as we go */ +@@ -1625,7 +1618,7 @@ + left_ch = mad->synth.pcm.samples[0]; + right_ch = mad->synth.pcm.samples[1]; + +- outdata = (gint32 *) GST_BUFFER_DATA (outbuffer); ++ outdata = (gint16 *) GST_BUFFER_DATA (outbuffer); + + GST_DEBUG ("mad out timestamp %" GST_TIME_FORMAT, + GST_TIME_ARGS (time_offset)); +@@ -1640,14 +1633,14 @@ + gint count = nsamples; + + while (count--) { +- *outdata++ = scale (*left_ch++) & 0xffffffff; ++ *outdata++ = scale (*left_ch++) & 0xffff; + } + } else { + gint count = nsamples; + + while (count--) { +- *outdata++ = scale (*left_ch++) & 0xffffffff; +- *outdata++ = scale (*right_ch++) & 0xffffffff; ++ *outdata++ = scale (*left_ch++) & 0xffff; ++ *outdata++ = scale (*right_ch++) & 0xffff; + } + } + diff --git a/recipes/gstreamer/gst-plugins-ugly/gstsid_autofoo_HACK.patch b/recipes/gstreamer/gst-plugins-ugly/gstsid_autofoo_HACK.patch new file mode 100644 index 0000000000..79a03741ac --- /dev/null +++ b/recipes/gstreamer/gst-plugins-ugly/gstsid_autofoo_HACK.patch @@ -0,0 +1,20 @@ +Index: gst-plugins-ugly-0.10.6/m4/gst-sid.m4 +=================================================================== +--- gst-plugins-ugly-0.10.6.orig/m4/gst-sid.m4 ++++ gst-plugins-ugly-0.10.6/m4/gst-sid.m4 +@@ -16,14 +16,7 @@ if test $HAVE_SIDPLAY = "yes"; then + + LIBS="-lsidplay" + +- AC_TRY_RUN([ +- #include <sidplay/player.h> +- int main() +- { sidTune tune = sidTune(0); } +- ], +- HAVE_SIDPLAY="yes", +- HAVE_SIDPLAY="no", +- HAVE_SIDPLAY="no") ++ HAVE_SIDPLAY="yes" + + LIBS="$ac_libs_safe" + diff --git a/recipes/gstreamer/gst-plugins-ugly_0.10.10.bb b/recipes/gstreamer/gst-plugins-ugly_0.10.10.bb new file mode 100644 index 0000000000..0678e229f8 --- /dev/null +++ b/recipes/gstreamer/gst-plugins-ugly_0.10.10.bb @@ -0,0 +1,18 @@ +require gst-plugins.inc + +PR = "r1" + +DEPENDS += "gst-plugins-base mpeg2dec libsidplay" + +SRC_URI += "\ + file://gstmad_16bit.patch;patch=1 \ + file://gstsid_autofoo_HACK.patch;patch=1 \ +" + +python() { + # Don't build, if we are building an ENTERPRISE distro + enterprise = bb.data.getVar("ENTERPRISE_DISTRO", d, 1) + if enterprise == "1": + raise bb.parse.SkipPackage("gst-plugins-ugly will only build if ENTERPRISE_DISTRO != 1") +} + diff --git a/recipes/gstreamer/gst-plugins.inc b/recipes/gstreamer/gst-plugins.inc new file mode 100644 index 0000000000..3bf29ad3e9 --- /dev/null +++ b/recipes/gstreamer/gst-plugins.inc @@ -0,0 +1,53 @@ +require gst-common.inc +DESCRIPTION = "Plugins for GStreamer" +DEPENDS = "gstreamer libmikmod liboil libogg tremor libvorbis" +DEPENDS += "${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad libid3tag', d)}" + +PACKAGES_DYNAMIC = "gst-plugin-*" + +SRC_URI = "http://gstreamer.freedesktop.org/src/${PN}/${PN}-${PV}.tar.bz2" + +EXTRA_OECONF = "--disable-aalib --disable-shout2 --disable-sdl --disable-cdaudio --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR} " + +acpaths = "-I ${S}/common/m4 -I ${S}/m4" + +OE_LT_RPATH_ALLOW = "any" +OE_LT_RPATH_ALLOW[export]="1" + +LIBV = "0.10" + +python populate_packages_prepend () { + gst_libdir = bb.data.expand('${libdir}/gstreamer-${LIBV}', d) + postinst = bb.data.getVar('plugin_postinst', d, 1) + glibdir = bb.data.expand('${libdir}', d) + + do_split_packages(d, glibdir, '^lib(.*)\.so\.*', 'lib%s', 'gstreamer %s library', extra_depends='', allow_links=True) + do_split_packages(d, gst_libdir, '^libgst(.*)\.so$', 'gst-plugin-%s', 'GStreamer plugin for %s', postinst=postinst, extra_depends='') + do_split_packages(d, gst_libdir, '^libgst(.*)\.l?a$', 'gst-plugin-%s-dev', 'GStreamer plugin for %s (development files)', extra_depends='') + + pn = bb.data.getVar('PN', d, 1) + metapkg = pn + '-meta' + bb.data.setVar('ALLOW_EMPTY_' + metapkg, "1", d) + bb.data.setVar('FILES_' + metapkg, "", d) + blacklist = [ pn + '-locale', pn + '-dev', pn + '-dbg', pn + '-doc' ] + metapkg_rdepends = [] + packages = bb.data.getVar('PACKAGES', d, 1).split() + for pkg in packages[1:]: + if not pkg in blacklist and not pkg in metapkg_rdepends and not pkg.count('dev') and not pkg.count( 'locale' ): + metapkg_rdepends.append(pkg) + bb.data.setVar('RDEPENDS_' + metapkg, ' '.join(metapkg_rdepends), d) + bb.data.setVar('DESCRIPTION_' + metapkg, pn + ' meta package', d) + packages.append(metapkg) + bb.data.setVar('PACKAGES', ' '.join(packages), d) + +} + +ALLOW_EMPTY = "1" + +PACKAGES += "${PN}-apps" +FILES_${PN}-apps = "${bindir}" + +FILES_${PN} = "" +FILES_${PN}-dbg += "${libdir}/gstreamer-${LIBV}/.debug" + + diff --git a/recipes/gstreamer/gstreamer.inc b/recipes/gstreamer/gstreamer.inc new file mode 100644 index 0000000000..87a6f82135 --- /dev/null +++ b/recipes/gstreamer/gstreamer.inc @@ -0,0 +1,14 @@ +require gst-common.inc + +DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \ +It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime." + +DEPENDS = "libxml2 glib-2.0 gettext-native popt" + +SRC_URI = "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.bz2" +EXTRA_OECONF = "--disable-docs-build --disable-dependency-tracking --with-check=no" + +FILES_${PN} += " ${libdir}/gstreamer-0.10/*.so" +FILES_${PN}-dev += " ${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a" +FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug" + diff --git a/recipes/gstreamer/gstreamer/configure-largefile.patch b/recipes/gstreamer/gstreamer/configure-largefile.patch new file mode 100644 index 0000000000..6ea1ef3dba --- /dev/null +++ b/recipes/gstreamer/gstreamer/configure-largefile.patch @@ -0,0 +1,13 @@ +--- configure.ac~ 2004-06-03 12:37:47.000000000 +0100 ++++ configure.ac 2004-06-04 13:31:02.000000000 +0100 +@@ -172,6 +172,10 @@ + ], + [ + AC_MSG_RESULT(no) ++], ++[ ++ AC_MSG_RESULT(cross-compiling, assumed yes) ++ GST_PKG_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" + ]) + + dnl check for mmap diff --git a/recipes/gstreamer/gstreamer/filesrc-uri.patch b/recipes/gstreamer/gstreamer/filesrc-uri.patch new file mode 100644 index 0000000000..0bde73d970 --- /dev/null +++ b/recipes/gstreamer/gstreamer/filesrc-uri.patch @@ -0,0 +1,22 @@ +Index: gst/elements/gstfilesrc.c +=================================================================== +RCS file: /cvs/gstreamer/gstreamer/gst/elements/gstfilesrc.c,v +retrieving revision 1.108.4.3 +diff -u -r1.108.4.3 gstfilesrc.c +--- gstreamer.orig/gst/elements/gstfilesrc.c 3 Jun 2005 09:29:31 -0000 1.108.4.3 ++++ gstreamer/gst/elements/gstfilesrc.c 12 Aug 2005 11:54:38 -0000 +@@ -306,7 +306,13 @@ + src->filename = NULL; + src->uri = NULL; + } else { +- src->filename = g_strdup (location); ++ const gchar *file_prefix = "file://"; ++ ++ if (g_str_has_prefix (location, file_prefix)) { ++ src->filename = g_strdup (location + strlen (file_prefix)); ++ } else { ++ src->filename = g_strdup (location); ++ } + src->uri = gst_uri_construct ("file", src->filename); + } + g_object_notify (G_OBJECT (src), "location"); diff --git a/recipes/gstreamer/gstreamer/gstreamer.xsession b/recipes/gstreamer/gstreamer/gstreamer.xsession new file mode 100644 index 0000000000..a260a8d142 --- /dev/null +++ b/recipes/gstreamer/gstreamer/gstreamer.xsession @@ -0,0 +1,4 @@ +#!/bin/sh + +gst-register + diff --git a/recipes/gstreamer/gstreamer/po-makefile-fix.patch b/recipes/gstreamer/gstreamer/po-makefile-fix.patch new file mode 100644 index 0000000000..1cf665e2db --- /dev/null +++ b/recipes/gstreamer/gstreamer/po-makefile-fix.patch @@ -0,0 +1,12 @@ +diff -urN gstreamer-0.10.17.orig/po/Makefile.in.in gstreamer-0.10.17/po/Makefile.in.in +--- gstreamer-0.10.17.orig/po/Makefile.in.in 2008-01-25 16:21:31.000000000 +0100 ++++ gstreamer-0.10.17/po/Makefile.in.in 2008-09-08 14:41:21.000000000 +0200 +@@ -30,7 +30,7 @@ + INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + MKINSTALLDIRS = @MKINSTALLDIRS@ +-mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs + + GMSGFMT = @GMSGFMT@ + MSGFMT = @MSGFMT@ diff --git a/recipes/gstreamer/gstreamer/registry-do-not-look-into-debug-dirs.patch b/recipes/gstreamer/gstreamer/registry-do-not-look-into-debug-dirs.patch new file mode 100644 index 0000000000..6733e6be06 --- /dev/null +++ b/recipes/gstreamer/gstreamer/registry-do-not-look-into-debug-dirs.patch @@ -0,0 +1,39 @@ +Work around a glibc 2.6.1 bug with dlopen. We try to dlopen a .so file that +only contains debug symbols (e.g. no architecture is set in the elf header) + + +#0 0x4000a88c in _dl_relocate_object () from /lib/ld-linux.so.3 +(gdb) bt +#0 0x4000a88c in _dl_relocate_object () from /lib/ld-linux.so.3 +#1 0x40011f68 in dl_open_worker () from /lib/ld-linux.so.3 +#2 0x4000d7e4 in _dl_catch_error () from /lib/ld-linux.so.3 +#3 0x400117d8 in _dl_open () from /lib/ld-linux.so.3 +#4 0x402fba84 in dlopen_doit () from /lib/libdl.so.2 +#5 0x4000d7e4 in _dl_catch_error () from /lib/ld-linux.so.3 +#6 0x402fbf50 in _dlerror_run () from /lib/libdl.so.2 +#7 0x402fb9bc in dlopen@@GLIBC_2.4 () from /lib/libdl.so.2 +#8 0x402f2790 in g_module_open () from /usr/lib/libgmodule-2.0.so.0 +#9 0x40078784 in gst_plugin_load_file ( + filename=0x10a6c8 "/usr/lib/gstreamer-0.10/.debug/libgstcoreindexers.so", + error=0x0) at gstplugin.c:481 +#10 0x4007e3c4 in gst_registry_scan_path_level (registry=0x27828, + path=0x10a6a0 "/usr/lib/gstreamer-0.10/.debug", level=1) at gstregistry.c:891 +#11 0x4007df04 in gst_registry_scan_path_level (registry=0x27828, + + +Index: gstreamer-0.10.17/gst/gstregistry.c +=================================================================== +--- gstreamer-0.10.17.orig/gst/gstregistry.c 2008-11-14 23:30:48.000000000 +0100 ++++ gstreamer-0.10.17/gst/gstregistry.c 2008-11-14 23:32:39.000000000 +0100 +@@ -813,7 +813,10 @@ + GST_LOG_OBJECT (registry, "examining file: %s", filename); + + if (g_file_test (filename, G_FILE_TEST_IS_DIR)) { +- if (level > 0) { ++ if (g_str_has_suffix (filename, ".debug")) { ++ GST_LOG_OBJECT (registry, ++ "found directory, not descending into .debug directory"); ++ } else if (level > 0) { + GST_LOG_OBJECT (registry, "found directory, recursing"); + changed |= gst_registry_scan_path_level (registry, filename, level - 1); + } else { diff --git a/recipes/gstreamer/gstreamer_0.10.17.bb b/recipes/gstreamer/gstreamer_0.10.17.bb new file mode 100644 index 0000000000..4087e8e1d0 --- /dev/null +++ b/recipes/gstreamer/gstreamer_0.10.17.bb @@ -0,0 +1,7 @@ +require gstreamer.inc + +PR = "r4" + +SRC_URI += "file://po-makefile-fix.patch;patch=1 \ + file://registry-do-not-look-into-debug-dirs.patch;patch=1 " + diff --git a/recipes/gstreamer/gstreamer_0.10.22.bb b/recipes/gstreamer/gstreamer_0.10.22.bb new file mode 100644 index 0000000000..906aa239ac --- /dev/null +++ b/recipes/gstreamer/gstreamer_0.10.22.bb @@ -0,0 +1,6 @@ +require gstreamer.inc + +do_configure_prepend() { + sed -i -e s:docs::g Makefile.am +} + |