|
|
|
@@ -1123,6 +1123,79 @@ static void FUNCC(pred8x8l_horizontal_up)(uint8_t *_src, int has_topleft, |
|
|
|
SRC(5,6)=SRC(5,7)=SRC(6,4)=SRC(6,5)=SRC(6,6)= |
|
|
|
SRC(6,7)=SRC(7,4)=SRC(7,5)=SRC(7,6)=SRC(7,7)= l7; |
|
|
|
} |
|
|
|
|
|
|
|
static void FUNCC(pred8x8l_vertical_filter_add)(uint8_t *_src, int16_t *_block, int has_topleft, |
|
|
|
int has_topright, ptrdiff_t _stride) |
|
|
|
{ |
|
|
|
int i; |
|
|
|
pixel *src = (pixel*)_src; |
|
|
|
const dctcoef *block = (const dctcoef*)_block; |
|
|
|
pixel pix[8]; |
|
|
|
int stride = _stride/sizeof(pixel); |
|
|
|
PREDICT_8x8_LOAD_TOP; |
|
|
|
|
|
|
|
pix[0] = t0; |
|
|
|
pix[1] = t1; |
|
|
|
pix[2] = t2; |
|
|
|
pix[3] = t3; |
|
|
|
pix[4] = t4; |
|
|
|
pix[5] = t5; |
|
|
|
pix[6] = t6; |
|
|
|
pix[7] = t7; |
|
|
|
|
|
|
|
for (i = 0; i < 8; i++) { |
|
|
|
pixel v = pix[i]; |
|
|
|
src[0 * stride] = v += block[0]; |
|
|
|
src[1 * stride] = v += block[8]; |
|
|
|
src[2 * stride] = v += block[16]; |
|
|
|
src[3 * stride] = v += block[24]; |
|
|
|
src[4 * stride] = v += block[32]; |
|
|
|
src[5 * stride] = v += block[40]; |
|
|
|
src[6 * stride] = v += block[48]; |
|
|
|
src[7 * stride] = v + block[56]; |
|
|
|
src++; |
|
|
|
block++; |
|
|
|
} |
|
|
|
|
|
|
|
memset(_block, 0, sizeof(dctcoef) * 64); |
|
|
|
} |
|
|
|
|
|
|
|
static void FUNCC(pred8x8l_horizontal_filter_add)(uint8_t *_src, int16_t *_block, int has_topleft, |
|
|
|
int has_topright, ptrdiff_t _stride) |
|
|
|
{ |
|
|
|
int i; |
|
|
|
pixel *src = (pixel*)_src; |
|
|
|
const dctcoef *block = (const dctcoef*)_block; |
|
|
|
pixel pix[8]; |
|
|
|
int stride = _stride/sizeof(pixel); |
|
|
|
PREDICT_8x8_LOAD_LEFT; |
|
|
|
|
|
|
|
pix[0] = l0; |
|
|
|
pix[1] = l1; |
|
|
|
pix[2] = l2; |
|
|
|
pix[3] = l3; |
|
|
|
pix[4] = l4; |
|
|
|
pix[5] = l5; |
|
|
|
pix[6] = l6; |
|
|
|
pix[7] = l7; |
|
|
|
|
|
|
|
for (i = 0; i < 8; i++) { |
|
|
|
pixel v = pix[i]; |
|
|
|
src[0] = v += block[0]; |
|
|
|
src[1] = v += block[1]; |
|
|
|
src[2] = v += block[2]; |
|
|
|
src[3] = v += block[3]; |
|
|
|
src[4] = v += block[4]; |
|
|
|
src[5] = v += block[5]; |
|
|
|
src[6] = v += block[6]; |
|
|
|
src[7] = v + block[7]; |
|
|
|
src += stride; |
|
|
|
block += 8; |
|
|
|
} |
|
|
|
|
|
|
|
memset(_block, 0, sizeof(dctcoef) * 64); |
|
|
|
} |
|
|
|
|
|
|
|
#undef PREDICT_8x8_LOAD_LEFT |
|
|
|
#undef PREDICT_8x8_LOAD_TOP |
|
|
|
#undef PREDICT_8x8_LOAD_TOPLEFT |
|
|
|
|