24 #if defined(TEMPLATE_8bit)
26 # define RENAME(N) N ## _8bit
30 #elif defined(TEMPLATE_10bit)
32 # define RENAME(N) N ## _10bit
34 # undef TEMPLATE_10bit
36 #elif defined(TEMPLATE_12bit)
38 # define RENAME(N) N ## _12bit
40 # undef TEMPLATE_12bit
52 b1[
i] -= (
unsigned)((int)(
b0[
i] + (
unsigned)
b2[
i] + 2) >> 2);
59 for (
i = 0;
i < w2;
i++) {
65 static void RENAME(horizontal_compose_dirac53i)(uint8_t *_b, uint8_t *_temp,
int w)
68 const int w2 =
w >> 1;
73 for (x = 1; x < w2; x++) {
82 static void RENAME(horizontal_compose_dd97i)(uint8_t *_b, uint8_t *_tmp,
int w)
85 const int w2 =
w >> 1;
90 for (x = 1; x < w2; x++)
97 for (x = 0; x < w2; x++) {
98 b[2*x ] = ((int)(
tmp[x] + 1
U))>>1;
103 static void RENAME(horizontal_compose_dd137i)(uint8_t *_b, uint8_t *_tmp,
int w)
105 const int w2 =
w >> 1;
112 for (x = 2; x < w2-1; x++)
120 for (x = 0; x < w2; x++) {
121 b[2*x ] = ((int)(
tmp[x] + 1
U))>>1;
129 const int w2 =
w >> 1;
132 for (x = 0; x < w2; x++) {
140 static void RENAME(horizontal_compose_haar0i)(uint8_t *_b, uint8_t *_temp,
int w)
147 static void RENAME(horizontal_compose_haar1i)(uint8_t *_b, uint8_t *_temp,
int w)
154 static void RENAME(horizontal_compose_fidelityi)(uint8_t *_b, uint8_t *_tmp,
int w)
156 const int w2 =
w >> 1;
162 for (x = 0; x < w2; x++) {
163 for (
i = 0;
i < 8;
i++)
168 for (x = 0; x < w2; x++) {
169 for (
i = 0;
i < 8;
i++)
177 static void RENAME(horizontal_compose_daub97i)(uint8_t *_b, uint8_t *_temp,
int w)
179 const int w2 =
w >> 1;
185 for (x = 1; x < w2; x++) {
193 b[0] = ~((~
b0) >> 1);
194 for (x = 1; x < w2; x++) {
197 b[2*x-1] = ~((~
b1) >> 1);
198 b[2*x ] = ~((~
b2) >> 1);
204 static void RENAME(vertical_compose_dirac53iH0)(uint8_t *_b0, uint8_t *_b1, uint8_t *_b2,
216 static void RENAME(vertical_compose_dd97iH0)(uint8_t *_b0, uint8_t *_b1, uint8_t *_b2,
217 uint8_t *_b3, uint8_t *_b4,
int width)
230 static void RENAME(vertical_compose_dd137iL0)(uint8_t *_b0, uint8_t *_b1, uint8_t *_b2,
231 uint8_t *_b3, uint8_t *_b4,
int width)
244 static void RENAME(vertical_compose_haar)(uint8_t *_b0, uint8_t *_b1,
int width)
256 static void RENAME(vertical_compose_fidelityiH0)(uint8_t *
_dst, uint8_t *_b[8],
int width)
273 static void RENAME(vertical_compose_fidelityiL0)(uint8_t *
_dst, uint8_t *_b[8],
int width)
291 static void RENAME(vertical_compose_daub97iH0)(uint8_t *_b0, uint8_t *_b1, uint8_t *_b2,
int width)
303 static void RENAME(vertical_compose_daub97iH1)(uint8_t *_b0, uint8_t *_b1, uint8_t *_b2,
int width)
315 static void RENAME(vertical_compose_daub97iL0)(uint8_t *_b0, uint8_t *_b1, uint8_t *_b2,
int width)
327 static void RENAME(vertical_compose_daub97iL1)(uint8_t *_b0, uint8_t *_b1, uint8_t *_b2,
int width)
347 for (
i = 0;
i < 6;
i++)
352 if(y+5<(
unsigned)
height) vertical_compose_l0(
b[5],
b[6],
b[7],
width);
353 if(y+1<(
unsigned)
height) vertical_compose_h0(
b[0],
b[2],
b[3],
b[4],
b[6],
width);
355 if(y-1<(
unsigned)
height) d->horizontal_compose(
b[0], d->temp,
width);
356 if(y+0<(
unsigned)
height) d->horizontal_compose(
b[1], d->temp,
width);
358 for (
i = 0;
i < 6;
i++)
370 uint8_t *
b[4] = { cs->
b[0], cs->
b[1] };
374 if(y+1<(
unsigned)
height) vertical_compose_l0(
b[1],
b[2],
b[3],
width);
375 if(y+0<(
unsigned)
height) vertical_compose_h0(
b[0],
b[1],
b[2],
width);
377 if(y-1<(
unsigned)
height) d->horizontal_compose(
b[0], d->temp,
width);
378 if(y+0<(
unsigned)
height) d->horizontal_compose(
b[1], d->temp,
width);
393 for (
i = 0;
i < 8;
i++)
398 if(y+5<(
unsigned)
height) vertical_compose_l0(
b[3],
b[5],
b[6],
b[7],
b[9],
width);
399 if(y+1<(
unsigned)
height) vertical_compose_h0(
b[0],
b[2],
b[3],
b[4],
b[6],
width);
401 if(y-1<(
unsigned)
height) d->horizontal_compose(
b[0], d->temp,
width);
402 if(y+0<(
unsigned)
height) d->horizontal_compose(
b[1], d->temp,
width);
404 for (
i = 0;
i < 8;
i++)
413 int y = d->cs[
level].y;
414 uint8_t *
b0 = d->buffer + (y-1)*
stride;
415 uint8_t *
b1 = d->buffer + (y )*
stride;
418 d->horizontal_compose(
b0, d->temp,
width);
419 d->horizontal_compose(
b1, d->temp,
width);
433 for (y = 1; y <
height; y += 2) {
434 for (
i = 0;
i < 8;
i++)
439 for (y = 0; y <
height; y += 2) {
440 for (
i = 0;
i < 8;
i++)
445 for (y = 0; y <
height; y++)
446 d->horizontal_compose(d->buffer + y*
stride, d->temp,
width);
461 for (
i = 0;
i < 4;
i++)
466 if(y+3<(
unsigned)
height) vertical_compose_l1(
b[3],
b[4],
b[5],
width);
467 if(y+2<(
unsigned)
height) vertical_compose_h1(
b[2],
b[3],
b[4],
width);
468 if(y+1<(
unsigned)
height) vertical_compose_l0(
b[1],
b[2],
b[3],
width);
469 if(y+0<(
unsigned)
height) vertical_compose_h0(
b[0],
b[1],
b[2],
width);
471 if(y-1<(
unsigned)
height) d->horizontal_compose(
b[0], d->temp,
width);
472 if(y+0<(
unsigned)
height) d->horizontal_compose(
b[1], d->temp,
width);
474 for (
i = 0;
i < 4;
i++)
523 d->temp = (uint8_t *)(((
TYPE *)d->temp) + 8);
526 int hl = d->height >>
level;
527 int stride_l = d->stride <<
level;
531 RENAME(spatial_compose_dd97i_init)(d->cs+
level, d->buffer, hl, stride_l);
537 RENAME(spatial_compose_dd137i_init)(d->cs+
level, d->buffer, hl, stride_l);
554 d->spatial_compose =
RENAME(spatial_compose_dd97i_dy);
556 d->vertical_compose_h0.tap5 =
RENAME(vertical_compose_dd97iH0);
557 d->horizontal_compose =
RENAME(horizontal_compose_dd97i);
561 d->spatial_compose =
RENAME(spatial_compose_dirac53i_dy);
563 d->vertical_compose_h0.tap3 =
RENAME(vertical_compose_dirac53iH0);
564 d->horizontal_compose =
RENAME(horizontal_compose_dirac53i);
568 d->spatial_compose =
RENAME(spatial_compose_dd137i_dy);
569 d->vertical_compose_l0.tap5 =
RENAME(vertical_compose_dd137iL0);
570 d->vertical_compose_h0.tap5 =
RENAME(vertical_compose_dd97iH0);
571 d->horizontal_compose =
RENAME(horizontal_compose_dd137i);
576 d->spatial_compose =
RENAME(spatial_compose_haari_dy);
577 d->vertical_compose =
RENAME(vertical_compose_haar);
579 d->horizontal_compose =
RENAME(horizontal_compose_haar0i);
581 d->horizontal_compose =
RENAME(horizontal_compose_haar1i);
585 d->spatial_compose =
RENAME(spatial_compose_fidelity);
586 d->vertical_compose_l0.tap9 =
RENAME(vertical_compose_fidelityiL0);
587 d->vertical_compose_h0.tap9 =
RENAME(vertical_compose_fidelityiH0);
588 d->horizontal_compose =
RENAME(horizontal_compose_fidelityi);
592 d->spatial_compose =
RENAME(spatial_compose_daub97i_dy);
593 d->vertical_compose_l0.tap3 =
RENAME(vertical_compose_daub97iL0);
594 d->vertical_compose_h0.tap3 =
RENAME(vertical_compose_daub97iH0);
595 d->vertical_compose_l1 =
RENAME(vertical_compose_daub97iL1);
596 d->vertical_compose_h1 =
RENAME(vertical_compose_daub97iH1);
597 d->horizontal_compose =
RENAME(horizontal_compose_daub97i);