~ubuntu-branches/ubuntu/trusty/gavl/trusty

« back to all changes in this revision

Viewing changes to gavl/c/_transform_c.c

  • Committer: Bazaar Package Importer
  • Author(s): Romain Beauxis
  • Date: 2009-01-17 20:38:33 UTC
  • mfrom: (1.1.3 upstream) (4.1.1 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090117203833-t8fq1e1jdquyelmy
Tags: 1.1.0-2
Fixed debian/copyright 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*****************************************************************
 
2
 * gavl - a general purpose audio/video processing library
 
3
 *
 
4
 * Copyright (c) 2001 - 2008 Members of the Gmerlin project
 
5
 * gmerlin-general@lists.sourceforge.net
 
6
 * http://gmerlin.sourceforge.net
 
7
 *
 
8
 * This program is free software: you can redistribute it and/or modify
 
9
 * it under the terms of the GNU General Public License as published by
 
10
 * the Free Software Foundation, either version 2 of the License, or
 
11
 * (at your option) any later version.
 
12
 *
 
13
 * This program is distributed in the hope that it will be useful,
 
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
 * GNU General Public License for more details.
 
17
 *
 
18
 * You should have received a copy of the GNU General Public License
 
19
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
20
 * *****************************************************************/
 
21
 
 
22
#include <stdio.h>
 
23
#include <gavl/gavl.h>
 
24
#include <video.h>
 
25
#include <transform.h>
 
26
#include "scale_macros.h"
 
27
 
 
28
#define TMP_TYPE_8 int
 
29
#define TMP_TYPE_16 uint32_t
 
30
/* transform_rgb_15_c */
 
31
 
 
32
#define FUNC_NAME transform_rgb_15_c
 
33
#define TYPE color_15
 
34
#define INIT TMP_TYPE_8 tmp;
 
35
 
 
36
#if NUM_TAPS == 2
 
37
#define TRANSFORM                                               \
 
38
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].r +  \
 
39
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].r +  \
 
40
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].r +  \
 
41
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].r;   \
 
42
  tmp=DOWNSHIFT(tmp,16);\
 
43
  dst->r = tmp;                                                 \
 
44
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].g +  \
 
45
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].g +  \
 
46
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].g +  \
 
47
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].g;   \
 
48
  tmp=DOWNSHIFT(tmp,16);\
 
49
  dst->g = tmp; \
 
50
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].b +  \
 
51
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].b +  \
 
52
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].b +  \
 
53
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].b;   \
 
54
  tmp=DOWNSHIFT(tmp,16);\
 
55
  dst->b = tmp;
 
56
 
 
57
#elif NUM_TAPS == 3
 
58
#define TRANSFORM \
 
59
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].r +  \
 
60
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].r +  \
 
61
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2].r +  \
 
62
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].r +  \
 
63
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].r +  \
 
64
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2].r +  \
 
65
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0].r +  \
 
66
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1].r +  \
 
67
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2].r;   \
 
68
  tmp=DOWNSHIFT(tmp,16);\
 
69
  dst->r = tmp;                                                 \
 
70
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].g +  \
 
71
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].g +  \
 
72
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2].g +  \
 
73
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].g +  \
 
74
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].g +  \
 
75
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2].g +  \
 
76
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0].g +  \
 
77
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1].g +  \
 
78
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2].g;   \
 
79
  tmp=DOWNSHIFT(tmp,16);\
 
80
  dst->g = tmp; \
 
81
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].b +  \
 
82
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].b +  \
 
83
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2].b +  \
 
84
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].b +  \
 
85
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].b +  \
 
86
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2].b +  \
 
87
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0].b +  \
 
88
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1].b +  \
 
89
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2].b;   \
 
90
  tmp=DOWNSHIFT(tmp,16);\
 
91
  dst->b = tmp;
 
92
#elif NUM_TAPS == 4
 
93
#define TRANSFORM                                               \
 
94
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].r +  \
 
95
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].r +  \
 
96
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2].r +  \
 
97
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[3].r +  \
 
98
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].r +  \
 
99
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].r +  \
 
100
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2].r +  \
 
101
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[3].r +  \
 
102
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0].r +  \
 
103
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1].r +  \
 
104
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2].r +  \
 
105
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[3].r +  \
 
106
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[0].r +  \
 
107
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[1].r +  \
 
108
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[2].r +  \
 
109
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[3].r;   \
 
110
  tmp=DOWNSHIFT(tmp,16);\
 
111
  dst->r = tmp;                                                 \
 
112
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].g +  \
 
113
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].g +  \
 
114
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2].g +  \
 
115
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[3].g +  \
 
116
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].g +  \
 
117
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].g +  \
 
118
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2].g +  \
 
119
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[3].g +  \
 
120
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0].g +  \
 
121
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1].g +  \
 
122
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2].g +  \
 
123
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[3].g +  \
 
124
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[0].g +  \
 
125
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[1].g +  \
 
126
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[2].g +  \
 
127
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[3].g; \
 
128
  tmp=DOWNSHIFT(tmp,16);\
 
129
  dst->g = tmp; \
 
130
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].b +  \
 
131
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].b +  \
 
132
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2].b +  \
 
133
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[3].b +  \
 
134
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].b +  \
 
135
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].b +  \
 
136
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2].b +  \
 
137
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[3].b +  \
 
138
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0].b +  \
 
139
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1].b +  \
 
140
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2].b +  \
 
141
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[3].b +  \
 
142
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[0].b +  \
 
143
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[1].b +  \
 
144
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[2].b +  \
 
145
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[3].b;   \
 
146
  tmp=DOWNSHIFT(tmp,16);\
 
147
  dst->b = tmp;
 
148
#endif
 
149
 
 
150
#include "transform_c.h"
 
151
 
 
152
/* transform_rgb_16_c */
 
153
 
 
154
#define FUNC_NAME transform_rgb_16_c
 
155
#define TYPE color_16
 
156
#define INIT TMP_TYPE_8 tmp;
 
157
 
 
158
#if NUM_TAPS == 2
 
159
#define TRANSFORM                                               \
 
160
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].r +  \
 
161
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].r +  \
 
162
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].r +  \
 
163
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].r;   \
 
164
  tmp=DOWNSHIFT(tmp,16);\
 
165
  dst->r = tmp;                                                 \
 
166
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].g +  \
 
167
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].g +  \
 
168
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].g +  \
 
169
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].g;   \
 
170
  tmp=DOWNSHIFT(tmp,16);\
 
171
  dst->g = tmp; \
 
172
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].b +  \
 
173
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].b +  \
 
174
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].b +  \
 
175
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].b;   \
 
176
  tmp=DOWNSHIFT(tmp,16);\
 
177
  dst->b = tmp;
 
178
 
 
179
#elif NUM_TAPS == 3
 
180
#define TRANSFORM                                               \
 
181
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].r +  \
 
182
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].r +  \
 
183
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2].r +  \
 
184
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].r +  \
 
185
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].r +  \
 
186
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2].r +  \
 
187
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0].r +  \
 
188
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1].r +  \
 
189
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2].r;   \
 
190
  tmp=DOWNSHIFT(tmp,16);\
 
191
  dst->r = tmp;                                                 \
 
192
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].g +  \
 
193
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].g +  \
 
194
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2].g +  \
 
195
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].g +  \
 
196
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].g +  \
 
197
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2].g +  \
 
198
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0].g +  \
 
199
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1].g +  \
 
200
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2].g;   \
 
201
  tmp=DOWNSHIFT(tmp,16);\
 
202
  dst->g = tmp; \
 
203
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].b +  \
 
204
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].b +  \
 
205
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2].b +  \
 
206
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].b +  \
 
207
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].b +  \
 
208
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2].b +  \
 
209
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0].b +  \
 
210
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1].b +  \
 
211
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2].b;   \
 
212
  tmp=DOWNSHIFT(tmp,16);\
 
213
  dst->b = tmp;
 
214
 
 
215
 
 
216
#elif NUM_TAPS == 4
 
217
#define TRANSFORM                                               \
 
218
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].r +  \
 
219
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].r +  \
 
220
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2].r +  \
 
221
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[3].r +  \
 
222
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].r +  \
 
223
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].r +  \
 
224
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2].r +  \
 
225
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[3].r +  \
 
226
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0].r +  \
 
227
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1].r +  \
 
228
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2].r +  \
 
229
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[3].r +  \
 
230
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[0].r +  \
 
231
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[1].r +  \
 
232
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[2].r +  \
 
233
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[3].r;   \
 
234
  tmp=DOWNSHIFT(tmp,16);\
 
235
  dst->r = tmp;                                                 \
 
236
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].g +  \
 
237
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].g +  \
 
238
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2].g +  \
 
239
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[3].g +  \
 
240
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].g +  \
 
241
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].g +  \
 
242
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2].g +  \
 
243
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[3].g +  \
 
244
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0].g +  \
 
245
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1].g +  \
 
246
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2].g +  \
 
247
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[3].g +  \
 
248
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[0].g +  \
 
249
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[1].g +  \
 
250
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[2].g +  \
 
251
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[3].g; \
 
