Mercurial > libavcodec.hg
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 |
rev | line source |
---|---|
61 | 1 /* |
2 * ARMv4L optimized DSP utils | |
3 * Copyright (c) 2001 Lionel Ulmer. | |
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 | 8 * modify it under the terms of the GNU Lesser General Public |
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 | 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 | 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
429 | 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 * Lesser General Public License for more details. | |
61 | 16 * |
429 | 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 | 20 */ |
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 | 28 |
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 | 31 |
3769 | 32 extern void simple_idct_armv5te(DCTELEM *data); |
33 extern void simple_idct_put_armv5te(uint8_t *dest, int line_size, | |
34 DCTELEM *data); | |
35 extern void simple_idct_add_armv5te(uint8_t *dest, int line_size, | |
36 DCTELEM *data); | |
37 | |
4427 | 38 extern void ff_simple_idct_armv6(DCTELEM *data); |
39 extern void ff_simple_idct_put_armv6(uint8_t *dest, int line_size, | |
40 DCTELEM *data); | |
41 extern void ff_simple_idct_add_armv6(uint8_t *dest, int line_size, | |
42 DCTELEM *data); | |
43 | |
1092 | 44 /* XXX: local hack */ |
45 static void (*ff_put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); | |
46 static void (*ff_add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); | |
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 | 59 CALL_2X_PIXELS(put_pixels16_x2_arm , put_pixels8_x2_arm , 8) |
60 CALL_2X_PIXELS(put_pixels16_y2_arm , put_pixels8_y2_arm , 8) | |
61 CALL_2X_PIXELS(put_pixels16_xy2_arm, put_pixels8_xy2_arm, 8) | |
62 CALL_2X_PIXELS(put_no_rnd_pixels16_x2_arm , put_no_rnd_pixels8_x2_arm , 8) | |
63 CALL_2X_PIXELS(put_no_rnd_pixels16_y2_arm , put_no_rnd_pixels8_y2_arm , 8) | |
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 | 153 : "+r"(block), |
154 "+r"(dest) | |
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 | 159 /* XXX: those functions should be suppressed ASAP when all IDCTs are |
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 | 162 { |
163 j_rev_dct_ARM (block); | |
164 ff_put_pixels_clamped(block, dest, line_size); | |
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 | 167 { |
1092 | 168 j_rev_dct_ARM (block); |
169 ff_add_pixels_clamped(block, dest, line_size); | |
61 | 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 | 181 |
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 | 202 } |
2734
aeea63c97878
Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents:
1347
diff
changeset
|
203 #endif |
1092 | 204 |
205 void dsputil_init_armv4l(DSPContext* c, AVCodecContext *avctx) | |
206 { | |
3726 | 207 int idct_algo= avctx->idct_algo; |
1092 | 208 |
209 ff_put_pixels_clamped = c->put_pixels_clamped; | |
210 ff_add_pixels_clamped = c->add_pixels_clamped; | |
211 | |
6179 | 212 if (avctx->lowres == 0) { |
6180 | 213 if(idct_algo == FF_IDCT_AUTO){ |
3769 | 214 #if defined(HAVE_IPP) |
6180 | 215 idct_algo = FF_IDCT_IPP; |
4427 | 216 #elif defined(HAVE_ARMV6) |
6180 | 217 idct_algo = FF_IDCT_SIMPLEARMV6; |
3769 | 218 #elif defined(HAVE_ARMV5TE) |
6180 | 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 | 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 | 223 } |
3726 | 224 |
6180 | 225 if(idct_algo==FF_IDCT_ARM){ |
226 c->idct_put= j_rev_dct_ARM_put; | |
227 c->idct_add= j_rev_dct_ARM_add; | |
228 c->idct = j_rev_dct_ARM; | |
229 c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;/* FF_NO_IDCT_PERM */ | |
230 } else if (idct_algo==FF_IDCT_SIMPLEARM){ | |
231 c->idct_put= simple_idct_ARM_put; | |
232 c->idct_add= simple_idct_ARM_add; | |
233 c->idct = simple_idct_ARM; | |
234 c->idct_permutation_type= FF_NO_IDCT_PERM; | |
4427 | 235 #ifdef HAVE_ARMV6 |
6180 | 236 } else if (idct_algo==FF_IDCT_SIMPLEARMV6){ |
237 c->idct_put= ff_simple_idct_put_armv6; | |
238 c->idct_add= ff_simple_idct_add_armv6; | |
239 c->idct = ff_simple_idct_armv6; | |
240 c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM; | |
4427 | 241 #endif |
3769 | 242 #ifdef HAVE_ARMV5TE |
6180 | 243 } else if (idct_algo==FF_IDCT_SIMPLEARMV5TE){ |
244 c->idct_put= simple_idct_put_armv5te; | |
245 c->idct_add= simple_idct_add_armv5te; | |
246 c->idct = simple_idct_armv5te; | |
247 c->idct_permutation_type = FF_NO_IDCT_PERM; | |
3769 | 248 #endif |
2734
aeea63c97878
Better ARM support for mplayer/ffmpeg, ported from atty fork
michael
parents:
1347
diff
changeset
|
249 #ifdef HAVE_IPP |
6180 | 250 } else if (idct_algo==FF_IDCT_IPP){ |
251 c->idct_put= simple_idct_ipp_put; | |
252 c->idct_add= simple_idct_ipp_add; | |
253 c->idct = simple_idct_ipp; | |
254 c->idct_permutation_type= FF_NO_IDCT_PERM; | |
3726 | 255 #endif |
6180 | 256 } |
6179 | 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 | 279 } |