83 |
INTERPOLATE8X8 interpolate8x8_halfpel_v_3dn; |
INTERPOLATE8X8 interpolate8x8_halfpel_v_3dn; |
84 |
INTERPOLATE8X8 interpolate8x8_halfpel_hv_3dn; |
INTERPOLATE8X8 interpolate8x8_halfpel_hv_3dn; |
85 |
|
|
86 |
|
INTERPOLATE8X8 interpolate8x8_halfpel_h_3dne; |
87 |
|
INTERPOLATE8X8 interpolate8x8_halfpel_v_3dne; |
88 |
|
INTERPOLATE8X8 interpolate8x8_halfpel_hv_3dne; |
89 |
|
|
90 |
INTERPOLATE8X8 interpolate8x8_halfpel_h_ia64; |
INTERPOLATE8X8 interpolate8x8_halfpel_h_ia64; |
91 |
INTERPOLATE8X8 interpolate8x8_halfpel_v_ia64; |
INTERPOLATE8X8 interpolate8x8_halfpel_v_ia64; |
92 |
INTERPOLATE8X8 interpolate8x8_halfpel_hv_ia64; |
INTERPOLATE8X8 interpolate8x8_halfpel_hv_ia64; |
124 |
{ |
{ |
125 |
int32_t ddx, ddy; |
int32_t ddx, ddy; |
126 |
|
|
127 |
switch (((dx & 1) << 1) + (dy & 1)) // ((dx%2)?2:0)+((dy%2)?1:0) |
switch (((dx & 1) << 1) + (dy & 1)) /* ((dx%2)?2:0)+((dy%2)?1:0) */ |
128 |
{ |
{ |
129 |
case 0: |
case 0: |
130 |
ddx = dx / 2; |
ddx = dx / 2; |
159 |
} |
} |
160 |
} |
} |
161 |
|
|
162 |
|
|
163 |
|
static __inline void |
164 |
|
interpolate16x16_switch(uint8_t * const cur, |
165 |
|
const uint8_t * const refn, |
166 |
|
const uint32_t x, |
167 |
|
const uint32_t y, |
168 |
|
const int32_t dx, |
169 |
|
const int dy, |
170 |
|
const uint32_t stride, |
171 |
|
const uint32_t rounding) |
172 |
|
{ |
173 |
|
interpolate8x8_switch(cur, refn, x, y, dx, dy, stride, rounding); |
174 |
|
interpolate8x8_switch(cur, refn, x+8, y, dx, dy, stride, rounding); |
175 |
|
interpolate8x8_switch(cur, refn, x, y+8, dx, dy, stride, rounding); |
176 |
|
interpolate8x8_switch(cur, refn, x+8, y+8, dx, dy, stride, rounding); |
177 |
|
} |
178 |
|
|
179 |
|
|
180 |
|
static __inline void |
181 |
|
interpolate32x32_switch(uint8_t * const cur, |
182 |
|
const uint8_t * const refn, |
183 |
|
const uint32_t x, |
184 |
|
const uint32_t y, |
185 |
|
const int32_t dx, |
186 |
|
const int dy, |
187 |
|
const uint32_t stride, |
188 |
|
const uint32_t rounding) |
189 |
|
{ |
190 |
|
interpolate16x16_switch(cur, refn, x, y, dx, dy, stride, rounding); |
191 |
|
interpolate16x16_switch(cur, refn, x+16, y, dx, dy, stride, rounding); |
192 |
|
interpolate16x16_switch(cur, refn, x, y+16, dx, dy, stride, rounding); |
193 |
|
interpolate16x16_switch(cur, refn, x+16, y+16, dx, dy, stride, rounding); |
194 |
|
} |
195 |
|
|
196 |
|
|
197 |
static __inline uint8_t * |
static __inline uint8_t * |
198 |
interpolate8x8_switch2(uint8_t * const buffer, |
interpolate8x8_switch2(uint8_t * const buffer, |
199 |
const uint8_t * const refn, |
const uint8_t * const refn, |
206 |
{ |
{ |
207 |
int32_t ddx, ddy; |
int32_t ddx, ddy; |
208 |
|
|
209 |
switch (((dx & 1) << 1) + (dy & 1)) // ((dx%2)?2:0)+((dy%2)?1:0) |
switch (((dx & 1) << 1) + (dy & 1)) /* ((dx%2)?2:0)+((dy%2)?1:0) */ |
210 |
{ |
{ |
211 |
case 0: |
case 0: |
212 |
return (uint8_t *)refn + (int)((y + dy/2) * stride + x + dx/2); |
return (uint8_t *)refn + (int)((y + dy/2) * stride + x + dx/2); |
403 |
switch((y_frac << 2) | (x_frac)) { |
switch((y_frac << 2) | (x_frac)) { |
404 |
|
|
405 |
case 0: |
case 0: |
406 |
transfer8x8_copy(dst, src, stride); |
transfer16x16_copy(dst, src, stride); |
|
transfer8x8_copy(dst+8, src+8, stride); |
|
|
transfer8x8_copy(dst+8*stride, src+8*stride, stride); |
|
|
transfer8x8_copy(dst+8*stride+8, src+8*stride+8, stride); |
|
407 |
break; |
break; |
408 |
|
|
409 |
case 1: |
case 1: |
541 |
break; |
break; |
542 |
} |
} |
543 |
} |
} |
544 |
|
|
545 |
#endif |
#endif |