252
  tmp=DOWNSHIFT(tmp,16);\
 
253
  dst->g = tmp; \
 
254
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0].b +  \
 
255
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1].b +  \
 
256
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2].b +  \
 
257
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[3].b +  \
 
258
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0].b +  \
 
259
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1].b +  \
 
260
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2].b +  \
 
261
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[3].b +  \
 
262
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0].b +  \
 
263
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1].b +  \
 
264
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2].b +  \
 
265
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[3].b +  \
 
266
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[0].b +  \
 
267
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[1].b +  \
 
268
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[2].b +  \
 
269
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[3].b;   \
 
270
  tmp=DOWNSHIFT(tmp,16);\
 
271
  dst->b = tmp;
 
272
 
 
273
#endif
 
274
 
 
275
#include "transform_c.h"
 
276
 
 
277
/* transform_uint8_x_1_c */
 
278
 
 
279
#define FUNC_NAME transform_uint8_x_1_c
 
280
#define TYPE uint8_t
 
281
#define INIT TMP_TYPE_8 tmp;
 
282
 
 
283
#if NUM_TAPS == 2
 
284
#define TRANSFORM                                               \
 
285
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
286
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1] +  \
 
287
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
288
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1];   \
 
289
  tmp=DOWNSHIFT(tmp,16);\
 
290
  dst[0] = tmp;
 
291
#elif NUM_TAPS == 3
 
292
#define TRANSFORM                                               \
 
293
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
294
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1] +  \
 
295
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2] +  \
 
296
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
297
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1] +  \
 
298
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2] +  \
 
299
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
300
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1] +  \
 
301
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2]; \
 
302
  tmp=DOWNSHIFT(tmp,16);\
 
303
  dst[0] = tmp;
 
304
 
 
305
#elif NUM_TAPS == 4
 
306
#define TRANSFORM                                               \
 
307
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
308
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[1] +  \
 
309
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2] +  \
 
310
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[3] +  \
 
311
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
312
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[1] +  \
 
313
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2] +  \
 
314
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[3] +  \
 
315
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
316
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[1] +  \
 
317
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2] +  \
 
318
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[3] +  \
 
319
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[0] +  \
 
320
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[1] +  \
 
321
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[2] +  \
 
322
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[3];  \
 
323
  tmp=DOWNSHIFT(tmp,16);\
 
324
  dst[0] = tmp;
 
325
 
 
326
 
 
327
#endif
 
328
 
 
329
#include "transform_c.h"
 
330
 
 
331
/* transform_uint8_x_1_advance_c */
 
332
 
 
333
#define FUNC_NAME transform_uint8_x_1_advance_c
 
334
#define TYPE uint8_t
 
335
#define INIT TMP_TYPE_8 tmp;
 
336
 
 
337
#if NUM_TAPS == 2
 
338
#define TRANSFORM                                               \
 
339
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
340
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[ctx->advance] +  \
 
341
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
342
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[ctx->advance];   \
 
343
  tmp=DOWNSHIFT(tmp,16);\
 
344
  dst[0] = tmp;
 
345
#elif NUM_TAPS == 3
 
346
#define TRANSFORM                                               \
 
347
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
348
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[ctx->advance] +  \
 
349
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2*ctx->advance] +  \
 
350
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
351
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[ctx->advance] +  \
 
352
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2*ctx->advance] +  \
 
353
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
354
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[ctx->advance] +  \
 
355
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2*ctx->advance]; \
 
356
  tmp=DOWNSHIFT(tmp,16);\
 
357
  dst[0] = tmp;
 
358
 
 
359
#elif NUM_TAPS == 4
 
360
#define TRANSFORM                                               \
 
361
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
362
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[ctx->advance] +  \
 
363
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[2*ctx->advance] +  \
 
364
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[3*ctx->advance] +  \
 
365
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
366
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[ctx->advance] +  \
 
367
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[2*ctx->advance] +  \
 
368
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[3*ctx->advance] +  \
 
369
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
370
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[ctx->advance] +  \
 
371
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[2*ctx->advance] +  \
 
372
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[3*ctx->advance] +  \
 
373
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[0] +  \
 
374
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[ctx->advance] +  \
 
375
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[2*ctx->advance] +  \
 
376
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[3*ctx->advance];  \
 
377
  tmp=DOWNSHIFT(tmp,16);\
 
378
  dst[0] = tmp;
 
379
 
 
380
#endif
 
381
 
 
382
#include "transform_c.h"
 
383
 
 
384
 
 
385
/* transform_uint8_x_2_c */
 
386
 
 
387
#define FUNC_NAME transform_uint8_x_2_c
 
388
#define TYPE uint8_t
 
389
#define INIT TMP_TYPE_8 tmp;
 
390
 
 
391
#if NUM_TAPS == 2
 
392
#define TRANSFORM                                               \
 
393
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
394
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[2] +  \
 
395
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
396
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[2];   \
 
397
  tmp=DOWNSHIFT(tmp,16);\
 
398
  dst[0] = tmp;                                                 \
 
399
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
400
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[3] +  \
 
401
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
402
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[3];   \
 
403
  tmp=DOWNSHIFT(tmp,16);\
 
404
  dst[1] = tmp;
 
405
#elif NUM_TAPS == 3
 
406
#define TRANSFORM                                               \
 
407
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
408
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[2] +  \
 
409
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[4] +  \
 
410
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
411
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[2] +   \
 
412
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[4] +   \
 
413
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
414
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[2] +   \
 
415
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[4];  \
 
416
  tmp=DOWNSHIFT(tmp,16);\
 
417
  dst[0] = tmp;                                                 \
 
418
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
419
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[3] +  \
 
420
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[5] +  \
 
421
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
422
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[3] +   \
 
423
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[5] +   \
 
424
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
425
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[3] +   \
 
426
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[5];   \
 
427
  tmp=DOWNSHIFT(tmp,16);\
 
428
  dst[1] = tmp;
 
429
#elif NUM_TAPS == 4
 
430
#define TRANSFORM \
 
431
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
432
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[2] +  \
 
433
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[4] +  \
 
434
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[6] +  \
 
435
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
436
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[2] +   \
 
437
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[4] +   \
 
438
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[6] +   \
 
439
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
440
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[2] +   \
 
441
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[4] +  \
 
442
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[6] +   \
 
443
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[0] +  \
 
444
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[2] +   \
 
445
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[4] +  \
 
446
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[6];   \
 
447
  tmp=DOWNSHIFT(tmp,16);\
 
448
  dst[0] = tmp;                                                 \
 
449
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
450
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[3] +  \
 
451
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[5] +  \
 
452
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[7] +  \
 
453
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
454
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[3] +   \
 
455
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[5] +   \
 
456
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[7] +   \
 
457
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
458
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[3] +   \
 
459
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[5] +  \
 
460
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[7] +   \
 
461
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[1] +  \
 
462
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[3] +   \
 
463
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[5] +  \
 
464
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[7];   \
 
465
  tmp=DOWNSHIFT(tmp,16);\
 
466
  dst[1] = tmp;
 
467
#endif
 
468
 
 
469
#include "transform_c.h"
 
470
 
 
471
/* transform_uint8_x_3_c */
 
472
 
 
473
#define FUNC_NAME transform_uint8_x_3_3_c
 
474
#define TYPE uint8_t
 
475
#define INIT TMP_TYPE_8 tmp;
 
476
 
 
477
#if NUM_TAPS == 2
 
478
#define TRANSFORM                                               \
 
479
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
480
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[3] +  \
 
481
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
482
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[3];   \
 
483
  tmp=DOWNSHIFT(tmp,16);\
 
484
  dst[0] = tmp;                                                 \
 
485
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
486
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
487
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
488
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[4];   \
 
489
  tmp=DOWNSHIFT(tmp,16);\
 
490
  dst[1] = tmp; \
 
491
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
492
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
493
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
494
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[5];   \
 
495
  tmp=DOWNSHIFT(tmp,16);\
 
496
  dst[2] = tmp;
 
497
#elif NUM_TAPS == 3
 
498
#define TRANSFORM                                               \
 
499
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
500
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[3] +  \
 
501
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[6] +  \
 
502
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
503
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[3] +   \
 
504
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[6] +   \
 
505
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
506
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[3] +   \
 
507
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[6];  \
 
508
  tmp=DOWNSHIFT(tmp,16);\
 
509
  dst[0] = tmp;                                                 \
 
510
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
511
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
512
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[7] +  \
 
513
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
514
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[4] +   \
 
515
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[7] +   \
 
516
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
517
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[4] +   \
 
518
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[7];   \
 
519
  tmp=DOWNSHIFT(tmp,16);\
 
520
  dst[1] = tmp; \
 
521
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
522
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
523
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[8] +  \
 
524
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
525
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[5] +   \
 
526
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[8] +   \
 
527
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[2] +  \
 
528
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[5] +   \
 
529
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[8];   \
 
530
  tmp=DOWNSHIFT(tmp,16);\
 
531
  dst[2] = tmp;
 
532
#elif NUM_TAPS == 4
 
533
#define TRANSFORM \
 
534
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
535
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[3] +  \
 
536
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[6] +  \
 
