|
|
|
@ -1124,6 +1124,83 @@ 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]; |
|
|
|
|
|
|
|
|
|
stride >>= sizeof(pixel)-1; |
|
|
|
|
|
|
|
|
|
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]; |
|
|
|
|
|
|
|
|
|
stride >>= sizeof(pixel)-1; |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|