diff options
Diffstat (limited to 'recipes/mythtv')
-rw-r--r-- | recipes/mythtv/mythtv-0.18.1/msmpeg-underscore-pic.patch | 85 | ||||
-rw-r--r-- | recipes/mythtv/mythtv-0.20/configure.patch | 90 | ||||
-rw-r--r-- | recipes/mythtv/mythtv-0.20/libmyth-libdir.patch | 11 | ||||
-rw-r--r-- | recipes/mythtv/mythtv-0.21/configure.patch | 183 | ||||
-rw-r--r-- | recipes/mythtv/mythtv-0.21/ffmpeg-arm-update.diff | 1669 | ||||
-rw-r--r-- | recipes/mythtv/mythtv-0.21/no-cortex-deadlock.patch | 115 | ||||
-rw-r--r-- | recipes/mythtv/mythtv_0.18.1.bb | 50 | ||||
-rw-r--r-- | recipes/mythtv/mythtv_0.20.bb | 73 | ||||
-rw-r--r-- | recipes/mythtv/mythtv_0.21.bb | 108 |
9 files changed, 0 insertions, 2384 deletions
diff --git a/recipes/mythtv/mythtv-0.18.1/msmpeg-underscore-pic.patch b/recipes/mythtv/mythtv-0.18.1/msmpeg-underscore-pic.patch deleted file mode 100644 index a73ca9950e..0000000000 --- a/recipes/mythtv/mythtv-0.18.1/msmpeg-underscore-pic.patch +++ /dev/null @@ -1,85 +0,0 @@ ---- mythtv-0.18.1/libs/libavcodec/msmpeg4.c.old 2005-06-03 21:31:43.000000000 +0100 -+++ mythtv-0.18.1/libs/libavcodec/msmpeg4.c 2005-06-03 21:31:51.000000000 +0100 -@@ -723,7 +723,7 @@ - necessitate to modify mpegvideo.c. The problem comes from the - fact they decided to store the quantized DC (which would lead - to problems if Q could vary !) */ --#if (defined(ARCH_X86) || defined(ARCH_X86_64)) && !defined PIC -+#if (defined(ARCH_X86) || defined(ARCH_X86_64)) && !defined __PIC__ - asm volatile( - "movl %3, %%eax \n\t" - "shrl $1, %%eax \n\t" ---- mythtv-0.18.1/libs/libavcodec/i386/dsputil_mmx_avg.h.old 2005-06-03 21:38:57.000000000 +0100 -+++ mythtv-0.18.1/libs/libavcodec/i386/dsputil_mmx_avg.h 2005-06-03 21:39:02.000000000 +0100 -@@ -90,7 +90,7 @@ - "add $16, %2 \n\t" - "subl $4, %0 \n\t" - "jnz 1b \n\t" --#ifdef PIC //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used -+#ifdef __PIC__ //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used - :"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst) - #else - :"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst) -@@ -137,7 +137,7 @@ - "add $32, %2 \n\t" - "subl $4, %0 \n\t" - "jnz 1b \n\t" --#ifdef PIC //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used -+#ifdef __PIC__ //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used - :"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst) - #else - :"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst) -@@ -207,7 +207,7 @@ - "add $32, %2 \n\t" - "subl $4, %0 \n\t" - "jnz 1b \n\t" --#ifdef PIC //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used -+#ifdef __PIC__ //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used - :"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst) - #else - :"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst) -@@ -262,7 +262,7 @@ - "add $16, %2 \n\t" - "subl $4, %0 \n\t" - "jnz 1b \n\t" --#ifdef PIC //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used -+#ifdef __PIC__ //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used - :"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst) - #else - :"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst) -@@ -314,7 +314,7 @@ - "add $32, %2 \n\t" - "subl $4, %0 \n\t" - "jnz 1b \n\t" --#ifdef PIC //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used -+#ifdef __PIC__ //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used - :"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst) - #else - :"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst) -@@ -402,7 +402,7 @@ - "add $32, %2 \n\t" - "subl $2, %0 \n\t" - "jnz 1b \n\t" --#ifdef PIC //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used -+#ifdef __PIC__ //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used - :"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst) - #else - :"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst) -@@ -456,7 +456,7 @@ - "add $32, %2 \n\t" - "subl $2, %0 \n\t" - "jnz 1b \n\t" --#ifdef PIC //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used -+#ifdef __PIC__ //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used - :"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst) - #else - :"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst) -@@ -529,7 +529,7 @@ - "add $32, %2 \n\t" - "subl $2, %0 \n\t" - "jnz 1b \n\t" --#ifdef PIC //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used -+#ifdef __PIC__ //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used - :"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst) - #else - :"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst) diff --git a/recipes/mythtv/mythtv-0.20/configure.patch b/recipes/mythtv/mythtv-0.20/configure.patch deleted file mode 100644 index 03281eb7e5..0000000000 --- a/recipes/mythtv/mythtv-0.20/configure.patch +++ /dev/null @@ -1,90 +0,0 @@ ---- mythtv-0.20/configure 2006-08-28 17:18:08.000000000 +0100 -+++ mythtv-0.20/configure 2007-01-16 14:42:18.000000000 +0000 -@@ -1225,49 +1225,50 @@ - - has_library() - { -- if test -f /etc/ld.so.conf ; then -- LIBPATHS=`cat /etc/ld.so.conf | grep -v "#" | grep -v "include"` -+ lib=`echo $1 | sed 's/^lib//'` -+ tmpfile=/tmp/conftest.$$ -+ rm -f $tmpfile $tmpfile.c -+ cat >$tmpfile.c <<EOF -+int main() { return 0; } -+EOF -+ echo "cc=$cc $LDFLAGS" -+ echo -n "checking for lib$lib... " -+ if $cc $LDFLAGS -o $tmpfile $tmpfile.c -l$lib; then -+ echo "yes" -+ result=0 - else -- LIBPATHS='' -+ echo "no" -+ result=1 - fi -- LIBPATHS="$LIBPATHS `echo $LD_LIBRARY_PATH | sed s/':'/' '/g` " -- # Mac OS X has a different variable for this: -- LIBPATHS="$LIBPATHS `echo $DYLD_LIBRARY_PATH | sed s/':'/' '/g` " -- -- # recurse down just one level, should be enough in most cases -- if test -f /etc/ld.so.conf ; then -- INCL=`cat /etc/ld.so.conf | grep -v "#" | grep "^include"` -- SRCH=`echo "$INCL" | sed '{ s/^include \//\//; s/^include /\/etc\//}'` -- for x in $SRCH ; do -- LP_APPEND=`cat $x | grep -v "#" | grep -v "^include"` -- LIBPATHS="$LIBPATHS $LP_APPEND" -- done -- fi -- -- LIBPATHS="`echo $LIBPATHS /$libdir_name /usr/$libdir_name /usr/local/$libdir_name /usr/X11R6/$libdir_name | sed s/'\/ '/' '/g` " -- -- HAS_IT="no" -- for LIBPATH in $LIBPATHS ; do -- if test x`ls $LIBPATH/$1* 2> /dev/null | head -n 1` != x"" ; then -- HAS_IT="yes" -- fi -- done -- expr $HAS_IT : "yes" > /dev/null -+ rm -f $tmpfile $tmpfile.c -+ return $result - } - - has_header() - { -- HPATHS="/usr/local/include /usr/include /usr/include/g++-v3 /usr/X11R6/include" -- INCL=`echo $DYLD_LIBRARY_PATH $LD_LIBRARY_PATH | sed s/':'/' '/g` -- HPATHS="$HPATHS `echo $INCL | sed s/$libdir_name/include/g` " -- -- HAS_IT="no" -- for HPATH in $HPATHS ; do -- if test x`ls $HPATH/$1* 2> /dev/null | head -n 1` != x"" ; then -- HAS_IT="yes" -- fi -- done -- expr $HAS_IT : "yes" > /dev/null -+ header=$1 -+ tmpfile=/tmp/conftest.$$ -+ rm -f $tmpfile.o $tmpfile.c -+ case $header in -+ X11/*) extra_incs="#include <X11/Xlib.h>" ;; -+ *) extra_incs="" ;; -+ esac -+ cat >$tmpfile.c <<EOF -+$extra_incs -+#include <$header> -+int main() { return 0; } -+EOF -+ echo "cc=$cc $CPPFLAGS $CFLAGS" -+ echo -n "checking for <$header>... " -+ if $cc $CPPFLAGS $CFLAGS -c -o $tmpfile.o $tmpfile.c; then -+ echo "yes" -+ result=0 -+ else -+ echo "no" -+ result=1 -+ fi -+ rm -f $tmpfile.o $tmpfile.c -+ return $result - } - - CCONFIG="$CCONFIG $compile_type" diff --git a/recipes/mythtv/mythtv-0.20/libmyth-libdir.patch b/recipes/mythtv/mythtv-0.20/libmyth-libdir.patch deleted file mode 100644 index 0ecfddcb53..0000000000 --- a/recipes/mythtv/mythtv-0.20/libmyth-libdir.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- mythtv-0.20/libs/libmyth/libmyth.pro 2006-08-20 07:45:34.000000000 +0100 -+++ mythtv-0.20/libs/libmyth/libmyth.pro 2007-01-16 14:54:59.000000000 +0000 -@@ -33,6 +33,8 @@ - SOURCES += DisplayResScreen.cpp util-x11.cpp qmdcodec.cpp - SOURCES += virtualkeyboard.cpp mythobservable.cpp mythsocket.cpp - -+DEFINES += LIBDIR=\"$${LIBDIR}\" -+ - INCLUDEPATH += ../libmythsamplerate ../libmythsoundtouch ../.. ../ - DEPENDPATH += ../libmythsamplerate ../libmythsoundtouch ../ ../libmythui - diff --git a/recipes/mythtv/mythtv-0.21/configure.patch b/recipes/mythtv/mythtv-0.21/configure.patch deleted file mode 100644 index 3b0b9a313a..0000000000 --- a/recipes/mythtv/mythtv-0.21/configure.patch +++ /dev/null @@ -1,183 +0,0 @@ ---- /tmp/configure 2008-06-30 08:40:35.000000000 +0200 -+++ mythtv/configure 2008-07-23 09:51:41.000000000 +0200 -@@ -475,12 +475,13 @@ - } - - check_cmd(){ -- log "$@" -+ echo "Checking $@" -+ log "$@" - "$@" >>$logfile 2>&1 - } - - check_cc(){ -- log check_cc "$@" -+ log check_cc "$@" - cat >$TMPC - log_file $TMPC - check_cmd $cc $CFLAGS $ECFLAGS $OPTFLAGS "$@" -c -o $TMPO $TMPC -@@ -1115,11 +1116,11 @@ - fi - - # machine --arch=`uname -m` -+disabled cross_compile && arch=`uname -m` - arch_raw="$arch" - cpu="generic" - cpu_override="no" --processor=`uname -p 2>/dev/null` -+disabled cross_compile && processor=`uname -p 2>/dev/null` - processor_flags="" - tune="generic" - -@@ -1183,7 +1184,7 @@ - lamemp3="yes" - lirc="yes" - mac_bundle="no" --opengl="yes" -+opengl="no" - v4l="yes" - x11="yes" - x11_include_path="/usr/X11R6/include" -@@ -1212,7 +1213,7 @@ - # build settings - SHFLAGS='-shared -Wl,-soname,$@' - VHOOKSHFLAGS='$(SHFLAGS)' --LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' -+#LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' - FFSERVERLDFLAGS=-Wl,-E - LDCONFIG="ldconfig" - LIBPREF="lib" -@@ -1707,7 +1708,7 @@ - - has_library() - { -- if test -f /etc/ld.so.conf ; then -+ if test -f /etc/ld.so.conf && disabled cross_compile ; then - LIBPATHS=`cat /etc/ld.so.conf | grep -v "#" | grep -v "include"` - else - LIBPATHS='' -@@ -1718,7 +1719,7 @@ - LIBPATHS="$LIBPATHS `echo $DYLD_LIBRARY_PATH | sed s/':'/' '/g` " - - # recurse down just one level, should be enough in most cases -- if test -f /etc/ld.so.conf ; then -+ if test -f /etc/ld.so.conf && disabled cross_compile ; then - INCL=`cat /etc/ld.so.conf | grep -v "#" | grep "^include"` - SRCH=`echo "$INCL" | sed '{ s/^include \//\//; s/^include /\/etc\//}'` - for x in $SRCH ; do -@@ -1727,9 +1728,9 @@ - done - fi - -- LIBPATHS="`echo $LIBPATHS /$libdir_name /usr/$libdir_name /usr/local/$libdir_name /usr/X11R6/$libdir_name | sed s/'\/ '/' '/g` " -+ enabled cross_compile || LIBPATHS="`echo $LIBPATHS /$libdir_name /usr/$libdir_name /usr/local/$libdir_name /usr/X11R6/$libdir_name | sed s/'\/ '/' '/g` " - -- HAS_IT="no" -+ HAS_IT="yes" - for LIBPATH in $LIBPATHS ; do - if test x`ls $LIBPATH/$1* 2> /dev/null | head -n 1` != x"" ; then - echo "$1 IS at $LIBPATH" -@@ -1745,17 +1746,18 @@ - - has_header() - { -- HPATHS="/usr/local/include /usr/include /usr/include/g++-v3 /usr/X11R6/include" -+ enabled cross_compile || HPATHS="/usr/local/include /usr/include /usr/include/g++-v3 /usr/X11R6/include" - INCL=`echo $DYLD_LIBRARY_PATH $LD_LIBRARY_PATH | sed s/':'/' '/g` - HPATHS="$HPATHS "$(echo $INCL | sed "s/$libdir_name/include/g") - -- HAS_IT="no" -+ HAS_IT="yes" - for HPATH in $HPATHS ; do - if test x`ls $HPATH/$1* 2> /dev/null | head -n 1` != x"" ; then - HAS_IT="yes" - fi - done -- expr $HAS_IT : "yes" > /dev/null -+ echo "$1: $HAS_IT" -+ expr $HAS_IT : "yes" > /dev/null - } - - append CCONFIG "$compile_type" -@@ -1861,13 +1863,15 @@ - if test x"$cmov" = x"default"; then - disable cmov - if enabled cpu_override; then -- is_x86_cmov_cpu "$cpu" && enable cmov -+ disabled cross_compile && is_x86_cmov_cpu "$cpu" && enable cmov - disabled cmov || is_x86_slow_cmov_cpu "$cpu" || enable fast_cmov - elif expr "$processor_flags" : ".*cmov" > /dev/null ; then -- enable cmov -+ disabled cross_compile && enable cmov - fi - fi - -+enabled cross_compile && disable cmov -+ - # use different default ARCHFLAGS for CPU missing cmov (Via C3 ...) - if test x"$arch" = x"x86_32" && disabled cmov && disabled cpu_override; then - ARCHFLAGS="-march=i586" -@@ -2239,7 +2243,7 @@ - EOF - - if $cc $CFLAGS $ECFLAGS -o $TMPE $TMPC 2>/dev/null ; then --$TMPE && cpuclipspositive="yes" -+enabled cross_compile || $TMPE && cpuclipspositive="yes" - fi - - # test negative wrap -@@ -2254,7 +2258,7 @@ - EOF - - if $cc $CFLAGS $ECFLAGS -o $TMPE $TMPC 2>/dev/null ; then --$TMPE && cpuclipsnegative="yes" -+enabled cross_compile || $TMPE && cpuclipsnegative="yes" - fi - - # test for distcc -@@ -2607,33 +2611,9 @@ - check_ldflags -Wl,--warn-common - check_ldflags $LDLATEFLAGS - --# GCC version --cat > $TMPC << EOF --int main(int argc, char **argv) --{ -- int ret = 0; -- if (argc == 1) -- { -- #if defined(__GNUC__) -- ret = __GNUC__; -- #endif -- } -- else -- { -- #if defined(__GNUC_MINOR__) -- ret = __GNUC_MINOR__; -- #endif -- } -- return ret; --} --EOF -- --if $cc $CFLAGS $TMPC -o $TMPE ; then -- $TMPE -- GCC_MAJOR=$? -- $TMPE "minor" -- GCC_MINOR=$? --fi -+gcc_version=$($cc -v 2>&1 | grep version | cut -s -d' ' -f 3) -+GCC_MAJOR=$(echo ${gcc_version} | cut -s -d'.' -f1) -+GCC_MINOR=$(echo ${gcc_version} | cut -s -d'.' -f2) - - if enabled symbol_visibility; then - if test x"$GCC_MAJOR" = x"4" ; then -@@ -2727,6 +2707,7 @@ - - check_header GL/gl.h - has_library libGL || has_library libopengl32 || disable opengl -+enabled cross_compile && disable opengl - - VENDOR_XVMC_LIBS="" - check_header X11/extensions/XvMClib.h diff --git a/recipes/mythtv/mythtv-0.21/ffmpeg-arm-update.diff b/recipes/mythtv/mythtv-0.21/ffmpeg-arm-update.diff deleted file mode 100644 index d0e32eb512..0000000000 --- a/recipes/mythtv/mythtv-0.21/ffmpeg-arm-update.diff +++ /dev/null @@ -1,1669 +0,0 @@ -diff -Nurd mythtv.orig/libs/libavcodec/armv4l/dsputil_arm.c mythtv/libs/libavcodec/armv4l/dsputil_arm.c ---- mythtv.orig/libs/libavcodec/armv4l/dsputil_arm.c 2008-07-23 12:19:05.000000000 +0200 -+++ mythtv/libs/libavcodec/armv4l/dsputil_arm.c 2008-07-24 19:54:00.753198000 +0200 -@@ -19,12 +19,14 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - --#include "dsputil.h" -+#include "libavcodec/dsputil.h" - #ifdef HAVE_IPP --#include "ipp.h" -+#include <ipp.h> - #endif - - extern void dsputil_init_iwmmxt(DSPContext* c, AVCodecContext *avctx); -+extern void ff_float_init_arm_vfp(DSPContext* c, AVCodecContext *avctx); -+extern void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx); - - extern void j_rev_dct_ARM(DCTELEM *data); - extern void simple_idct_ARM(DCTELEM *data); -@@ -41,6 +43,12 @@ - extern void ff_simple_idct_add_armv6(uint8_t *dest, int line_size, - DCTELEM *data); - -+extern void ff_simple_idct_neon(DCTELEM *data); -+extern void ff_simple_idct_put_neon(uint8_t *dest, int line_size, -+ DCTELEM *data); -+extern void ff_simple_idct_add_neon(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); -@@ -202,6 +210,24 @@ - } - #endif - -+#ifdef HAVE_ARMV5TE -+static void prefetch_arm(void *mem, int stride, int h) -+{ -+ asm volatile( -+ "1: \n\t" -+ "subs %0, %0, #1 \n\t" -+ "pld [%1] \n\t" -+ "add %1, %1, %2 \n\t" -+ "bgt 1b \n\t" -+ : "+r"(h), "+r"(mem) : "r"(stride)); -+} -+#endif -+ -+int mm_support(void) -+{ -+ return ENABLE_IWMMXT * MM_IWMMXT; -+} -+ - void dsputil_init_armv4l(DSPContext* c, AVCodecContext *avctx) - { - int idct_algo= avctx->idct_algo; -@@ -209,49 +235,60 @@ - ff_put_pixels_clamped = c->put_pixels_clamped; - ff_add_pixels_clamped = c->add_pixels_clamped; - -- if(idct_algo == FF_IDCT_AUTO){ -+ if (avctx->lowres == 0) { -+ if(idct_algo == FF_IDCT_AUTO){ - #if defined(HAVE_IPP) -- idct_algo = FF_IDCT_IPP; -+ idct_algo = FF_IDCT_IPP; -+#elif defined(HAVE_NEON) -+ idct_algo = FF_IDCT_SIMPLENEON; - #elif defined(HAVE_ARMV6) -- idct_algo = FF_IDCT_SIMPLEARMV6; -+ idct_algo = FF_IDCT_SIMPLEARMV6; - #elif defined(HAVE_ARMV5TE) -- idct_algo = FF_IDCT_SIMPLEARMV5TE; -+ idct_algo = FF_IDCT_SIMPLEARMV5TE; - #else -- idct_algo = FF_IDCT_ARM; -+ idct_algo = FF_IDCT_ARM; - #endif -- } -+ } - -- if(idct_algo==FF_IDCT_ARM){ -- c->idct_put= j_rev_dct_ARM_put; -- c->idct_add= j_rev_dct_ARM_add; -- c->idct = j_rev_dct_ARM; -- c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;/* FF_NO_IDCT_PERM */ -- } else if (idct_algo==FF_IDCT_SIMPLEARM){ -- c->idct_put= simple_idct_ARM_put; -- c->idct_add= simple_idct_ARM_add; -- c->idct = simple_idct_ARM; -- c->idct_permutation_type= FF_NO_IDCT_PERM; -+ if(idct_algo==FF_IDCT_ARM){ -+ c->idct_put= j_rev_dct_ARM_put; -+ c->idct_add= j_rev_dct_ARM_add; -+ c->idct = j_rev_dct_ARM; -+ c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;/* FF_NO_IDCT_PERM */ -+ } else if (idct_algo==FF_IDCT_SIMPLEARM){ -+ c->idct_put= simple_idct_ARM_put; -+ c->idct_add= simple_idct_ARM_add; -+ c->idct = simple_idct_ARM; -+ c->idct_permutation_type= FF_NO_IDCT_PERM; - #ifdef HAVE_ARMV6 -- } else if (idct_algo==FF_IDCT_SIMPLEARMV6){ -- c->idct_put= ff_simple_idct_put_armv6; -- c->idct_add= ff_simple_idct_add_armv6; -- c->idct = ff_simple_idct_armv6; -- c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM; -+ } else if (idct_algo==FF_IDCT_SIMPLEARMV6){ -+ c->idct_put= ff_simple_idct_put_armv6; -+ c->idct_add= ff_simple_idct_add_armv6; -+ c->idct = ff_simple_idct_armv6; -+ c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM; - #endif - #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; -+ } 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; -- c->idct_add= simple_idct_ipp_add; -- c->idct = simple_idct_ipp; -- c->idct_permutation_type= FF_NO_IDCT_PERM; -+ } else if (idct_algo==FF_IDCT_IPP){ -+ c->idct_put= simple_idct_ipp_put; -+ c->idct_add= simple_idct_ipp_add; -+ c->idct = simple_idct_ipp; -+ c->idct_permutation_type= FF_NO_IDCT_PERM; -+#endif -+#ifdef HAVE_NEON -+ } else if (idct_algo==FF_IDCT_SIMPLENEON){ -+ c->idct_put= ff_simple_idct_put_neon; -+ c->idct_add= ff_simple_idct_add_neon; -+ c->idct = ff_simple_idct_neon; -+ c->idct_permutation_type = FF_NO_IDCT_PERM; - #endif -+ } - } - - c->put_pixels_tab[0][0] = put_pixels16_arm; -@@ -271,7 +308,17 @@ - c->put_no_rnd_pixels_tab[1][2] = put_no_rnd_pixels8_y2_arm; //OK - c->put_no_rnd_pixels_tab[1][3] = put_no_rnd_pixels8_xy2_arm; - -+#ifdef HAVE_ARMV5TE -+ c->prefetch = prefetch_arm; -+#endif -+ - #ifdef HAVE_IWMMXT - dsputil_init_iwmmxt(c, avctx); - #endif -+#ifdef HAVE_ARMVFP -+ ff_float_init_arm_vfp(c, avctx); -+#endif -+#ifdef HAVE_NEON -+ ff_dsputil_init_neon(c, avctx); -+#endif - } -diff -Nurd mythtv.orig/libs/libavcodec/armv4l/dsputil_arm_s.S mythtv/libs/libavcodec/armv4l/dsputil_arm_s.S ---- mythtv.orig/libs/libavcodec/armv4l/dsputil_arm_s.S 2008-07-23 12:19:05.000000000 +0200 -+++ mythtv/libs/libavcodec/armv4l/dsputil_arm_s.S 2008-07-24 19:54:00.753198000 +0200 -@@ -19,6 +19,13 @@ - @ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - @ - -+#include "config.h" -+ -+#ifndef HAVE_PLD -+.macro pld reg -+.endm -+#endif -+ - .macro ADJ_ALIGN_QUADWORD_D shift, Rd0, Rd1, Rd2, Rd3, Rn0, Rn1, Rn2, Rn3, Rn4 - mov \Rd0, \Rn0, lsr #(\shift * 8) - mov \Rd1, \Rn1, lsr #(\shift * 8) -diff -Nurd mythtv.orig/libs/libavcodec/armv4l/dsputil_iwmmxt.c mythtv/libs/libavcodec/armv4l/dsputil_iwmmxt.c ---- mythtv.orig/libs/libavcodec/armv4l/dsputil_iwmmxt.c 2008-07-23 12:19:05.000000000 +0200 -+++ mythtv/libs/libavcodec/armv4l/dsputil_iwmmxt.c 2008-07-24 19:54:00.753198000 +0200 -@@ -19,10 +19,10 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - --#include "dsputil.h" -+#include "libavcodec/dsputil.h" - - #define DEF(x, y) x ## _no_rnd_ ## y ##_iwmmxt --#define SET_RND(regd) __asm__ __volatile__ ("mov r12, #1 \n\t tbcsth " #regd ", r12":::"r12"); -+#define SET_RND(regd) asm volatile ("mov r12, #1 \n\t tbcsth " #regd ", r12":::"r12"); - #define WAVG2B "wavg2b" - #include "dsputil_iwmmxt_rnd.h" - #undef DEF -@@ -30,7 +30,7 @@ - #undef WAVG2B - - #define DEF(x, y) x ## _ ## y ##_iwmmxt --#define SET_RND(regd) __asm__ __volatile__ ("mov r12, #2 \n\t tbcsth " #regd ", r12":::"r12"); -+#define SET_RND(regd) asm volatile ("mov r12, #2 \n\t tbcsth " #regd ", r12":::"r12"); - #define WAVG2B "wavg2br" - #include "dsputil_iwmmxt_rnd.h" - #undef DEF -@@ -89,7 +89,7 @@ - { - uint8_t *pixels2 = pixels + line_size; - -- __asm__ __volatile__ ( -+ asm volatile ( - "mov r12, #4 \n\t" - "1: \n\t" - "pld [%[pixels], %[line_size2]] \n\t" -@@ -125,7 +125,7 @@ - - static void clear_blocks_iwmmxt(DCTELEM *blocks) - { -- __asm __volatile( -+ asm volatile( - "wzero wr0 \n\t" - "mov r1, #(128 * 6 / 32) \n\t" - "1: \n\t" -diff -Nurd mythtv.orig/libs/libavcodec/armv4l/dsputil_iwmmxt_rnd.h mythtv/libs/libavcodec/armv4l/dsputil_iwmmxt_rnd.h ---- mythtv.orig/libs/libavcodec/armv4l/dsputil_iwmmxt_rnd.h 2008-07-23 12:19:05.000000000 +0200 -+++ mythtv/libs/libavcodec/armv4l/dsputil_iwmmxt_rnd.h 2008-07-24 19:54:01.023198000 +0200 -@@ -19,13 +19,14 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - --#ifndef FFMPEG_DSPUTIL_IWMMXT_RND_H --#define FFMPEG_DSPUTIL_IWMMXT_RND_H -+/* This header intentionally has no multiple inclusion guards. It is meant to -+ * be included multiple times and generates different code depending on the -+ * value of certain #defines. */ - - void DEF(put, pixels8)(uint8_t *block, const uint8_t *pixels, const int line_size, int h) - { - int stride = line_size; -- __asm__ __volatile__ ( -+ asm volatile ( - "and r12, %[pixels], #7 \n\t" - "bic %[pixels], %[pixels], #7 \n\t" - "tmcr wcgr1, r12 \n\t" -@@ -59,7 +60,7 @@ - void DEF(avg, pixels8)(uint8_t *block, const uint8_t *pixels, const int line_size, int h) - { - int stride = line_size; -- __asm__ __volatile__ ( -+ asm volatile ( - "and r12, %[pixels], #7 \n\t" - "bic %[pixels], %[pixels], #7 \n\t" - "tmcr wcgr1, r12 \n\t" -@@ -101,7 +102,7 @@ - void DEF(put, pixels16)(uint8_t *block, const uint8_t *pixels, const int line_size, int h) - { - int stride = line_size; -- __asm__ __volatile__ ( -+ asm volatile ( - "and r12, %[pixels], #7 \n\t" - "bic %[pixels], %[pixels], #7 \n\t" - "tmcr wcgr1, r12 \n\t" -@@ -141,7 +142,7 @@ - void DEF(avg, pixels16)(uint8_t *block, const uint8_t *pixels, const int line_size, int h) - { - int stride = line_size; -- __asm__ __volatile__ ( -+ asm volatile ( - "pld [%[pixels]] \n\t" - "pld [%[pixels], #32] \n\t" - "pld [%[block]] \n\t" -@@ -200,7 +201,7 @@ - // [wr0 wr1 wr2 wr3] for previous line - // [wr4 wr5 wr6 wr7] for current line - SET_RND(wr15); // =2 for rnd and =1 for no_rnd version -- __asm__ __volatile__( -+ asm volatile( - "pld [%[pixels]] \n\t" - "pld [%[pixels], #32] \n\t" - "and r12, %[pixels], #7 \n\t" -@@ -249,7 +250,7 @@ - // [wr0 wr1 wr2 wr3] for previous line - // [wr4 wr5 wr6 wr7] for current line - SET_RND(wr15); // =2 for rnd and =1 for no_rnd version -- __asm__ __volatile__( -+ asm volatile( - "pld [%[pixels]] \n\t" - "pld [%[pixels], #32] \n\t" - "and r12, %[pixels], #7 \n\t" -@@ -310,7 +311,7 @@ - // [wr0 wr1 wr2 wr3] for previous line - // [wr4 wr5 wr6 wr7] for current line - SET_RND(wr15); // =2 for rnd and =1 for no_rnd version -- __asm__ __volatile__( -+ asm volatile( - "pld [%[pixels]] \n\t" - "pld [%[pixels], #32] \n\t" - "pld [%[block]] \n\t" -@@ -371,7 +372,7 @@ - // [wr0 wr1 wr2 wr3] for previous line - // [wr4 wr5 wr6 wr7] for current line - SET_RND(wr15); // =2 for rnd and =1 for no_rnd version -- __asm__ __volatile__( -+ asm volatile( - "pld [%[pixels]] \n\t" - "pld [%[pixels], #32] \n\t" - "pld [%[block]] \n\t" -@@ -447,7 +448,7 @@ - int stride = line_size; - // [wr0 wr1 wr2 wr3] for previous line - // [wr4 wr5 wr6 wr7] for current line -- __asm__ __volatile__( -+ asm volatile( - "pld [%[pixels]] \n\t" - "pld [%[pixels], #32] \n\t" - "and r12, %[pixels], #7 \n\t" -@@ -501,7 +502,7 @@ - int stride = line_size; - // [wr0 wr1 wr2 wr3] for previous line - // [wr4 wr5 wr6 wr7] for current line -- __asm__ __volatile__( -+ asm volatile( - "pld [%[pixels]] \n\t" - "pld [%[pixels], #32] \n\t" - "and r12, %[pixels], #7 \n\t" -@@ -558,7 +559,7 @@ - int stride = line_size; - // [wr0 wr1 wr2 wr3] for previous line - // [wr4 wr5 wr6 wr7] for current line -- __asm__ __volatile__( -+ asm volatile( - "pld [%[pixels]] \n\t" - "pld [%[pixels], #32] \n\t" - "and r12, %[pixels], #7 \n\t" -@@ -626,7 +627,7 @@ - // [wr0 wr1 wr2 wr3] for previous line - // [wr4 wr5 wr6 wr7] for current line - SET_RND(wr15); // =2 for rnd and =1 for no_rnd version -- __asm__ __volatile__( -+ asm volatile( - "pld [%[pixels]] \n\t" - "mov r12, #2 \n\t" - "pld [%[pixels], #32] \n\t" -@@ -720,7 +721,7 @@ - // [wr0 wr1 wr2 wr3] for previous line - // [wr4 wr5 wr6 wr7] for current line - SET_RND(wr15); // =2 for rnd and =1 for no_rnd version -- __asm__ __volatile__( -+ asm volatile( - "pld [%[pixels]] \n\t" - "mov r12, #2 \n\t" - "pld [%[pixels], #32] \n\t" -@@ -862,7 +863,7 @@ - // [wr0 wr1 wr2 wr3] for previous line - // [wr4 wr5 wr6 wr7] for current line - SET_RND(wr15); // =2 for rnd and =1 for no_rnd version -- __asm__ __volatile__( -+ asm volatile( - "pld [%[block]] \n\t" - "pld [%[block], #32] \n\t" - "pld [%[pixels]] \n\t" -@@ -966,7 +967,7 @@ - // [wr0 wr1 wr2 wr3] for previous line - // [wr4 wr5 wr6 wr7] for current line - SET_RND(wr15); // =2 for rnd and =1 for no_rnd version -- __asm__ __volatile__( -+ asm volatile( - "pld [%[block]] \n\t" - "pld [%[block], #32] \n\t" - "pld [%[pixels]] \n\t" -@@ -1115,5 +1116,3 @@ - : [line_size]"r"(line_size) - : "r12", "memory"); - } -- --#endif /* FFMPEG_DSPUTIL_IWMMXT_RND_H */ -diff -Nurd mythtv.orig/libs/libavcodec/armv4l/dsputil_neon.c mythtv/libs/libavcodec/armv4l/dsputil_neon.c ---- mythtv.orig/libs/libavcodec/armv4l/dsputil_neon.c 1970-01-01 01:00:00.000000000 +0100 -+++ mythtv/libs/libavcodec/armv4l/dsputil_neon.c 2008-07-24 19:54:01.023198000 +0200 -@@ -0,0 +1,397 @@ -+/* -+ * ARM NEON optimised DSP functions -+ * Copyright (c) 2008 Mans Rullgard <mans@mansr.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 -+ */ -+ -+#include <stdint.h> -+ -+#include "libavcodec/avcodec.h" -+#include "libavcodec/dsputil.h" -+ -+extern void ff_put_h264_chroma_mc8_neon(uint8_t *dst, uint8_t *src, int stride, -+ int h, int x, int y); -+ -+#define PUT_PIXELS_16_X2(vhadd) \ -+ "1: \n\t" \ -+ "vld1.64 {d0,d1,d2}, [%[p]], %[line_size] \n\t" \ -+ "vld1.64 {d4,d5,d6}, [%[p]], %[line_size] \n\t" \ -+ "pld [%[p]] \n\t" \ -+ "subs %[h], %[h], #2 \n\t" \ -+ "vext.8 q1, q0, q1, #1 \n\t" \ -+ "vext.8 q3, q2, q3, #1 \n\t" \ -+ vhadd".u8 q0, q0, q1 \n\t" \ -+ vhadd".u8 q2, q2, q3 \n\t" \ -+ "vst1.64 {d0,d1}, [%[b],:64], %[line_size] \n\t" \ -+ "vst1.64 {d4,d5}, [%[b],:64], %[line_size] \n\t" \ -+ "bne 1b \n\t" -+ -+#define PUT_PIXELS_16_Y2(vhadd) \ -+ "add %[p1], %[p0], %[line_size] \n\t" \ -+ "lsl %[l2], %[line_size], #1 \n\t" \ -+ "vld1.64 {d0,d1}, [%[p0]], %[l2] \n\t" \ -+ "vld1.64 {d2,d3}, [%[p1]], %[l2] \n\t" \ -+ "1: \n\t" \ -+ "subs %[h], %[h], #2 \n\t" \ -+ vhadd".u8 q2, q0, q1 \n\t" \ -+ "vst1.64 {d4,d5}, [%[b],:128], %[line_size] \n\t" \ -+ "vld1.64 {d0,d1}, [%[p0]], %[l2] \n\t" \ -+ vhadd".u8 q2, q0, q1 \n\t" \ -+ "vst1.64 {d4,d5}, [%[b],:128], %[line_size] \n\t" \ -+ "vld1.64 {d2,d3}, [%[p1]], %[l2] \n\t" \ -+ "bne 1b \n\t" -+ -+#define PUT_PIXELS_16_XY2(vshrn, no_rnd) \ -+ "lsl %[l2], %[line_size], #1 \n\t" \ -+ "add %[p1], %[p0], %[line_size] \n\t" \ -+ "vld1.64 {d0,d1,d2}, [%[p0]], %[l2] \n\t" \ -+ "vld1.64 {d4,d5,d6}, [%[p1]], %[l2] \n\t" \ -+ "pld [%[p0]] \n\t" \ -+ "pld [%[p1]] \n\t" \ -+ "vext.8 q1, q0, q1, #1 \n\t" \ -+ "vext.8 q3, q2, q3, #1 \n\t" \ -+ "vaddl.u8 q8, d0, d2 \n\t" \ -+ "vaddl.u8 q10, d1, d3 \n\t" \ -+ "vaddl.u8 q9, d4, d6 \n\t" \ -+ "vaddl.u8 q11, d5, d7 \n\t" \ -+ "1: \n\t" \ -+ "subs %[h], %[h], #2 \n\t" \ -+ "vld1.64 {d0,d1,d2}, [%[p0]], %[l2] \n\t" \ -+ "vadd.u16 q12, q8, q9 \n\t" \ -+ "pld [%[p0]] \n\t" \ -+ no_rnd "vadd.u16 q12, q12, q13 \n\t" \ -+ "vext.8 q15, q0, q1, #1 \n\t" \ -+ "vadd.u16 q1, q10, q11 \n\t" \ -+ vshrn".u16 d28, q12, #2 \n\t" \ -+ no_rnd "vadd.u16 q1, q1, q13 \n\t" \ -+ vshrn".u16 d29, q1, #2 \n\t" \ -+ "vaddl.u8 q8, d0, d30 \n\t" \ -+ "vld1.64 {d2,d3,d4}, [%[p1]], %[l2] \n\t" \ -+ "vaddl.u8 q10, d1, d31 \n\t" \ -+ "vst1.64 {d28,d29}, [%[b],:128], %[line_size] \n\t" \ -+ "vadd.u16 q12, q8, q9 \n\t" \ -+ "pld [%[p1]] \n\t" \ -+ no_rnd "vadd.u16 q12, q12, q13 \n\t" \ -+ "vext.8 q2, q1, q2, #1 \n\t" \ -+ "vadd.u16 q0, q10, q11 \n\t" \ -+ vshrn".u16 d30, q12, #2 \n\t" \ -+ no_rnd "vadd.u16 q0, q0, q13 \n\t" \ -+ vshrn".u16 d31, q0, #2 \n\t" \ -+ "vaddl.u8 q9, d2, d4 \n\t" \ -+ "vst1.64 {d30,d31}, [%[b],:128], %[line_size] \n\t" \ -+ "vaddl.u8 q11, d3, d5 \n\t" \ -+ "bgt 1b \n\t" -+ -+#define PUT_PIXELS_8_X2(vhadd) \ -+ "1: \n\t" \ -+ "vld1.64 {d0,d1}, [%[p]], %[line_size] \n\t" \ -+ "vld1.64 {d2,d3}, [%[p]], %[line_size] \n\t" \ -+ "pld [%[p]] \n\t" \ -+ "subs %[h], %[h], #2 \n\t" \ -+ "vext.8 d1, d0, d1, #1 \n\t" \ -+ "vext.8 d3, d2, d3, #1 \n\t" \ -+ "vswp d1, d2 \n\t" \ -+ vhadd".u8 q0, q0, q1 \n\t" \ -+ "vst1.64 {d0}, [%[b],:64], %[line_size] \n\t" \ -+ "vst1.64 {d1}, [%[b],:64], %[line_size] \n\t" \ -+ "bne 1b \n\t" -+ -+#define PUT_PIXELS_8_Y2(vhadd) \ -+ "add %[p1], %[p0], %[line_size] \n\t" \ -+ "lsl %[l2], %[line_size], #1 \n\t" \ -+ "vld1.64 {d0}, [%[p0]], %[l2] \n\t" \ -+ "vld1.64 {d1}, [%[p1]], %[l2] \n\t" \ -+ "1: \n\t" \ -+ "subs %[h], %[h], #2 \n\t" \ -+ vhadd".u8 d4, d0, d1 \n\t" \ -+ "vst1.64 {d4}, [%[b],:64], %[line_size] \n\t" \ -+ "vld1.64 {d0}, [%[p0]], %[l2] \n\t" \ -+ vhadd".u8 d4, d0, d1 \n\t" \ -+ "vst1.64 {d4}, [%[b],:64], %[line_size] \n\t" \ -+ "vld1.64 {d1}, [%[p1]], %[l2] \n\t" \ -+ "bne 1b \n\t" -+ -+#define PUT_PIXELS8_XY2(vshrn, no_rnd) \ -+ "lsl %[l2], %[line_size], #1 \n\t" \ -+ "add %[p1], %[p0], %[line_size] \n\t" \ -+ "vld1.64 {d0,d1}, [%[p0]], %[l2] \n\t" \ -+ "vld1.64 {d2,d3}, [%[p1]], %[l2] \n\t" \ -+ "pld [%[p0]] \n\t" \ -+ "pld [%[p1]] \n\t" \ -+ "vext.8 d4, d0, d1, #1 \n\t" \ -+ "vext.8 d6, d2, d3, #1 \n\t" \ -+ "vaddl.u8 q8, d0, d4 \n\t" \ -+ "vaddl.u8 q9, d2, d6 \n\t" \ -+ "1: \n\t" \ -+ "subs %[h], %[h], #2 \n\t" \ -+ "vld1.64 {d0,d1}, [%[p0]], %[l2] \n\t" \ -+ "pld [%[p0]] \n\t" \ -+ "vadd.u16 q10, q8, q9 \n\t" \ -+ "vext.8 d4, d0, d1, #1 \n\t" \ -+ no_rnd "vadd.u16 q10, q10, q11 \n\t" \ -+ "vaddl.u8 q8, d0, d4 \n\t" \ -+ vshrn".u16 d5, q10, #2 \n\t" \ -+ "vld1.64 {d2,d3}, [%[p1]], %[l2] \n\t" \ -+ "vadd.u16 q10, q8, q9 \n\t" \ -+ "pld [%[p1]] \n\t" \ -+ no_rnd "vadd.u16 q10, q10, q11 \n\t" \ -+ "vst1.64 {d5}, [%[b],:64], %[line_size] \n\t" \ -+ vshrn".u16 d7, q10, #2 \n\t" \ -+ "vext.8 d6, d2, d3, #1 \n\t" \ -+ "vaddl.u8 q9, d2, d6 \n\t" \ -+ "vst1.64 {d7}, [%[b],:64], %[line_size] \n\t" \ -+ "bgt 1b \n\t" -+ -+static void put_pixels16_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ asm volatile( -+ "1: \n\t" -+ "vld1.64 {d0,d1}, [%[pixels]], %[line_size] \n\t" -+ "vld1.64 {d2,d3}, [%[pixels]], %[line_size] \n\t" -+ "vld1.64 {d4,d5}, [%[pixels]], %[line_size] \n\t" -+ "vld1.64 {d6,d7}, [%[pixels]], %[line_size] \n\t" -+ "pld [%[pixels]] \n\t" -+ "subs %[h], %[h], #4 \n\t" -+ "vst1.64 {d0,d1}, [%[block],:128], %[line_size] \n\t" -+ "vst1.64 {d2,d3}, [%[block],:128], %[line_size] \n\t" -+ "vst1.64 {d4,d5}, [%[block],:128], %[line_size] \n\t" -+ "vst1.64 {d6,d7}, [%[block],:128], %[line_size] \n\t" -+ "bne 1b \n\t" -+ : [block]"+r"(block), [pixels]"+r"(pixels), [h]"+r"(h) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "memory"); -+} -+ -+static void put_pixels16_x2_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ asm volatile( -+ PUT_PIXELS_16_X2("vrhadd") -+ : [b]"+r"(block), [p]"+r"(pixels), [h]"+r"(h) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "memory"); -+} -+ -+static void put_pixels16_y2_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ const uint8_t *p1; -+ int l2; -+ -+ asm volatile( -+ PUT_PIXELS_16_Y2("vrhadd") -+ : [b]"+r"(block), [p0]"+r"(pixels), [p1]"=&r"(p1), [h]"+r"(h), -+ [l2]"=&r"(l2) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d2", "d3", "d4", "d5", "memory"); -+} -+ -+static void put_pixels16_xy2_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ const uint8_t *p1; -+ int l2; -+ -+ asm volatile( -+ PUT_PIXELS_16_XY2("vrshrn", "@") -+ : [b]"+r"(block), -+ [p0]"+r"(pixels), -+ [p1]"=&r"(p1), [h]"+r"(h), -+ [l2]"=&r"(l2) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", -+ "d28", "d29", "d30", "d31", -+ "q8", "q9", "q10", "q11", "q12", "memory"); -+} -+ -+static void put_pixels8_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ asm volatile( -+ "1: \n\t" -+ "vld1.64 {d0}, [%[p]], %[line_size] \n\t" -+ "vld1.64 {d1}, [%[p]], %[line_size] \n\t" -+ "vld1.64 {d2}, [%[p]], %[line_size] \n\t" -+ "vld1.64 {d3}, [%[p]], %[line_size] \n\t" -+ "subs %[h], %[h], #4 \n\t" -+ "vst1.64 {d0}, [%[b],:64], %[line_size] \n\t" -+ "vst1.64 {d1}, [%[b],:64], %[line_size] \n\t" -+ "vst1.64 {d2}, [%[b],:64], %[line_size] \n\t" -+ "vst1.64 {d3}, [%[b],:64], %[line_size] \n\t" -+ "bne 1b \n\t" -+ : [b]"+r"(block), [p]"+r"(pixels), [h]"+r"(h) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d2", "d3", "memory"); -+} -+ -+static void put_pixels8_x2_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ asm volatile( -+ PUT_PIXELS_8_X2("vrhadd") -+ : [b]"+r"(block), [p]"+r"(pixels), [h]"+r"(h) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d2", "d3", "memory"); -+} -+ -+static void put_pixels8_y2_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ const uint8_t *p1; -+ int l2; -+ -+ asm volatile( -+ PUT_PIXELS_8_Y2("vrhadd") -+ : [b]"+r"(block), [p0]"+r"(pixels), [p1]"=&r"(p1), [h]"+r"(h), -+ [l2]"=&r"(l2) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d4", "memory"); -+} -+ -+static void put_pixels8_xy2_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ const uint8_t *p1; -+ int l2; -+ -+ asm volatile( -+ PUT_PIXELS8_XY2("vrshrn", "@") -+ : [b]"+r"(block), -+ [p0]"+r"(pixels), -+ [p1]"=&r"(p1), [h]"+r"(h), -+ [l2]"=&r"(l2) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d2", "d3", "d4", "d6", "d7", -+ "q8", "q9", "q10", "memory"); -+} -+ -+static void put_no_rnd_pixels16_x2_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ asm volatile( -+ PUT_PIXELS_16_X2("vhadd") -+ : [b]"+r"(block), [p]"+r"(pixels), [h]"+r"(h) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "memory"); -+} -+ -+static void put_no_rnd_pixels16_y2_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ const uint8_t *p1; -+ int l2; -+ -+ asm volatile( -+ PUT_PIXELS_16_Y2("vhadd") -+ : [b]"+r"(block), [p0]"+r"(pixels), [p1]"=&r"(p1), [h]"+r"(h), -+ [l2]"=&r"(l2) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d2", "d3", "d4", "d5", "memory"); -+} -+ -+static void put_no_rnd_pixels16_xy2_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ const uint8_t *p1; -+ int l2; -+ -+ asm volatile( -+ "vmov.i16 q13, #1 \n\t" -+ PUT_PIXELS_16_XY2("vshrn", "") -+ : [b]"+r"(block), -+ [p0]"+r"(pixels), -+ [p1]"=&r"(p1), [h]"+r"(h), -+ [l2]"=&r"(l2) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", -+ "d28", "d29", "d30", "d31", -+ "q8", "q9", "q10", "q11", "q12", "q13", "memory"); -+} -+ -+static void put_no_rnd_pixels8_x2_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ asm volatile( -+ PUT_PIXELS_8_X2("vhadd") -+ : [b]"+r"(block), [p]"+r"(pixels), [h]"+r"(h) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d2", "d3", "memory"); -+} -+ -+static void put_no_rnd_pixels8_y2_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ const uint8_t *p1; -+ int l2; -+ -+ asm volatile( -+ PUT_PIXELS_8_Y2("vhadd") -+ : [b]"+r"(block), [p0]"+r"(pixels), [p1]"=&r"(p1), [h]"+r"(h), -+ [l2]"=&r"(l2) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d4", "memory"); -+} -+ -+static void put_no_rnd_pixels8_xy2_neon(uint8_t *block, const uint8_t *pixels, -+ int line_size, int h) -+{ -+ const uint8_t *p1; -+ int l2; -+ -+ asm volatile( -+ "vmov.i16 q11, #1 \n\t" -+ PUT_PIXELS8_XY2("vshrn", "") -+ : [b]"+r"(block), -+ [p0]"+r"(pixels), -+ [p1]"=&r"(p1), [h]"+r"(h), -+ [l2]"=&r"(l2) -+ : [line_size]"r"(line_size) -+ : "d0", "d1", "d2", "d3", "d4", "d6", "d7", -+ "q8", "q9", "q10", "q11", "memory"); -+} -+ -+static void put_h264_qpel16_mc00_neon(uint8_t *dst, uint8_t *src, int stride) -+{ -+ put_pixels16_neon(dst, src, stride, 16); -+} -+ -+void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx) -+{ -+ c->put_pixels_tab[0][0] = put_pixels16_neon; -+ c->put_pixels_tab[0][1] = put_pixels16_x2_neon; -+ c->put_pixels_tab[0][2] = put_pixels16_y2_neon; -+ c->put_pixels_tab[0][3] = put_pixels16_xy2_neon; -+ c->put_pixels_tab[1][0] = put_pixels8_neon; -+ c->put_pixels_tab[1][1] = put_pixels8_x2_neon; -+ c->put_pixels_tab[1][2] = put_pixels8_y2_neon; -+ c->put_pixels_tab[1][3] = put_pixels8_xy2_neon; -+ -+ c->put_no_rnd_pixels_tab[0][0] = put_pixels16_neon; -+ c->put_no_rnd_pixels_tab[0][1] = put_no_rnd_pixels16_x2_neon; -+ c->put_no_rnd_pixels_tab[0][2] = put_no_rnd_pixels16_y2_neon; -+ c->put_no_rnd_pixels_tab[0][3] = put_no_rnd_pixels16_xy2_neon; -+ c->put_no_rnd_pixels_tab[1][0] = put_pixels8_neon; -+ c->put_no_rnd_pixels_tab[1][1] = put_no_rnd_pixels8_x2_neon; -+ c->put_no_rnd_pixels_tab[1][2] = put_no_rnd_pixels8_y2_neon; -+ c->put_no_rnd_pixels_tab[1][3] = put_no_rnd_pixels8_xy2_neon; -+ -+ c->put_h264_chroma_pixels_tab[0] = ff_put_h264_chroma_mc8_neon; -+ -+ c->put_h264_qpel_pixels_tab[0][0] = put_h264_qpel16_mc00_neon; -+} -diff -Nurd mythtv.orig/libs/libavcodec/armv4l/float_arm_vfp.c mythtv/libs/libavcodec/armv4l/float_arm_vfp.c ---- mythtv.orig/libs/libavcodec/armv4l/float_arm_vfp.c 1970-01-01 01:00:00.000000000 +0100 -+++ mythtv/libs/libavcodec/armv4l/float_arm_vfp.c 2008-07-24 19:54:01.023198000 +0200 -@@ -0,0 +1,208 @@ -+/* -+ * Copyright (c) 2008 Siarhei Siamashka <ssvb@users.sourceforge.net> -+ * -+ * 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 -+ */ -+ -+#include "libavcodec/dsputil.h" -+ -+/* -+ * VFP is a floating point coprocessor used in some ARM cores. VFP11 has 1 cycle -+ * throughput for almost all the instructions (except for double precision -+ * arithmetics), but rather high latency. Latency is 4 cycles for loads and 8 cycles -+ * for arithmetic operations. Scheduling code to avoid pipeline stalls is very -+ * important for performance. One more interesting feature is that VFP has -+ * independent load/store and arithmetics pipelines, so it is possible to make -+ * them work simultaneously and get more than 1 operation per cycle. Load/store -+ * pipeline can process 2 single precision floating point values per cycle and -+ * supports bulk loads and stores for large sets of registers. Arithmetic operations -+ * can be done on vectors, which allows to keep the arithmetics pipeline busy, -+ * while the processor may issue and execute other instructions. Detailed -+ * optimization manuals can be found at http://www.arm.com -+ */ -+ -+/** -+ * ARM VFP optimized implementation of 'vector_fmul_c' function. -+ * Assume that len is a positive number and is multiple of 8 -+ */ -+static void vector_fmul_vfp(float *dst, const float *src, int len) -+{ -+ int tmp; -+ asm volatile( -+ "fmrx %[tmp], fpscr\n\t" -+ "orr %[tmp], %[tmp], #(3 << 16)\n\t" /* set vector size to 4 */ -+ "fmxr fpscr, %[tmp]\n\t" -+ -+ "fldmias %[dst_r]!, {s0-s3}\n\t" -+ "fldmias %[src]!, {s8-s11}\n\t" -+ "fldmias %[dst_r]!, {s4-s7}\n\t" -+ "fldmias %[src]!, {s12-s15}\n\t" -+ "fmuls s8, s0, s8\n\t" -+ "1:\n\t" -+ "subs %[len], %[len], #16\n\t" -+ "fmuls s12, s4, s12\n\t" -+ "fldmiasge %[dst_r]!, {s16-s19}\n\t" -+ "fldmiasge %[src]!, {s24-s27}\n\t" -+ "fldmiasge %[dst_r]!, {s20-s23}\n\t" -+ "fldmiasge %[src]!, {s28-s31}\n\t" -+ "fmulsge s24, s16, s24\n\t" -+ "fstmias %[dst_w]!, {s8-s11}\n\t" -+ "fstmias %[dst_w]!, {s12-s15}\n\t" -+ "fmulsge s28, s20, s28\n\t" -+ "fldmiasgt %[dst_r]!, {s0-s3}\n\t" -+ "fldmiasgt %[src]!, {s8-s11}\n\t" -+ "fldmiasgt %[dst_r]!, {s4-s7}\n\t" -+ "fldmiasgt %[src]!, {s12-s15}\n\t" -+ "fmulsge s8, s0, s8\n\t" -+ "fstmiasge %[dst_w]!, {s24-s27}\n\t" -+ "fstmiasge %[dst_w]!, {s28-s31}\n\t" -+ "bgt 1b\n\t" -+ -+ "bic %[tmp], %[tmp], #(7 << 16)\n\t" /* set vector size back to 1 */ -+ "fmxr fpscr, %[tmp]\n\t" -+ : [dst_w] "+&r" (dst), [dst_r] "+&r" (dst), [src] "+&r" (src), [len] "+&r" (len), [tmp] "=&r" (tmp) -+ : -+ : "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", -+ "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", -+ "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", -+ "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31", -+ "cc", "memory"); -+} -+ -+/** -+ * ARM VFP optimized implementation of 'vector_fmul_reverse_c' function. -+ * Assume that len is a positive number and is multiple of 8 -+ */ -+static void vector_fmul_reverse_vfp(float *dst, const float *src0, const float *src1, int len) -+{ -+ src1 += len; -+ asm volatile( -+ "fldmdbs %[src1]!, {s0-s3}\n\t" -+ "fldmias %[src0]!, {s8-s11}\n\t" -+ "fldmdbs %[src1]!, {s4-s7}\n\t" -+ "fldmias %[src0]!, {s12-s15}\n\t" -+ "fmuls s8, s3, s8\n\t" -+ "fmuls s9, s2, s9\n\t" -+ "fmuls s10, s1, s10\n\t" -+ "fmuls s11, s0, s11\n\t" -+ "1:\n\t" -+ "subs %[len], %[len], #16\n\t" -+ "fldmdbsge %[src1]!, {s16-s19}\n\t" -+ "fmuls s12, s7, s12\n\t" -+ "fldmiasge %[src0]!, {s24-s27}\n\t" -+ "fmuls s13, s6, s13\n\t" -+ "fldmdbsge %[src1]!, {s20-s23}\n\t" -+ "fmuls s14, s5, s14\n\t" -+ "fldmiasge %[src0]!, {s28-s31}\n\t" -+ "fmuls s15, s4, s15\n\t" -+ "fmulsge s24, s19, s24\n\t" -+ "fldmdbsgt %[src1]!, {s0-s3}\n\t" -+ "fmulsge s25, s18, s25\n\t" -+ "fstmias %[dst]!, {s8-s13}\n\t" -+ "fmulsge s26, s17, s26\n\t" -+ "fldmiasgt %[src0]!, {s8-s11}\n\t" -+ "fmulsge s27, s16, s27\n\t" -+ "fmulsge s28, s23, s28\n\t" -+ "fldmdbsgt %[src1]!, {s4-s7}\n\t" -+ "fmulsge s29, s22, s29\n\t" -+ "fstmias %[dst]!, {s14-s15}\n\t" -+ "fmulsge s30, s21, s30\n\t" -+ "fmulsge s31, s20, s31\n\t" -+ "fmulsge s8, s3, s8\n\t" -+ "fldmiasgt %[src0]!, {s12-s15}\n\t" -+ "fmulsge s9, s2, s9\n\t" -+ "fmulsge s10, s1, s10\n\t" -+ "fstmiasge %[dst]!, {s24-s27}\n\t" -+ "fmulsge s11, s0, s11\n\t" -+ "fstmiasge %[dst]!, {s28-s31}\n\t" -+ "bgt 1b\n\t" -+ -+ : [dst] "+&r" (dst), [src0] "+&r" (src0), [src1] "+&r" (src1), [len] "+&r" (len) -+ : -+ : "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", -+ "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", -+ "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", -+ "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31", -+ "cc", "memory"); -+} -+ -+#ifdef HAVE_ARMV6 -+/** -+ * ARM VFP optimized float to int16 conversion. -+ * Assume that len is a positive number and is multiple of 8, destination -+ * buffer is at least 4 bytes aligned (8 bytes alignment is better for -+ * performance), little endian byte sex -+ */ -+void float_to_int16_vfp(int16_t *dst, const float *src, int len) -+{ -+ asm volatile( -+ "fldmias %[src]!, {s16-s23}\n\t" -+ "ftosis s0, s16\n\t" -+ "ftosis s1, s17\n\t" -+ "ftosis s2, s18\n\t" -+ "ftosis s3, s19\n\t" -+ "ftosis s4, s20\n\t" -+ "ftosis s5, s21\n\t" -+ "ftosis s6, s22\n\t" -+ "ftosis s7, s23\n\t" -+ "1:\n\t" -+ "subs %[len], %[len], #8\n\t" -+ "fmrrs r3, r4, {s0, s1}\n\t" -+ "fmrrs r5, r6, {s2, s3}\n\t" -+ "fmrrs r7, r8, {s4, s5}\n\t" -+ "fmrrs ip, lr, {s6, s7}\n\t" -+ "fldmiasgt %[src]!, {s16-s23}\n\t" -+ "ssat r4, #16, r4\n\t" -+ "ssat r3, #16, r3\n\t" -+ "ssat r6, #16, r6\n\t" -+ "ssat r5, #16, r5\n\t" -+ "pkhbt r3, r3, r4, lsl #16\n\t" -+ "pkhbt r4, r5, r6, lsl #16\n\t" -+ "ftosisgt s0, s16\n\t" -+ "ftosisgt s1, s17\n\t" -+ "ftosisgt s2, s18\n\t" -+ "ftosisgt s3, s19\n\t" -+ "ftosisgt s4, s20\n\t" -+ "ftosisgt s5, s21\n\t" -+ "ftosisgt s6, s22\n\t" -+ "ftosisgt s7, s23\n\t" -+ "ssat r8, #16, r8\n\t" -+ "ssat r7, #16, r7\n\t" -+ "ssat lr, #16, lr\n\t" -+ "ssat ip, #16, ip\n\t" -+ "pkhbt r5, r7, r8, lsl #16\n\t" -+ "pkhbt r6, ip, lr, lsl #16\n\t" -+ "stmia %[dst]!, {r3-r6}\n\t" -+ "bgt 1b\n\t" -+ -+ : [dst] "+&r" (dst), [src] "+&r" (src), [len] "+&r" (len) -+ : -+ : "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", -+ "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", -+ "r3", "r4", "r5", "r6", "r7", "r8", "ip", "lr", -+ "cc", "memory"); -+} -+#endif -+ -+void ff_float_init_arm_vfp(DSPContext* c, AVCodecContext *avctx) -+{ -+ c->vector_fmul = vector_fmul_vfp; -+ c->vector_fmul_reverse = vector_fmul_reverse_vfp; -+#ifdef HAVE_ARMV6 -+ c->float_to_int16 = float_to_int16_vfp; -+#endif -+} -diff -Nurd mythtv.orig/libs/libavcodec/armv4l/h264dsp_neon.S mythtv/libs/libavcodec/armv4l/h264dsp_neon.S ---- mythtv.orig/libs/libavcodec/armv4l/h264dsp_neon.S 1970-01-01 01:00:00.000000000 +0100 -+++ mythtv/libs/libavcodec/armv4l/h264dsp_neon.S 2008-07-24 19:54:01.033198000 +0200 -@@ -0,0 +1,148 @@ -+/* -+ * Copyright (c) 2008 Mans Rullgard <mans@mansr.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 -+ */ -+ -+ .fpu neon -+ -+ .text -+ .align -+ .global ff_put_h264_chroma_mc8_neon -+ .func ff_put_h264_chroma_mc8_neon -+/* void ff_put_h264_chroma_mc8_neon(uint8_t *dst, uint8_t *src, int stride, -+ int h, int x, int y) */ -+ff_put_h264_chroma_mc8_neon: -+ push {r4-r7} -+ ldrd r4, [sp, #16] -+ -+ pld [r1] -+ pld [r1, r2] -+ -+ muls r7, r4, r5 -+ rsb r6, r7, r5, lsl #3 -+ rsb ip, r7, r4, lsl #3 -+ sub r4, r7, r4, lsl #3 -+ sub r4, r4, r5, lsl #3 -+ add r4, r4, #64 -+ -+ beq 2f -+ -+ add r5, r1, r2 -+ -+ vdup.8 d0, r4 -+ lsl r4, r2, #1 -+ vdup.8 d1, ip -+ vld1.64 {d4,d5}, [r1], r4 -+ vdup.8 d2, r6 -+ vld1.64 {d6,d7}, [r5], r4 -+ vdup.8 d3, r7 -+ -+ mov r6, #32 -+ vext.8 d5, d4, d5, #1 -+ vdup.16 q12, r6 -+ vext.8 d7, d6, d7, #1 -+1: -+ pld [r5] -+ vmull.u8 q8, d4, d0 -+ vmlal.u8 q8, d5, d1 -+ vld1.64 {d4,d5}, [r1], r4 -+ vmlal.u8 q8, d6, d2 -+ vext.8 d5, d4, d5, #1 -+ vmlal.u8 q8, d7, d3 -+ vmull.u8 q9, d6, d0 -+ vadd.i16 q8, q8, q12 -+ subs r3, r3, #2 -+ vmlal.u8 q9, d7, d1 -+ vshrn.u16 d16, q8, #6 -+ vld1.64 {d6,d7}, [r5], r4 -+ vmlal.u8 q9, d4, d2 -+ vmlal.u8 q9, d5, d3 -+ pld [r1] -+ vadd.i16 q9, q9, q12 -+ vst1.64 {d16}, [r0,:64], r2 -+ vshrn.u16 d17, q9, #6 -+ vext.8 d7, d6, d7, #1 -+ vst1.64 {d17}, [r0,:64], r2 -+ bgt 1b -+ -+ pop {r4-r7} -+ bx lr -+ -+2: -+ tst r6, r6 -+ add ip, ip, r6 -+ vdup.8 d0, r4 -+ vdup.8 d1, ip -+ mov r6, #32 -+ vdup.16 q12, r6 -+ -+ beq 4f -+ -+ add r5, r1, r2 -+ lsl r4, r2, #1 -+ vld1.64 {d4}, [r1], r4 -+ vld1.64 {d6}, [r5], r4 -+3: -+ pld [r5] -+ vmull.u8 q8, d4, d0 -+ vmlal.u8 q8, d6, d1 -+ vld1.64 {d4}, [r1], r4 -+ vmull.u8 q9, d6, d0 -+ vadd.i16 q8, q8, q12 -+ vmlal.u8 q9, d4, d1 -+ vshrn.u16 d16, q8, #6 -+ vadd.i16 q9, q9, q12 -+ vst1.64 {d16}, [r0,:64], r2 -+ vshrn.u16 d17, q9, #6 -+ subs r3, r3, #2 -+ vld1.64 {d6}, [r5], r4 -+ pld [r1] -+ vst1.64 {d17}, [r0,:64], r2 -+ bgt 3b -+ -+ pop {r4-r7} -+ bx lr -+ -+4: -+ vld1.64 {d4,d5}, [r1], r2 -+ vld1.64 {d6,d7}, [r1], r2 -+ vext.8 d5, d4, d5, #1 -+ vext.8 d7, d6, d7, #1 -+5: -+ pld [r1] -+ subs r3, r3, #2 -+ vmull.u8 q8, d4, d0 -+ vmlal.u8 q8, d5, d1 -+ vld1.64 {d4,d5}, [r1], r2 -+ vmull.u8 q9, d6, d0 -+ vmlal.u8 q9, d7, d1 -+ pld [r1] -+ vadd.i16 q8, q8, q12 -+ vadd.i16 q9, q9, q12 -+ vext.8 d5, d4, d5, #1 -+ vshrn.u16 d16, q8, #6 -+ vld1.64 {d6,d7}, [r1], r2 -+ vshrn.u16 d17, q9, #6 -+ vst1.64 {d16}, [r0,:64], r2 -+ vext.8 d7, d6, d7, #1 -+ vst1.64 {d17}, [r0,:64], r2 -+ bgt 5b -+ -+ pop {r4-r7} -+ bx lr -+ .endfunc -diff -Nurd mythtv.orig/libs/libavcodec/armv4l/mpegvideo_arm.c mythtv/libs/libavcodec/armv4l/mpegvideo_arm.c ---- mythtv.orig/libs/libavcodec/armv4l/mpegvideo_arm.c 2008-07-23 12:19:05.000000000 +0200 -+++ mythtv/libs/libavcodec/armv4l/mpegvideo_arm.c 2008-07-24 19:54:01.263198000 +0200 -@@ -18,9 +18,9 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - --#include "dsputil.h" --#include "mpegvideo.h" --#include "avcodec.h" -+#include "libavcodec/avcodec.h" -+#include "libavcodec/dsputil.h" -+#include "libavcodec/mpegvideo.h" - - extern void MPV_common_init_iwmmxt(MpegEncContext *s); - extern void MPV_common_init_armv5te(MpegEncContext *s); -@@ -28,7 +28,7 @@ - void MPV_common_init_armv4l(MpegEncContext *s) - { - /* IWMMXT support is a superset of armv5te, so -- * allow optimised functions for armv5te unless -+ * allow optimized functions for armv5te unless - * a better iwmmxt function exists - */ - #ifdef HAVE_ARMV5TE -diff -Nurd mythtv.orig/libs/libavcodec/armv4l/mpegvideo_armv5te.c mythtv/libs/libavcodec/armv4l/mpegvideo_armv5te.c ---- mythtv.orig/libs/libavcodec/armv4l/mpegvideo_armv5te.c 2008-07-23 12:19:05.000000000 +0200 -+++ mythtv/libs/libavcodec/armv4l/mpegvideo_armv5te.c 2008-07-24 19:54:01.263198000 +0200 -@@ -19,9 +19,9 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - --#include "dsputil.h" --#include "mpegvideo.h" --#include "avcodec.h" -+#include "libavcodec/avcodec.h" -+#include "libavcodec/dsputil.h" -+#include "libavcodec/mpegvideo.h" - - - #ifdef ENABLE_ARM_TESTS -@@ -65,7 +65,7 @@ - ({ DCTELEM *xblock = xxblock; \ - int xqmul = xxqmul, xqadd = xxqadd, xcount = xxcount, xtmp; \ - int xdata1, xdata2; \ --__asm__ __volatile__( \ -+asm volatile( \ - "subs %[count], %[count], #2 \n\t" \ - "ble 2f \n\t" \ - "ldrd r4, [%[block], #0] \n\t" \ -diff -Nurd mythtv.orig/libs/libavcodec/armv4l/mpegvideo_iwmmxt.c mythtv/libs/libavcodec/armv4l/mpegvideo_iwmmxt.c ---- mythtv.orig/libs/libavcodec/armv4l/mpegvideo_iwmmxt.c 2008-07-23 12:19:05.000000000 +0200 -+++ mythtv/libs/libavcodec/armv4l/mpegvideo_iwmmxt.c 2008-07-24 19:54:01.273198000 +0200 -@@ -18,9 +18,9 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - --#include "dsputil.h" --#include "mpegvideo.h" --#include "avcodec.h" -+#include "libavcodec/avcodec.h" -+#include "libavcodec/dsputil.h" -+#include "libavcodec/mpegvideo.h" - - static void dct_unquantize_h263_intra_iwmmxt(MpegEncContext *s, - DCTELEM *block, int n, int qscale) -@@ -48,7 +48,7 @@ - else - nCoeffs= s->inter_scantable.raster_end[ s->block_last_index[n] ]; - -- __asm__ __volatile__ ( -+ asm volatile ( - /* "movd %1, %%mm6 \n\t" //qmul */ - /* "packssdw %%mm6, %%mm6 \n\t" */ - /* "packssdw %%mm6, %%mm6 \n\t" */ -diff -Nurd mythtv.orig/libs/libavcodec/armv4l/simple_idct_arm.S mythtv/libs/libavcodec/armv4l/simple_idct_arm.S ---- mythtv.orig/libs/libavcodec/armv4l/simple_idct_arm.S 2008-07-23 12:19:05.000000000 +0200 -+++ mythtv/libs/libavcodec/armv4l/simple_idct_arm.S 2008-07-24 19:54:01.503198000 +0200 -@@ -79,7 +79,7 @@ - - - __row_loop: -- @@ read the row and check if it is null, almost null, or not, according to strongarm specs, it is not necessary to optimise ldr accesses (i.e. split 32bits in 2 16bits words), at least it gives more usable registers :) -+ @@ read the row and check if it is null, almost null, or not, according to strongarm specs, it is not necessary to optimize ldr accesses (i.e. split 32bits in 2 16bits words), at least it gives more usable registers :) - ldr r1, [r14, #0] @ R1=(int32)(R12)[0]=ROWr32[0] (relative row cast to a 32b pointer) - ldr r2, [r14, #4] @ R2=(int32)(R12)[1]=ROWr32[1] - ldr r3, [r14, #8] @ R3=ROWr32[2] -@@ -421,7 +421,7 @@ - @@ col[40] = ((a2 - b2) >> COL_SHIFT); - @@ col[48] = ((a1 - b1) >> COL_SHIFT); - @@ col[56] = ((a0 - b0) >> COL_SHIFT); -- @@@@@ no optimisation here @@@@@ -+ @@@@@ no optimization here @@@@@ - add r8, r6, r0 @ R8=a0+b0 - add r9, r2, r1 @ R9=a1+b1 - mov r8, r8, asr #COL_SHIFT -diff -Nurd mythtv.orig/libs/libavcodec/armv4l/simple_idct_neon.S mythtv/libs/libavcodec/armv4l/simple_idct_neon.S ---- mythtv.orig/libs/libavcodec/armv4l/simple_idct_neon.S 1970-01-01 01:00:00.000000000 +0100 -+++ mythtv/libs/libavcodec/armv4l/simple_idct_neon.S 2008-07-24 19:54:01.503198000 +0200 -@@ -0,0 +1,388 @@ -+/* -+ * ARM NEON IDCT -+ * -+ * Copyright (c) 2008 Mans Rullgard <mans@mansr.com> -+ * -+ * Based on Simple IDCT -+ * Copyright (c) 2001 Michael Niedermayer <michaelni@gmx.at> -+ * -+ * 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 W4c ((1<<(COL_SHIFT-1))/W4) -+#define ROW_SHIFT 11 -+#define COL_SHIFT 20 -+ -+#define w1 d0[0] -+#define w2 d0[1] -+#define w3 d0[2] -+#define w4 d0[3] -+#define w5 d1[0] -+#define w6 d1[1] -+#define w7 d1[2] -+#define w4c d1[3] -+ -+ .fpu neon -+ -+ .macro idct_col4_top -+ vmull.s16 q7, d6, w2 /* q9 = W2 * col[2] */ -+ vmull.s16 q8, d6, w6 /* q10 = W6 * col[2] */ -+ vmull.s16 q9, d4, w1 /* q9 = W1 * col[1] */ -+ vadd.i32 q11, q15, q7 -+ vmull.s16 q10, d4, w3 /* q10 = W3 * col[1] */ -+ vadd.i32 q12, q15, q8 -+ vmull.s16 q5, d4, w5 /* q5 = W5 * col[1] */ -+ vsub.i32 q13, q15, q8 -+ vmull.s16 q6, d4, w7 /* q6 = W7 * col[1] */ -+ vsub.i32 q14, q15, q7 -+ -+ vmlal.s16 q9, d8, w3 /* q9 += W3 * col[3] */ -+ vmlsl.s16 q10, d8, w7 /* q10 -= W7 * col[3] */ -+ vmlsl.s16 q5, d8, w1 /* q5 -= W1 * col[3] */ -+ vmlsl.s16 q6, d8, w5 /* q6 -= W5 * col[3] */ -+ .endm -+ -+ .macro idct_col4_mid1 -+ vmull.s16 q7, d3, w4 /* q7 = W4 * col[4] */ -+ vadd.i32 q11, q11, q7 -+ vsub.i32 q12, q12, q7 -+ vsub.i32 q13, q13, q7 -+ vadd.i32 q14, q14, q7 -+ .endm -+ -+ .macro idct_col4_mid2 -+ vmlal.s16 q9, d5, w5 /* q9 += W5 * col[5] */ -+ vmlsl.s16 q10, d5, w1 /* q10 -= W1 * col[5] */ -+ vmlal.s16 q5, d5, w7 /* q5 += W7 * col[5] */ -+ vmlal.s16 q6, d5, w3 /* q6 += W3 * col[5] */ -+ .endm -+ -+ .macro idct_col4_mid3 -+ vmull.s16 q7, d7, w6 /* q7 = W6 * col[6] */ -+ vmull.s16 q8, d7, w2 /* q8 = W2 * col[6] */ -+ vadd.i32 q11, q11, q7 -+ vsub.i32 q12, q12, q8 -+ vadd.i32 q13, q13, q8 -+ vsub.i32 q14, q14, q7 -+ .endm -+ -+ .macro idct_col4_mid4 -+ vmlal.s16 q9, d9, w7 -+ vmlsl.s16 q10, d9, w5 -+ vmlal.s16 q5, d9, w3 -+ vmlsl.s16 q6, d9, w1 -+ .endm -+ -+ .macro idct_col4_mid -+ vmull.s16 q7, d3, w4 /* q7 = W4 * col[4] */ -+ vmlal.s16 q9, d5, w5 /* q9 += W5 * col[5] */ -+ vmlsl.s16 q10, d5, w1 /* q10 -= W1 * col[5] */ -+ vadd.i32 q11, q11, q7 -+ vmull.s16 q8, d7, w2 /* q8 = W2 * col[6] */ -+ vsub.i32 q12, q12, q7 -+ vmlal.s16 q5, d5, w7 /* q5 += W7 * col[5] */ -+ vsub.i32 q13, q13, q7 -+ vmlal.s16 q6, d5, w3 /* q6 += W3 * col[5] */ -+ vadd.i32 q14, q14, q7 -+ vmull.s16 q7, d7, w6 /* q7 = W6 * col[6] */ -+ vadd.i32 q11, q11, q7 -+ vmlal.s16 q9, d9, w7 -+ vsub.i32 q12, q12, q8 -+ vmlsl.s16 q10, d9, w5 -+ vadd.i32 q13, q13, q8 -+ vmlal.s16 q5, d9, w3 -+ vsub.i32 q14, q14, q7 -+ vmlsl.s16 q6, d9, w1 -+ .endm -+ -+ .macro idct_col4_end -+ vadd.i32 q3, q11, q9 -+ vadd.i32 q4, q12, q10 -+ vadd.i32 q7, q13, q5 -+ vadd.i32 q8, q14, q6 -+ vsub.i32 q11, q11, q9 -+ vsub.i32 q12, q12, q10 -+ vsub.i32 q13, q13, q5 -+ vsub.i32 q14, q14, q6 -+ .endm -+ -+ .text -+ .align -+ .type idct_row4_neon, %function -+ .func idct_row4_neon -+idct_row4_neon: -+ vld1.64 {d2,d3}, [a3,:128]! -+ vld1.64 {d4,d5}, [a3,:128]! -+ vld1.64 {d6,d7}, [a3,:128]! -+ vld1.64 {d8,d9}, [a3,:128]! -+ add a3, a3, #-64 -+ -+ vmov.i32 q15, #(1<<(ROW_SHIFT-1)) -+ vorr d10, d3, d5 -+ vtrn.16 q1, q2 -+ vorr d11, d7, d9 -+ vtrn.16 q3, q4 -+ vorr d10, d10, d11 -+ vtrn.32 q1, q3 -+ vmlal.s16 q15, d2, w4 /* q15 += W4 * col[0] */ -+ vtrn.32 q2, q4 -+ vmov a4, v1, d10 -+ -+ idct_col4_top -+ -+ orrs a4, a4, v1 -+ beq 1f -+ idct_col4_mid -+1: -+ vadd.i32 q3, q11, q9 -+ vadd.i32 q4, q12, q10 -+ vshrn.i32 d2, q3, #ROW_SHIFT -+ vadd.i32 q7, q13, q5 -+ vshrn.i32 d4, q4, #ROW_SHIFT -+ vadd.i32 q8, q14, q6 -+ vshrn.i32 d6, q7, #ROW_SHIFT -+ vsub.i32 q11, q11, q9 -+ vshrn.i32 d8, q8, #ROW_SHIFT -+ vsub.i32 q12, q12, q10 -+ vshrn.i32 d9, q11, #ROW_SHIFT -+ vsub.i32 q13, q13, q5 -+ vshrn.i32 d7, q12, #ROW_SHIFT -+ vsub.i32 q14, q14, q6 -+ vshrn.i32 d5, q13, #ROW_SHIFT -+ vshrn.i32 d3, q14, #ROW_SHIFT -+ -+ vtrn.16 q1, q2 -+ vtrn.16 q3, q4 -+ vtrn.32 q1, q3 -+ vtrn.32 q2, q4 -+ -+ vst1.64 {d2,d3}, [a3,:128]! -+ vst1.64 {d4,d5}, [a3,:128]! -+ vst1.64 {d6,d7}, [a3,:128]! -+ vst1.64 {d8,d9}, [a3,:128]! -+ -+ mov pc, lr -+ .endfunc -+ -+ .align -+ .type idct_col4_neon, %function -+ .func idct_col4_neon -+idct_col4_neon: -+ mov ip, #16 -+ vld1.64 {d2}, [a3,:64], ip /* d2 = col[0] */ -+ vld1.64 {d4}, [a3,:64], ip /* d3 = col[1] */ -+ vld1.64 {d6}, [a3,:64], ip /* d4 = col[2] */ -+ vld1.64 {d8}, [a3,:64], ip /* d5 = col[3] */ -+ vld1.64 {d3}, [a3,:64], ip /* d6 = col[4] */ -+ vld1.64 {d5}, [a3,:64], ip /* d7 = col[5] */ -+ vld1.64 {d7}, [a3,:64], ip /* d8 = col[6] */ -+ vld1.64 {d9}, [a3,:64], ip /* d9 = col[7] */ -+ -+ vrev64.32 d11, d3 -+ vrev64.32 d13, d5 -+ vorr d11, d3, d11 -+ vrev64.32 d15, d7 -+ vorr d13, d5, d13 -+ vrev64.32 d17, d9 -+ vorr d15, d7, d15 -+ vmov.32 v1, d11[0] -+ vmov.32 v2, d13[0] -+ vorr d17, d9, d17 -+ vmov.32 v3, d15[0] -+ vmov.32 ip, d17[0] -+ vdup.16 d30, w4c -+ vadd.i16 d30, d30, d2 -+ vmull.s16 q15, d30, w4 /* q15 = W4 * (col[0]+(1<<(COL_SHIFT-1))/W4) */ -+ -+ idct_col4_top -+ tst v1, v1 -+ beq 1f -+ idct_col4_mid1 -+1: tst v2, v2 -+ beq 2f -+ idct_col4_mid2 -+2: tst v3, v3 -+ beq 3f -+ idct_col4_mid3 -+3: tst ip, ip -+ beq 4f -+ idct_col4_mid4 -+4: -+ idct_col4_end -+ -+ vshr.s32 q2, q3, #COL_SHIFT -+ vshr.s32 q3, q4, #COL_SHIFT -+ vmovn.i32 d2, q2 -+ vshr.s32 q4, q7, #COL_SHIFT -+ vmovn.i32 d3, q3 -+ vshr.s32 q5, q8, #COL_SHIFT -+ vmovn.i32 d4, q4 -+ vshr.s32 q6, q14, #COL_SHIFT -+ vmovn.i32 d5, q5 -+ vshr.s32 q7, q13, #COL_SHIFT -+ vmovn.i32 d6, q6 -+ vshr.s32 q8, q12, #COL_SHIFT -+ vmovn.i32 d7, q7 -+ vshr.s32 q9, q11, #COL_SHIFT -+ vmovn.i32 d8, q8 -+ vmovn.i32 d9, q9 -+ -+ mov pc, lr -+ .endfunc -+ -+ .macro idct_col4_st16 -+ mov ip, #16 -+ vst1.64 {d2}, [a3,:64], ip -+ vst1.64 {d3}, [a3,:64], ip -+ vst1.64 {d4}, [a3,:64], ip -+ vst1.64 {d5}, [a3,:64], ip -+ vst1.64 {d6}, [a3,:64], ip -+ vst1.64 {d7}, [a3,:64], ip -+ vst1.64 {d8}, [a3,:64], ip -+ vst1.64 {d9}, [a3,:64], ip -+ .endm -+ -+ .align -+ .type idct_col4_add8, %function -+ .func idct_col4_add8 -+idct_col4_add8: -+ vld1.32 {d10[0]}, [a1,:32], a2 -+ vld1.32 {d10[1]}, [a1,:32], a2 -+ vld1.32 {d11[0]}, [a1,:32], a2 -+ vld1.32 {d11[1]}, [a1,:32], a2 -+ vld1.32 {d12[0]}, [a1,:32], a2 -+ vld1.32 {d12[1]}, [a1,:32], a2 -+ vld1.32 {d13[0]}, [a1,:32], a2 -+ vld1.32 {d13[1]}, [a1,:32], a2 -+ -+ vaddw.u8 q1, q1, d10 -+ vaddw.u8 q2, q2, d11 -+ vaddw.u8 q3, q3, d12 -+ vaddw.u8 q4, q4, d13 -+ -+ sub a1, a1, a2, lsl #3 -+ .endfunc -+ -+ .type idct_col4_st8, %function -+ .func idct_col4_st8 -+idct_col4_st8: -+ vqmovun.s16 d2, q1 -+ vqmovun.s16 d3, q2 -+ vqmovun.s16 d4, q3 -+ vqmovun.s16 d5, q4 -+ -+ vst1.32 {d2[0]}, [a1,:32], a2 -+ vst1.32 {d2[1]}, [a1,:32], a2 -+ vst1.32 {d3[0]}, [a1,:32], a2 -+ vst1.32 {d3[1]}, [a1,:32], a2 -+ vst1.32 {d4[0]}, [a1,:32], a2 -+ vst1.32 {d4[1]}, [a1,:32], a2 -+ vst1.32 {d5[0]}, [a1,:32], a2 -+ vst1.32 {d5[1]}, [a1,:32], a2 -+ mov pc, lr -+ .endfunc -+ -+ .align 4 -+const: .short W1, W2, W3, W4, W5, W6, W7, W4c -+ -+ .macro idct_start data -+ pld [\data] -+ pld [\data, #64] -+ push {v1-v3, lr} -+ vpush {d8-d15} -+ adr a4, const -+ vld1.64 {d0,d1}, [a4,:128] -+ .endm -+ -+ .macro idct_end -+ vpop {d8-d15} -+ pop {v1-v3, pc} -+ .endm -+ -+ .align -+ .global ff_simple_idct_neon -+ .type ff_simple_idct_neon, %function -+ .func ff_simple_idct_neon -+/* void ff_simple_idct_neon(DCTELEM *data); */ -+ff_simple_idct_neon: -+ idct_start a1 -+ -+ mov a3, a1 -+ bl idct_row4_neon -+ bl idct_row4_neon -+ add a3, a3, #-128 -+ bl idct_col4_neon -+ add a3, a3, #-128 -+ idct_col4_st16 -+ add a3, a3, #-120 -+ bl idct_col4_neon -+ add a3, a3, #-128 -+ idct_col4_st16 -+ -+ idct_end -+ .endfunc -+ -+ .align -+ .global ff_simple_idct_put_neon -+ .type ff_simple_idct_put_neon, %function -+ .func ff_simple_idct_put_neon -+/* void ff_simple_idct_put_neon(uint8_t *dst, int line_size, DCTELEM *data); */ -+ff_simple_idct_put_neon: -+ idct_start a3 -+ -+ bl idct_row4_neon -+ bl idct_row4_neon -+ add a3, a3, #-128 -+ bl idct_col4_neon -+ bl idct_col4_st8 -+ sub a1, a1, a2, lsl #3 -+ add a1, a1, #4 -+ add a3, a3, #-120 -+ bl idct_col4_neon -+ bl idct_col4_st8 -+ -+ idct_end -+ .endfunc -+ -+ .align -+ .global ff_simple_idct_add_neon -+ .type ff_simple_idct_add_neon, %function -+ .func ff_simple_idct_add_neon -+/* void ff_simple_idct_add_neon(uint8_t *dst, int line_size, DCTELEM *data); */ -+ff_simple_idct_add_neon: -+ idct_start a3 -+ -+ bl idct_row4_neon -+ bl idct_row4_neon -+ add a3, a3, #-128 -+ bl idct_col4_neon -+ bl idct_col4_add8 -+ sub a1, a1, a2, lsl #3 -+ add a1, a1, #4 -+ add a3, a3, #-120 -+ bl idct_col4_neon -+ bl idct_col4_add8 -+ -+ idct_end -+ .endfunc -diff -Nurd mythtv.orig/libs/libavcodec/avcodec.h mythtv/libs/libavcodec/avcodec.h ---- mythtv.orig/libs/libavcodec/avcodec.h 2008-07-23 12:19:11.000000000 +0200 -+++ mythtv/libs/libavcodec/avcodec.h 2008-07-24 19:56:46.953198000 +0200 -@@ -1328,6 +1328,8 @@ - #define FF_IDCT_SIMPLEARMV6 17 - #define FF_IDCT_SIMPLEVIS 18 - #define FF_IDCT_WMV2 19 -+#define FF_IDCT_FAAN 20 -+#define FF_IDCT_SIMPLENEON 21 - - /** - * slice count -diff -Nurd mythtv.orig/libs/libavcodec/libavcodec.pro mythtv/libs/libavcodec/libavcodec.pro ---- mythtv.orig/libs/libavcodec/libavcodec.pro 2008-07-23 12:19:10.000000000 +0200 -+++ mythtv/libs/libavcodec/libavcodec.pro 2008-07-24 19:54:01.503198000 +0200 -@@ -413,6 +413,8 @@ - - contains( HAVE_ARMV6, yes ) { SOURCES += armv4l/simple_idct_armv6.S } - -+contains( HAVE_NEON, yes ) { SOURCES += armv4l/float_arm_vfp.c armv4l/simple_idct_neon.S armv4l/dsputil_neon.c armv4l/h264dsp_neon.S } -+ - contains( HAVE_VIS, yes ) { - SOURCES += sparc/dsputil_vis.c - SOURCES += sparc/simple_idct_vis.c -diff -Nurd mythtv.orig/libs/libavcodec/utils.c mythtv/libs/libavcodec/utils.c ---- mythtv.orig/libs/libavcodec/utils.c 2008-07-23 12:19:10.000000000 +0200 -+++ mythtv/libs/libavcodec/utils.c 2008-07-24 19:58:12.403198000 +0200 -@@ -594,6 +594,7 @@ - {"sh4", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SH4, INT_MIN, INT_MAX, V|E|D, "idct"}, - {"simplearm", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEARM, INT_MIN, INT_MAX, V|E|D, "idct"}, - {"simplearmv5te", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEARMV5TE, INT_MIN, INT_MAX, V|E|D, "idct"}, -+{"simpleneon", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLENEON, INT_MIN, INT_MAX, V|E|D, "idct"}, - {"h264", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_H264, INT_MIN, INT_MAX, V|E|D, "idct"}, - {"vp3", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_VP3, INT_MIN, INT_MAX, V|E|D, "idct"}, - {"ipp", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_IPP, INT_MIN, INT_MAX, V|E|D, "idct"}, diff --git a/recipes/mythtv/mythtv-0.21/no-cortex-deadlock.patch b/recipes/mythtv/mythtv-0.21/no-cortex-deadlock.patch deleted file mode 100644 index 4e93af196a..0000000000 --- a/recipes/mythtv/mythtv-0.21/no-cortex-deadlock.patch +++ /dev/null @@ -1,115 +0,0 @@ -From: Mans Rullgard <mans@mansr.com> -Date: Tue, 29 Jul 2008 21:13:14 +0000 (+0100) -Subject: ARM: work around Cortex-A8 erratum 451034 -X-Git-Url: http://git.mansr.com/?p=ffmpeg.mru;a=commitdiff_plain;h=c6bbb0c33f6f681b8265a43f8744735de5a9d45e - -ARM: work around Cortex-A8 erratum 451034 - -On Cortex-A8 r1p0 and r1p1, executing a NEON store with an integer -store in the store buffer, can cause a processor deadlock under -certain conditions. - -A DMB instruction at the start of every NEON function ensures that -the integer store buffer is always empty before executing any NEON -store, thus avoiding the deadlock condition. - -See ARM Cortex-A8 Errata Notice (PR120-PRDC-008070) for full details. ---- - -diff --git b/mythtv/libs/libavcodec/armv4l/dsputil_neon.c b/mythtv/libs/libavcodec/armv4l/dsputil_neon.c -index fa0602d..4fbadfc 100644 ---- b/mythtv/libs/libavcodec/armv4l/dsputil_neon.c -+++ b/mythtv/libs/libavcodec/armv4l/dsputil_neon.c -@@ -28,6 +28,7 @@ extern void ff_put_h264_chroma_mc8_neon(uint8_t *dst, uint8_t *src, int stride, - int h, int x, int y); - - #define PUT_PIXELS_16_X2(vhadd) \ -+ "dmb \n\t" \ - "1: \n\t" \ - "vld1.64 {d0,d1,d2}, [%[p]], %[line_size] \n\t" \ - "vld1.64 {d4,d5,d6}, [%[p]], %[line_size] \n\t" \ -@@ -46,6 +47,7 @@ extern void ff_put_h264_chroma_mc8_neon(uint8_t *dst, uint8_t *src, int stride, - "lsl %[l2], %[line_size], #1 \n\t" \ - "vld1.64 {d0,d1}, [%[p0]], %[l2] \n\t" \ - "vld1.64 {d2,d3}, [%[p1]], %[l2] \n\t" \ -+ "dmb \n\t" \ - "1: \n\t" \ - "subs %[h], %[h], #2 \n\t" \ - vhadd".u8 q2, q0, q1 \n\t" \ -@@ -69,6 +71,7 @@ extern void ff_put_h264_chroma_mc8_neon(uint8_t *dst, uint8_t *src, int stride, - "vaddl.u8 q10, d1, d3 \n\t" \ - "vaddl.u8 q9, d4, d6 \n\t" \ - "vaddl.u8 q11, d5, d7 \n\t" \ -+ "dmb \n\t" \ - "1: \n\t" \ - "subs %[h], %[h], #2 \n\t" \ - "vld1.64 {d0,d1,d2}, [%[p0]], %[l2] \n\t" \ -@@ -98,6 +101,7 @@ extern void ff_put_h264_chroma_mc8_neon(uint8_t *dst, uint8_t *src, int stride, - "bgt 1b \n\t" - - #define PUT_PIXELS_8_X2(vhadd) \ -+ "dmb \n\t" \ - "1: \n\t" \ - "vld1.64 {d0,d1}, [%[p]], %[line_size] \n\t" \ - "vld1.64 {d2,d3}, [%[p]], %[line_size] \n\t" \ -@@ -116,6 +120,7 @@ extern void ff_put_h264_chroma_mc8_neon(uint8_t *dst, uint8_t *src, int stride, - "lsl %[l2], %[line_size], #1 \n\t" \ - "vld1.64 {d0}, [%[p0]], %[l2] \n\t" \ - "vld1.64 {d1}, [%[p1]], %[l2] \n\t" \ -+ "dmb \n\t" \ - "1: \n\t" \ - "subs %[h], %[h], #2 \n\t" \ - vhadd".u8 d4, d0, d1 \n\t" \ -@@ -137,6 +142,7 @@ extern void ff_put_h264_chroma_mc8_neon(uint8_t *dst, uint8_t *src, int stride, - "vext.8 d6, d2, d3, #1 \n\t" \ - "vaddl.u8 q8, d0, d4 \n\t" \ - "vaddl.u8 q9, d2, d6 \n\t" \ -+ "dmb \n\t" \ - "1: \n\t" \ - "subs %[h], %[h], #2 \n\t" \ - "vld1.64 {d0,d1}, [%[p0]], %[l2] \n\t" \ -@@ -161,6 +167,7 @@ static void put_pixels16_neon(uint8_t *block, const uint8_t *pixels, - int line_size, int h) - { - asm volatile( -+ "dmb \n\t" - "1: \n\t" - "vld1.64 {d0,d1}, [%[pixels]], %[line_size] \n\t" - "vld1.64 {d2,d3}, [%[pixels]], %[line_size] \n\t" -@@ -224,6 +231,7 @@ static void put_pixels8_neon(uint8_t *block, const uint8_t *pixels, - int line_size, int h) - { - asm volatile( -+ "dmb \n\t" - "1: \n\t" - "vld1.64 {d0}, [%[p]], %[line_size] \n\t" - "vld1.64 {d1}, [%[p]], %[line_size] \n\t" -diff --git b/mythtv/libs/libavcodec/armv4l/h264dsp_neon.S b/mythtv/libs/libavcodec/armv4l/h264dsp_neon.S -index a766867..8171ee2 100644 ---- b/mythtv/libs/libavcodec/armv4l/h264dsp_neon.S -+++ b/mythtv/libs/libavcodec/armv4l/h264dsp_neon.S -@@ -40,6 +40,8 @@ ff_put_h264_chroma_mc8_neon: - sub r4, r4, r5, lsl #3 - add r4, r4, #64 - -+ dmb -+ - beq 2f - - add r5, r1, r2 -diff --git b/mythtv/libs/libavcodec/armv4l/simple_idct_neon.S b/mythtv/libs/libavcodec/armv4l/simple_idct_neon.S -index 943e04f..abda6b2 100644 ---- b/mythtv/libs/libavcodec/armv4l/simple_idct_neon.S -+++ b/mythtv/libs/libavcodec/armv4l/simple_idct_neon.S -@@ -307,9 +307,10 @@ idct_col4_st8: - const: .short W1, W2, W3, W4, W5, W6, W7, W4c - - .macro idct_start data -+ push {v1-v3, lr} - pld [\data] - pld [\data, #64] -- push {v1-v3, lr} -+ dmb - vpush {d8-d15} - adr a4, const - vld1.64 {d0,d1}, [a4,:128] diff --git a/recipes/mythtv/mythtv_0.18.1.bb b/recipes/mythtv/mythtv_0.18.1.bb deleted file mode 100644 index 2d3f55c711..0000000000 --- a/recipes/mythtv/mythtv_0.18.1.bb +++ /dev/null @@ -1,50 +0,0 @@ -require mythtv.inc - -inherit qmake2 qt3x11 - -PR = "r2" - -SRC_URI += "file://msmpeg-underscore-pic.patch;patch=1 \ - file://settings.pro" - - -do_configure_prepend() { -# it's not autotools anyway, so we call ./configure directly - find . -name "Makefile"|xargs rm -f - ./configure --prefix=/usr \ - --mandir=/usr/man \ - --disable-mp3lame \ - --enable-vorbis \ - --disable-faad \ - --disable-faadbin \ - --disable-faac \ - --disable-mingw32 \ - --enable-a52 \ - --disable-a52bin \ - --enable-pp \ - --enable-shared-pp \ - --enable-shared \ - --disable-amr_nb \ - --disable-amr_nb-fixed \ - --disable-sunmlib \ - \ - --cpu=${MYTHTV_ARCH} \ - --enable-mmx \ - --disable-altivec \ - --enable-v4l \ - --enable-audio-oss \ - --disable-audio-beos \ - --enable-dv1394 \ - --enable-network \ - --enable-zlib \ - --enable-simple_idct \ - --disable-vhook \ - --disable-mpegaudio-hp \ - --enable-ffserver \ - --enable-ffplay \ - --enable-risky - - install -m 0644 ${WORKDIR}/settings.pro ${S}/ - sed 's!PREFIX =.*!PREFIX = ${prefix}!' < settings.pro > settings.pro.new - mv settings.pro.new settings.pro -} diff --git a/recipes/mythtv/mythtv_0.20.bb b/recipes/mythtv/mythtv_0.20.bb deleted file mode 100644 index 467ed5112b..0000000000 --- a/recipes/mythtv/mythtv_0.20.bb +++ /dev/null @@ -1,73 +0,0 @@ -require mythtv.inc - -inherit qmake2 qt3x11 - -DEPENDS += "openchrome" -PR = "r1" - -SRC_URI += "file://configure.patch;patch=1 \ - file://libmyth-libdir.patch;patch=1" - -# Seen on the mythtv web page: -# http://www.mythtv.org/mc/fix-mythweb-in-0.20.diff;patch=1 - -QMAKE_PROFILES = "mythtv.pro" - -mythlibs = "mythavutil mythavcodec mythavformat myth mythtv mythui mythfreemheg mythupnp mythlivemedia" -PACKAGES =+ "mythtv-backend mythtv-frontend mythtv-bin mythtv-filters mythtv-data" - -FILES_mythtv-backend = "${bindir}/mythbackend ${bindir}/mythcommflag ${bindir}/mythfilldatabase ${bindir}/mythtranscode" -FILES_mythtv-frontend = "${bindir}/mythfrontend ${datadir}/mythtv/i18n/mythfrontend_* ${datadir}/mythtv/*.ttf" -RDEPENDS_mythtv-frontend = "qt-x11-plugins-sqldrivers qt-x11-plugins-imageformats" -FILES_mythtv-bin = "${bindir}" -FILES_mythtv-filters = "${libdir}/mythtv/filters" -FILES_mythtv-data = "${datadir}" -RDEPENDS_${PN} = "mythtv-backend mythtv-frontend mythtv-bin mythtv-filters mythtv-data" -ALLOW_EMPTY_${PN} = "1" - -PACKAGES_DYNAMIC = "mythtv-theme-*" - -python __anonymous () { - import bb - - mythlibs = bb.data.getVar('mythlibs', d).split() - pv = bb.data.expand(bb.data.getVar("PV", d), d) - - for m in mythlibs: - bb.data.setVar("FILES_lib%s%s" % (m, pv), "${libdir}/lib%s-%s.so.*" % (m, pv), d) - bb.data.setVar("FILES_lib%s%s-dev" % (m, pv), "${libdir}/lib%s-%s.*" % (m, pv), d) - - packages = " ".join(map(lambda x: "lib%s%s lib%s%s-dev" % (x, pv, x, pv), mythlibs) + bb.data.getVar("PACKAGES", d).split()) - - bb.data.setVar("PACKAGES", packages, d) -} -do_configure_prepend() { -# it's not autotools anyway, so we call ./configure directly - find . -name "Makefile"|xargs rm -f - ./configure --prefix=/usr \ - --mandir=/usr/man \ - --cpu=${MYTHTV_ARCH} \ - --enable-mmx \ - --disable-altivec \ - --enable-v4l \ - --enable-audio-oss \ - --enable-proc-opt \ - --enable-xvmc \ - --enable-xvmc-pro \ - --enable-dvb \ - --dvb-path=${STAGING_INCDIR} - - sed 's!PREFIX =.*!PREFIX = ${prefix}!;/INCLUDEPATH += $${PREFIX}\/include/d' < settings.pro > settings.pro.new - mv settings.pro.new settings.pro -} - -python populate_packages_prepend () { - new_packages = [] - - def the_hook(file, pkg, pattern, format, basename): - new_packages.append(pkg) - - do_split_packages(d, root=bb.data.expand('${datadir}/mythtv/themes', d), file_regex='(.*)', output_pattern='mythtv-theme-%s', description='MythTV theme %s', allow_dirs=True, hook=the_hook, prepend=True) - - bb.data.setVar("RDEPENDS_${PN}", "%s %s" % (bb.data.getVar("RDEPENDS_${PN}", d), " ".join(new_packages)), d) -} diff --git a/recipes/mythtv/mythtv_0.21.bb b/recipes/mythtv/mythtv_0.21.bb deleted file mode 100644 index 89b9b11e18..0000000000 --- a/recipes/mythtv/mythtv_0.21.bb +++ /dev/null @@ -1,108 +0,0 @@ -require mythtv.inc - -inherit qmake qt3x11 - -PR = "${SRCREV}+r5" -REALPV = "0.21" - -SRCREV = "20763" -SRC_URI = "svn://svn.mythtv.org/svn/branches/release-0-21-fixes;module=mythtv;proto=http" - -SRC_URI += " \ - file://ffmpeg-arm-update.diff;patch=1 \ - file://no-cortex-deadlock.patch;patch=1;pnum=2 \ - file://configure.patch;patch=1 \ - file://configh \ - file://configmak \ - " - -S = "${WORKDIR}/mythtv" - -QMAKE_PROFILES = "mythtv.pro" - -mythlibs = "mythavutil mythavcodec mythavformat myth mythtv mythui mythfreemheg mythupnp mythlivemedia" -PACKAGES =+ "mythtv-backend mythtv-frontend mythtv-bin mythtv-filters mythtv-data" - -FILES_${PN}-dbg += "${libdir}/mythtv/filters/.debug" -FILES_mythtv-backend = "${bindir}/mythbackend ${bindir}/mythcommflag ${bindir}/mythfilldatabase ${bindir}/mythtranscode" -FILES_mythtv-frontend = "${bindir}/mythfrontend ${datadir}/mythtv/i18n/mythfrontend_* ${datadir}/mythtv/*.ttf" -RDEPENDS_mythtv-frontend = "qt-x11-plugins-sqldrivers qt-x11-plugins-imageformats" -FILES_mythtv-bin = "${bindir}/*" -FILES_mythtv-filters = "${libdir}/mythtv/filters/*" -FILES_mythtv-data = "${datadir}" -RDEPENDS_${PN} = "mythtv-backend mythtv-frontend mythtv-bin mythtv-filters mythtv-data" -ALLOW_EMPTY_${PN} = "1" - -PACKAGES_DYNAMIC = "mythtv-theme-*" - -python __anonymous () { - import bb - - mythlibs = bb.data.getVar('mythlibs', d).split() - pv = bb.data.expand(bb.data.getVar("REALPV", d), d) - - for m in mythlibs: - bb.data.setVar("FILES_lib%s%s" % (m, pv), "${libdir}/lib%s-%s.so.*" % (m, pv), d) - bb.data.setVar("FILES_lib%s%s-dev" % (m, pv), "${libdir}/lib%s-%s.*" % (m, pv), d) - - packages = " ".join(map(lambda x: "lib%s%s lib%s%s-dev" % (x, pv, x, pv), mythlibs) + bb.data.getVar("PACKAGES", d).split()) - - bb.data.setVar("PACKAGES", packages, d) -} - -EXTRA_OECONF_armv5te = " --enable-armv5te " -EXTRA_OECONF_armv6 = " --enable-armv6 " -EXTRA_OECONF_armv7a = " --enable-armv6" - -#build with support for the iwmmxt instruction and pxa270fb overlay support (pxa270 and up) -#not every iwmmxt machine has the lcd connected to pxafb, but building the module doesn't hurt -MY_ARCH := "${PACKAGE_ARCH}" -PACKAGE_ARCH = "${@base_contains('MACHINE_FEATURES', 'iwmmxt', 'iwmmxt', '${MY_ARCH}',d)}" - -MY_TARGET_CC_ARCH := "${TARGET_CC_ARCH}" -TARGET_CC_ARCH = "${@base_contains('MACHINE_FEATURES', 'iwmmxt', '-march=iwmmxt -mtune=iwmmxt', '${MY_TARGET_CC_ARCH}',d)}" - -EXTRA_OECONF_append = " ${@base_contains('MACHINE_FEATURES', 'iwmmxt', '--enable-pxa --enable-iwmmxt', '',d)} " - -do_configure_prepend() { -# it's not autotools anyway, so we call ./configure directly - find . -name "Makefile"|xargs rm -f - - ./configure --prefix=/usr \ - --mandir=/usr/man \ - --cpu=${MYTHTV_ARCH} \ - --arch=${MYTHTV_ARCH} \ - --disable-altivec \ - --disable-directfb \ - --disable-opengl-video \ - --disable-strip \ - --enable-v4l \ - --enable-audio-oss \ - --enable-proc-opt \ - --enable-dvb \ - --enable-libmp3lame \ - --cross-compile \ - --dvb-path=${STAGING_INCDIR} \ - --with-bindings= \ - ${EXTRA_OECONF} - - sed 's!PREFIX =.*!PREFIX = ${prefix}!;/INCLUDEPATH += $${PREFIX}\/include/d' < settings.pro > settings.pro.new - mv settings.pro.new settings.pro - for pro in ${S}/*/*pro ${S}/*/*/*pro ${S}/*/*/*/*pro ; do - sed -i -e s:opengl::g $pro - done - sed -i /.SUBDIR/d ${S}/bindings/*pro - cat ${WORKDIR}/configh >> ${S}/config.h - cat ${WORKDIR}/configmak ${OPTSMAK} >> ${S}/config.mak -} - -python populate_packages_prepend () { - new_packages = [] - - def the_hook(file, pkg, pattern, format, basename): - new_packages.append(pkg) - - do_split_packages(d, root=bb.data.expand('${datadir}/mythtv/themes', d), file_regex='(.*)', output_pattern='mythtv-theme-%s', description='MythTV theme %s', allow_dirs=True, hook=the_hook, prepend=True) - - bb.data.setVar("RDEPENDS_${PN}", "%s %s" % (bb.data.getVar("RDEPENDS_${PN}", d), " ".join(new_packages)), d) -} |