537
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[9] +  \
 
538
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
539
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[3] +   \
 
540
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[6] +   \
 
541
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[9] +   \
 
542
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
543
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[3] +   \
 
544
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[6] +  \
 
545
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[9] +   \
 
546
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[0] +  \
 
547
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[3] +   \
 
548
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[6] +  \
 
549
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[9];   \
 
550
  tmp=DOWNSHIFT(tmp,16);\
 
551
  dst[0] = tmp;                                                 \
 
552
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
553
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
554
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[7] +  \
 
555
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[10] +  \
 
556
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
557
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[4] +   \
 
558
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[7] +   \
 
559
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[10] +   \
 
560
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
561
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[4] +   \
 
562
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[7] +  \
 
563
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[10] +   \
 
564
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[1] +  \
 
565
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[4] +   \
 
566
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[7] +  \
 
567
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[10];   \
 
568
  tmp=DOWNSHIFT(tmp,16);\
 
569
  dst[1] = tmp; \
 
570
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
571
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
572
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[8] +  \
 
573
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[11] +  \
 
574
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
575
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[5] +   \
 
576
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[8] +   \
 
577
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[11] +   \
 
578
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[2] +  \
 
579
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[5] +   \
 
580
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[8] +  \
 
581
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[11] +   \
 
582
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[2] +  \
 
583
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[5] +   \
 
584
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[8] +  \
 
585
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[11];   \
 
586
  tmp=DOWNSHIFT(tmp,16);\
 
587
  dst[2] = tmp;
 
588
 
 
589
#endif
 
590
 
 
591
#include "transform_c.h"
 
592
 
 
593
/* transform_uint8_x_3_4_c */
 
594
 
 
595
#define FUNC_NAME transform_uint8_x_3_4_c
 
596
#define TYPE uint8_t
 
597
#define INIT TMP_TYPE_8 tmp;
 
598
 
 
599
#if NUM_TAPS == 2
 
600
#define TRANSFORM                                               \
 
601
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
602
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
603
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
604
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[4];   \
 
605
  tmp=DOWNSHIFT(tmp,16);\
 
606
  dst[0] = tmp;                                                 \
 
607
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
608
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
609
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
610
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[5];   \
 
611
  tmp=DOWNSHIFT(tmp,16);\
 
612
  dst[1] = tmp; \
 
613
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
614
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[6] +  \
 
615
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
616
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[6];   \
 
617
  tmp=DOWNSHIFT(tmp,16);\
 
618
  dst[2] = tmp;
 
619
#elif NUM_TAPS == 3
 
620
#define TRANSFORM                                               \
 
621
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
622
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
623
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[8] +  \
 
624
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
625
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[4] +   \
 
626
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[8] +   \
 
627
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
628
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[4] +   \
 
629
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[8];  \
 
630
  tmp=DOWNSHIFT(tmp,16);\
 
631
  dst[0] = tmp;                                                 \
 
632
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
633
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
634
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[9] +  \
 
635
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
636
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[5] +   \
 
637
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[9] +   \
 
638
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
639
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[5] +   \
 
640
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[9];   \
 
641
  tmp=DOWNSHIFT(tmp,16);\
 
642
  dst[1] = tmp; \
 
643
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
644
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[6] +  \
 
645
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[10] +  \
 
646
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
647
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[6] +   \
 
648
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[10] +   \
 
649
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[2] +  \
 
650
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[6] +   \
 
651
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[10];   \
 
652
  tmp=DOWNSHIFT(tmp,16);\
 
653
  dst[2] = tmp;
 
654
#elif NUM_TAPS == 4
 
655
#define TRANSFORM \
 
656
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
657
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
658
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[8] +  \
 
659
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[12] +  \
 
660
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
661
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[4] +   \
 
662
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[8] +   \
 
663
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[12] +   \
 
664
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
665
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[4] +   \
 
666
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[8] +  \
 
667
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[12] +   \
 
668
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[0] +  \
 
669
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[4] +   \
 
670
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[8] +  \
 
671
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[12];   \
 
672
  tmp=DOWNSHIFT(tmp,16);\
 
673
  dst[0] = tmp;                                                 \
 
674
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
675
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
676
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[9] +  \
 
677
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[13] +  \
 
678
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
679
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[5] +   \
 
680
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[9] +   \
 
681
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[13] +   \
 
682
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
683
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[5] +   \
 
684
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[9] +  \
 
685
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[13] +   \
 
686
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[1] +  \
 
687
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[5] +   \
 
688
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[9] +  \
 
689
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[13];   \
 
690
  tmp=DOWNSHIFT(tmp,16);\
 
691
  dst[1] = tmp; \
 
692
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
693
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[6] +  \
 
694
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[10] +  \
 
695
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[14] +  \
 
696
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
697
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[6] +   \
 
698
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[10] +   \
 
699
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[14] +   \
 
700
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[2] +  \
 
701
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[6] +   \
 
702
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[10] +  \
 
703
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[14] +   \
 
704
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[2] +  \
 
705
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[6] +   \
 
706
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[10] +  \
 
707
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[14];   \
 
708
  tmp=DOWNSHIFT(tmp,16);\
 
709
  dst[2] = tmp;
 
710
 
 
711
#endif
 
712
 
 
713
#include "transform_c.h"
 
714
 
 
715
/* transform_uint8_x_4_c */
 
716
 
 
717
#define FUNC_NAME transform_uint8_x_4_c
 
718
#define TYPE uint8_t
 
719
#define INIT TMP_TYPE_8 tmp;
 
720
 
 
721
#if NUM_TAPS == 2
 
722
#define TRANSFORM                                               \
 
723
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
724
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
725
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
726
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[4];   \
 
727
  tmp=DOWNSHIFT(tmp,16);\
 
728
  dst[0] = tmp;                                                 \
 
729
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
730
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
731
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
732
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[5];   \
 
733
  tmp=DOWNSHIFT(tmp,16);\
 
734
  dst[1] = tmp; \
 
735
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
736
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[6] +  \
 
737
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
738
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[6];   \
 
739
  tmp=DOWNSHIFT(tmp,16);\
 
740
  dst[2] = tmp; \
 
741
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[3] +  \
 
742
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[7] +  \
 
743
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
744
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[7];   \
 
745
  tmp=DOWNSHIFT(tmp,16);\
 
746
  dst[3] = tmp;
 
747
#elif NUM_TAPS == 3
 
748
#define TRANSFORM                                               \
 
749
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
750
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
751
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[8] +  \
 
752
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
753
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[4] +   \
 
754
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[8] +   \
 
755
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
756
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[4] +   \
 
757
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[8];  \
 
758
  tmp=DOWNSHIFT(tmp,16);\
 
759
  dst[0] = tmp;                                                 \
 
760
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
761
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
762
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[9] +  \
 
763
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
764
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[5] +   \
 
765
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[9] +   \
 
766
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
767
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[5] +   \
 
768
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[9];   \
 
769
  tmp=DOWNSHIFT(tmp,16);\
 
770
  dst[1] = tmp; \
 
771
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
772
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[6] +  \
 
773
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[10] +  \
 
774
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
775
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[6] +   \
 
776
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[10] +   \
 
777
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[2] +  \
 
778
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[6] +   \
 
779
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[10];   \
 
780
  tmp=DOWNSHIFT(tmp,16);\
 
781
  dst[2] = tmp; \
 
782
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[3] +  \
 
783
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[7] +  \
 
784
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[11] +  \
 
785
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[3] +  \
 
786
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[7] +   \
 
787
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[11] +   \
 
788
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[3] +  \
 
789
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[7] +   \
 
790
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[11];   \
 
791
  tmp=DOWNSHIFT(tmp,16);\
 
792
  dst[3] = tmp;
 
793
#elif NUM_TAPS == 4
 
794
#define TRANSFORM \
 
795
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
796
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
797
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[8] +  \
 
798
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[12] +  \
 
799
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
800
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[4] +   \
 
801
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[8] +   \
 
802
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[12] +   \
 
803
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
804
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[4] +   \
 
805
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[8] +  \
 
806
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[12] +   \
 
807
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[0] +  \
 
808
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[4] +   \
 
809
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[8] +  \
 
810
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[12];   \
 
811
  tmp=DOWNSHIFT(tmp,16);\
 
812
  dst[0] = tmp;                                                 \
 
813
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
814
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
815
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[9] +  \
 
816
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[13] +  \
 
817
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
818
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[5] +   \
 
819
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[9] +   \
 
820
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[13] +   \
 
821
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
822
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[5] +   \
 
823
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[9] +  \
 
824
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[13] +   \
 
825
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[1] +  \
 
826
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[5] +   \
 
827
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[9] +  \
 
828
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[13];   \
 
829
  tmp=DOWNSHIFT(tmp,16);\
 
830
  dst[1] = tmp; \
 
831
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
832
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[6] +  \
 
833
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[10] +  \
 
834
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[14] +  \
 
835
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
836
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[6] +   \
 
837
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[10] +   \
 
838
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[14] +   \
 
839
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[2] +  \
 
840
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[6] +   \
 
841
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[10] +  \
 
