|
|
|
@@ -65,46 +65,38 @@ static void FUNCC(draw_edges)(uint8_t *_buf, int _wrap, int width, int height, i |
|
|
|
memcpy(last_line + (i + 1) * wrap, last_line, (width + w + w) * sizeof(pixel)); // bottom |
|
|
|
} |
|
|
|
|
|
|
|
#define DCTELEM_FUNCS(dctcoef, suffix) \ |
|
|
|
static void FUNCC(get_pixels ## suffix)(int16_t *restrict _block, \ |
|
|
|
const uint8_t *_pixels, \ |
|
|
|
int line_size) \ |
|
|
|
{ \ |
|
|
|
const pixel *pixels = (const pixel *) _pixels; \ |
|
|
|
dctcoef *restrict block = (dctcoef *) _block; \ |
|
|
|
int i; \ |
|
|
|
\ |
|
|
|
/* read the pixels */ \ |
|
|
|
for(i=0;i<8;i++) { \ |
|
|
|
block[0] = pixels[0]; \ |
|
|
|
block[1] = pixels[1]; \ |
|
|
|
block[2] = pixels[2]; \ |
|
|
|
block[3] = pixels[3]; \ |
|
|
|
block[4] = pixels[4]; \ |
|
|
|
block[5] = pixels[5]; \ |
|
|
|
block[6] = pixels[6]; \ |
|
|
|
block[7] = pixels[7]; \ |
|
|
|
pixels += line_size / sizeof(pixel); \ |
|
|
|
block += 8; \ |
|
|
|
} \ |
|
|
|
} \ |
|
|
|
\ |
|
|
|
static void FUNCC(clear_block ## suffix)(int16_t *block) \ |
|
|
|
{ \ |
|
|
|
memset(block, 0, sizeof(dctcoef)*64); \ |
|
|
|
} \ |
|
|
|
\ |
|
|
|
/** \ |
|
|
|
* memset(blocks, 0, sizeof(int16_t)*6*64) \ |
|
|
|
*/ \ |
|
|
|
static void FUNCC(clear_blocks ## suffix)(int16_t *blocks) \ |
|
|
|
{ \ |
|
|
|
memset(blocks, 0, sizeof(dctcoef)*6*64); \ |
|
|
|
static void FUNCC(get_pixels)(int16_t *restrict block, |
|
|
|
const uint8_t *_pixels, |
|
|
|
int line_size) |
|
|
|
{ |
|
|
|
const pixel *pixels = (const pixel *) _pixels; |
|
|
|
int i; |
|
|
|
|
|
|
|
/* read the pixels */ |
|
|
|
for(i=0;i<8;i++) { |
|
|
|
block[0] = pixels[0]; |
|
|
|
block[1] = pixels[1]; |
|
|
|
block[2] = pixels[2]; |
|
|
|
block[3] = pixels[3]; |
|
|
|
block[4] = pixels[4]; |
|
|
|
block[5] = pixels[5]; |
|
|
|
block[6] = pixels[6]; |
|
|
|
block[7] = pixels[7]; |
|
|
|
pixels += line_size / sizeof(pixel); |
|
|
|
block += 8; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
DCTELEM_FUNCS(int16_t, _16) |
|
|
|
#if BIT_DEPTH > 8 |
|
|
|
DCTELEM_FUNCS(dctcoef, _32) |
|
|
|
#if BIT_DEPTH == 8 |
|
|
|
static void FUNCC(clear_block)(int16_t *block) |
|
|
|
{ |
|
|
|
memset(block, 0, sizeof(int16_t)*64); |
|
|
|
} |
|
|
|
|
|
|
|
static void FUNCC(clear_blocks)(int16_t *blocks) |
|
|
|
{ |
|
|
|
memset(blocks, 0, sizeof(int16_t)*6*64); |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
#if BIT_DEPTH == 8 |
|
|
|
|