public void avg_h264_chroma_mc2_c(byte[] dst_base/*align 8*/, int dst_offset,byte[] src_base/*align 1*/, int src_offset, int stride, int h, int x, int y)
{
int A = (8 - x) * (8 - y);
int B = (x) * (8 - y);
int C = (8 - x) * (y);
int D = (x) * (y);
int i;
////assert(x<8 && y<8 && x>=0 && y>=0);
if (D != 0)
{
for (i = 0; i < h; i++)
{
dst_base[dst_offset + 0] = (byte)OP_AVG(dst_base[dst_offset + 0], (A * src_base[src_offset + 0] + B * src_base[src_offset + 1] + C * src_base[src_offset + stride + 0] + D * src_base[src_offset + stride + 1]));
dst_base[dst_offset + 1] = (byte)OP_AVG(dst_base[dst_offset + 1], (A * src_base[src_offset + 1] + B * src_base[src_offset + 2] + C * src_base[src_offset + stride + 1] + D * src_base[src_offset + stride + 2]));
dst_offset += stride;
src_offset += stride;
}
}
else
{
int E = B + C;
int step = (C != 0 ? stride : 1);
for (i = 0; i < h; i++)
{
dst_base[dst_offset + 0] = (byte)OP_AVG(dst_base[dst_offset + 0], (A * src_base[src_offset + 0] + E * src_base[src_offset + step + 0]));
dst_base[dst_offset + 1] = (byte)OP_AVG(dst_base[dst_offset + 1], (A * src_base[src_offset + 1] + E * src_base[src_offset + step + 1]));
dst_offset += stride;
src_offset += stride;
}
}
}