842
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[14] +   \
 
843
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[2] +  \
 
844
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[6] +   \
 
845
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[10] +  \
 
846
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[14];   \
 
847
  tmp=DOWNSHIFT(tmp,16);\
 
848
  dst[2] = tmp;\
 
849
  tmp = (TMP_TYPE_8)ctx->pixels[i].factors_i[0][0] * src_0[3] +  \
 
850
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][1] * src_0[7] +  \
 
851
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][2] * src_0[11] +  \
 
852
        (TMP_TYPE_8)ctx->pixels[i].factors_i[0][3] * src_0[15] +  \
 
853
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][0] * src_1[3] +  \
 
854
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][1] * src_1[7] +   \
 
855
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][2] * src_1[11] +   \
 
856
        (TMP_TYPE_8)ctx->pixels[i].factors_i[1][3] * src_1[15] +   \
 
857
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][0] * src_2[3] +  \
 
858
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][1] * src_2[7] +   \
 
859
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][2] * src_2[11] +  \
 
860
        (TMP_TYPE_8)ctx->pixels[i].factors_i[2][3] * src_2[15] +   \
 
861
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][0] * src_3[3] +  \
 
862
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][1] * src_3[7] +   \
 
863
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][2] * src_3[11] +  \
 
864
        (TMP_TYPE_8)ctx->pixels[i].factors_i[3][3] * src_3[15];   \
 
865
  tmp=DOWNSHIFT(tmp,16);\
 
866
  dst[3] = tmp;
 
867
 
 
868
 
 
869
#endif
 
870
 
 
871
#include "transform_c.h"
 
872
 
 
873
 
 
874
/* transform_uint16_x_1_c */
 
875
 
 
876
#define FUNC_NAME transform_uint16_x_1_c
 
877
#define TYPE uint16_t
 
878
#define INIT TMP_TYPE_16 tmp;
 
879
 
 
880
#if NUM_TAPS == 2
 
881
#define TRANSFORM                                               \
 
882
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
883
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[1] +  \
 
884
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
885
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[1];   \
 
886
  tmp=DOWNSHIFT(tmp,16);\
 
887
  dst[0] = tmp;
 
888
#elif NUM_TAPS == 3
 
889
#define TRANSFORM                                               \
 
890
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
891
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[1] +  \
 
892
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[2] +  \
 
893
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
894
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[1] +  \
 
895
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[2] +  \
 
896
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
897
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[1] +  \
 
898
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[2]; \
 
899
  tmp=DOWNSHIFT(tmp,16);\
 
900
  dst[0] = tmp;
 
901
 
 
902
#elif NUM_TAPS == 4
 
903
#define TRANSFORM                                               \
 
904
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
905
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[1] +  \
 
906
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[2] +  \
 
907
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][3] * src_0[3] +  \
 
908
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
909
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[1] +  \
 
910
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[2] +  \
 
911
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][3] * src_1[3] +  \
 
912
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
913
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[1] +  \
 
914
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[2] +  \
 
915
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][3] * src_2[3] +  \
 
916
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][0] * src_3[0] +  \
 
917
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][1] * src_3[1] +  \
 
918
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][2] * src_3[2] +  \
 
919
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][3] * src_3[3];  \
 
920
  tmp=DOWNSHIFT(tmp,16);\
 
921
  dst[0] = tmp;
 
922
 
 
923
 
 
924
#endif
 
925
 
 
926
#include "transform_c.h"
 
927
 
 
928
 
 
929
/* transform_uint16_x_2_c */
 
930
 
 
931
#define FUNC_NAME transform_uint16_x_2_c
 
932
#define TYPE uint16_t
 
933
#define INIT TMP_TYPE_16 tmp;
 
934
 
 
935
#if NUM_TAPS == 2
 
936
#define TRANSFORM                                               \
 
937
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
938
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[2] +  \
 
939
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
940
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[2];   \
 
941
  tmp=DOWNSHIFT(tmp,16);\
 
942
  dst[0] = tmp;                                                 \
 
943
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
944
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[3] +  \
 
945
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
946
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[3];   \
 
947
  tmp=DOWNSHIFT(tmp,16);\
 
948
  dst[1] = tmp;
 
949
#elif NUM_TAPS == 3
 
950
#define TRANSFORM                                               \
 
951
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
952
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[2] +  \
 
953
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[4] +  \
 
954
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
955
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[2] +   \
 
956
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[4] +   \
 
957
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
958
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[2] +   \
 
959
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[4];  \
 
960
  tmp=DOWNSHIFT(tmp,16);\
 
961
  dst[0] = tmp;                                                 \
 
962
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
963
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[3] +  \
 
964
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[5] +  \
 
965
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
966
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[3] +   \
 
967
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[5] +   \
 
968
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
969
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[3] +   \
 
970
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[5];   \
 
971
  tmp=DOWNSHIFT(tmp,16);\
 
972
  dst[1] = tmp;
 
973
#elif NUM_TAPS == 4
 
974
#define TRANSFORM \
 
975
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
976
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[2] +  \
 
977
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[4] +  \
 
978
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][3] * src_0[6] +  \
 
979
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
980
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[2] +   \
 
981
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[4] +   \
 
982
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][3] * src_1[6] +   \
 
983
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
984
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[2] +   \
 
985
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[4] +  \
 
986
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][3] * src_2[6] +   \
 
987
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][0] * src_3[0] +  \
 
988
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][1] * src_3[2] +   \
 
989
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][2] * src_3[4] +  \
 
990
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][3] * src_3[6];   \
 
991
  tmp=DOWNSHIFT(tmp,16);\
 
992
  dst[0] = tmp;                                                 \
 
993
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
994
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[3] +  \
 
995
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[5] +  \
 
996
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][3] * src_0[7] +  \
 
997
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
998
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[3] +   \
 
999
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[5] +   \
 
1000
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][3] * src_1[7] +   \
 
1001
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
1002
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[3] +   \
 
1003
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[5] +  \
 
1004
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][3] * src_2[7] +   \
 
1005
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][0] * src_3[1] +  \
 
1006
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][1] * src_3[3] +   \
 
1007
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][2] * src_3[5] +  \
 
1008
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][3] * src_3[7];   \
 
1009
  tmp=DOWNSHIFT(tmp,16);\
 
1010
  dst[1] = tmp;
 
1011
#endif
 
1012
 
 
1013
#include "transform_c.h"
 
1014
 
 
1015
/* transform_uint16_x_3_c */
 
1016
 
 
1017
#define FUNC_NAME transform_uint16_x_3_c
 
1018
#define TYPE uint16_t
 
1019
#define INIT TMP_TYPE_16 tmp;
 
1020
 
 
1021
#if NUM_TAPS == 2
 
1022
#define TRANSFORM                                               \
 
1023
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
1024
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[3] +  \
 
1025
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
1026
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[3];   \
 
1027
  tmp=DOWNSHIFT(tmp,16);\
 
1028
  dst[0] = tmp;                                                 \
 
1029
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
1030
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
1031
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
1032
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[4];   \
 
1033
  tmp=DOWNSHIFT(tmp,16);\
 
1034
  dst[1] = tmp; \
 
1035
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
1036
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
1037
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
1038
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[5];   \
 
1039
  tmp=DOWNSHIFT(tmp,16);\
 
1040
  dst[2] = tmp;
 
1041
#elif NUM_TAPS == 3
 
1042
#define TRANSFORM                                               \
 
1043
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
1044
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[3] +  \
 
1045
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[6] +  \
 
1046
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
1047
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[3] +   \
 
1048
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[6] +   \
 
1049
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
1050
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[3] +   \
 
1051
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[6];  \
 
1052
  tmp=DOWNSHIFT(tmp,16);\
 
1053
  dst[0] = tmp;                                                 \
 
1054
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
1055
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
1056
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[7] +  \
 
1057
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
1058
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[4] +   \
 
1059
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[7] +   \
 
1060
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
1061
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[4] +   \
 
1062
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[7];   \
 
1063
  tmp=DOWNSHIFT(tmp,16);\
 
1064
  dst[1] = tmp; \
 
1065
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
1066
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
1067
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[8] +  \
 
1068
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
1069
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[5] +   \
 
1070
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[8] +   \
 
1071
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[2] +  \
 
1072
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[5] +   \
 
1073
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[8];   \
 
1074
  tmp=DOWNSHIFT(tmp,16);\
 
1075
  dst[2] = tmp;
 
1076
#elif NUM_TAPS == 4
 
1077
#define TRANSFORM \
 
1078
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
1079
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[3] +  \
 
1080
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[6] +  \
 
1081
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][3] * src_0[9] +  \
 
1082
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
1083
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[3] +   \
 
1084
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[6] +   \
 
1085
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][3] * src_1[9] +   \
 
1086
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
1087
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[3] +   \
 
1088
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[6] +  \
 
1089
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][3] * src_2[9] +   \
 
1090
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][0] * src_3[0] +  \
 
1091
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][1] * src_3[3] +   \
 
1092
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][2] * src_3[6] +  \
 
1093
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][3] * src_3[9];   \
 
1094
  tmp=DOWNSHIFT(tmp,16);\
 
