26 #define H264_CHROMA_MC(OPNAME, OP)\ 27 static void FUNCC(OPNAME ## h264_chroma_mc2)(uint8_t *_dst, uint8_t *_src, int stride, int h, int x, int y){\ 28 pixel *dst = (pixel*)_dst;\ 29 pixel *src = (pixel*)_src;\ 30 const int A=(8-x)*(8-y);\ 31 const int B=( x)*(8-y);\ 32 const int C=(8-x)*( y);\ 33 const int D=( x)*( y);\ 35 stride >>= sizeof(pixel)-1;\ 37 av_assert2(x<8 && y<8 && x>=0 && y>=0);\ 41 OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\ 42 OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\ 48 const int step= C ? stride : 1;\ 50 OP(dst[0], (A*src[0] + E*src[step+0]));\ 51 OP(dst[1], (A*src[1] + E*src[step+1]));\ 58 static void FUNCC(OPNAME ## h264_chroma_mc4)(uint8_t *_dst, uint8_t *_src, int stride, int h, int x, int y){\ 59 pixel *dst = (pixel*)_dst;\ 60 pixel *src = (pixel*)_src;\ 61 const int A=(8-x)*(8-y);\ 62 const int B=( x)*(8-y);\ 63 const int C=(8-x)*( y);\ 64 const int D=( x)*( y);\ 66 stride >>= sizeof(pixel)-1;\ 68 av_assert2(x<8 && y<8 && x>=0 && y>=0);\ 72 OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\ 73 OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\ 74 OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));\ 75 OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));\ 81 const int step= C ? stride : 1;\ 83 OP(dst[0], (A*src[0] + E*src[step+0]));\ 84 OP(dst[1], (A*src[1] + E*src[step+1]));\ 85 OP(dst[2], (A*src[2] + E*src[step+2]));\ 86 OP(dst[3], (A*src[3] + E*src[step+3]));\ 93 static void FUNCC(OPNAME ## h264_chroma_mc8)(uint8_t *_dst, uint8_t *_src, int stride, int h, int x, int y){\ 94 pixel *dst = (pixel*)_dst;\ 95 pixel *src = (pixel*)_src;\ 96 const int A=(8-x)*(8-y);\ 97 const int B=( x)*(8-y);\ 98 const int C=(8-x)*( y);\ 99 const int D=( x)*( y);\ 101 stride >>= sizeof(pixel)-1;\ 103 av_assert2(x<8 && y<8 && x>=0 && y>=0);\ 107 OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\ 108 OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\ 109 OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));\ 110 OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));\ 111 OP(dst[4], (A*src[4] + B*src[5] + C*src[stride+4] + D*src[stride+5]));\ 112 OP(dst[5], (A*src[5] + B*src[6] + C*src[stride+5] + D*src[stride+6]));\ 113 OP(dst[6], (A*src[6] + B*src[7] + C*src[stride+6] + D*src[stride+7]));\ 114 OP(dst[7], (A*src[7] + B*src[8] + C*src[stride+7] + D*src[stride+8]));\ 120 const int step= C ? stride : 1;\ 122 OP(dst[0], (A*src[0] + E*src[step+0]));\ 123 OP(dst[1], (A*src[1] + E*src[step+1]));\ 124 OP(dst[2], (A*src[2] + E*src[step+2]));\ 125 OP(dst[3], (A*src[3] + E*src[step+3]));\ 126 OP(dst[4], (A*src[4] + E*src[step+4]));\ 127 OP(dst[5], (A*src[5] + E*src[step+5]));\ 128 OP(dst[6], (A*src[6] + E*src[step+6]));\ 129 OP(dst[7], (A*src[7] + E*src[step+7]));\ 136 #define op_avg(a, b) a = (((a)+(((b) + 32)>>6)+1)>>1) 137 #define op_put(a, b) a = (((b) + 32)>>6)
#define H264_CHROMA_MC(OPNAME, OP)
simple assert() macros that are a bit more flexible than ISO C assert().