annotate armv4l/dsputil_arm.c @ 6323:e6da66f378c7 libavcodec

mpegvideo.h has two function declarations with the 'inline' specifier but no definition for those functions. The C standard requires a definition to appear in the same translation unit for any function declared with 'inline'. Most of the files including mpegvideo.h do not define those functions. Fix this by removing the 'inline' specifiers from the header. patch by Uoti Urpala
author diego
date Sun, 03 Feb 2008 17:54:30 +0000
parents a15900739a31
children e6a7be7d85f2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
1 /*
fefaa96def6e arm specific code
glantau
parents:
diff changeset
2 * ARMv4L optimized DSP utils
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
5010
d5ba514e3f4a Add libavcodec to compiler include flags in order to simplify header
diego
parents: 4427
diff changeset
22 #include "dsputil.h"
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
23 #ifdef HAVE_IPP
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
24 #include "ipp.h"
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
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
27 extern void dsputil_init_iwmmxt(DSPContext* c, AVCodecContext *avctx);
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
28
fefaa96def6e arm specific code
glantau
parents:
diff changeset
29 extern void j_rev_dct_ARM(DCTELEM *data);
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
30 extern void simple_idct_ARM(DCTELEM *data);
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
31
3769
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
32 extern void simple_idct_armv5te(DCTELEM *data);
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
33 extern void simple_idct_put_armv5te(uint8_t *dest, int line_size,
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
34 DCTELEM *data);
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
35 extern void simple_idct_add_armv5te(uint8_t *dest, int line_size,
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
36 DCTELEM *data);
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
37
4427
765df9cbb2b3 ARMv6 SIMD IDCT
mru
parents: 3947
diff changeset
38 extern void ff_simple_idct_armv6(DCTELEM *data);
765df9cbb2b3 ARMv6 SIMD IDCT
mru
parents: 3947
diff changeset
39 extern void ff_simple_idct_put_armv6(uint8_t *dest, int line_size,
765df9cbb2b3 ARMv6 SIMD IDCT
mru
parents: 3947
diff changeset
40 DCTELEM *data);
765df9cbb2b3 ARMv6 SIMD IDCT
mru
parents: 3947
diff changeset
41 extern void ff_simple_idct_add_armv6(uint8_t *dest, int line_size,
765df9cbb2b3 ARMv6 SIMD IDCT
mru
parents: 3947
diff changeset
42 DCTELEM *data);
765df9cbb2b3 ARMv6 SIMD IDCT
mru
parents: 3947
diff changeset
43
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
44 /* XXX: local hack */
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
45 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
46 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
47
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
48 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
49 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
50 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
51 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
52
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
53 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
54 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
55 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
56
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
57 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
58
2735
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
59 CALL_2X_PIXELS(put_pixels16_x2_arm , put_pixels8_x2_arm , 8)
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
60 CALL_2X_PIXELS(put_pixels16_y2_arm , put_pixels8_y2_arm , 8)
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
61 CALL_2X_PIXELS(put_pixels16_xy2_arm, put_pixels8_xy2_arm, 8)
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
62 CALL_2X_PIXELS(put_no_rnd_pixels16_x2_arm , put_no_rnd_pixels8_x2_arm , 8)
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
63 CALL_2X_PIXELS(put_no_rnd_pixels16_y2_arm , put_no_rnd_pixels8_y2_arm , 8)
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
64 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
65
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
66 static void add_pixels_clamped_ARM(short *block, unsigned char *dest, int line_size)
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
67 {
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
68 asm volatile (
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
69 "mov r10, #8 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
70
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
71 "1: \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
72
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
73 /* load dest */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
74 "ldr r4, [%1] \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
75 /* block[0] and block[1]*/
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
76 "ldrsh r5, [%0] \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
77 "ldrsh r7, [%0, #2] \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
78 "and r6, r4, #0xFF \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
79 "and r8, r4, #0xFF00 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
80 "add r6, r5, r6 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
81 "add r8, r7, r8, lsr #8 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
82 "mvn r5, r5 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
83 "mvn r7, r7 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
84 "tst r6, #0x100 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
85 "movne r6, r5, lsr #24 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
86 "tst r8, #0x100 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
87 "movne r8, r7, lsr #24 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
88 "mov r9, r6 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
89 "ldrsh r5, [%0, #4] \n\t" /* moved form [A] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
90 "orr r9, r9, r8, lsl #8 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
91 /* block[2] and block[3] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
92 /* [A] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
93 "ldrsh r7, [%0, #6] \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
94 "and r6, r4, #0xFF0000 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
95 "and r8, r4, #0xFF000000 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
96 "add r6, r5, r6, lsr #16 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
97 "add r8, r7, r8, lsr #24 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
98 "mvn r5, r5 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
99 "mvn r7, r7 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
100 "tst r6, #0x100 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
101 "movne r6, r5, lsr #24 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
102 "tst r8, #0x100 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
103 "movne r8, r7, lsr #24 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
104 "orr r9, r9, r6, lsl #16 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
105 "ldr r4, [%1, #4] \n\t" /* moved form [B] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
106 "orr r9, r9, r8, lsl #24 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
107 /* store dest */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
108 "ldrsh r5, [%0, #8] \n\t" /* moved form [C] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
109 "str r9, [%1] \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
110
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
111 /* load dest */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
112 /* [B] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
113 /* block[4] and block[5] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
114 /* [C] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
115 "ldrsh r7, [%0, #10] \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
116 "and r6, r4, #0xFF \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
117 "and r8, r4, #0xFF00 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
118 "add r6, r5, r6 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
119 "add r8, r7, r8, lsr #8 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
120 "mvn r5, r5 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
121 "mvn r7, r7 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
122 "tst r6, #0x100 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
123 "movne r6, r5, lsr #24 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
124 "tst r8, #0x100 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
125 "movne r8, r7, lsr #24 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
126 "mov r9, r6 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
127 "ldrsh r5, [%0, #12] \n\t" /* moved from [D] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
128 "orr r9, r9, r8, lsl #8 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
129 /* block[6] and block[7] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
130 /* [D] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
131 "ldrsh r7, [%0, #14] \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
132 "and r6, r4, #0xFF0000 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
133 "and r8, r4, #0xFF000000 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
134 "add r6, r5, r6, lsr #16 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
135 "add r8, r7, r8, lsr #24 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
136 "mvn r5, r5 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
137 "mvn r7, r7 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
138 "tst r6, #0x100 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
139 "movne r6, r5, lsr #24 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
140 "tst r8, #0x100 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
141 "movne r8, r7, lsr #24 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
142 "orr r9, r9, r6, lsl #16 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
143 "add %0, %0, #16 \n\t" /* moved from [E] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
144 "orr r9, r9, r8, lsl #24 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
145 "subs r10, r10, #1 \n\t" /* moved from [F] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
146 /* store dest */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
147 "str r9, [%1, #4] \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
148
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
149 /* [E] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
150 /* [F] */
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
151 "add %1, %1, %2 \n\t"
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
152 "bne 1b \n\t"
2735
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
153 : "+r"(block),
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
154 "+r"(dest)
7f38814cffa1 cleanup
michael
parents: 2734
diff changeset
155 : "r"(line_size)
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
156 : "r4", "r5", "r6", "r7", "r8", "r9", "r10", "cc", "memory" );
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
157 }
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
158
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
159 /* XXX: those functions should be suppressed ASAP when all IDCTs are
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
160 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
161 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
162 {
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
163 j_rev_dct_ARM (block);
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
164 ff_put_pixels_clamped(block, dest, line_size);
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
165 }
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
166 static void j_rev_dct_ARM_add(uint8_t *dest, int line_size, DCTELEM *block)
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
167 {
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
168 j_rev_dct_ARM (block);
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
169 ff_add_pixels_clamped(block, dest, line_size);
61
fefaa96def6e arm specific code
glantau
parents:
diff changeset
170 }
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
171 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
172 {
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
173 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
174 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
175 }
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
176 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
177 {
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
178 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
179 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
180 }
3726
49fb1958d8e1 clean up #ifdef HAVE_IPP
mru
parents: 3036
diff changeset
181
49fb1958d8e1 clean up #ifdef HAVE_IPP
mru
parents: 3036
diff changeset
182 #ifdef HAVE_IPP
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
183 static void simple_idct_ipp(DCTELEM *block)
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
184 {
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
185 ippiDCT8x8Inv_Video_16s_C1I(block);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
186 }
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
187 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
188 {
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
189 ippiDCT8x8Inv_Video_16s8u_C1R(block, dest, line_size);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
190 }
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
191
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
192 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
193
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
194 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
195 {
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
196 ippiDCT8x8Inv_Video_16s_C1I(block);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
197 #ifdef HAVE_IWMMXT
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
198 add_pixels_clamped_iwmmxt(block, dest, line_size);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
199 #else
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
200 add_pixels_clamped_ARM(block, dest, line_size);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
201 #endif
3726
49fb1958d8e1 clean up #ifdef HAVE_IPP
mru
parents: 3036
diff changeset
202 }
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
203 #endif
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
204
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
205 void dsputil_init_armv4l(DSPContext* c, AVCodecContext *avctx)
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
206 {
3726
49fb1958d8e1 clean up #ifdef HAVE_IPP
mru
parents: 3036
diff changeset
207 int idct_algo= avctx->idct_algo;
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
208
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
209 ff_put_pixels_clamped = c->put_pixels_clamped;
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
210 ff_add_pixels_clamped = c->add_pixels_clamped;
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
211
6179
bdcb17652343 fix lowres decoding support on ARM CPUs
gpoirier
parents: 5641
diff changeset
212 if (avctx->lowres == 0) {
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
213 if(idct_algo == FF_IDCT_AUTO){
3769
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
214 #if defined(HAVE_IPP)
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
215 idct_algo = FF_IDCT_IPP;
4427
765df9cbb2b3 ARMv6 SIMD IDCT
mru
parents: 3947
diff changeset
216 #elif defined(HAVE_ARMV6)
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
217 idct_algo = FF_IDCT_SIMPLEARMV6;
3769
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
218 #elif defined(HAVE_ARMV5TE)
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
219 idct_algo = FF_IDCT_SIMPLEARMV5TE;
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
220 #else
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
221 idct_algo = FF_IDCT_ARM;
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
222 #endif
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
223 }
3726
49fb1958d8e1 clean up #ifdef HAVE_IPP
mru
parents: 3036
diff changeset
224
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
225 if(idct_algo==FF_IDCT_ARM){
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
226 c->idct_put= j_rev_dct_ARM_put;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
227 c->idct_add= j_rev_dct_ARM_add;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
228 c->idct = j_rev_dct_ARM;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
229 c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;/* FF_NO_IDCT_PERM */
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
230 } else if (idct_algo==FF_IDCT_SIMPLEARM){
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
231 c->idct_put= simple_idct_ARM_put;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
232 c->idct_add= simple_idct_ARM_add;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
233 c->idct = simple_idct_ARM;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
234 c->idct_permutation_type= FF_NO_IDCT_PERM;
4427
765df9cbb2b3 ARMv6 SIMD IDCT
mru
parents: 3947
diff changeset
235 #ifdef HAVE_ARMV6
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
236 } else if (idct_algo==FF_IDCT_SIMPLEARMV6){
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
237 c->idct_put= ff_simple_idct_put_armv6;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
238 c->idct_add= ff_simple_idct_add_armv6;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
239 c->idct = ff_simple_idct_armv6;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
240 c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;
4427
765df9cbb2b3 ARMv6 SIMD IDCT
mru
parents: 3947
diff changeset
241 #endif
3769
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
242 #ifdef HAVE_ARMV5TE
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
243 } else if (idct_algo==FF_IDCT_SIMPLEARMV5TE){
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
244 c->idct_put= simple_idct_put_armv5te;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
245 c->idct_add= simple_idct_add_armv5te;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
246 c->idct = simple_idct_armv5te;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
247 c->idct_permutation_type = FF_NO_IDCT_PERM;
3769
cf04e15a72ac ARMv5TE optimized IDCT
mru
parents: 3727
diff changeset
248 #endif
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
249 #ifdef HAVE_IPP
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
250 } else if (idct_algo==FF_IDCT_IPP){
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
251 c->idct_put= simple_idct_ipp_put;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
252 c->idct_add= simple_idct_ipp_add;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
253 c->idct = simple_idct_ipp;
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
254 c->idct_permutation_type= FF_NO_IDCT_PERM;
3726
49fb1958d8e1 clean up #ifdef HAVE_IPP
mru
parents: 3036
diff changeset
255 #endif
6180
a15900739a31 fix indentation that was messed up by r11628
gpoirier
parents: 6179
diff changeset
256 }
6179
bdcb17652343 fix lowres decoding support on ARM CPUs
gpoirier
parents: 5641
diff changeset
257 }
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
258
5641
1e93e637fa21 Fix put_*_xy2_arm bug and enable put_pixels16_arm and put_pixels8_y2_arm.
diego
parents: 5010
diff changeset
259 c->put_pixels_tab[0][0] = put_pixels16_arm;
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
260 c->put_pixels_tab[0][1] = put_pixels16_x2_arm; //OK!
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
261 c->put_pixels_tab[0][2] = put_pixels16_y2_arm; //OK!
5641
1e93e637fa21 Fix put_*_xy2_arm bug and enable put_pixels16_arm and put_pixels8_y2_arm.
diego
parents: 5010
diff changeset
262 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
263 c->put_no_rnd_pixels_tab[0][0] = put_pixels16_arm;
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
264 c->put_no_rnd_pixels_tab[0][1] = put_no_rnd_pixels16_x2_arm; // OK
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
265 c->put_no_rnd_pixels_tab[0][2] = put_no_rnd_pixels16_y2_arm; //OK
5641
1e93e637fa21 Fix put_*_xy2_arm bug and enable put_pixels16_arm and put_pixels8_y2_arm.
diego
parents: 5010
diff changeset
266 c->put_no_rnd_pixels_tab[0][3] = put_no_rnd_pixels16_xy2_arm;
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
267 c->put_pixels_tab[1][0] = put_pixels8_arm; //OK
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
268 c->put_pixels_tab[1][1] = put_pixels8_x2_arm; //OK
5641
1e93e637fa21 Fix put_*_xy2_arm bug and enable put_pixels16_arm and put_pixels8_y2_arm.
diego
parents: 5010
diff changeset
269 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
270 c->put_pixels_tab[1][3] = put_pixels8_xy2_arm;
2734
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
271 c->put_no_rnd_pixels_tab[1][0] = put_pixels8_arm;//OK
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
272 c->put_no_rnd_pixels_tab[1][1] = put_no_rnd_pixels8_x2_arm; //OK
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
273 c->put_no_rnd_pixels_tab[1][2] = put_no_rnd_pixels8_y2_arm; //OK
5641
1e93e637fa21 Fix put_*_xy2_arm bug and enable put_pixels16_arm and put_pixels8_y2_arm.
diego
parents: 5010
diff changeset
274 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
275
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
276 #ifdef HAVE_IWMMXT
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
277 dsputil_init_iwmmxt(c, avctx);
aeea63c97878 Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents: 1347
diff changeset
278 #endif
1092
f59c3f66363b MpegEncContext.(i)dct_* -> DspContext.(i)dct_*
michaelni
parents: 874
diff changeset
279 }