1095
  dst[0] = tmp;                                                 \
 
1096
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
1097
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
1098
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[7] +  \
 
1099
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][3] * src_0[10] +  \
 
1100
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
1101
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[4] +   \
 
1102
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[7] +   \
 
1103
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][3] * src_1[10] +   \
 
1104
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
1105
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[4] +   \
 
1106
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[7] +  \
 
1107
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][3] * src_2[10] +   \
 
1108
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][0] * src_3[1] +  \
 
1109
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][1] * src_3[4] +   \
 
1110
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][2] * src_3[7] +  \
 
1111
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][3] * src_3[10];   \
 
1112
  tmp=DOWNSHIFT(tmp,16);\
 
1113
  dst[1] = tmp; \
 
1114
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
1115
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
1116
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[8] +  \
 
1117
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][3] * src_0[11] +  \
 
1118
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
1119
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[5] +   \
 
1120
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[8] +   \
 
1121
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][3] * src_1[11] +   \
 
1122
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[2] +  \
 
1123
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[5] +   \
 
1124
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[8] +  \
 
1125
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][3] * src_2[11] +   \
 
1126
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][0] * src_3[2] +  \
 
1127
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][1] * src_3[5] +   \
 
1128
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][2] * src_3[8] +  \
 
1129
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][3] * src_3[11];   \
 
1130
  tmp=DOWNSHIFT(tmp,16);\
 
1131
  dst[2] = tmp;
 
1132
 
 
1133
#endif
 
1134
 
 
1135
#include "transform_c.h"
 
1136
 
 
1137
/* transform_uint16_x_4_c */
 
1138
 
 
1139
#define FUNC_NAME transform_uint16_x_4_c
 
1140
#define TYPE uint16_t
 
1141
#define INIT TMP_TYPE_16 tmp;
 
1142
 
 
1143
#if NUM_TAPS == 2
 
1144
#define TRANSFORM                                               \
 
1145
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
1146
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
1147
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
1148
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[4];   \
 
1149
  tmp=DOWNSHIFT(tmp,16);\
 
1150
  dst[0] = tmp;                                                 \
 
1151
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
1152
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
1153
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
1154
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[5];   \
 
1155
  tmp=DOWNSHIFT(tmp,16);\
 
1156
  dst[1] = tmp; \
 
1157
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
1158
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[6] +  \
 
1159
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
1160
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[6];   \
 
1161
  tmp=DOWNSHIFT(tmp,16);\
 
1162
  dst[2] = tmp; \
 
1163
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[3] +  \
 
1164
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[7] +  \
 
1165
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
1166
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[7];   \
 
1167
  tmp=DOWNSHIFT(tmp,16);\
 
1168
  dst[3] = tmp;
 
1169
#elif NUM_TAPS == 3
 
1170
#define TRANSFORM                                               \
 
1171
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
1172
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
1173
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[8] +  \
 
1174
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
1175
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[4] +   \
 
1176
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[8] +   \
 
1177
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
1178
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[4] +   \
 
1179
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[8];  \
 
1180
  tmp=DOWNSHIFT(tmp,16);\
 
1181
  dst[0] = tmp;                                                 \
 
1182
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
1183
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
1184
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[9] +  \
 
1185
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
1186
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[5] +   \
 
1187
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[9] +   \
 
1188
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
1189
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[5] +   \
 
1190
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[9];   \
 
1191
  tmp=DOWNSHIFT(tmp,16);\
 
1192
  dst[1] = tmp; \
 
1193
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
1194
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[6] +  \
 
1195
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[10] +  \
 
1196
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
1197
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[6] +   \
 
1198
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[10] +   \
 
1199
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[2] +  \
 
1200
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[6] +   \
 
1201
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[10];   \
 
1202
  tmp=DOWNSHIFT(tmp,16);\
 
1203
  dst[2] = tmp; \
 
1204
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[3] +  \
 
1205
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[7] +  \
 
1206
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[11] +  \
 
1207
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[3] +  \
 
1208
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[7] +   \
 
1209
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[11] +   \
 
1210
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[3] +  \
 
1211
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[7] +   \
 
1212
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[11];   \
 
1213
  tmp=DOWNSHIFT(tmp,16);\
 
1214
  dst[2] = tmp;
 
1215
#elif NUM_TAPS == 4
 
1216
#define TRANSFORM \
 
1217
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[0] +  \
 
1218
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[4] +  \
 
1219
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[8] +  \
 
1220
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][3] * src_0[12] +  \
 
1221
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[0] +  \
 
1222
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[4] +   \
 
1223
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[8] +   \
 
1224
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][3] * src_1[12] +   \
 
1225
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[0] +  \
 
1226
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[4] +   \
 
1227
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[8] +  \
 
1228
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][3] * src_2[12] +   \
 
1229
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][0] * src_3[0] +  \
 
1230
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][1] * src_3[4] +   \
 
1231
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][2] * src_3[8] +  \
 
1232
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][3] * src_3[12];   \
 
1233
  tmp=DOWNSHIFT(tmp,16);\
 
1234
  dst[0] = tmp;                                                 \
 
1235
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[1] +  \
 
1236
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[5] +  \
 
1237
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[9] +  \
 
1238
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][3] * src_0[13] +  \
 
1239
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[1] +  \
 
1240
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[5] +   \
 
1241
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[9] +   \
 
1242
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][3] * src_1[13] +   \
 
1243
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[1] +  \
 
1244
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[5] +   \
 
1245
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[9] +  \
 
1246
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][3] * src_2[13] +   \
 
1247
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][0] * src_3[1] +  \
 
1248
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][1] * src_3[5] +   \
 
1249
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][2] * src_3[9] +  \
 
1250
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][3] * src_3[13];   \
 
1251
  tmp=DOWNSHIFT(tmp,16);\
 
1252
  dst[1] = tmp; \
 
1253
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[2] +  \
 
1254
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[6] +  \
 
1255
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[10] +  \
 
1256
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][3] * src_0[14] +  \
 
1257
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[2] +  \
 
1258
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[6] +   \
 
1259
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[10] +   \
 
1260
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][3] * src_1[14] +   \
 
1261
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[2] +  \
 
1262
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[6] +   \
 
1263
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[10] +  \
 
1264
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][3] * src_2[14] +   \
 
1265
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][0] * src_3[2] +  \
 
1266
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][1] * src_3[6] +   \
 
1267
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][2] * src_3[10] +  \
 
1268
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][3] * src_3[14];   \
 
1269
  tmp=DOWNSHIFT(tmp,16);\
 
1270
  dst[2] = tmp;\
 
1271
  tmp = (TMP_TYPE_16)ctx->pixels[i].factors_i[0][0] * src_0[3] +  \
 
1272
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][1] * src_0[7] +  \
 
1273
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][2] * src_0[11] +  \
 
1274
        (TMP_TYPE_16)ctx->pixels[i].factors_i[0][3] * src_0[15] +  \
 
1275
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][0] * src_1[3] +  \
 
1276
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][1] * src_1[7] +   \
 
1277
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][2] * src_1[11] +   \
 
1278
        (TMP_TYPE_16)ctx->pixels[i].factors_i[1][3] * src_1[15] +   \
 
1279
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][0] * src_2[3] +  \
 
1280
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][1] * src_2[7] +   \
 
1281
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][2] * src_2[11] +  \
 
1282
        (TMP_TYPE_16)ctx->pixels[i].factors_i[2][3] * src_2[15] +   \
 
1283
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][0] * src_3[3] +  \
 
1284
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][1] * src_3[7] +   \
 
1285
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][2] * src_3[11] +  \
 
1286
        (TMP_TYPE_16)ctx->pixels[i].factors_i[3][3] * src_3[15];   \
 
1287
  tmp=DOWNSHIFT(tmp,16);\
 
1288
  dst[3] = tmp;
 
1289
#endif
 
1290
 
 
1291
#include "transform_c.h"
 
1292
 
 
1293
#define FUNC_NAME transform_float_x_1_c
 
1294
#define TYPE float
 
1295
 
 
1296
#if NUM_TAPS == 2
 
1297
#define TRANSFORM                                               \
 
1298
  dst[0] = ctx->pixels[i].factors[0][0] * src_0[0] +  \
 
1299
           ctx->pixels[i].factors[0][1] * src_0[1] +  \
 
1300
           ctx->pixels[i].factors[1][0] * src_1[0] +  \
 
1301
           ctx->pixels[i].factors[1][1] * src_1[1];
 
1302
#elif NUM_TAPS == 3
 
1303
#define TRANSFORM                                               \
 
1304
  dst[0] = ctx->pixels[i].factors[0][0] * src_0[0] +  \
 
1305
           ctx->pixels[i].factors[0][1] * src_0[1] +  \
 
1306
           ctx->pixels[i].factors[0][2] * src_0[2] +  \
 
1307
           ctx->pixels[i].factors[1][0] * src_1[0] +  \
 
1308
           ctx->pixels[i].factors[1][1] * src_1[1] +  \
 
1309
           ctx->pixels[i].factors[1][2] * src_1[2] +  \
 
1310
           ctx->pixels[i].factors[2][0] * src_2[0] +  \
 
