⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 motion_comp.c

📁 君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图片解码,浏览,电子书,录音,想学ucos,识货的人就下吧 russblock fmradio explore set
💻 C
📖 第 1 页 / 共 2 页
字号:
        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 + -