annotate libmpeg2/motion_comp_arm.c @ 36182:8587ae275646

Rename HAVE_CMOV to HAVE_I686 for FFmpeg. Keep the cmov name in configure since it is less confusing, since cmov is what we test for and also since for example VIA C3 sometimes is considered i686 that does not implement the optional CMOV instruction.
author reimar
date Fri, 17 May 2013 15:59:38 +0000
parents 25337a2147e7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23236
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
1 /*
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
2 * motion_comp_arm.c
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
3 * Copyright (C) 2004 AGAWA Koji <i (AT) atty (DOT) jp>
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
4 *
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
5 * This file is part of mpeg2dec, a free MPEG-2 video stream decoder.
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
6 * See http://libmpeg2.sourceforge.net/ for updates.
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
7 *
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
8 * mpeg2dec is free software; you can redistribute it and/or modify
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
11 * (at your option) any later version.
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
12 *
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
13 * mpeg2dec is distributed in the hope that it will be useful,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
16 * GNU General Public License for more details.
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
17 *
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
27572
da2271c341ee Update internal libmpeg2 copy to version 0.5.1.
diego
parents: 23236
diff changeset
19 * along with mpeg2dec; if not, write to the Free Software
23236
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
21 */
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
22
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
23 #include "config.h"
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
24
28290
25337a2147e7 Lots and lots of #ifdef ARCH_... -> #if ARCH_...
reimar
parents: 27572
diff changeset
25 #if ARCH_ARM
23236
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
26
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
27 #include <inttypes.h>
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
28
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
29 #include "mpeg2.h"
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
30 #include "attributes.h"
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
31 #include "mpeg2_internal.h"
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
32
27572
da2271c341ee Update internal libmpeg2 copy to version 0.5.1.
diego
parents: 23236
diff changeset
33 #define avg2(a,b) ((a+b+1)>>1)
23236
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
34 #define avg4(a,b,c,d) ((a+b+c+d+2)>>2)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
35
27572
da2271c341ee Update internal libmpeg2 copy to version 0.5.1.
diego
parents: 23236
diff changeset
36 #define predict_o(i) (ref[i])
da2271c341ee Update internal libmpeg2 copy to version 0.5.1.
diego
parents: 23236
diff changeset
37 #define predict_x(i) (avg2 (ref[i], ref[i+1]))
da2271c341ee Update internal libmpeg2 copy to version 0.5.1.
diego
parents: 23236
diff changeset
38 #define predict_y(i) (avg2 (ref[i], (ref+stride)[i]))
23236
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
39 #define predict_xy(i) (avg4 (ref[i], ref[i+1], \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
40 (ref+stride)[i], (ref+stride)[i+1]))
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
41
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
42 #define put(predictor,i) dest[i] = predictor (i)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
43 #define avg(predictor,i) dest[i] = avg2 (predictor (i), dest[i])
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
44
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
45 /* mc function template */
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
46
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
47 #define MC_FUNC(op,xy) \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
48 static void inline MC_##op##_##xy##_16_c (uint8_t * dest, const uint8_t * ref, \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
49 const int stride, int height) \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
50 { \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
51 do { \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
52 op (predict_##xy, 0); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
53 op (predict_##xy, 1); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
54 op (predict_##xy, 2); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
55 op (predict_##xy, 3); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
56 op (predict_##xy, 4); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
57 op (predict_##xy, 5); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
58 op (predict_##xy, 6); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
59 op (predict_##xy, 7); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
60 op (predict_##xy, 8); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
61 op (predict_##xy, 9); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
62 op (predict_##xy, 10); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
63 op (predict_##xy, 11); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
64 op (predict_##xy, 12); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
65 op (predict_##xy, 13); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
66 op (predict_##xy, 14); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
67 op (predict_##xy, 15); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
68 ref += stride; \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
69 dest += stride; \
27572
da2271c341ee Update internal libmpeg2 copy to version 0.5.1.
diego
parents: 23236
diff changeset
70 } while (--height); \
23236
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
71 } \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
72 static void MC_##op##_##xy##_8_c (uint8_t * dest, const uint8_t * ref, \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
73 const int stride, int height) \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
74 { \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
75 do { \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
76 op (predict_##xy, 0); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
77 op (predict_##xy, 1); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
78 op (predict_##xy, 2); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
79 op (predict_##xy, 3); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
80 op (predict_##xy, 4); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
81 op (predict_##xy, 5); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
82 op (predict_##xy, 6); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
83 op (predict_##xy, 7); \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
84 ref += stride; \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
85 dest += stride; \
27572
da2271c341ee Update internal libmpeg2 copy to version 0.5.1.
diego
parents: 23236
diff changeset
86 } while (--height); \
23236
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
87 } \
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
88 /* definitions of the actual mc functions */
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
89
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
90 MC_FUNC (avg,o)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
91 MC_FUNC (avg,x)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
92 MC_FUNC (put,y)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
93 MC_FUNC (avg,y)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
94 MC_FUNC (put,xy)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
95 MC_FUNC (avg,xy)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
96
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
97
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
98 extern void MC_put_o_16_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
99 int stride, int height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
100
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
101 extern void MC_put_x_16_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
102 int stride, int height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
103
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
104
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
105 static void MC_put_y_16_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
106 int stride, int height)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
107 {
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
108 MC_put_y_16_c(dest, ref, stride, height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
109 }
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
110
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
111 static void MC_put_xy_16_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
112 int stride, int height)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
113 {
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
114 MC_put_xy_16_c(dest, ref, stride, height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
115 }
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
116
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
117 extern void MC_put_o_8_arm (uint8_t * dest, const uint8_t * ref,
27572
da2271c341ee Update internal libmpeg2 copy to version 0.5.1.
diego
parents: 23236
diff changeset
118 int stride, int height);
23236
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
119
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
120 extern void MC_put_x_8_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
121 int stride, int height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
122
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
123 static void MC_put_y_8_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
124 int stride, int height)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
125 {
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
126 MC_put_y_8_c(dest, ref, stride, height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
127 }
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
128
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
129 static void MC_put_xy_8_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
130 int stride, int height)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
131 {
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
132 MC_put_xy_8_c(dest, ref, stride, height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
133 }
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
134
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
135 static void MC_avg_o_16_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
136 int stride, int height)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
137 {
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
138 MC_avg_o_16_c(dest, ref, stride, height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
139 }
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
140
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
141 static void MC_avg_x_16_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
142 int stride, int height)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
143 {
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
144 MC_avg_x_16_c(dest, ref, stride, height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
145 }
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
146
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
147 static void MC_avg_y_16_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
148 int stride, int height)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
149 {
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
150 MC_avg_y_16_c(dest, ref, stride, height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
151 }
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
152
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
153 static void MC_avg_xy_16_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
154 int stride, int height)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
155 {
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
156 MC_avg_xy_16_c(dest, ref, stride, height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
157 }
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
158
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
159 static void MC_avg_o_8_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
160 int stride, int height)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
161 {
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
162 MC_avg_o_8_c(dest, ref, stride, height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
163 }
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
164
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
165 static void MC_avg_x_8_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
166 int stride, int height)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
167 {
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
168 MC_avg_x_8_c(dest, ref, stride, height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
169 }
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
170
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
171 static void MC_avg_y_8_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
172 int stride, int height)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
173 {
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
174 MC_avg_y_8_c(dest, ref, stride, height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
175 }
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
176
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
177 static void MC_avg_xy_8_arm (uint8_t * dest, const uint8_t * ref,
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
178 int stride, int height)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
179 {
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
180 MC_avg_xy_8_c(dest, ref, stride, height);
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
181 }
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
182
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
183 MPEG2_MC_EXTERN (arm)
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
184
f0ddd02aec27 iWMMXt-accelerated DCT and motion compensation for ARM processors
gpoirier
parents:
diff changeset
185 #endif