1311
           ctx->pixels[i].factors[2][1] * src_2[1] +  \
 
1312
           ctx->pixels[i].factors[2][2] * src_2[2];
 
1313
 
 
1314
#elif NUM_TAPS == 4
 
1315
#define TRANSFORM                                               \
 
1316
  dst[0] = ctx->pixels[i].factors[0][0] * src_0[0] +  \
 
1317
           ctx->pixels[i].factors[0][1] * src_0[1] +  \
 
1318
           ctx->pixels[i].factors[0][2] * src_0[2] +  \
 
1319
           ctx->pixels[i].factors[0][3] * src_0[3] +  \
 
1320
           ctx->pixels[i].factors[1][0] * src_1[0] +  \
 
1321
           ctx->pixels[i].factors[1][1] * src_1[1] +  \
 
1322
           ctx->pixels[i].factors[1][2] * src_1[2] +  \
 
1323
           ctx->pixels[i].factors[1][3] * src_1[3] +  \
 
1324
           ctx->pixels[i].factors[2][0] * src_2[0] +  \
 
1325
           ctx->pixels[i].factors[2][1] * src_2[1] +  \
 
1326
           ctx->pixels[i].factors[2][2] * src_2[2] +  \
 
1327
           ctx->pixels[i].factors[2][3] * src_2[3] +  \
 
1328
           ctx->pixels[i].factors[3][0] * src_3[0] +  \
 
1329
           ctx->pixels[i].factors[3][1] * src_3[1] +  \
 
1330
           ctx->pixels[i].factors[3][2] * src_3[2] +  \
 
1331
           ctx->pixels[i].factors[3][3] * src_3[3];
 
1332
#endif
 
1333
 
 
1334
#include "transform_c.h"
 
1335
 
 
1336
#define FUNC_NAME transform_float_x_2_c
 
1337
#define TYPE float
 
1338
 
 
1339
#if NUM_TAPS == 2
 
1340
#define TRANSFORM                                               \
 
1341
  dst[0] = ctx->pixels[i].factors[0][0] * src_0[0] +  \
 
1342
           ctx->pixels[i].factors[0][1] * src_0[2] +  \
 
1343
           ctx->pixels[i].factors[1][0] * src_1[0] +  \
 
1344
           ctx->pixels[i].factors[1][1] * src_1[2]; \
 
1345
  dst[1] = ctx->pixels[i].factors[0][0] * src_0[1] +  \
 
1346
           ctx->pixels[i].factors[0][1] * src_0[3] +  \
 
1347
           ctx->pixels[i].factors[1][0] * src_1[1] +  \
 
1348
           ctx->pixels[i].factors[1][1] * src_1[3];
 
1349
#elif NUM_TAPS == 3
 
1350
#define TRANSFORM                                               \
 
1351
  dst[0] = ctx->pixels[i].factors[0][0] * src_0[0] +  \
 
1352
           ctx->pixels[i].factors[0][1] * src_0[2] +  \
 
1353
           ctx->pixels[i].factors[0][2] * src_0[4] +  \
 
1354
           ctx->pixels[i].factors[1][0] * src_1[0] +  \
 
1355
           ctx->pixels[i].factors[1][1] * src_1[2] +  \
 
1356
           ctx->pixels[i].factors[1][2] * src_1[4] +  \
 
1357
           ctx->pixels[i].factors[2][0] * src_2[0] +  \
 
1358
           ctx->pixels[i].factors[2][1] * src_2[2] +  \
 
1359
           ctx->pixels[i].factors[2][2] * src_2[4];\
 
1360
  dst[1] = ctx->pixels[i].factors[0][0] * src_0[1] +  \
 
1361
           ctx->pixels[i].factors[0][1] * src_0[3] +  \
 
1362
           ctx->pixels[i].factors[0][2] * src_0[5] +  \
 
1363
           ctx->pixels[i].factors[1][0] * src_1[1] +  \
 
1364
           ctx->pixels[i].factors[1][1] * src_1[3] +  \
 
1365
           ctx->pixels[i].factors[1][2] * src_1[5] +  \
 
1366
           ctx->pixels[i].factors[2][0] * src_2[1] +  \
 
1367
           ctx->pixels[i].factors[2][1] * src_2[3] +  \
 
1368
           ctx->pixels[i].factors[2][2] * src_2[5];
 
1369
#elif NUM_TAPS == 4
 
1370
#define TRANSFORM                                               \
 
1371
  dst[0] = ctx->pixels[i].factors[0][0] * src_0[0] +  \
 
1372
           ctx->pixels[i].factors[0][1] * src_0[2] +  \
 
1373
           ctx->pixels[i].factors[0][2] * src_0[4] +  \
 
1374
           ctx->pixels[i].factors[0][3] * src_0[6] +  \
 
1375
           ctx->pixels[i].factors[1][0] * src_1[0] +  \
 
1376
           ctx->pixels[i].factors[1][1] * src_1[2] +  \
 
1377
           ctx->pixels[i].factors[1][2] * src_1[4] +  \
 
1378
           ctx->pixels[i].factors[1][3] * src_1[6] +  \
 
1379
           ctx->pixels[i].factors[2][0] * src_2[0] +  \
 
1380
           ctx->pixels[i].factors[2][1] * src_2[2] +  \
 
1381
           ctx->pixels[i].factors[2][2] * src_2[4] +  \
 
1382
           ctx->pixels[i].factors[2][3] * src_2[6] +  \
 
1383
           ctx->pixels[i].factors[3][0] * src_3[0] +  \
 
1384
           ctx->pixels[i].factors[3][1] * src_3[2] +  \
 
1385
           ctx->pixels[i].factors[3][2] * src_3[4] +  \
 
1386
           ctx->pixels[i].factors[3][3] * src_3[6];\
 
1387
  dst[1] = ctx->pixels[i].factors[0][0] * src_0[1] +  \
 
1388
           ctx->pixels[i].factors[0][1] * src_0[3] +  \
 
1389
           ctx->pixels[i].factors[0][2] * src_0[5] +  \
 
1390
           ctx->pixels[i].factors[0][3] * src_0[7] +  \
 
1391
           ctx->pixels[i].factors[1][0] * src_1[1] +  \
 
1392
           ctx->pixels[i].factors[1][1] * src_1[3] +  \
 
1393
           ctx->pixels[i].factors[1][2] * src_1[5] +  \
 
1394
           ctx->pixels[i].factors[1][3] * src_1[7] +  \
 
1395
           ctx->pixels[i].factors[2][0] * src_2[1] +  \
 
1396
           ctx->pixels[i].factors[2][1] * src_2[3] +  \
 
1397
           ctx->pixels[i].factors[2][2] * src_2[5] +  \
 
1398
           ctx->pixels[i].factors[2][3] * src_2[7] +  \
 
1399
           ctx->pixels[i].factors[3][0] * src_3[1] +  \
 
1400
           ctx->pixels[i].factors[3][1] * src_3[3] +  \
 
1401
           ctx->pixels[i].factors[3][2] * src_3[5] +  \
 
1402
           ctx->pixels[i].factors[3][3] * src_3[7];
 
1403
#endif
 
1404
 
 
1405
#include "transform_c.h"
 
1406
 
 
1407
#define FUNC_NAME transform_float_x_3_c
 
1408
#define TYPE float
 
1409
 
 
1410
#if NUM_TAPS == 2
 
1411
#define TRANSFORM                                               \
 
1412
  dst[0] = ctx->pixels[i].factors[0][0] * src_0[0] +  \
 
1413
           ctx->pixels[i].factors[0][1] * src_0[3] +  \
 
1414
           ctx->pixels[i].factors[1][0] * src_1[0] +  \
 
1415
           ctx->pixels[i].factors[1][1] * src_1[3]; \
 
1416
  dst[1] = ctx->pixels[i].factors[0][0] * src_0[1] +  \
 
1417
           ctx->pixels[i].factors[0][1] * src_0[4] +  \
 
1418
           ctx->pixels[i].factors[1][0] * src_1[1] +  \
 
1419
           ctx->pixels[i].factors[1][1] * src_1[4];\
 
1420
  dst[2] = ctx->pixels[i].factors[0][0] * src_0[2] +  \
 
1421
           ctx->pixels[i].factors[0][1] * src_0[5] +  \
 
1422
           ctx->pixels[i].factors[1][0] * src_1[2] +  \
 
1423
           ctx->pixels[i].factors[1][1] * src_1[5];
 
1424
#elif NUM_TAPS == 3
 
1425
#define TRANSFORM                                               \
 
1426
  dst[0] = ctx->pixels[i].factors[0][0] * src_0[0] +  \
 
1427
           ctx->pixels[i].factors[0][1] * src_0[3] +  \
 
1428
           ctx->pixels[i].factors[0][2] * src_0[6] +  \
 
1429
           ctx->pixels[i].factors[1][0] * src_1[0] +  \
 
1430
           ctx->pixels[i].factors[1][1] * src_1[3] +  \
 
1431
           ctx->pixels[i].factors[1][2] * src_1[6] +  \
 
