|
|
|
@ -359,63 +359,6 @@ static void gmc1_c(uint8_t *dst, uint8_t *src, int stride, int h, int x16, int y |
|
|
|
|
}while(--h); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void gmc_c(uint8_t *dst, uint8_t *src, int stride, int h, int ox, int oy, |
|
|
|
|
int dxx, int dxy, int dyx, int dyy, int shift, int r, int width, int height) |
|
|
|
|
{ |
|
|
|
|
int y, vx, vy; |
|
|
|
|
const int s= 1<<shift; |
|
|
|
|
|
|
|
|
|
width--; |
|
|
|
|
height--; |
|
|
|
|
|
|
|
|
|
for(y=0; y<h; y++){ |
|
|
|
|
int x; |
|
|
|
|
|
|
|
|
|
vx= ox; |
|
|
|
|
vy= oy; |
|
|
|
|
for(x=0; x<8; x++){ //XXX FIXME optimize
|
|
|
|
|
int src_x, src_y, frac_x, frac_y, index; |
|
|
|
|
|
|
|
|
|
src_x= vx>>16; |
|
|
|
|
src_y= vy>>16; |
|
|
|
|
frac_x= src_x&(s-1); |
|
|
|
|
frac_y= src_y&(s-1); |
|
|
|
|
src_x>>=shift; |
|
|
|
|
src_y>>=shift; |
|
|
|
|
|
|
|
|
|
if((unsigned)src_x < width){ |
|
|
|
|
if((unsigned)src_y < height){ |
|
|
|
|
index= src_x + src_y*stride; |
|
|
|
|
dst[y*stride + x]= ( ( src[index ]*(s-frac_x) |
|
|
|
|
+ src[index +1]* frac_x )*(s-frac_y) |
|
|
|
|
+ ( src[index+stride ]*(s-frac_x) |
|
|
|
|
+ src[index+stride+1]* frac_x )* frac_y |
|
|
|
|
+ r)>>(shift*2); |
|
|
|
|
}else{ |
|
|
|
|
index= src_x + av_clip(src_y, 0, height)*stride; |
|
|
|
|
dst[y*stride + x]= ( ( src[index ]*(s-frac_x) |
|
|
|
|
+ src[index +1]* frac_x )*s |
|
|
|
|
+ r)>>(shift*2); |
|
|
|
|
} |
|
|
|
|
}else{ |
|
|
|
|
if((unsigned)src_y < height){ |
|
|
|
|
index= av_clip(src_x, 0, width) + src_y*stride; |
|
|
|
|
dst[y*stride + x]= ( ( src[index ]*(s-frac_y) |
|
|
|
|
+ src[index+stride ]* frac_y )*s |
|
|
|
|
+ r)>>(shift*2); |
|
|
|
|
}else{ |
|
|
|
|
index= av_clip(src_x, 0, width) + av_clip(src_y, 0, height)*stride; |
|
|
|
|
dst[y*stride + x]= src[index ]; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
vx+= dxx; |
|
|
|
|
vy+= dyx; |
|
|
|
|
} |
|
|
|
|
ox += dxy; |
|
|
|
|
oy += dyy; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
#define H264_CHROMA_MC(OPNAME, OP)\ |
|
|
|
|
static void OPNAME ## h264_chroma_mc2_sh4(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){\
|
|
|
|
|
const int A=(8-x)*(8-y);\
|
|
|
|
|