21
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24
#include "libavutil/common.h"
24
26
#define PIXOP2(OPNAME, OP) \
26
28
static inline void OPNAME ## _pixels4_l2_aligned(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h) \
360
static void gmc_c(uint8_t *dst, uint8_t *src, int stride, int h, int ox, int oy,
361
int dxx, int dxy, int dyx, int dyy, int shift, int r, int width, int height)
364
const int s= 1<<shift;
374
for(x=0; x<8; x++){ //XXX FIXME optimize
375
int src_x, src_y, frac_x, frac_y, index;
384
if((unsigned)src_x < width){
385
if((unsigned)src_y < height){
386
index= src_x + src_y*stride;
387
dst[y*stride + x]= ( ( src[index ]*(s-frac_x)
388
+ src[index +1]* frac_x )*(s-frac_y)
389
+ ( src[index+stride ]*(s-frac_x)
390
+ src[index+stride+1]* frac_x )* frac_y
393
index= src_x + av_clip(src_y, 0, height)*stride;
394
dst[y*stride + x]= ( ( src[index ]*(s-frac_x)
395
+ src[index +1]* frac_x )*s
399
if((unsigned)src_y < height){
400
index= av_clip(src_x, 0, width) + src_y*stride;
401
dst[y*stride + x]= ( ( src[index ]*(s-frac_y)
402
+ src[index+stride ]* frac_y )*s
405
index= av_clip(src_x, 0, width) + av_clip(src_y, 0, height)*stride;
406
dst[y*stride + x]= src[index ];
417
362
#define H264_CHROMA_MC(OPNAME, OP)\
418
363
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){\
419
364
const int A=(8-x)*(8-y);\