1432
           ctx->pixels[i].factors[2][0] * src_2[0] +  \
 
1433
           ctx->pixels[i].factors[2][1] * src_2[3] +  \
 
1434
           ctx->pixels[i].factors[2][2] * src_2[6];\
 
1435
  dst[1] = ctx->pixels[i].factors[0][0] * src_0[1] +  \
 
1436
           ctx->pixels[i].factors[0][1] * src_0[4] +  \
 
1437
           ctx->pixels[i].factors[0][2] * src_0[7] +  \
 
1438
           ctx->pixels[i].factors[1][0] * src_1[1] +  \
 
1439
           ctx->pixels[i].factors[1][1] * src_1[4] +  \
 
1440
           ctx->pixels[i].factors[1][2] * src_1[7] +  \
 
1441
           ctx->pixels[i].factors[2][0] * src_2[1] +  \
 
1442
           ctx->pixels[i].factors[2][1] * src_2[4] +  \
 
1443
           ctx->pixels[i].factors[2][2] * src_2[7];\
 
1444
  dst[2] = ctx->pixels[i].factors[0][0] * src_0[2] +  \
 
1445
           ctx->pixels[i].factors[0][1] * src_0[5] +  \
 
1446
           ctx->pixels[i].factors[0][2] * src_0[8] +  \
 
1447
           ctx->pixels[i].factors[1][0] * src_1[2] +  \
 
1448
           ctx->pixels[i].factors[1][1] * src_1[5] +  \
 
1449
           ctx->pixels[i].factors[1][2] * src_1[8] +  \
 
1450
           ctx->pixels[i].factors[2][0] * src_2[2] +  \
 
1451
           ctx->pixels[i].factors[2][1] * src_2[5] +  \
 
1452
           ctx->pixels[i].factors[2][2] * src_2[8];
 
1453
#elif NUM_TAPS == 4
 
1454
#define TRANSFORM                                               \
 
1455
  dst[0] = ctx->pixels[i].factors[0][0] * src_0[0] +  \
 
1456
           ctx->pixels[i].factors[0][1] * src_0[3] +  \
 
1457
           ctx->pixels[i].factors[0][2] * src_0[6] +  \
 
1458
           ctx->pixels[i].factors[0][3] * src_0[9] +  \
 
1459
           ctx->pixels[i].factors[1][0] * src_1[0] +  \
 
1460
           ctx->pixels[i].factors[1][1] * src_1[3] +  \
 
1461
           ctx->pixels[i].factors[1][2] * src_1[6] +  \
 
1462
           ctx->pixels[i].factors[1][3] * src_1[9] +  \
 
1463
           ctx->pixels[i].factors[2][0] * src_2[0] +  \
 
1464
           ctx->pixels[i].factors[2][1] * src_2[3] +  \
 
1465
           ctx->pixels[i].factors[2][2] * src_2[6] +  \
 
1466
           ctx->pixels[i].factors[2][3] * src_2[9] +  \
 
1467
           ctx->pixels[i].factors[3][0] * src_3[0] +  \
 
1468
           ctx->pixels[i].factors[3][1] * src_3[3] +  \
 
1469
           ctx->pixels[i].factors[3][2] * src_3[6] +  \
 
1470
           ctx->pixels[i].factors[3][3] * src_3[9];\
 
1471
  dst[1] = ctx->pixels[i].factors[0][0] * src_0[1] +  \
 
1472
           ctx->pixels[i].factors[0][1] * src_0[4] +  \
 
1473
           ctx->pixels[i].factors[0][2] * src_0[7] +  \
 
1474
           ctx->pixels[i].factors[0][3] * src_0[10] +  \
 
1475
           ctx->pixels[i].factors[1][0] * src_1[1] +  \
 
1476
           ctx->pixels[i].factors[1][1] * src_1[4] +  \
 
1477
           ctx->pixels[i].factors[1][2] * src_1[7] +  \
 
1478
           ctx->pixels[i].factors[1][3] * src_1[10] +  \
 
1479
           ctx->pixels[i].factors[2][0] * src_2[1] +  \
 
1480
           ctx->pixels[i].factors[2][1] * src_2[4] +  \
 
1481
           ctx->pixels[i].factors[2][2] * src_2[7] +  \
 
1482
           ctx->pixels[i].factors[2][3] * src_2[10] +  \
 
1483
           ctx->pixels[i].factors[3][0] * src_3[1] +  \
 
1484
           ctx->pixels[i].factors[3][1] * src_3[4] +  \
 
1485
           ctx->pixels[i].factors[3][2] * src_3[7] +  \
 
1486
           ctx->pixels[i].factors[3][3] * src_3[10];\
 
1487
  dst[2] = ctx->pixels[i].factors[0][0] * src_0[2] +  \
 
1488
           ctx->pixels[i].factors[0][1] * src_0[5] +  \
 
1489
           ctx->pixels[i].factors[0][2] * src_0[8] +  \
 
1490
           ctx->pixels[i].factors[0][3] * src_0[11] +  \
 
1491
           ctx->pixels[i].factors[1][0] * src_1[2] +  \
 
1492
           ctx->pixels[i].factors[1][1] * src_1[5] +  \
 
1493
           ctx->pixels[i].factors[1][2] * src_1[8] +  \
 
1494
           ctx->pixels[i].factors[1][3] * src_1[11] +  \
 
1495
           ctx->pixels[i].factors[2][0] * src_2[2] +  \
 
1496
           ctx->pixels[i].factors[2][1] * src_2[5] +  \
 
1497
           ctx->pixels[i].factors[2][2] * src_2[8] +  \
 
1498
           ctx->pixels[i].factors[2][3] * src_2[11] +  \
 
1499
           ctx->pixels[i].factors[3][0] * src_3[2] +  \
 
1500
           ctx->pixels[i].factors[3][1] * src_3[5] +  \
 
1501
           ctx->pixels[i].factors[3][2] * src_3[8] +  \
 
1502
           ctx->pixels[i].factors[3][3] * src_3[11];
 
1503
 
 
1504
#endif
 
1505
 
 
1506
#include "transform_c.h"
 
1507
 
 
1508
#define FUNC_NAME transform_float_x_4_c
 
1509
#define TYPE float
 
1510
 
 
1511
#if NUM_TAPS == 2
 
1512
#define TRANSFORM                                               \
 
1513
  dst[0] = ctx->pixels[i].factors[0][0] * src_0[0] +  \
 
1514
           ctx->pixels[i].factors[0][1] * src_0[4] +  \
 
1515
           ctx->pixels[i].factors[1][0] * src_1[0] +  \
 
1516
           ctx->pixels[i].factors[1][1] * src_1[4]; \
 
1517
  dst[1] = ctx->pixels[i].factors[0][0] * src_0[1] +  \
 
1518
           ctx->pixels[i].factors[0][1] * src_0[5] +  \
 
1519
           ctx->pixels[i].factors[1][0] * src_1[1] +  \
 
1520
           ctx->pixels[i].factors[1][1] * src_1[5];\
 
1521
  dst[2] = ctx->pixels[i].factors[0][0] * src_0[2] +  \
 
1522
           ctx->pixels[i].factors[0][1] * src_0[6] +  \
 
1523
           ctx->pixels[i].factors[1][0] * src_1[2] +  \
 
1524
           ctx->pixels[i].factors[1][1] * src_1[6];\
 
1525
  dst[3] = ctx->pixels[i].factors[0][0] * src_0[3] +  \
 
1526
           ctx->pixels[i].factors[0][1] * src_0[7] +  \
 
1527
           ctx->pixels[i].factors[1][0] * src_1[3] +  \
 
1528
           ctx->pixels[i].factors[1][1] * src_1[7];
 
1529
#elif NUM_TAPS == 3
 
1530
#define TRANSFORM                                               \
 
1531
  dst[0] = ctx->pixels[i].factors[0][0] * src_0[0] +  \
 
1532
           ctx->pixels[i].factors[0][1] * src_0[4] +  \
 
1533
           ctx->pixels[i].factors[0][2] * src_0[8] +  \
 
1534
           ctx->pixels[i].factors[1][0] * src_1[0] +  \
 
1535
           ctx->pixels[i].factors[1][1] * src_1[4] +  \
 
1536
           ctx->pixels[i].factors[1][2] * src_1[8] +  \
 
1537
           ctx->pixels[i].factors[2][0] * src_2[0] +  \
 
1538
           ctx->pixels[i].factors[2][1] * src_2[4] +  \
 
1539
           ctx->pixels[i].factors[2][2] * src_2[8];\
 
1540
  dst[1] = ctx->pixels[i].factors[0][0] * src_0[1] +  \
 
1541
           ctx->pixels[i].factors[0][1] * src_0[5] +  \
 
1542
           ctx->pixels[i].factors[0][2] * src_0[9] +  \
 
1543
           ctx->pixels[i].factors[1][0] * src_1[1] +  \
 
1544
           ctx->pixels[i].factors[1][1] * src_1[5] +  \
 
1545
           ctx->pixels[i].factors[1][2] * src_1[9] +  \
 
1546
           ctx->pixels[i].factors[2][0] * src_2[1] +  \
 
