annotate arm/dsputil_arm.c @ 8520:a0164882aa38 libavcodec

Generic metadata API. avi is updated as example. No version bump, the API still might change slightly ... No update to ffmpeg.c as requested by aurel.
author michael
date Sun, 04 Jan 2009 18:48:37 +0000
parents 9281a8a9387a
children 7a463923ecd1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
1 /*
8359
9281a8a9387a ARM: replace "armv4l" with "arm"
mru
parents: 8335
diff changeset
2 * ARM optimized DSP utils
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
3 * Copyright (c) 2001 Lionel Ulmer.
fefaa96def6e arm specific code
glantau
parents:
diff changeset
4 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3769
diff changeset
5 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3769
diff changeset
6 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3769
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
429
718a22dc121f license/copyright change
glantau
parents: 61
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
718a22dc121f license/copyright change
glantau
parents: 61
diff changeset
9 * License as published by the Free Software Foundation; either
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3769
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
11 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3769
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
429
718a22dc121f license/copyright change
glantau
parents: 61
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
718a22dc121f license/copyright change
glantau
parents: 61
diff changeset
15 * Lesser General Public License for more details.
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
16 *
429
718a22dc121f license/copyright change
glantau
parents: 61
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3769
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
3036
0b546eab515d Update licensing information: The FSF changed postal address.
diego
parents: 2979
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
20 */
fefaa96def6e arm specific code
glantau
parents:
diff changeset
21
6763
f7cbb7733146 Use full path for #includes from another directory.
diego
parents: 6760
diff changeset
22 #include "libavcodec/dsputil.h"
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
23 #ifdef HAVE_IPP
6760
e6a7be7d85f2 ipp.h is a system header, use <> when #including it.
diego
parents: 6180
diff changeset
24 #include <ipp.h>
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
25 #endif
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
26
8250
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 8104
diff changeset
27 void dsputil_init_iwmmxt(DSPContext* c, AVCodecContext *avctx);
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 8104
diff changeset
28 void ff_float_init_arm_vfp(DSPContext* c, AVCodecContext *avctx);
8334
6bdd6dfc3574 ARM: NEON optimised put_pixels functions
mru
parents: 8267
diff changeset
29 void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx);
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
30
8250
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 8104
diff changeset
31 void j_rev_dct_ARM(DCTELEM *data);
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 8104
diff changeset
32 void simple_idct_ARM(DCTELEM *data);
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
33
8250
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 8104
diff changeset
34 void simple_idct_armv5te(DCTELEM *data);
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 8104
diff changeset
35 void simple_idct_put_armv5te(uint8_t *dest, int line_size, DCTELEM *data);
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 8104
diff changeset
36 void simple_idct_add_armv5te(uint8_t *dest, int line_size, DCTELEM *data);
3769
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
37
8250
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 8104
diff changeset
38 void ff_simple_idct_armv6(DCTELEM *data);
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 8104
diff changeset
39 void ff_simple_idct_put_armv6(uint8_t *dest, int line_size, DCTELEM *data);
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 8104
diff changeset
40 void ff_simple_idct_add_armv6(uint8_t *dest, int line_size, DCTELEM *data);
4427
765df9cbb2b3 ARMv6 SIMD IDCT
mru
parents: 3947
diff changeset
41
8335
f19fe0cade86 ARM: NEON optimised simple_idct
mru
parents: 8334
diff changeset
42 void ff_simple_idct_neon(DCTELEM *data);
f19fe0cade86 ARM: NEON optimised simple_idct
mru
parents: 8334
diff changeset
43 void ff_simple_idct_put_neon(uint8_t *dest, int line_size, DCTELEM *data);
f19fe0cade86 ARM: NEON optimised simple_idct
mru
parents: 8334
diff changeset
44 void ff_simple_idct_add_neon(uint8_t *dest, int line_size, DCTELEM *data);
f19fe0cade86 ARM: NEON optimised simple_idct
mru
parents: 8334
diff changeset
45
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
46 /* XXX: local hack */
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
47 static void (*ff_put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size);
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
48 static void (*ff_add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size);
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
49
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
50 void put_pixels8_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
51 void put_pixels8_x2_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
52 void put_pixels8_y2_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
53 void put_pixels8_xy2_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
54
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
55 void put_no_rnd_pixels8_x2_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
56 void put_no_rnd_pixels8_y2_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
57 void put_no_rnd_pixels8_xy2_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
58
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
59 void put_pixels16_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
60
8250
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 8104
diff changeset
61 void ff_prefetch_arm(void *mem, int stride, int h);
8070
59be7e4941e8 ARM: move prefetch_arm to dsputil_arm_s.S
mru
parents: 8031
diff changeset
62
2735
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
63 CALL_2X_PIXELS(put_pixels16_x2_arm , put_pixels8_x2_arm , 8)
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
64 CALL_2X_PIXELS(put_pixels16_y2_arm , put_pixels8_y2_arm , 8)
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
65 CALL_2X_PIXELS(put_pixels16_xy2_arm, put_pixels8_xy2_arm, 8)
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
66 CALL_2X_PIXELS(put_no_rnd_pixels16_x2_arm , put_no_rnd_pixels8_x2_arm , 8)
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
67 CALL_2X_PIXELS(put_no_rnd_pixels16_y2_arm , put_no_rnd_pixels8_y2_arm , 8)
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
68 CALL_2X_PIXELS(put_no_rnd_pixels16_xy2_arm, put_no_rnd_pixels8_xy2_arm, 8)
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
69
8250
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 8104
diff changeset
70 void ff_add_pixels_clamped_ARM(short *block, unsigned char *dest,
8072
4b32e8762864 ARM: move add_pixels_clamped_ARM() to dsputil_arm_s.S
mru
parents: 8070
diff changeset
71 int line_size);
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
72
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
73 /* XXX: those functions should be suppressed ASAP when all IDCTs are
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
74 converted */
1347
cca26199ab17 Optimized simple idct for arm by Frederic 'dilb' Boulay <dilb@handhelds.org>. Currently licensed under the GPLv2, but the author allowed to license it under the LGPL, feel free to change
al3x
parents: 1324
diff changeset
75 static void j_rev_dct_ARM_put(uint8_t *dest, int line_size, DCTELEM *block)
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
76 {
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
77 j_rev_dct_ARM (block);
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
78 ff_put_pixels_clamped(block, dest, line_size);
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
79 }
1347
cca26199ab17 Optimized simple idct for arm by Frederic 'dilb' Boulay <dilb@handhelds.org>. Currently licensed under the GPLv2, but the author allowed to license it under the LGPL, feel free to change
al3x
parents: 1324
diff changeset
80 static void j_rev_dct_ARM_add(uint8_t *dest, int line_size, DCTELEM *block)
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
81 {
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
82 j_rev_dct_ARM (block);
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
83 ff_add_pixels_clamped(block, dest, line_size);
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
84 }
1347
cca26199ab17 Optimized simple idct for arm by Frederic 'dilb' Boulay <dilb@handhelds.org>. Currently licensed under the GPLv2, but the author allowed to license it under the LGPL, feel free to change
al3x
parents: 1324
diff changeset
85 static void simple_idct_ARM_put(uint8_t *dest, int line_size, DCTELEM *block)
cca26199ab17 Optimized simple idct for arm by Frederic 'dilb' Boulay <dilb@handhelds.org>. Currently licensed under the GPLv2, but the author allowed to license it under the LGPL, feel free to change
al3x
parents: 1324
diff changeset
86 {
cca26199ab17 Optimized simple idct for arm by Frederic 'dilb' Boulay <dilb@handhelds.org>. Currently licensed under the GPLv2, but the author allowed to license it under the LGPL, feel free to change
al3x
parents: 1324
diff changeset
87 simple_idct_ARM (block);
cca26199ab17 Optimized simple idct for arm by Frederic 'dilb' Boulay <dilb@handhelds.org>. Currently licensed under the GPLv2, but the author allowed to license it under the LGPL, feel free to change
al3x
parents: 1324
diff changeset
88 ff_put_pixels_clamped(block, dest, line_size);
cca26199ab17 Optimized simple idct for arm by Frederic 'dilb' Boulay <dilb@handhelds.org>. Currently licensed under the GPLv2, but the author allowed to license it under the LGPL, feel free to change
al3x
parents: 1324
diff changeset
89 }
cca26199ab17 Optimized simple idct for arm by Frederic 'dilb' Boulay <dilb@handhelds.org>. Currently licensed under the GPLv2, but the author allowed to license it under the LGPL, feel free to change
al3x
parents: 1324
diff changeset
90 static void simple_idct_ARM_add(uint8_t *dest, int line_size, DCTELEM *block)
cca26199ab17 Optimized simple idct for arm by Frederic 'dilb' Boulay <dilb@handhelds.org>. Currently licensed under the GPLv2, but the author allowed to license it under the LGPL, feel free to change
al3x
parents: 1324
diff changeset
91 {
cca26199ab17 Optimized simple idct for arm by Frederic 'dilb' Boulay <dilb@handhelds.org>. Currently licensed under the GPLv2, but the author allowed to license it under the LGPL, feel free to change
al3x
parents: 1324
diff changeset
92 simple_idct_ARM (block);
cca26199ab17 Optimized simple idct for arm by Frederic 'dilb' Boulay <dilb@handhelds.org>. Currently licensed under the GPLv2, but the author allowed to license it under the LGPL, feel free to change
al3x
parents: 1324
diff changeset
93 ff_add_pixels_clamped(block, dest, line_size);
cca26199ab17 Optimized simple idct for arm by Frederic 'dilb' Boulay <dilb@handhelds.org>. Currently licensed under the GPLv2, but the author allowed to license it under the LGPL, feel free to change
al3x
parents: 1324
diff changeset
94 }
3726
49fb1958d8e1 clean up #ifdef HAVE_IPP
mru
parents: 3036
diff changeset
95
49fb1958d8e1 clean up #ifdef HAVE_IPP
mru
parents: 3036
diff changeset
96 #ifdef HAVE_IPP
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
97 static void simple_idct_ipp(DCTELEM *block)
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
98 {
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
99 ippiDCT8x8Inv_Video_16s_C1I(block);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
100 }
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
101 static void simple_idct_ipp_put(uint8_t *dest, int line_size, DCTELEM *block)
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
102 {
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
103 ippiDCT8x8Inv_Video_16s8u_C1R(block, dest, line_size);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
104 }
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
105
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
106 void add_pixels_clamped_iwmmxt(const DCTELEM *block, uint8_t *pixels, int line_size);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
107
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
108 static void simple_idct_ipp_add(uint8_t *dest, int line_size, DCTELEM *block)
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
109 {
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
110 ippiDCT8x8Inv_Video_16s_C1I(block);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
111 #ifdef HAVE_IWMMXT
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
112 add_pixels_clamped_iwmmxt(block, dest, line_size);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
113 #else
8072
4b32e8762864 ARM: move add_pixels_clamped_ARM() to dsputil_arm_s.S
mru
parents: 8070
diff changeset
114 ff_add_pixels_clamped_ARM(block, dest, line_size);
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
115 #endif
3726
49fb1958d8e1 clean up #ifdef HAVE_IPP
mru
parents: 3036
diff changeset
116 }
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
117 #endif
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
118
7165
b0edd0683fc4 Define mm_support() for ARM.
benoit
parents: 6786
diff changeset
119 int mm_support(void)
b0edd0683fc4 Define mm_support() for ARM.
benoit
parents: 6786
diff changeset
120 {
8104
0d108ec85620 Remove duplicated MM_* macros for CPU capabilities from dsputil.h.
rathann
parents: 8072
diff changeset
121 return ENABLE_IWMMXT * FF_MM_IWMMXT;
7165
b0edd0683fc4 Define mm_support() for ARM.
benoit
parents: 6786
diff changeset
122 }
b0edd0683fc4 Define mm_support() for ARM.
benoit
parents: 6786
diff changeset
123
8359
9281a8a9387a ARM: replace "armv4l" with "arm"
mru
parents: 8335
diff changeset
124 void dsputil_init_arm(DSPContext* c, AVCodecContext *avctx)
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
125 {
3726
49fb1958d8e1 clean up #ifdef HAVE_IPP
mru
parents: 3036
diff changeset
126 int idct_algo= avctx->idct_algo;
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
127
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
128 ff_put_pixels_clamped = c->put_pixels_clamped;
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
129 ff_add_pixels_clamped = c->add_pixels_clamped;
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
130
6179
bdcb17652343 fix lowres decoding support on ARM CPUs
gpoirier
parents: 5641
diff changeset
131 if (avctx->lowres == 0) {
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
132 if(idct_algo == FF_IDCT_AUTO){
3769
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
133 #if defined(HAVE_IPP)
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
134 idct_algo = FF_IDCT_IPP;
8335
f19fe0cade86 ARM: NEON optimised simple_idct
mru
parents: 8334
diff changeset
135 #elif defined(HAVE_NEON)
f19fe0cade86 ARM: NEON optimised simple_idct
mru
parents: 8334
diff changeset
136 idct_algo = FF_IDCT_SIMPLENEON;
4427
765df9cbb2b3 ARMv6 SIMD IDCT
mru
parents: 3947
diff changeset
137 #elif defined(HAVE_ARMV6)
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
138 idct_algo = FF_IDCT_SIMPLEARMV6;
3769
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
139 #elif defined(HAVE_ARMV5TE)
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
140 idct_algo = FF_IDCT_SIMPLEARMV5TE;
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
141 #else
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
142 idct_algo = FF_IDCT_ARM;
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
143 #endif
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
144 }
3726
49fb1958d8e1 clean up #ifdef HAVE_IPP
mru
parents: 3036
diff changeset
145
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
146 if(idct_algo==FF_IDCT_ARM){
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
147 c->idct_put= j_rev_dct_ARM_put;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
148 c->idct_add= j_rev_dct_ARM_add;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
149 c->idct = j_rev_dct_ARM;
8267
ebbdbb35a0cf ARM: remove some useless comments
mru
parents: 8250
diff changeset
150 c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
151 } else if (idct_algo==FF_IDCT_SIMPLEARM){
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
152 c->idct_put= simple_idct_ARM_put;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
153 c->idct_add= simple_idct_ARM_add;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
154 c->idct = simple_idct_ARM;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
155 c->idct_permutation_type= FF_NO_IDCT_PERM;
4427
765df9cbb2b3 ARMv6 SIMD IDCT
mru
parents: 3947
diff changeset
156 #ifdef HAVE_ARMV6
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
157 } else if (idct_algo==FF_IDCT_SIMPLEARMV6){
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
158 c->idct_put= ff_simple_idct_put_armv6;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
159 c->idct_add= ff_simple_idct_add_armv6;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
160 c->idct = ff_simple_idct_armv6;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
161 c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;
4427
765df9cbb2b3 ARMv6 SIMD IDCT
mru
parents: 3947
diff changeset
162 #endif
3769
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
163 #ifdef HAVE_ARMV5TE
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
164 } else if (idct_algo==FF_IDCT_SIMPLEARMV5TE){
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
165 c->idct_put= simple_idct_put_armv5te;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
166 c->idct_add= simple_idct_add_armv5te;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
167 c->idct = simple_idct_armv5te;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
168 c->idct_permutation_type = FF_NO_IDCT_PERM;
3769
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
169 #endif
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
170 #ifdef HAVE_IPP
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
171 } else if (idct_algo==FF_IDCT_IPP){
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
172 c->idct_put= simple_idct_ipp_put;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
173 c->idct_add= simple_idct_ipp_add;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
174 c->idct = simple_idct_ipp;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
175 c->idct_permutation_type= FF_NO_IDCT_PERM;
3726
49fb1958d8e1 clean up #ifdef HAVE_IPP
mru
parents: 3036
diff changeset
176 #endif
8335
f19fe0cade86 ARM: NEON optimised simple_idct
mru
parents: 8334
diff changeset
177 #ifdef HAVE_NEON
f19fe0cade86 ARM: NEON optimised simple_idct
mru
parents: 8334
diff changeset
178 } else if (idct_algo==FF_IDCT_SIMPLENEON){
f19fe0cade86 ARM: NEON optimised simple_idct
mru
parents: 8334
diff changeset
179 c->idct_put= ff_simple_idct_put_neon;
f19fe0cade86 ARM: NEON optimised simple_idct
mru
parents: 8334
diff changeset
180 c->idct_add= ff_simple_idct_add_neon;
f19fe0cade86 ARM: NEON optimised simple_idct
mru
parents: 8334
diff changeset
181 c->idct = ff_simple_idct_neon;
f19fe0cade86 ARM: NEON optimised simple_idct
mru
parents: 8334
diff changeset
182 c->idct_permutation_type = FF_PARTTRANS_IDCT_PERM;
f19fe0cade86 ARM: NEON optimised simple_idct
mru
parents: 8334
diff changeset
183 #endif
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
184 }
6179
bdcb17652343 fix lowres decoding support on ARM CPUs
gpoirier
parents: 5641
diff changeset
185 }
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
186
5641
1e93e637fa21 Fix put_*_xy2_arm bug and enable put_pixels16_arm and put_pixels8_y2_arm.
diego
parents: 5010
diff changeset
187 c->put_pixels_tab[0][0] = put_pixels16_arm;
8267
ebbdbb35a0cf ARM: remove some useless comments
mru
parents: 8250
diff changeset
188 c->put_pixels_tab[0][1] = put_pixels16_x2_arm;
ebbdbb35a0cf ARM: remove some useless comments
mru
parents: 8250
diff changeset
189 c->put_pixels_tab[0][2] = put_pixels16_y2_arm;
5641
1e93e637fa21 Fix put_*_xy2_arm bug and enable put_pixels16_arm and put_pixels8_y2_arm.
diego
parents: 5010
diff changeset
190 c->put_pixels_tab[0][3] = put_pixels16_xy2_arm;
1e93e637fa21 Fix put_*_xy2_arm bug and enable put_pixels16_arm and put_pixels8_y2_arm.
diego
parents: 5010
diff changeset
191 c->put_no_rnd_pixels_tab[0][0] = put_pixels16_arm;
8267
ebbdbb35a0cf ARM: remove some useless comments
mru
parents: 8250
diff changeset
192 c->put_no_rnd_pixels_tab[0][1] = put_no_rnd_pixels16_x2_arm;
ebbdbb35a0cf ARM: remove some useless comments
mru
parents: 8250
diff changeset
193 c->put_no_rnd_pixels_tab[0][2] = put_no_rnd_pixels16_y2_arm;
5641
1e93e637fa21 Fix put_*_xy2_arm bug and enable put_pixels16_arm and put_pixels8_y2_arm.
diego
parents: 5010
diff changeset
194 c->put_no_rnd_pixels_tab[0][3] = put_no_rnd_pixels16_xy2_arm;
8267
ebbdbb35a0cf ARM: remove some useless comments
mru
parents: 8250
diff changeset
195 c->put_pixels_tab[1][0] = put_pixels8_arm;
ebbdbb35a0cf ARM: remove some useless comments
mru
parents: 8250
diff changeset
196 c->put_pixels_tab[1][1] = put_pixels8_x2_arm;
5641
1e93e637fa21 Fix put_*_xy2_arm bug and enable put_pixels16_arm and put_pixels8_y2_arm.
diego
parents: 5010
diff changeset
197 c->put_pixels_tab[1][2] = put_pixels8_y2_arm;
1e93e637fa21 Fix put_*_xy2_arm bug and enable put_pixels16_arm and put_pixels8_y2_arm.
diego
parents: 5010
diff changeset
198 c->put_pixels_tab[1][3] = put_pixels8_xy2_arm;
8267
ebbdbb35a0cf ARM: remove some useless comments
mru
parents: 8250
diff changeset
199 c->put_no_rnd_pixels_tab[1][0] = put_pixels8_arm;
ebbdbb35a0cf ARM: remove some useless comments
mru
parents: 8250
diff changeset
200 c->put_no_rnd_pixels_tab[1][1] = put_no_rnd_pixels8_x2_arm;
ebbdbb35a0cf ARM: remove some useless comments
mru
parents: 8250
diff changeset
201 c->put_no_rnd_pixels_tab[1][2] = put_no_rnd_pixels8_y2_arm;
5641
1e93e637fa21 Fix put_*_xy2_arm bug and enable put_pixels16_arm and put_pixels8_y2_arm.
diego
parents: 5010
diff changeset
202 c->put_no_rnd_pixels_tab[1][3] = put_no_rnd_pixels8_xy2_arm;
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
203
7688
160d5c1ae60a ARM: add prefetch function using ARMv5 PLD instruction
mru
parents: 7166
diff changeset
204 #ifdef HAVE_ARMV5TE
8070
59be7e4941e8 ARM: move prefetch_arm to dsputil_arm_s.S
mru
parents: 8031
diff changeset
205 c->prefetch = ff_prefetch_arm;
7688
160d5c1ae60a ARM: add prefetch function using ARMv5 PLD instruction
mru
parents: 7166
diff changeset
206 #endif
160d5c1ae60a ARM: add prefetch function using ARMv5 PLD instruction
mru
parents: 7166
diff changeset
207
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
208 #ifdef HAVE_IWMMXT
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
209 dsputil_init_iwmmxt(c, avctx);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
210 #endif
6786
18084aaa277b Add some initial optimizations for ARM VFP (floating
gpoirier
parents: 6763
diff changeset
211 #ifdef HAVE_ARMVFP
18084aaa277b Add some initial optimizations for ARM VFP (floating
gpoirier
parents: 6763
diff changeset
212 ff_float_init_arm_vfp(c, avctx);
18084aaa277b Add some initial optimizations for ARM VFP (floating
gpoirier
parents: 6763
diff changeset
213 #endif
8334
6bdd6dfc3574 ARM: NEON optimised put_pixels functions
mru
parents: 8267
diff changeset
214 #ifdef HAVE_NEON
6bdd6dfc3574 ARM: NEON optimised put_pixels functions
mru
parents: 8267
diff changeset
215 ff_dsputil_init_neon(c, avctx);
6bdd6dfc3574 ARM: NEON optimised put_pixels functions
mru
parents: 8267
diff changeset
216 #endif
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
217 }