📄 motion_comp.c
字号:
dest[11] = (((((ref[11]+ref[11 +1]+1)>>1))+dest[11]+1)>>1); dest[12] = (((((ref[12]+ref[12 +1]+1)>>1))+dest[12]+1)>>1); dest[13] = (((((ref[13]+ref[13 +1]+1)>>1))+dest[13]+1)>>1); dest[14] = (((((ref[14]+ref[14 +1]+1)>>1))+dest[14]+1)>>1); dest[15] = (((((ref[15]+ref[15 +1]+1)>>1))+dest[15]+1)>>1); ref += stride; dest += stride; } while (--height); } static void MC_avg_x_8_c (uint8_t * dest, const uint8_t * ref, const int stride, int height) { do { dest[0] = (((((ref[0]+ref[0 +1]+1)>>1))+dest[0]+1)>>1); dest[1] = (((((ref[1]+ref[1 +1]+1)>>1))+dest[1]+1)>>1); dest[2] = (((((ref[2]+ref[2 +1]+1)>>1))+dest[2]+1)>>1); dest[3] = (((((ref[3]+ref[3 +1]+1)>>1))+dest[3]+1)>>1); dest[4] = (((((ref[4]+ref[4 +1]+1)>>1))+dest[4]+1)>>1); dest[5] = (((((ref[5]+ref[5 +1]+1)>>1))+dest[5]+1)>>1); dest[6] = (((((ref[6]+ref[6 +1]+1)>>1))+dest[6]+1)>>1); dest[7] = (((((ref[7]+ref[7 +1]+1)>>1))+dest[7]+1)>>1); ref += stride; dest += stride; } while (--height); }#ifdef JZ4740_MXU_OPTstatic void MC_put_y_16_c (uint8_t * dest, const uint8_t * ref, const int stride, int height) { int32_t ref_aln,ref_aln1,ref_rs,ref_rs1; ref_aln = ((uint32_t)ref-stride) & 0xFFFFFFFC; ref_rs = 4 - ((uint32_t)ref & 3); ref_aln1 = ((uint32_t)(ref)) & 0xFFFFFFFC; ref_rs1 = 4 - (((uint32_t)(ref + stride)) & 3); dest -= stride; do { S32LDIV(xr1,ref_aln,stride,0x0); S32LDD(xr2,ref_aln,0x4); S32LDD(xr3,ref_aln,0x8); S32LDD(xr4,ref_aln,0xc); S32LDD(xr5,ref_aln,0x10); S32ALN(xr1,xr2,xr1,ref_rs); //xr1:ref[3]-[0] S32ALN(xr2,xr3,xr2,ref_rs); //xr2:ref[7]-[4] S32ALN(xr3,xr4,xr3,ref_rs); //xr3:ref[11]-[8] S32ALN(xr4,xr5,xr4,ref_rs); //xr4:ref[15]-[12] S32LDIV(xr5,ref_aln1,stride,0x0); S32LDD(xr6,ref_aln1,0x4); S32LDD(xr7,ref_aln1,0x8); S32LDD(xr8,ref_aln1,0xc); S32LDD(xr9,ref_aln1,0x10); S32ALN(xr5,xr6,xr5,ref_rs1); //xr5:ref[3+stride]-[0+stride] S32ALN(xr6,xr7,xr6,ref_rs1); //xr6:ref[7+stride]-[4+stride] S32ALN(xr7,xr8,xr7,ref_rs1); //xr7:ref[11+stride]-[8+stride] S32ALN(xr8,xr9,xr8,ref_rs1); //xr8:ref[15+stride]-[12+stride] Q8AVGR(xr5,xr5,xr1); Q8AVGR(xr6,xr6,xr2); Q8AVGR(xr7,xr7,xr3); Q8AVGR(xr8,xr8,xr4); S32SDIV(xr5,dest,stride,0x0); S32STD(xr6,dest,0x4); S32STD(xr7,dest,0x8); S32STD(xr8,dest,0xc); } while (--height); }#elsestatic void MC_put_y_16_c (uint8_t * dest, const uint8_t * ref, const int stride, int height) { do { dest[0] = (((ref[0]+(ref+stride)[0]+1)>>1)); dest[1] = (((ref[1]+(ref+stride)[1]+1)>>1)); dest[2] = (((ref[2]+(ref+stride)[2]+1)>>1)); dest[3] = (((ref[3]+(ref+stride)[3]+1)>>1)); dest[4] = (((ref[4]+(ref+stride)[4]+1)>>1)); dest[5] = (((ref[5]+(ref+stride)[5]+1)>>1)); dest[6] = (((ref[6]+(ref+stride)[6]+1)>>1)); dest[7] = (((ref[7]+(ref+stride)[7]+1)>>1)); dest[8] = (((ref[8]+(ref+stride)[8]+1)>>1)); dest[9] = (((ref[9]+(ref+stride)[9]+1)>>1)); dest[10] = (((ref[10]+(ref+stride)[10]+1)>>1)); dest[11] = (((ref[11]+(ref+stride)[11]+1)>>1)); dest[12] = (((ref[12]+(ref+stride)[12]+1)>>1)); dest[13] = (((ref[13]+(ref+stride)[13]+1)>>1)); dest[14] = (((ref[14]+(ref+stride)[14]+1)>>1)); dest[15] = (((ref[15]+(ref+stride)[15]+1)>>1)); ref += stride; dest += stride; } while (--height); }#endif#ifdef JZ4740_MXU_OPTstatic void MC_put_y_8_c (uint8_t * dest, const uint8_t * ref, const int stride, int height) { int32_t ref_aln,ref_aln1,ref_rs,ref_rs1; ref_aln = ((uint32_t)ref-stride) & 0xFFFFFFFC; ref_rs = 4 - ((uint32_t)ref & 3); ref_aln1 = ((uint32_t)(ref)) & 0xFFFFFFFC; ref_rs1 = 4 - (((uint32_t)(ref + stride)) & 3); dest -= stride; do { S32LDIV(xr1,ref_aln,stride,0x0); S32LDD(xr2,ref_aln,0x4); S32LDD(xr3,ref_aln,0x8); S32ALN(xr1,xr2,xr1,ref_rs); //xr1:ref[3]-[0] S32ALN(xr2,xr3,xr2,ref_rs); //xr2:ref[7]-[4] S32LDIV(xr5,ref_aln1,stride,0x0); S32LDD(xr6,ref_aln1,0x4); S32LDD(xr7,ref_aln1,0x8); S32ALN(xr5,xr6,xr5,ref_rs1); //xr5:ref[3+stride]-[0+stride] S32ALN(xr6,xr7,xr6,ref_rs1); //xr6:ref[7+stride]-[4+stride] Q8AVGR(xr5,xr5,xr1); Q8AVGR(xr6,xr6,xr2); S32SDIV(xr5,dest,stride,0x0); S32STD(xr6,dest,0x4); } while (--height); }#else static void MC_put_y_8_c (uint8_t * dest, const uint8_t * ref, const int stride, int height) { do { dest[0] = (((ref[0]+(ref+stride)[0]+1)>>1)); dest[1] = (((ref[1]+(ref+stride)[1]+1)>>1)); dest[2] = (((ref[2]+(ref+stride)[2]+1)>>1)); dest[3] = (((ref[3]+(ref+stride)[3]+1)>>1)); dest[4] = (((ref[4]+(ref+stride)[4]+1)>>1)); dest[5] = (((ref[5]+(ref+stride)[5]+1)>>1)); dest[6] = (((ref[6]+(ref+stride)[6]+1)>>1)); dest[7] = (((ref[7]+(ref+stride)[7]+1)>>1)); ref += stride; dest += stride; } while (--height); }#endif static void MC_avg_y_16_c (uint8_t * dest, const uint8_t * ref, const int stride, int height) { do { dest[0] = (((((ref[0]+(ref+stride)[0]+1)>>1))+dest[0]+1)>>1); dest[1] = (((((ref[1]+(ref+stride)[1]+1)>>1))+dest[1]+1)>>1); dest[2] = (((((ref[2]+(ref+stride)[2]+1)>>1))+dest[2]+1)>>1); dest[3] = (((((ref[3]+(ref+stride)[3]+1)>>1))+dest[3]+1)>>1); dest[4] = (((((ref[4]+(ref+stride)[4]+1)>>1))+dest[4]+1)>>1); dest[5] = (((((ref[5]+(ref+stride)[5]+1)>>1))+dest[5]+1)>>1); dest[6] = (((((ref[6]+(ref+stride)[6]+1)>>1))+dest[6]+1)>>1); dest[7] = (((((ref[7]+(ref+stride)[7]+1)>>1))+dest[7]+1)>>1); dest[8] = (((((ref[8]+(ref+stride)[8]+1)>>1))+dest[8]+1)>>1); dest[9] = (((((ref[9]+(ref+stride)[9]+1)>>1))+dest[9]+1)>>1); dest[10] = (((((ref[10]+(ref+stride)[10]+1)>>1))+dest[10]+1)>>1); dest[11] = (((((ref[11]+(ref+stride)[11]+1)>>1))+dest[11]+1)>>1); dest[12] = (((((ref[12]+(ref+stride)[12]+1)>>1))+dest[12]+1)>>1); dest[13] = (((((ref[13]+(ref+stride)[13]+1)>>1))+dest[13]+1)>>1); dest[14] = (((((ref[14]+(ref+stride)[14]+1)>>1))+dest[14]+1)>>1); dest[15] = (((((ref[15]+(ref+stride)[15]+1)>>1))+dest[15]+1)>>1); ref += stride; dest += stride; } while (--height); } static void MC_avg_y_8_c (uint8_t * dest, const uint8_t * ref, const int stride, int height) { do { dest[0] = (((((ref[0]+(ref+stride)[0]+1)>>1))+dest[0]+1)>>1); dest[1] = (((((ref[1]+(ref+stride)[1]+1)>>1))+dest[1]+1)>>1); dest[2] = (((((ref[2]+(ref+stride)[2]+1)>>1))+dest[2]+1)>>1); dest[3] = (((((ref[3]+(ref+stride)[3]+1)>>1))+dest[3]+1)>>1); dest[4] = (((((ref[4]+(ref+stride)[4]+1)>>1))+dest[4]+1)>>1); dest[5] = (((((ref[5]+(ref+stride)[5]+1)>>1))+dest[5]+1)>>1); dest[6] = (((((ref[6]+(ref+stride)[6]+1)>>1))+dest[6]+1)>>1); dest[7] = (((((ref[7]+(ref+stride)[7]+1)>>1))+dest[7]+1)>>1); ref += stride; dest += stride; } while (--height); }#ifdef JZ4740_MXU_OPT static void MC_put_xy_16_c (uint8_t * dest, const uint8_t * ref, const int stride, int height) { uint32_t ref_aln,ref_aln1,ref_aln2,ref_aln3,ref_rs,ref_rs1,ref_rs2,ref_rs3; ref_aln = ((uint32_t)ref - stride) & 0xFFFFFFFC; ref_aln1 = ((uint32_t)ref + 1 - stride) & 0xFFFFFFFC; ref_aln2 = ((uint32_t)ref ) & 0xFFFFFFFC; ref_aln3 = ((uint32_t)ref + 1) & 0xFFFFFFFC; ref_rs = 4 - ((uint32_t)ref & 3); ref_rs1 = 4 - (((uint32_t)ref + 1) & 3); ref_rs2 = 4 - (((uint32_t)ref + stride) & 3); ref_rs3 = 4 - (((uint32_t)ref + 1 + stride) & 3); dest -= stride; do { S32LDIV(xr1,ref_aln,stride,0x0); S32LDD(xr2,ref_aln,0x4); S32LDD(xr3,ref_aln,0x8); S32LDD(xr4,ref_aln,0xc); S32LDD(xr5,ref_aln,0x10); S32ALN(xr1,xr2,xr1,ref_rs); //xr1:ref[3]-[0] S32ALN(xr2,xr3,xr2,ref_rs); //xr2:ref[7]-[4] S32ALN(xr3,xr4,xr3,ref_rs); //xr3:ref[11]-[8] S32ALN(xr4,xr5,xr4,ref_rs); //xr4:ref[15]-[12] S32LDIV(xr5,ref_aln1,stride,0x0); S32LDD(xr6,ref_aln1,0x4); S32LDD(xr7,ref_aln1,0x8); S32LDD(xr8,ref_aln1,0xc); S32LDD(xr9,ref_aln1,0x10); S32ALN(xr5,xr6,xr5,ref_rs1); //xr5:ref[4]-[1] S32ALN(xr6,xr7,xr6,ref_rs1); //xr6:ref[8]-[5] S32ALN(xr7,xr8,xr7,ref_rs1); //xr7:ref[12]-[9] S32ALN(xr8,xr9,xr8,ref_rs1); //xr8:ref[16]-[13] Q8AVGR(xr1,xr5,xr1); Q8AVGR(xr2,xr6,xr2); Q8AVGR(xr3,xr7,xr3); Q8AVGR(xr4,xr8,xr4); S32LDIV(xr5,ref_aln2,stride,0x0); S32LDD(xr6,ref_aln2,0x4); S32LDD(xr7,ref_aln2,0x8); S32LDD(xr8,ref_aln2,0xc); S32LDD(xr9,ref_aln2,0x10); S32ALN(xr5,xr6,xr5,ref_rs2); //xr5:ref[stride+3]-[stride+0] S32ALN(xr6,xr7,xr6,ref_rs2); //xr6:ref[stride+7]-[stride+4] S32ALN(xr7,xr8,xr7,ref_rs2); //xr7:ref[stride+11]-[stride+8] S32ALN(xr8,xr9,xr8,ref_rs2); //xr8:ref[stride+15]-[stride+12] S32LDIV(xr9,ref_aln3,stride,0x0); S32LDD(xr10,ref_aln3,0x4); S32LDD(xr11,ref_aln3,0x8); S32LDD(xr12,ref_aln3,0xc); S32LDD(xr13,ref_aln3,0x10); S32ALN(xr9,xr10,xr9,ref_rs1); //xr9:ref[stride+4]-[stride+1] S32ALN(xr10,xr11,xr10,ref_rs1); //xr10:ref[stride+8]-[stride+5] S32ALN(xr11,xr12,xr11,ref_rs1); //xr11:ref[stride+12]-[stride+9] S32ALN(xr12,xr13,xr12,ref_rs1); //xr12:ref[stride+16]-[stride+13] Q8AVGR(xr5,xr9,xr5); Q8AVGR(xr6,xr10,xr6); Q8AVGR(xr7,xr11,xr7); Q8AVGR(xr8,xr12,xr8); Q8AVG(xr1,xr1,xr5); Q8AVG(xr2,xr2,xr6); Q8AVG(xr3,xr3,xr7); Q8AVG(xr4,xr4,xr8); S32SDIV(xr1,dest,stride,0x0); S32STD(xr2,dest,0x4); S32STD(xr3,dest,0x8); S32STD(xr4,dest,0xc); } while (--height); }#else static void MC_put_xy_16_c (uint8_t * dest, const uint8_t * ref, const int stride, int height) { do { dest[0] = (((ref[0]+ref[0 +1]+(ref+stride)[0]+(ref+stride)[0 +1]+2)>>2)); dest[1] = (((ref[1]+ref[1 +1]+(ref+stride)[1]+(ref+stride)[1 +1]+2)>>2)); dest[2] = (((ref[2]+ref[2 +1]+(ref+stride)[2]+(ref+stride)[2 +1]+2)>>2)); dest[3] = (((ref[3]+ref[3 +1]+(ref+stride)[3]+(ref+stride)[3 +1]+2)>>2)); dest[4] = (((ref[4]+ref[4 +1]+(ref+stride)[4]+(ref+stride)[4 +1]+2)>>2)); dest[5] = (((ref[5]+ref[5 +1]+(ref+stride)[5]+(ref+stride)[5 +1]+2)>>2)); dest[6] = (((ref[6]+ref[6 +1]+(ref+stride)[6]+(ref+stride)[6 +1]+2)>>2)); dest[7] = (((ref[7]+ref[7 +1]+(ref+stride)[7]+(ref+stride)[7 +1]+2)>>2)); dest[8] = (((ref[8]+ref[8 +1]+(ref+stride)[8]+(ref+stride)[8 +1]+2)>>2)); dest[9] = (((ref[9]+ref[9 +1]+(ref+stride)[9]+(ref+stride)[9 +1]+2)>>2)); dest[10] = (((ref[10]+ref[10 +1]+(ref+stride)[10]+(ref+stride)[10 +1]+2)>>2)); dest[11] = (((ref[11]+ref[11 +1]+(ref+stride)[11]+(ref+stride)[11 +1]+2)>>2)); dest[12] = (((ref[12]+ref[12 +1]+(ref+stride)[12]+(ref+stride)[12 +1]+2)>>2)); dest[13] = (((ref[13]+ref[13 +1]+(ref+stride)[13]+(ref+stride)[13 +1]+2)>>2)); dest[14] = (((ref[14]+ref[14 +1]+(ref+stride)[14]+(ref+stride)[14 +1]+2)>>2)); dest[15] = (((ref[15]+ref[15 +1]+(ref+stride)[15]+(ref+stride)[15 +1]+2)>>2)); ref += stride; dest += stride; } while (--height); } #endif#ifdef JZ4740_MXU_OPTstatic void MC_put_xy_8_c (uint8_t * dest, const uint8_t * ref, const int stride, int height) { uint32_t ref_aln,ref_aln1,ref_aln2,ref_aln3,ref_rs,ref_rs1,ref_rs2,ref_rs3; ref_aln = ((uint32_t)ref - stride) & 0xFFFFFFFC; ref_aln1 = ((uint32_t)ref + 1 - stride) & 0xFFFFFFFC; ref_aln2 = ((uint32_t)ref ) & 0xFFFFFFFC; ref_aln3 = ((uint32_t)ref + 1) & 0xFFFFFFFC; ref_rs = 4 - ((uint32_t)ref & 3); ref_rs1 = 4 - (((uint32_t)ref + 1) & 3); ref_rs2 = 4 - (((uint32_t)ref + stride) & 3); ref_rs3 = 4 - (((uint32_t)ref + 1 + stride) & 3); dest -= stride; do { S32LDIV(xr1,ref_aln,stride,0x0); S32LDD(xr2,ref_aln,0x4); S32LDD(xr3,ref_aln,0x8); S32ALN(xr1,xr2,xr1,ref_rs); //xr1:ref[3]-[0] S32ALN(xr2,xr3,xr2,ref_rs); //xr2:ref[7]-[4] S32LDIV(xr5,ref_aln1,stride,0x0); S32LDD(xr6,ref_aln1,0x4); S32LDD(xr7,ref_aln1,0x8); S32ALN(xr5,xr6,xr5,ref_rs1); //xr5:ref[4]-[1] S32ALN(xr6,xr7,xr6,ref_rs1); //xr6:ref[8]-[5] Q8AVGR(xr1,xr5,xr1); Q8AVGR(xr2,xr6,xr2); S32LDIV(xr5,ref_aln2,stride,0x0); S32LDD(xr6,ref_aln2,0x4); S32LDD(xr7,ref_aln2,0x8); S32ALN(xr5,xr6,xr5,ref_rs2); //xr5:ref[stride+3]-[stride+0] S32ALN(xr6,xr7,xr6,ref_rs2); //xr6:ref[stride+7]-[stride+4] S32LDIV(xr9,ref_aln3,stride,0x0); S32LDD(xr10,ref_aln3,0x4); S32LDD(xr11,ref_aln3,0x8); S32ALN(xr9,xr10,xr9,ref_rs1); //xr9:ref[stride+4]-[stride+1] S32ALN(xr10,xr11,xr10,ref_rs1); //xr10:ref[stride+8]-[stride+5] Q8AVGR(xr5,xr9,xr5); Q8AVGR(xr6,xr10,xr6); Q8AVG(xr1,xr1,xr5); Q8AVG(xr2,xr2,xr6); S32SDIV(xr1,dest,stride,0x0); S32STD(xr2,dest,0x4); } while (--height); }#elsestatic void MC_put_xy_8_c (uint8_t * dest, const uint8_t * ref, const int stride, int height) { do { dest[0] = (((ref[0]+ref[0 +1]+(ref+stride)[0]+(ref+stride)[0 +1]+2)>>2)); dest[1] = (((ref[1]+ref[1 +1]+(ref+stride)[1]+(ref+stride)[1 +1]+2)>>2)); dest[2] = (((ref[2]+ref[2 +1]+(ref+stride)[2]+(ref+stride)[2 +1]+2)>>2)); dest[3] = (((ref[3]+ref[3 +1]+(ref+stride)[3]+(ref+stride)[3 +1]+2)>>2)); dest[4] = (((ref[4]+ref[4 +1]+(ref+stride)[4]+(ref+stride)[4 +1]+2)>>2)); dest[5] = (((ref[5]+ref[5 +1]+(ref+stride)[5]+(ref+stride)[5 +1]+2)>>2)); dest[6] = (((ref[6]+ref[6 +1]+(ref+stride)[6]+(ref+stride)[6 +1]+2)>>2)); dest[7] = (((ref[7]+ref[7 +1]+(ref+stride)[7]+(ref+stride)[7 +1]+2)>>2)); ref += stride; dest += stride; } while (--height); }#endif static void MC_avg_xy_16_c (uint8_t * dest, const uint8_t * ref, const int stride, int height) { do { dest[0] = (((((ref[0]+ref[0 +1]+(ref+stride)[0]+(ref+stride)[0 +1]+2)>>2))+dest[0]+1)>>1); dest[1] = (((((ref[1]+ref[1 +1]+(ref+stride)[1]+(ref+stride)[1 +1]+2)>>2))+dest[1]+1)>>1); dest[2] = (((((ref[2]+ref[2 +1]+(ref+stride)[2]+(ref+stride)[2 +1]+2)>>2))+dest[2]+1)>>1); dest[3] = (((((ref[3]+ref[3 +1]+(ref+stride)[3]+(ref+stride)[3 +1]+2)>>2))+dest[3]+1)>>1); dest[4] = (((((ref[4]+ref[4 +1]+(ref+stride)[4]+(ref+stride)[4 +1]+2)>>2))+dest[4]+1)>>1); dest[5] = (((((ref[5]+ref[5 +1]+(ref+stride)[5]+(ref+stride)[5 +1]+2)>>2))+dest[5]+1)>>1); dest[6] = (((((ref[6]+ref[6 +1]+(ref+stride)[6]+(ref+stride)[6 +1]+2)>>2))+dest[6]+1)>>1); dest[7] = (((((ref[7]+ref[7 +1]+(ref+stride)[7]+(ref+stride)[7 +1]+2)>>2))+dest[7]+1)>>1); dest[8] = (((((ref[8]+ref[8 +1]+(ref+stride)[8]+(ref+stride)[8 +1]+2)>>2))+dest[8]+1)>>1); dest[9] = (((((ref[9]+ref[9 +1]+(ref+stride)[9]+(ref+stride)[9 +1]+2)>>2))+dest[9]+1)>>1); dest[10] = (((((ref[10]+ref[10 +1]+(ref+stride)[10]+(ref+stride)[10 +1]+2)>>2))+dest[10]+1)>>1); dest[11] = (((((ref[11]+ref[11 +1]+(ref+stride)[11]+(ref+stride)[11 +1]+2)>>2))+dest[11]+1)>>1); dest[12] = (((((ref[12]+ref[12 +1]+(ref+stride)[12]+(ref+stride)[12 +1]+2)>>2))+dest[12]+1)>>1); dest[13] = (((((ref[13]+ref[13 +1]+(ref+stride)[13]+(ref+stride)[13 +1]+2)>>2))+dest[13]+1)>>1); dest[14] = (((((ref[14]+ref[14 +1]+(ref+stride)[14]+(ref+stride)[14 +1]+2)>>2))+dest[14]+1)>>1); dest[15] = (((((ref[15]+ref[15 +1]+(ref+stride)[15]+(ref+stride)[15 +1]+2)>>2))+dest[15]+1)>>1); ref += stride; dest += stride; } while (--height); } static void MC_avg_xy_8_c (uint8_t * dest, const uint8_t * ref, const int stride, int height) { do { dest[0] = (((((ref[0]+ref[0 +1]+(ref+stride)[0]+(ref+stride)[0 +1]+2)>>2))+dest[0]+1)>>1); dest[1] = (((((ref[1]+ref[1 +1]+(ref+stride)[1]+(ref+stride)[1 +1]+2)>>2))+dest[1]+1)>>1); dest[2] = (((((ref[2]+ref[2 +1]+(ref+stride)[2]+(ref+stride)[2 +1]+2)>>2))+dest[2]+1)>>1); dest[3] = (((((ref[3]+ref[3 +1]+(ref+stride)[3]+(ref+stride)[3 +1]+2)>>2))+dest[3]+1)>>1); dest[4] = (((((ref[4]+ref[4 +1]+(ref+stride)[4]+(ref+stride)[4 +1]+2)>>2))+dest[4]+1)>>1); dest[5] = (((((ref[5]+ref[5 +1]+(ref+stride)[5]+(ref+stride)[5 +1]+2)>>2))+dest[5]+1)>>1); dest[6] = (((((ref[6]+ref[6 +1]+(ref+stride)[6]+(ref+stride)[6 +1]+2)>>2))+dest[6]+1)>>1); dest[7] = (((((ref[7]+ref[7 +1]+(ref+stride)[7]+(ref+stride)[7 +1]+2)>>2))+dest[7]+1)>>1); ref += stride; dest += stride; } while (--height); } mpeg2_mc_t mpeg2_mc_c = { {MC_put_o_16_c, MC_put_x_16_c, MC_put_y_16_c, MC_put_xy_16_c, MC_put_o_8_c, MC_put_x_8_c, MC_put_y_8_c, MC_put_xy_8_c}, {MC_avg_o_16_c, MC_avg_x_16_c, MC_avg_y_16_c, MC_avg_xy_16_c, MC_avg_o_8_c, MC_avg_x_8_c, MC_avg_y_8_c, MC_avg_xy_8_c} };
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -