1 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
2 --- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/configure.ac 2006-09-23 15:35:21.000000000 +0200
3 +++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/configure.ac 2007-05-01 12:23:39.000000000 +0200
7 # armv4l is a subset of armv5tel
9 + arm|armv4l|armv5tel|armv5te)
14 AC_FF_ALLOW_DISABLE(HAVE_IWMMXT, iwmmxt, use ARM/IWMMXT optimizations,[
15 if test x$TARGET_ARCH = xarmv4l; then
16 AC_MSG_CHECKING(for support of IWMMXT optimizations)
20 __asm__ __volatile__ ("wunpckelub wr6, wr4");
23 ],[ HAVE_IWMMXT=yes && AC_MSG_RESULT(yes) ],[
24 HAVE_IWMMXT=no && AC_MSG_RESULT(no) ])
31 +AC_FF_ALLOW_DISABLE(HAVE_ARMV5TE, armv5te, use ARMV5TE optimizations,[
32 + if test x$TARGET_ARCH = xarmv4l; then
33 + AC_MSG_CHECKING(for support of ARMV5TE specific instructions)
35 + __asm__ __volatile__ ("smulbb a4,ip,a3");
36 + ],[ HAVE_ARMV5TE=yes && AC_MSG_RESULT(yes) ],[
37 + HAVE_ARMV5TE=no && AC_MSG_RESULT(no) ])
44 AC_FF_ALLOW_ENABLE(HAVE_GPROF, gprof, profiling with gprof,[
46 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
47 --- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm.c 2006-09-20 20:55:37.000000000 +0200
48 +++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm.c 2007-05-01 12:23:40.000000000 +0200
49 * ARMv4L optimized DSP utils
50 * Copyright (c) 2001 Lionel Ulmer.
52 - * This library is free software; you can redistribute it and/or
53 + * This file is part of FFmpeg.
55 + * FFmpeg is free software; you can redistribute it and/or
56 * modify it under the terms of the GNU Lesser General Public
57 * License as published by the Free Software Foundation; either
58 - * version 2 of the License, or (at your option) any later version.
59 + * version 2.1 of the License, or (at your option) any later version.
61 - * This library is distributed in the hope that it will be useful,
62 + * FFmpeg is distributed in the hope that it will be useful,
63 * but WITHOUT ANY WARRANTY; without even the implied warranty of
64 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
65 * Lesser General Public License for more details.
67 * You should have received a copy of the GNU Lesser General Public
68 - * License along with this library; if not, write to the Free Software
69 + * License along with FFmpeg; if not, write to the Free Software
70 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
74 +#include "../dsputil.h"
79 extern void j_rev_dct_ARM(DCTELEM *data);
80 extern void simple_idct_ARM(DCTELEM *data);
82 +extern void simple_idct_armv5te(DCTELEM *data);
83 +extern void simple_idct_put_armv5te(uint8_t *dest, int line_size,
85 +extern void simple_idct_add_armv5te(uint8_t *dest, int line_size,
89 static void (*ff_put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size);
90 static void (*ff_add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size);
92 ff_add_pixels_clamped = c->add_pixels_clamped;
94 if(idct_algo == FF_IDCT_AUTO){
96 +#if defined(HAVE_IPP)
97 idct_algo = FF_IDCT_IPP;
98 +#elif defined(HAVE_ARMV5TE)
99 + idct_algo = FF_IDCT_SIMPLEARMV5TE;
101 idct_algo = FF_IDCT_ARM;
104 c->idct_add= simple_idct_ARM_add;
105 c->idct = simple_idct_ARM;
106 c->idct_permutation_type= FF_NO_IDCT_PERM;
108 + } else if (idct_algo==FF_IDCT_SIMPLEARMV5TE){
109 + c->idct_put= simple_idct_put_armv5te;
110 + c->idct_add= simple_idct_add_armv5te;
111 + c->idct = simple_idct_armv5te;
112 + c->idct_permutation_type = FF_NO_IDCT_PERM;
115 } else if (idct_algo==FF_IDCT_IPP){
116 c->idct_put= simple_idct_ipp_put;
117 --- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm_s.S 2006-02-19 00:04:59.000000000 +0100
118 +++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm_s.S 2007-05-01 12:23:40.000000000 +0200
120 @ ARMv4L optimized DSP utils
121 @ Copyright (c) 2004 AGAWA Koji <i (AT) atty (DOT) jp>
123 -@ This library is free software; you can redistribute it and/or
124 +@ This file is part of FFmpeg.
126 +@ FFmpeg is free software; you can redistribute it and/or
127 @ modify it under the terms of the GNU Lesser General Public
128 @ License as published by the Free Software Foundation; either
129 -@ version 2 of the License, or (at your option) any later version.
130 +@ version 2.1 of the License, or (at your option) any later version.
132 -@ This library is distributed in the hope that it will be useful,
133 +@ FFmpeg is distributed in the hope that it will be useful,
134 @ but WITHOUT ANY WARRANTY; without even the implied warranty of
135 @ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
136 @ Lesser General Public License for more details.
138 @ You should have received a copy of the GNU Lesser General Public
139 -@ License along with this library; if not, write to the Free Software
140 +@ License along with FFmpeg; if not, write to the Free Software
141 @ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
143 +#if defined(__ARM_ARCH_5__) || \
144 + defined(__ARM_ARCH_5T__) || \
145 + defined(__ARM_ARCH_5TE__)
146 +#define PLD(code...) code
148 +#define PLD(code...)
151 .macro ADJ_ALIGN_QUADWORD_D shift, Rd0, Rd1, Rd2, Rd3, Rn0, Rn1, Rn2, Rn3, Rn4
152 mov \Rd0, \Rn0, lsr #(\shift * 8)
155 @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
156 @ block = word aligned, pixles = unaligned
159 stmfd sp!, {r4-r11, lr} @ R14 is also called LR
174 ADJ_ALIGN_QUADWORD_D 1, r9, r10, r11, r12, r4, r5, r6, r7, r8
183 ADJ_ALIGN_QUADWORD_D 2, r9, r10, r11, r12, r4, r5, r6, r7, r8
192 ADJ_ALIGN_QUADWORD_D 3, r9, r10, r11, r12, r4, r5, r6, r7, r8
200 @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
201 @ block = word aligned, pixles = unaligned
204 stmfd sp!, {r4-r5,lr} @ R14 is also called LR
217 ldmia r1, {r4-r5, r12}
219 ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r12
226 ldmia r1, {r4-r5, r12}
228 ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r12
235 ldmia r1, {r4-r5, r12}
237 ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r12
245 @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
246 @ block = word aligned, pixles = unaligned
249 stmfd sp!, {r4-r10,lr} @ R14 is also called LR
253 ldmia r1, {r4-r5, r10}
255 ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10
258 RND_AVG32 r8, r9, r4, r5, r6, r7, r12
263 ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10
264 ADJ_ALIGN_DOUBLEWORD_D 2, r8, r9, r4, r5, r10
267 RND_AVG32 r4, r5, r6, r7, r8, r9, r12
272 ADJ_ALIGN_DOUBLEWORD_D 2, r6, r7, r4, r5, r10
273 ADJ_ALIGN_DOUBLEWORD_D 3, r8, r9, r4, r5, r10
276 RND_AVG32 r4, r5, r6, r7, r8, r9, r12
280 ldmia r1, {r4-r5, r10}
282 ADJ_ALIGN_DOUBLEWORD_D 3, r6, r7, r4, r5, r10
285 RND_AVG32 r8, r9, r6, r7, r5, r10, r12
289 put_no_rnd_pixels8_x2_arm:
290 @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
291 @ block = word aligned, pixles = unaligned
294 stmfd sp!, {r4-r10,lr} @ R14 is also called LR
298 ldmia r1, {r4-r5, r10}
300 ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10
303 NO_RND_AVG32 r8, r9, r4, r5, r6, r7, r12
308 ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10
309 ADJ_ALIGN_DOUBLEWORD_D 2, r8, r9, r4, r5, r10
312 NO_RND_AVG32 r4, r5, r6, r7, r8, r9, r12
317 ADJ_ALIGN_DOUBLEWORD_D 2, r6, r7, r4, r5, r10
318 ADJ_ALIGN_DOUBLEWORD_D 3, r8, r9, r4, r5, r10
321 NO_RND_AVG32 r4, r5, r6, r7, r8, r9, r12
325 ldmia r1, {r4-r5, r10}
327 ADJ_ALIGN_DOUBLEWORD_D 3, r6, r7, r4, r5, r10
330 NO_RND_AVG32 r8, r9, r6, r7, r5, r10, r12
335 @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
336 @ block = word aligned, pixles = unaligned
339 stmfd sp!, {r4-r11,lr} @ R14 is also called LR
342 @@ -352,13 +361,13 @@
348 RND_AVG32 r8, r9, r4, r5, r6, r7, r12
355 RND_AVG32 r8, r9, r6, r7, r4, r5, r12
358 @@ -369,18 +378,18 @@
364 ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6
369 ADJ_ALIGN_DOUBLEWORD 1, r7, r8, r9
370 RND_AVG32 r10, r11, r4, r5, r7, r8, r12
377 ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6
379 RND_AVG32 r10, r11, r7, r8, r4, r5, r12
380 @@ -392,18 +401,18 @@
386 ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6
391 ADJ_ALIGN_DOUBLEWORD 2, r7, r8, r9
392 RND_AVG32 r10, r11, r4, r5, r7, r8, r12
399 ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6
401 RND_AVG32 r10, r11, r7, r8, r4, r5, r12
402 @@ -415,18 +424,18 @@
408 ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6
413 ADJ_ALIGN_DOUBLEWORD 3, r7, r8, r9
414 RND_AVG32 r10, r11, r4, r5, r7, r8, r12
421 ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6
423 RND_AVG32 r10, r11, r7, r8, r4, r5, r12
425 put_no_rnd_pixels8_y2_arm:
426 @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
427 @ block = word aligned, pixles = unaligned
430 stmfd sp!, {r4-r11,lr} @ R14 is also called LR
433 @@ -461,13 +470,13 @@
439 NO_RND_AVG32 r8, r9, r4, r5, r6, r7, r12
446 NO_RND_AVG32 r8, r9, r6, r7, r4, r5, r12
449 @@ -478,18 +487,18 @@
455 ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6
460 ADJ_ALIGN_DOUBLEWORD 1, r7, r8, r9
461 NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12
468 ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6
470 NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12
471 @@ -501,18 +510,18 @@
477 ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6
482 ADJ_ALIGN_DOUBLEWORD 2, r7, r8, r9
483 NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12
490 ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6
492 NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12
493 @@ -524,18 +533,18 @@
499 ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6
504 ADJ_ALIGN_DOUBLEWORD 3, r7, r8, r9
505 NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12
512 ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6
514 NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12
522 ADJ_ALIGN_DOUBLEWORD_D 1, r4, r5, r6, r7, r8
526 @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
527 @ block = word aligned, pixles = unaligned
530 stmfd sp!, {r4-r11,lr} @ R14 is also called LR
534 put_no_rnd_pixels8_xy2_arm:
535 @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
536 @ block = word aligned, pixles = unaligned
539 stmfd sp!, {r4-r11,lr} @ R14 is also called LR
542 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
543 --- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt.c 2006-02-19 00:04:59.000000000 +0100
544 +++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt.c 2007-05-01 12:23:40.000000000 +0200
546 * iWMMXt optimized DSP utils
547 * Copyright (c) 2004 AGAWA Koji
549 - * This library is free software; you can redistribute it and/or
550 + * This file is part of FFmpeg.
552 + * FFmpeg is free software; you can redistribute it and/or
553 * modify it under the terms of the GNU Lesser General Public
554 * License as published by the Free Software Foundation; either
555 - * version 2 of the License, or (at your option) any later version.
556 + * version 2.1 of the License, or (at your option) any later version.
558 - * This library is distributed in the hope that it will be useful,
559 + * FFmpeg is distributed in the hope that it will be useful,
560 * but WITHOUT ANY WARRANTY; without even the implied warranty of
561 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
562 * Lesser General Public License for more details.
564 * You should have received a copy of the GNU Lesser General Public
565 - * License along with this library; if not, write to the Free Software
566 + * License along with FFmpeg; if not, write to the Free Software
567 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
570 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
571 --- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt_rnd.h 2006-09-20 20:55:37.000000000 +0200
572 +++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt_rnd.h 2007-05-01 12:23:40.000000000 +0200
574 * iWMMXt optimized DSP utils
575 * copyright (c) 2004 AGAWA Koji
577 - * This library is free software; you can redistribute it and/or
578 + * This file is part of FFmpeg.
580 + * FFmpeg is free software; you can redistribute it and/or
581 * modify it under the terms of the GNU Lesser General Public
582 * License as published by the Free Software Foundation; either
583 - * version 2 of the License, or (at your option) any later version.
584 + * version 2.1 of the License, or (at your option) any later version.
586 - * This library is distributed in the hope that it will be useful,
587 + * FFmpeg is distributed in the hope that it will be useful,
588 * but WITHOUT ANY WARRANTY; without even the implied warranty of
589 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
590 * Lesser General Public License for more details.
592 * You should have received a copy of the GNU Lesser General Public
593 - * License along with this library; if not, write to the Free Software
594 + * License along with FFmpeg; if not, write to the Free Software
595 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
598 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
599 --- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/Makefile.am 2006-09-22 06:07:23.000000000 +0200
600 +++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/Makefile.am 2007-05-01 12:23:40.000000000 +0200
602 iwmmxt_libs = libiwmmxt.la
606 +armv5te_libs = libarmv5te.la
609 noinst_LTLIBRARIES = \
615 libarmv4l_la_SOURCES = \
621 +libarmv5te_la_SOURCES = \
622 + simple_idct_armv5te.S
624 libiwmmxt_la_SOURCES = \
627 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
628 --- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mathops.h 2006-09-22 06:07:23.000000000 +0200
629 +++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mathops.h 2007-05-01 12:23:40.000000000 +0200
631 * simple math operations
632 * Copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> et al
634 - * This library is free software; you can redistribute it and/or
635 + * This file is part of FFmpeg.
637 + * FFmpeg is free software; you can redistribute it and/or
638 * modify it under the terms of the GNU Lesser General Public
639 * License as published by the Free Software Foundation; either
640 - * version 2 of the License, or (at your option) any later version.
641 + * version 2.1 of the License, or (at your option) any later version.
643 - * This library is distributed in the hope that it will be useful,
644 + * FFmpeg is distributed in the hope that it will be useful,
645 * but WITHOUT ANY WARRANTY; without even the implied warranty of
646 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
647 * Lesser General Public License for more details.
649 * You should have received a copy of the GNU Lesser General Public
650 - * License along with this library; if not, write to the Free Software
651 + * License along with FFmpeg; if not, write to the Free Software
652 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
656 # define MAC16(rt, ra, rb) \
657 asm ("smlabb %0, %2, %3, %0" : "=r" (rt) : "0" (rt), "r" (ra), "r" (rb));
658 /* signed 16x16 -> 32 multiply */
659 -# define MUL16(ra, rb) \
661 - asm ("smulbb %0, %1, %2" : "=r" (__rt) : "r" (ra), "r" (rb));
662 +# define MUL16(ra, rb) \
664 + asm ("smulbb %0, %1, %2" : "=r" (__rt) : "r" (ra), "r" (rb)); \
668 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
669 --- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_arm.c 2006-02-19 00:04:59.000000000 +0100
670 +++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_arm.c 2007-05-01 12:23:40.000000000 +0200
673 * Copyright (c) 2002 Michael Niedermayer
675 - * This library is free software; you can redistribute it and/or
676 + * This file is part of FFmpeg.
678 + * FFmpeg is free software; you can redistribute it and/or
679 * modify it under the terms of the GNU Lesser General Public
680 * License as published by the Free Software Foundation; either
681 - * version 2 of the License, or (at your option) any later version.
682 + * version 2.1 of the License, or (at your option) any later version.
684 - * This library is distributed in the hope that it will be useful,
685 + * FFmpeg is distributed in the hope that it will be useful,
686 * but WITHOUT ANY WARRANTY; without even the implied warranty of
687 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
688 * Lesser General Public License for more details.
690 * You should have received a copy of the GNU Lesser General Public
691 - * License along with this library; if not, write to the Free Software
692 + * License along with FFmpeg; if not, write to the Free Software
693 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
697 -#include "dsputil.h"
698 -#include "mpegvideo.h"
699 -#include "avcodec.h"
700 +#include "../dsputil.h"
701 +#include "../mpegvideo.h"
702 +#include "../avcodec.h"
704 extern void MPV_common_init_iwmmxt(MpegEncContext *s);
706 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
707 --- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_iwmmxt.c 2006-09-20 20:55:37.000000000 +0200
708 +++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_iwmmxt.c 2007-05-01 12:23:40.000000000 +0200
711 * copyright (c) 2004 AGAWA Koji
713 - * This library is free software; you can redistribute it and/or
714 + * This file is part of FFmpeg.
716 + * FFmpeg is free software; you can redistribute it and/or
717 * modify it under the terms of the GNU Lesser General Public
718 * License as published by the Free Software Foundation; either
719 - * version 2 of the License, or (at your option) any later version.
720 + * version 2.1 of the License, or (at your option) any later version.
722 - * This library is distributed in the hope that it will be useful,
723 + * FFmpeg is distributed in the hope that it will be useful,
724 * but WITHOUT ANY WARRANTY; without even the implied warranty of
725 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
726 * Lesser General Public License for more details.
728 * You should have received a copy of the GNU Lesser General Public
729 - * License along with this library; if not, write to the Free Software
730 + * License along with FFmpeg; if not, write to the Free Software
731 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
734 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
735 --- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_arm.S 2006-09-20 20:55:37.000000000 +0200
736 +++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_arm.S 2007-05-01 12:23:40.000000000 +0200
739 * Author: Frederic Boulay <dilb@handhelds.org>
741 - * This library is free software; you can redistribute it and/or
742 + * This file is part of FFmpeg.
744 + * FFmpeg is free software; you can redistribute it and/or
745 * modify it under the terms of the GNU Lesser General Public
746 * License as published by the Free Software Foundation; either
747 - * version 2 of the License, or (at your option) any later version.
748 + * version 2.1 of the License, or (at your option) any later version.
750 - * This library is distributed in the hope that it will be useful,
751 + * FFmpeg is distributed in the hope that it will be useful,
752 * but WITHOUT ANY WARRANTY; without even the implied warranty of
753 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
754 * Lesser General Public License for more details.
756 * You should have received a copy of the GNU Lesser General Public
757 - * License along with this library; if not, write to the Free Software
758 + * License along with FFmpeg; if not, write to the Free Software
759 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
761 * The function defined in this file, is derived from the simple_idct function
762 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
763 --- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_armv5te.S 1970-01-01 01:00:00.000000000 +0100
764 +++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_armv5te.S 2007-05-01 12:23:40.000000000 +0200
769 + * Copyright (c) 2001 Michael Niedermayer <michaelni@gmx.at>
770 + * Copyright (c) 2006 Mans Rullgard <mru@inprovide.com>
772 + * This file is part of FFmpeg.
774 + * FFmpeg is free software; you can redistribute it and/or
775 + * modify it under the terms of the GNU Lesser General Public
776 + * License as published by the Free Software Foundation; either
777 + * version 2.1 of the License, or (at your option) any later version.
779 + * FFmpeg is distributed in the hope that it will be useful,
780 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
781 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
782 + * Lesser General Public License for more details.
784 + * You should have received a copy of the GNU Lesser General Public
785 + * License along with FFmpeg; if not, write to the Free Software
786 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
789 +#define W1 22725 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
790 +#define W2 21407 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
791 +#define W3 19266 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
792 +#define W4 16383 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
793 +#define W5 12873 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
794 +#define W6 8867 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
795 +#define W7 4520 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
796 +#define ROW_SHIFT 11
797 +#define COL_SHIFT 20
799 +#define W13 (W1 | (W3 << 16))
800 +#define W26 (W2 | (W6 << 16))
801 +#define W57 (W5 | (W7 << 16))
810 + .func idct_row_armv5te
815 + ldrd a3, [a1] /* a3 = row[1:0], a4 = row[3:2] */
818 + cmpeq v1, a3, lsr #16
821 + mov v1, #(1<<(ROW_SHIFT-1))
823 + sub ip, ip, #1 /* ip = W4 */
824 + smlabb v1, ip, a3, v1 /* v1 = W4*row[0]+(1<<(RS-1)) */
825 + ldr ip, [pc, #(w26-.-8)] /* ip = W2 | (W6 << 16) */
833 + ldr ip, [pc, #(w13-.-8)] /* ip = W1 | (W3 << 16) */
834 + ldr lr, [pc, #(w57-.-8)] /* lr = W5 | (W7 << 16) */
837 + smlatt v5, ip, a4, v5
845 + ldrd a3, [a1, #8] /* a3=row[5:4] a4=row[7:6] */
851 + smlabt v5, lr, a3, v5
852 + smlabt v6, ip, a3, v6
853 + smlatt v5, lr, a4, v5
854 + smlabt v6, lr, a4, v6
855 + smlatt v7, lr, a3, v7
856 + smlatt fp, ip, a3, fp
858 + smlatt v7, ip, a4, v7
861 + ldr ip, [pc, #(w26-.-8)] /* ip = W2 | (W6 << 16) */
863 + sub a2, a2, #1 /* a2 = W4 */
864 + smulbb a2, a2, a3 /* a2 = W4*row[4] */
865 + smultb lr, ip, a4 /* lr = W6*row[6] */
866 + add v1, v1, a2 /* v1 += W4*row[4] */
867 + add v1, v1, lr /* v1 += W6*row[6] */
868 + add v4, v4, a2 /* v4 += W4*row[4] */
869 + sub v4, v4, lr /* v4 -= W6*row[6] */
870 + smulbb lr, ip, a4 /* lr = W2*row[6] */
871 + sub v2, v2, a2 /* v2 -= W4*row[4] */
872 + sub v2, v2, lr /* v2 -= W2*row[6] */
873 + sub v3, v3, a2 /* v3 -= W4*row[4] */
874 + add v3, v3, lr /* v3 += W2*row[6] */
877 + mov a3, a2, lsr #11
878 + bic a3, a3, #0x1f0000
880 + mov a2, a2, lsr #11
881 + add a3, a3, a2, lsl #16
883 + mov a4, a2, lsr #11
884 + bic a4, a4, #0x1f0000
886 + mov a2, a2, lsr #11
887 + add a4, a4, a2, lsl #16
891 + mov a3, a2, lsr #11
892 + bic a3, a3, #0x1f0000
894 + mov a2, a2, lsr #11
895 + add a3, a3, a2, lsl #16
897 + mov a4, a2, lsr #11
898 + bic a4, a4, #0x1f0000
900 + mov a2, a2, lsr #11
901 + add a4, a4, a2, lsl #16
907 + orr a3, a3, a3, lsl #16
908 + bic a3, a3, #0xe000
918 + ldr a4, [a1] /* a4 = col[1:0] */
920 + sub ip, ip, #1 /* ip = W4 */
922 + mov v1, #(1<<(COL_SHIFT-1))
923 + smlabt v2, ip, a4, v1 /* v2 = W4*col[1] + (1<<(COL_SHIFT-1)) */
924 + smlabb v1, ip, a4, v1 /* v1 = W4*col[0] + (1<<(COL_SHIFT-1)) */
925 + ldr a4, [a1, #(16*4)]
927 + mov v1, #((1<<(COL_SHIFT-1))/W4) /* this matches the C version */
928 + add v2, v1, a4, asr #16
929 + rsb v2, v2, v2, lsl #14
930 + mov a4, a4, lsl #16
931 + add v1, v1, a4, asr #16
932 + ldr a4, [a1, #(16*4)]
933 + rsb v1, v1, v1, lsl #14
945 + ldr ip, [pc, #(w26-.-8)]
946 + ldr a4, [a1, #(16*2)]
960 + ldr a4, [a1, #(16*6)]
976 + stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp}
978 + ldr ip, [pc, #(w13-.-8)]
979 + ldr a4, [a1, #(16*1)]
980 + ldr lr, [pc, #(w57-.-8)]
990 + ldr a4, [a1, #(16*3)]
993 + smlatb v1, ip, a4, v1
994 + smlatb v3, lr, a4, v3
999 + smlatt v2, ip, a4, v2
1000 + smlatt v4, lr, a4, v4
1004 + ldr a4, [a1, #(16*5)]
1007 + smlabb v1, lr, a4, v1
1008 + smlabb v3, ip, a4, v3
1009 + smlatb v5, lr, a4, v5
1010 + smlatb v7, ip, a4, v7
1011 + smlabt v2, lr, a4, v2
1012 + smlabt v4, ip, a4, v4
1013 + smlatt v6, lr, a4, v6
1014 + ldr a3, [a1, #(16*7)]
1015 + smlatt fp, ip, a4, fp
1017 + smlatb v1, lr, a3, v1
1018 + smlabb v3, lr, a3, v3
1019 + smlatb v5, ip, a3, v5
1021 + smlatt v2, lr, a3, v2
1023 + smlabt v4, lr, a3, v4
1025 + smlatt v6, ip, a3, v6
1030 + .func idct_col_armv5te
1032 + str lr, [sp, #-4]!
1036 + ldmfd sp!, {a3, a4}
1038 + mov a2, a2, lsr #20
1039 + orrmi a2, a2, #0xf000
1041 + mov ip, ip, asr #20
1042 + orr a2, a2, ip, lsl #16
1045 + mov a2, a3, lsr #20
1046 + orrmi a2, a2, #0xf000
1048 + mov a4, a4, asr #20
1049 + orr a2, a2, a4, lsl #16
1050 + ldmfd sp!, {a3, a4}
1051 + str a2, [a1, #(16*7)]
1054 + mov a2, a2, lsr #20
1055 + orrmi a2, a2, #0xf000
1057 + mov ip, ip, asr #20
1058 + orr a2, a2, ip, lsl #16
1059 + str a2, [a1, #(16*1)]
1061 + mov a2, a3, lsr #20
1062 + orrmi a2, a2, #0xf000
1064 + mov a4, a4, asr #20
1065 + orr a2, a2, a4, lsl #16
1066 + ldmfd sp!, {a3, a4}
1067 + str a2, [a1, #(16*6)]
1070 + mov a2, a2, lsr #20
1071 + orrmi a2, a2, #0xf000
1073 + mov ip, ip, asr #20
1074 + orr a2, a2, ip, lsl #16
1075 + str a2, [a1, #(16*2)]
1077 + mov a2, a3, lsr #20
1078 + orrmi a2, a2, #0xf000
1080 + mov a4, a4, asr #20
1081 + orr a2, a2, a4, lsl #16
1082 + ldmfd sp!, {a3, a4}
1083 + str a2, [a1, #(16*5)]
1086 + mov a2, a2, lsr #20
1087 + orrmi a2, a2, #0xf000
1089 + mov ip, ip, asr #20
1090 + orr a2, a2, ip, lsl #16
1091 + str a2, [a1, #(16*3)]
1093 + mov a2, a3, lsr #20
1094 + orrmi a2, a2, #0xf000
1096 + mov a4, a4, asr #20
1097 + orr a2, a2, a4, lsl #16
1098 + str a2, [a1, #(16*4)]
1104 + .func idct_col_put_armv5te
1105 +idct_col_put_armv5te:
1106 + str lr, [sp, #-4]!
1110 + ldmfd sp!, {a3, a4}
1113 + movs a2, a2, asr #20
1118 + movs ip, ip, asr #20
1122 + orr a2, a2, ip, lsl #8
1124 + movs a3, a3, asr #20
1129 + movs a4, a4, asr #20
1137 + orr a2, a3, a4, lsl #8
1138 + rsb v2, lr, lr, lsl #3
1139 + ldmfd sp!, {a3, a4}
1140 + strh a2, [v2, v1]!
1143 + movs a2, a2, asr #20
1148 + movs ip, ip, asr #20
1152 + orr a2, a2, ip, lsl #8
1153 + strh a2, [v1, lr]!
1155 + movs a2, a3, asr #20
1160 + movs a4, a4, asr #20
1164 + orr a2, a2, a4, lsl #8
1165 + ldmfd sp!, {a3, a4}
1166 + strh a2, [v2, -lr]!
1169 + movs a2, a2, asr #20
1174 + movs ip, ip, asr #20
1178 + orr a2, a2, ip, lsl #8
1179 + strh a2, [v1, lr]!
1181 + movs a2, a3, asr #20
1186 + movs a4, a4, asr #20
1190 + orr a2, a2, a4, lsl #8
1191 + ldmfd sp!, {a3, a4}
1192 + strh a2, [v2, -lr]!
1195 + movs a2, a2, asr #20
1200 + movs ip, ip, asr #20
1204 + orr a2, a2, ip, lsl #8
1207 + movs a2, a3, asr #20
1212 + movs a4, a4, asr #20
1216 + orr a2, a2, a4, lsl #8
1217 + strh a2, [v2, -lr]
1223 + .func idct_col_add_armv5te
1224 +idct_col_add_armv5te:
1225 + str lr, [sp, #-4]!
1231 + ldmfd sp!, {a3, a4}
1234 + mov a2, a2, asr #20
1242 + mov v1, v1, asr #20
1243 + adds v1, v1, ip, lsr #8
1247 + orr a2, a2, v1, lsl #8
1250 + rsb v2, v1, v1, lsl #3
1251 + ldrh ip, [v2, lr]!
1253 + mov a3, a3, asr #20
1259 + mov a4, a4, asr #20
1260 + adds a4, a4, ip, lsr #8
1266 + orr a2, a3, a4, lsl #8
1269 + ldmfd sp!, {a3, a4}
1270 + ldrh ip, [lr, v1]!
1272 + mov a2, a2, asr #20
1280 + mov v3, v3, asr #20
1281 + adds v3, v3, ip, lsr #8
1285 + orr a2, a2, v3, lsl #8
1287 + ldrh ip, [v2, -v1]!
1289 + mov a3, a3, asr #20
1295 + mov a4, a4, asr #20
1296 + adds a4, a4, ip, lsr #8
1300 + orr a2, a3, a4, lsl #8
1303 + ldmfd sp!, {a3, a4}
1304 + ldrh ip, [lr, v1]!
1306 + mov a2, a2, asr #20
1314 + mov v3, v3, asr #20
1315 + adds v3, v3, ip, lsr #8
1319 + orr a2, a2, v3, lsl #8
1321 + ldrh ip, [v2, -v1]!
1323 + mov a3, a3, asr #20
1329 + mov a4, a4, asr #20
1330 + adds a4, a4, ip, lsr #8
1334 + orr a2, a3, a4, lsl #8
1337 + ldmfd sp!, {a3, a4}
1338 + ldrh ip, [lr, v1]!
1340 + mov a2, a2, asr #20
1348 + mov v3, v3, asr #20
1349 + adds v3, v3, ip, lsr #8
1353 + orr a2, a2, v3, lsl #8
1355 + ldrh ip, [v2, -v1]!
1357 + mov a3, a3, asr #20
1363 + mov a4, a4, asr #20
1364 + adds a4, a4, ip, lsr #8
1368 + orr a2, a3, a4, lsl #8
1375 + .global simple_idct_armv5te
1376 + .func simple_idct_armv5te
1377 +simple_idct_armv5te:
1378 + stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, lr}
1380 + bl idct_row_armv5te
1382 + bl idct_row_armv5te
1384 + bl idct_row_armv5te
1386 + bl idct_row_armv5te
1388 + bl idct_row_armv5te
1390 + bl idct_row_armv5te
1392 + bl idct_row_armv5te
1394 + bl idct_row_armv5te
1396 + sub a1, a1, #(16*7)
1398 + bl idct_col_armv5te
1400 + bl idct_col_armv5te
1402 + bl idct_col_armv5te
1404 + bl idct_col_armv5te
1406 + ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc}
1410 + .global simple_idct_add_armv5te
1411 + .func simple_idct_add_armv5te
1412 +simple_idct_add_armv5te:
1413 + stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr}
1417 + bl idct_row_armv5te
1419 + bl idct_row_armv5te
1421 + bl idct_row_armv5te
1423 + bl idct_row_armv5te
1425 + bl idct_row_armv5te
1427 + bl idct_row_armv5te
1429 + bl idct_row_armv5te
1431 + bl idct_row_armv5te
1433 + sub a1, a1, #(16*7)
1435 + bl idct_col_add_armv5te
1437 + bl idct_col_add_armv5te
1439 + bl idct_col_add_armv5te
1441 + bl idct_col_add_armv5te
1444 + ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc}
1448 + .global simple_idct_put_armv5te
1449 + .func simple_idct_put_armv5te
1450 +simple_idct_put_armv5te:
1451 + stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr}
1455 + bl idct_row_armv5te
1457 + bl idct_row_armv5te
1459 + bl idct_row_armv5te
1461 + bl idct_row_armv5te
1463 + bl idct_row_armv5te
1465 + bl idct_row_armv5te
1467 + bl idct_row_armv5te
1469 + bl idct_row_armv5te
1471 + sub a1, a1, #(16*7)
1473 + bl idct_col_put_armv5te
1475 + bl idct_col_put_armv5te
1477 + bl idct_col_put_armv5te
1479 + bl idct_col_put_armv5te
1482 + ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc}
1484 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
1485 --- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/avcodec.h 2006-09-20 20:55:36.000000000 +0200
1486 +++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/avcodec.h 2007-05-01 12:23:40.000000000 +0200
1487 @@ -1217,6 +1217,7 @@
1488 #define FF_IDCT_IPP 13
1489 #define FF_IDCT_XVIDMMX 14
1490 #define FF_IDCT_CAVS 15
1491 +#define FF_IDCT_SIMPLEARMV5TE 16
1495 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
1496 --- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/Makefile.am 2006-09-22 06:07:23.000000000 +0200
1497 +++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/Makefile.am 2007-05-01 12:23:40.000000000 +0200
1500 iwmmxt_libs = armv4l/libiwmmxt.la
1502 -armv4l_libs = armv4l/libarmv4l.la $(iwmmxt_libs)
1504 +armv5te_libs = armv4l/libarmv5te.la
1506 +armv4l_libs = armv4l/libarmv4l.la $(iwmmxt_libs) $(armv5te_libs)
1507 armv4l_dirs = armv4l