static void RENAME(horizontal_compose_daub97i)(uint8_t *_b, uint8_t *_temp, int w) { const int w2 = w >> 1; int x, b0, b1, b2; TYPE *b = (TYPE *)_b; TYPE *temp = (TYPE *)_temp; temp[0] = COMPOSE_DAUB97iL1(b[w2], b[0], b[w2]); for (x = 1; x < w2; x++) { temp[x ] = COMPOSE_DAUB97iL1(b[x+w2-1], b[x ], b[x+w2]); temp[x+w2-1] = COMPOSE_DAUB97iH1(temp[x-1], b[x+w2-1], temp[x]); } temp[w-1] = COMPOSE_DAUB97iH1(temp[w2-1], b[w-1], temp[w2-1]); // second stage combined with interleave and shift b0 = b2 = COMPOSE_DAUB97iL0(temp[w2], temp[0], temp[w2]); b[0] = (b0 + 1) >> 1; for (x = 1; x < w2; x++) { b2 = COMPOSE_DAUB97iL0(temp[x+w2-1], temp[x ], temp[x+w2]); b1 = COMPOSE_DAUB97iH0( b0, temp[x+w2-1], b2 ); b[2*x-1] = (b1 + 1) >> 1; b[2*x ] = (b2 + 1) >> 1; b0 = b2; } b[w-1] = (COMPOSE_DAUB97iH0(b2, temp[w-1], b2) + 1) >> 1; }
static void vertical_compose_daub97iH0(IDWTELEM *b0, IDWTELEM *b1, IDWTELEM *b2, int width) { int i; for(i=0; i<width; i++){ b1[i] = COMPOSE_DAUB97iH0(b0[i], b1[i], b2[i]); } }
static void RENAME(vertical_compose_daub97iH0)(uint8_t *_b0, uint8_t *_b1, uint8_t *_b2, int width) { int i; TYPE *b0 = (TYPE *)_b0; TYPE *b1 = (TYPE *)_b1; TYPE *b2 = (TYPE *)_b2; for(i=0; i<width; i++){ b1[i] = COMPOSE_DAUB97iH0(b0[i], b1[i], b2[i]); } }
static void horizontal_compose_daub97i(IDWTELEM *b, IDWTELEM *temp, int w) { const int w2 = w >> 1; int x, b0, b1, b2; temp[0] = COMPOSE_DAUB97iL1(b[w2], b[0], b[w2]); for (x = 1; x < w2; x++) { temp[x ] = COMPOSE_DAUB97iL1(b[x+w2-1], b[x ], b[x+w2]); temp[x+w2-1] = COMPOSE_DAUB97iH1(temp[x-1], b[x+w2-1], temp[x]); } temp[w-1] = COMPOSE_DAUB97iH1(temp[w2-1], b[w-1], temp[w2-1]); // second stage combined with interleave and shift b0 = b2 = COMPOSE_DAUB97iL0(temp[w2], temp[0], temp[w2]); b[0] = (b0 + 1) >> 1; for (x = 1; x < w2; x++) { b2 = COMPOSE_DAUB97iL0(temp[x+w2-1], temp[x ], temp[x+w2]); b1 = COMPOSE_DAUB97iH0( b0, temp[x+w2-1], b2 ); b[2*x-1] = (b1 + 1) >> 1; b[2*x ] = (b2 + 1) >> 1; b0 = b2; } b[w-1] = (COMPOSE_DAUB97iH0(b2, temp[w-1], b2) + 1) >> 1; }