1547
           ctx->pixels[i].factors[2][1] * src_2[5] +  \
 
1548
           ctx->pixels[i].factors[2][2] * src_2[9];\
 
1549
  dst[2] = ctx->pixels[i].factors[0][0] * src_0[2] +  \
 
1550
           ctx->pixels[i].factors[0][1] * src_0[6] +  \
 
1551
           ctx->pixels[i].factors[0][2] * src_0[10] +  \
 
1552
           ctx->pixels[i].factors[1][0] * src_1[2] +  \
 
1553
           ctx->pixels[i].factors[1][1] * src_1[6] +  \
 
1554
           ctx->pixels[i].factors[1][2] * src_1[10] +  \
 
1555
           ctx->pixels[i].factors[2][0] * src_2[2] +  \
 
1556
           ctx->pixels[i].factors[2][1] * src_2[6] +  \
 
1557
           ctx->pixels[i].factors[2][2] * src_2[10];
 
1558
#elif NUM_TAPS == 4
 
1559
#define TRANSFORM                                               \
 
1560
  dst[0] = ctx->pixels[i].factors[0][0] * src_0[0] +  \
 
1561
           ctx->pixels[i].factors[0][1] * src_0[4] +  \
 
1562
           ctx->pixels[i].factors[0][2] * src_0[8] +  \
 
1563
           ctx->pixels[i].factors[0][3] * src_0[10] +  \
 
1564
           ctx->pixels[i].factors[1][0] * src_1[0] +  \
 
1565
           ctx->pixels[i].factors[1][1] * src_1[4] +  \
 
1566
           ctx->pixels[i].factors[1][2] * src_1[8] +  \
 
1567
           ctx->pixels[i].factors[1][3] * src_1[10] +  \
 
1568
           ctx->pixels[i].factors[2][0] * src_2[0] +  \
 
1569
           ctx->pixels[i].factors[2][1] * src_2[4] +  \
 
1570
           ctx->pixels[i].factors[2][2] * src_2[8] +  \
 
1571
           ctx->pixels[i].factors[2][3] * src_2[12] +  \
 
1572
           ctx->pixels[i].factors[3][0] * src_3[0] +  \
 
1573
           ctx->pixels[i].factors[3][1] * src_3[4] +  \
 
1574
           ctx->pixels[i].factors[3][2] * src_3[8] +  \
 
1575
           ctx->pixels[i].factors[3][3] * src_3[12];\
 
1576
  dst[1] = ctx->pixels[i].factors[0][0] * src_0[1] +  \
 
1577
           ctx->pixels[i].factors[0][1] * src_0[5] +  \
 
1578
           ctx->pixels[i].factors[0][2] * src_0[9] +  \
 
1579
           ctx->pixels[i].factors[0][3] * src_0[13] +  \
 
1580
           ctx->pixels[i].factors[1][0] * src_1[1] +  \
 
1581
           ctx->pixels[i].factors[1][1] * src_1[5] +  \
 
1582
           ctx->pixels[i].factors[1][2] * src_1[9] +  \
 
1583
           ctx->pixels[i].factors[1][3] * src_1[13] +  \
 
1584
           ctx->pixels[i].factors[2][0] * src_2[1] +  \
 
1585
           ctx->pixels[i].factors[2][1] * src_2[5] +  \
 
1586
           ctx->pixels[i].factors[2][2] * src_2[9] +  \
 
1587
           ctx->pixels[i].factors[2][3] * src_2[13] +  \
 
1588
           ctx->pixels[i].factors[3][0] * src_3[1] +  \
 
1589
           ctx->pixels[i].factors[3][1] * src_3[5] +  \
 
1590
           ctx->pixels[i].factors[3][2] * src_3[9] +  \
 
1591
           ctx->pixels[i].factors[3][3] * src_3[13];\
 
1592
  dst[2] = ctx->pixels[i].factors[0][0] * src_0[2] +  \
 
1593
           ctx->pixels[i].factors[0][1] * src_0[6] +  \
 
1594
           ctx->pixels[i].factors[0][2] * src_0[10] +  \
 
1595
           ctx->pixels[i].factors[0][3] * src_0[14] +  \
 
1596
           ctx->pixels[i].factors[1][0] * src_1[2] +  \
 
1597
           ctx->pixels[i].factors[1][1] * src_1[6] +  \
 
1598
           ctx->pixels[i].factors[1][2] * src_1[10] +  \
 
1599
           ctx->pixels[i].factors[1][3] * src_1[14] +  \
 
1600
           ctx->pixels[i].factors[2][0] * src_2[2] +  \
 
1601
           ctx->pixels[i].factors[2][1] * src_2[6] +  \
 
1602
           ctx->pixels[i].factors[2][2] * src_2[10] +  \
 
1603
           ctx->pixels[i].factors[2][3] * src_2[14] +  \
 
1604
           ctx->pixels[i].factors[3][0] * src_3[2] +  \
 
1605
           ctx->pixels[i].factors[3][1] * src_3[6] +  \
 
1606
           ctx->pixels[i].factors[3][2] * src_3[10] +  \
 
1607
           ctx->pixels[i].factors[3][3] * src_3[14];\
 
1608
  dst[3] = ctx->pixels[i].factors[0][0] * src_0[3] +  \
 
1609
           ctx->pixels[i].factors[0][1] * src_0[7] +  \
 
1610
           ctx->pixels[i].factors[0][2] * src_0[11] +  \
 
1611
           ctx->pixels[i].factors[0][3] * src_0[15] +  \
 
1612
           ctx->pixels[i].factors[1][0] * src_1[3] +  \
 
1613
           ctx->pixels[i].factors[1][1] * src_1[7] +  \
 
1614
           ctx->pixels[i].factors[1][2] * src_1[11] +  \
 
1615
           ctx->pixels[i].factors[1][3] * src_1[15] +  \
 
1616
           ctx->pixels[i].factors[2][0] * src_2[3] +  \
 
1617
           ctx->pixels[i].factors[2][1] * src_2[7] +  \
 
1618
           ctx->pixels[i].factors[2][2] * src_2[11] +  \
 
1619
           ctx->pixels[i].factors[2][3] * src_2[15] +  \
 
1620
           ctx->pixels[i].factors[3][0] * src_3[3] +  \
 
1621
           ctx->pixels[i].factors[3][1] * src_3[7] +  \
 
1622
           ctx->pixels[i].factors[3][2] * src_3[11] +  \
 
1623
           ctx->pixels[i].factors[3][3] * src_3[15];
 
1624
 
 
1625
#endif
 
1626
 
 
1627
#include "transform_c.h"
 
1628
 
 
1629
 
 
1630
 
 
1631
 
 
1632
#if NUM_TAPS == 2
 
1633
void gavl_init_transform_funcs_bilinear_c(gavl_transform_funcs_t * tab,
 
1634
                                          int advance)
 
1635
#elif NUM_TAPS == 3
 
1636
void gavl_init_transform_funcs_quadratic_c(gavl_transform_funcs_t * tab,
 
1637
                                           int advance)
 
1638
#elif NUM_TAPS == 4
 
1639
void gavl_init_transform_funcs_bicubic_c(gavl_transform_funcs_t * tab,
 
1640
                                         int advance)
 
1641
#endif
 
1642
  {
 
1643
  tab->transform_rgb_15 =     transform_rgb_15_c;
 
1644
  tab->transform_rgb_16 =     transform_rgb_16_c;
 
1645
 
 
1646
  tab->transform_uint8_x_1_advance =
 
1647
    transform_uint8_x_1_advance_c;
 
1648
  tab->transform_uint8_x_1_noadvance =
 
1649
    transform_uint8_x_1_c;
 
1650
 
 
1651
  tab->transform_uint8_x_2 =  transform_uint8_x_2_c;
 
1652
  
 
1653
  if(advance == 4)
 
1654
    tab->transform_uint8_x_3 =  transform_uint8_x_3_4_c;
 
1655
  else
 
1656
    tab->transform_uint8_x_3 =  transform_uint8_x_3_3_c;
 
1657
 
 
1658
  tab->transform_uint8_x_4 =  transform_uint8_x_4_c;
 
1659
 
 
1660
  tab->transform_uint16_x_1 = transform_uint16_x_1_c;
 
1661
  tab->transform_uint16_x_2 = transform_uint16_x_2_c;
 
1662
  tab->transform_uint16_x_3 = transform_uint16_x_3_c;
 
1663
  tab->transform_uint16_x_4 = transform_uint16_x_4_c;
 
1664
  tab->transform_float_x_1 =  transform_float_x_1_c;
 
1665
  tab->transform_float_x_2 =  transform_float_x_2_c;
 
1666
  tab->transform_float_x_3 =  transform_float_x_3_c;
 
1667
  tab->transform_float_x_4 =  transform_float_x_4_c;
 
1668
 
 
1669
  tab->bits_rgb_15 = 16;
 
1670
  tab->bits_rgb_16 = 16;
 
1671
  tab->bits_uint8_advance  = 16;
 
1672
  tab->bits_uint8_noadvance  = 16;
 
1673
  tab->bits_uint16 = 16;
 
1674
  }