39 |
|
|
40 |
TRANSFER8X8_COPY_PTR transfer8x8_copy; |
TRANSFER8X8_COPY_PTR transfer8x8_copy; |
41 |
|
|
42 |
|
#define USE_REFERENCE_C |
43 |
|
|
44 |
/***************************************************************************** |
/***************************************************************************** |
45 |
* |
* |
66 |
const uint8_t * const src, |
const uint8_t * const src, |
67 |
uint32_t stride) |
uint32_t stride) |
68 |
{ |
{ |
69 |
uint32_t i, j; |
int i, j; |
|
|
|
70 |
for (j = 0; j < 8; j++) { |
for (j = 0; j < 8; j++) { |
71 |
for (i = 0; i < 8; i++) { |
for (i = 0; i < 8; i++) { |
72 |
dst[j * 8 + i] = (int16_t) src[j * stride + i]; |
dst[j * 8 + i] = (int16_t) src[j * stride + i]; |
88 |
const int16_t * const src, |
const int16_t * const src, |
89 |
uint32_t stride) |
uint32_t stride) |
90 |
{ |
{ |
91 |
uint32_t i, j; |
int i, j; |
92 |
|
|
93 |
for (j = 0; j < 8; j++) { |
for (j = 0; j < 8; j++) { |
94 |
for (i = 0; i < 8; i++) { |
for (i = 0; i < 8; i++) { |
95 |
|
#ifdef USE_REFERENCE_C |
96 |
int16_t pixel = src[j * 8 + i]; |
int16_t pixel = src[j * 8 + i]; |
97 |
|
|
98 |
if (pixel < 0) { |
if (pixel < 0) { |
101 |
pixel = 255; |
pixel = 255; |
102 |
} |
} |
103 |
dst[j * stride + i] = (uint8_t) pixel; |
dst[j * stride + i] = (uint8_t) pixel; |
104 |
|
#else |
105 |
|
const int16_t pixel = src[j * 8 + i]; |
106 |
|
const uint8_t value = (uint8_t)( (pixel&~255) ? (-pixel)>>(8*sizeof(pixel)-1) : pixel ); |
107 |
|
dst[j*stride + i] = value; |
108 |
|
#endif |
109 |
} |
} |
110 |
} |
} |
111 |
} |
} |
130 |
const uint8_t * ref, |
const uint8_t * ref, |
131 |
const uint32_t stride) |
const uint32_t stride) |
132 |
{ |
{ |
133 |
uint32_t i, j; |
int i, j; |
134 |
|
|
135 |
for (j = 0; j < 8; j++) { |
for (j = 0; j < 8; j++) { |
136 |
for (i = 0; i < 8; i++) { |
for (i = 0; i < 8; i++) { |
137 |
uint8_t c = cur[j * stride + i]; |
const uint8_t c = cur[j * stride + i]; |
138 |
uint8_t r = ref[j * stride + i]; |
const uint8_t r = ref[j * stride + i]; |
139 |
|
|
140 |
cur[j * stride + i] = r; |
cur[j * stride + i] = r; |
141 |
dct[j * 8 + i] = (int16_t) c - (int16_t) r; |
dct[j * 8 + i] = (int16_t) c - (int16_t) r; |
150 |
const uint8_t * ref, |
const uint8_t * ref, |
151 |
const uint32_t stride) |
const uint32_t stride) |
152 |
{ |
{ |
153 |
uint32_t i, j; |
int i, j; |
154 |
|
|
155 |
for (j = 0; j < 8; j++) { |
for (j = 0; j < 8; j++) { |
156 |
for (i = 0; i < 8; i++) { |
for (i = 0; i < 8; i++) { |
157 |
uint8_t c = cur[j * stride + i]; |
const uint8_t c = cur[j * stride + i]; |
158 |
uint8_t r = ref[j * stride + i]; |
const uint8_t r = ref[j * stride + i]; |
159 |
dct[j * 8 + i] = (int16_t) c - (int16_t) r; |
dct[j * 8 + i] = (int16_t) c - (int16_t) r; |
160 |
} |
} |
161 |
} |
} |
188 |
|
|
189 |
for (j = 0; j < 8; j++) { |
for (j = 0; j < 8; j++) { |
190 |
for (i = 0; i < 8; i++) { |
for (i = 0; i < 8; i++) { |
191 |
uint8_t c = cur[j * stride + i]; |
const uint8_t c = cur[j * stride + i]; |
192 |
int r = (ref1[j * stride + i] + ref2[j * stride + i] + 1) / 2; |
const uint8_t r = (ref1[j * stride + i] + ref2[j * stride + i] + 1) >> 1; |
|
|
|
|
if (r > 255) { |
|
|
r = 255; |
|
|
} |
|
193 |
cur[j * stride + i] = r; |
cur[j * stride + i] = r; |
194 |
dct[j * 8 + i] = (int16_t) c - (int16_t) r; |
dct[j * 8 + i] = (int16_t) c - (int16_t) r; |
195 |
} |
} |
207 |
|
|
208 |
for (j = 0; j < 8; j++) { |
for (j = 0; j < 8; j++) { |
209 |
for (i = 0; i < 8; i++) { |
for (i = 0; i < 8; i++) { |
210 |
uint8_t c = cur[j * stride + i]; |
const uint8_t c = cur[j * stride + i]; |
211 |
int r = (ref1[j * stride + i] + ref2[j * stride + i] + 1) / 2; |
const uint8_t r = (ref1[j * stride + i] + ref2[j * stride + i] + 1) >> 1; |
212 |
dct[j * 8 + i] = (int16_t) c - (int16_t) r; |
dct[j * 8 + i] = (int16_t) c - (int16_t) r; |
213 |
} |
} |
214 |
} |
} |
229 |
const int16_t * const src, |
const int16_t * const src, |
230 |
uint32_t stride) |
uint32_t stride) |
231 |
{ |
{ |
232 |
uint32_t i, j; |
int i, j; |
233 |
|
|
234 |
for (j = 0; j < 8; j++) { |
for (j = 0; j < 8; j++) { |
235 |
for (i = 0; i < 8; i++) { |
for (i = 0; i < 8; i++) { |
236 |
|
#ifdef USE_REFERENCE_C |
237 |
int16_t pixel = (int16_t) dst[j * stride + i] + src[j * 8 + i]; |
int16_t pixel = (int16_t) dst[j * stride + i] + src[j * 8 + i]; |
238 |
|
|
239 |
if (pixel < 0) { |
if (pixel < 0) { |
242 |
pixel = 255; |
pixel = 255; |
243 |
} |
} |
244 |
dst[j * stride + i] = (uint8_t) pixel; |
dst[j * stride + i] = (uint8_t) pixel; |
245 |
|
#else |
246 |
|
const int16_t pixel = (int16_t) dst[j * stride + i] + src[j * 8 + i]; |
247 |
|
const uint8_t value = (uint8_t)( (pixel&~255) ? (-pixel)>>(8*sizeof(pixel)-1) : pixel ); |
248 |
|
dst[j*stride + i] = value; |
249 |
|
#endif |
250 |
|
|
251 |
} |
} |
252 |
} |
} |
253 |
} |
} |
266 |
const uint8_t * const src, |
const uint8_t * const src, |
267 |
const uint32_t stride) |
const uint32_t stride) |
268 |
{ |
{ |
269 |
uint32_t j; |
int j, i; |
270 |
|
|
271 |
for (j = 0; j < 8; j++) { |
for (j = 0; j < 8; ++j) { |
272 |
uint32_t *d= (uint32_t*)(dst + j*stride); |
uint8_t *d = dst + j*stride; |
273 |
const uint32_t *s = (const uint32_t*)(src + j*stride); |
const uint8_t *s = src + j*stride; |
274 |
*(d+0) = *(s+0); |
|
275 |
*(d+1) = *(s+1); |
for (i = 0; i < 8; ++i) |
276 |
|
{ |
277 |
|
*d++ = *s++; |
278 |
|
} |
279 |
} |
} |
280 |
} |
} |