📄 display.c
字号:
y2 = *py2++; u = *pu++ >> 1; v = *pv++ >> 1; *dst++ = pixel[ytab[((y+y2)>>1)]|utab[u]|vtab[v]]; *dst2++ = pixel[ytab[y2+12]|utab[u+12]|vtab[v+12]]; y = *py++; y2 = *py2++; if (chroma_format==CHROMA444) { u = *pu++ >> 1; v = *pv++ >> 1; } *dst++ = pixel[ytab[((y+y2)>>1)+8]|utab[u+8]|vtab[v+8]]; *dst2++ = pixel[ytab[y2+4]|utab[u+4]|vtab[v+4]]; y = *py++; y2 = *py2++; u = *pu++ >> 1; v = *pv++ >> 1; *dst++ = pixel[ytab[((y+y2)>>1)+2]|utab[u+2]|vtab[v+2]]; *dst2++ = pixel[ytab[y2+14]|utab[u+14]|vtab[v+14]]; y = *py++; y2 = *py2++; if (chroma_format==CHROMA444) { u = *pu++ >> 1; v = *pv++ >> 1; } *dst++ = pixel[ytab[((y+y2)>>1)+10]|utab[u+10]|vtab[v+10]]; *dst2++ = pixel[ytab[y2+6]|utab[u+6]|vtab[v+6]]; } if (j==0) py -= coded_picture_width; else py += coded_picture_width; py2 += coded_picture_width; dst += coded_picture_width; dst2 += coded_picture_width; if (chroma_format==CHROMA420) { pu -= chrom_width; pv -= chrom_width; } else { pu += chrom_width; pv += chrom_width; } /* line j + 2. j + 3 */ for (i=0; i<coded_picture_width; i+=4) { y = *py++; y2 = *py2++; u = *pu++ >> 1; v = *pv++ >> 1; *dst++ = pixel[ytab[((y+y2)>>1)+3]|utab[u+3]|vtab[v+3]]; *dst2++ = pixel[ytab[y2+15]|utab[u+15]|vtab[v+15]]; y = *py++; y2 = *py2++; if (chroma_format==CHROMA444) { u = *pu++ >> 1; v = *pv++ >> 1; } *dst++ = pixel[ytab[((y+y2)>>1)+11]|utab[u+11]|vtab[v+11]]; *dst2++ = pixel[ytab[y2+7]|utab[u+7]|vtab[v+7]]; y = *py++; y2 = *py2++; u = *pu++ >> 1; v = *pv++ >> 1; *dst++ = pixel[ytab[((y+y2)>>1)+1]|utab[u+1]|vtab[v+1]]; *dst2++ = pixel[ytab[y2+13]|utab[u+13]|vtab[v+13]]; y = *py++; y2 = *py2++; if (chroma_format==CHROMA444) { u = *pu++ >> 1; v = *pv++ >> 1; } *dst++ = pixel[ytab[((y+y2)>>1)+9]|utab[u+9]|vtab[v+9]]; *dst2++ = pixel[ytab[y2+5]|utab[u+5]|vtab[v+5]]; } py += coded_picture_width; py2 += coded_picture_width; dst += coded_picture_width; dst2 += coded_picture_width; pu += chrom_width; pv += chrom_width; }}static void dithertop420(src,dst)unsigned char *src[];unsigned char *dst;{ int i,j; int y1,u1,v1,y2,u2,v2; unsigned char *py1,*pu1,*pv1,*py2,*pu2,*pv2,*dst2; py1 = src[0]; pu1 = src[1]; pv1 = src[2]; py2 = py1 + (coded_picture_width<<1); pu2 = pu1 + (chrom_width<<1); pv2 = pv1 + (chrom_width<<1); dst2 = dst + coded_picture_width; for (j=0; j<coded_picture_height; j+=4) { /* line j + 0, j + 1 */ for (i=0; i<coded_picture_width; i+=4) { y1 = *py1++; y2 = *py2++; u1 = *pu1++ >> 1; v1 = *pv1++ >> 1; u2 = *pu2++ >> 1; v2 = *pv2++ >> 1; *dst++ = pixel[ytab[((3*y1+y2)>>2)]|utab[u1]|vtab[v1]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+12]|utab[((3*u1+u2)>>2)+12] |vtab[((3*v1+v2)>>2)+12]]; y1 = *py1++; y2 = *py2++; *dst++ = pixel[ytab[((3*y1+y2)>>2)+8]|utab[u1+8]|vtab[v1+8]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+4]|utab[((3*u1+u2)>>2)+4] |vtab[((3*v1+v2)>>2)+4]]; y1 = *py1++; y2 = *py2++; u1 = *pu1++ >> 1; v1 = *pv1++ >> 1; u2 = *pu2++ >> 1; v2 = *pv2++ >> 1; *dst++ = pixel[ytab[((3*y1+y2)>>2)+2]|utab[u1+2]|vtab[v1+2]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+14]|utab[((3*u1+u2)>>2)+14] |vtab[((3*v1+v2)>>2)+14]]; y1 = *py1++; y2 = *py2++; *dst++ = pixel[ytab[((3*y1+y2)>>2)+10]|utab[u1+10]|vtab[v1+10]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+6]|utab[((3*u1+u2)>>2)+6] |vtab[((3*v1+v2)>>2)+6]]; } py1 += coded_picture_width; if (j!=(coded_picture_height-4)) py2 += coded_picture_width; else py2 -= coded_picture_width; pu1 -= chrom_width; pv1 -= chrom_width; pu2 -= chrom_width; pv2 -= chrom_width; dst += coded_picture_width; dst2 += coded_picture_width; /* line j + 2, j + 3 */ for (i=0; i<coded_picture_width; i+=4) { y1 = *py1++; y2 = *py2++; u1 = *pu1++ >> 1; v1 = *pv1++ >> 1; u2 = *pu2++ >> 1; v2 = *pv2++ >> 1; *dst++ = pixel[ytab[((3*y1+y2)>>2)+3]|utab[((u1+u2)>>1)+3] |vtab[((v1+v2)>>1)+3]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+15]|utab[((u1+3*u2)>>2)+15] |vtab[((v1+3*v2)>>2)+15]]; y1 = *py1++; y2 = *py2++; *dst++ = pixel[ytab[((3*y1+y2)>>2)+11]|utab[((u1+u2)>>1)+11] |vtab[((v1+v2)>>1)+11]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+7]|utab[((u1+3*u2)>>2)+7] |vtab[((v1+3*v2)>>2)+7]]; y1 = *py1++; y2 = *py2++; u1 = *pu1++ >> 1; v1 = *pv1++ >> 1; u2 = *pu2++ >> 1; v2 = *pv2++ >> 1; *dst++ = pixel[ytab[((3*y1+y2)>>2)+1]|utab[((u1+u2)>>1)+1] |vtab[((v1+v2)>>1)+1]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+13]|utab[((u1+3*u2)>>2)+13] |vtab[((v1+3*v2)>>2)+13]]; y1 = *py1++; y2 = *py2++; *dst++ = pixel[ytab[((3*y1+y2)>>2)+9]|utab[((u1+u2)>>1)+9] |vtab[((v1+v2)>>1)+9]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+5]|utab[((u1+3*u2)>>2)+5] |vtab[((v1+3*v2)>>2)+5]]; } py1 += coded_picture_width; py2 += coded_picture_width; pu1 += chrom_width; pv1 += chrom_width; if (j!=(coded_picture_height-8)) { pu2 += chrom_width; pv2 += chrom_width; } else { pu2 -= chrom_width; pv2 -= chrom_width; } dst += coded_picture_width; dst2+= coded_picture_width; }}static void ditherbot420(src,dst)unsigned char *src[];unsigned char *dst;{ int i,j; int y1,u1,v1,y2,u2,v2; unsigned char *py1,*pu1,*pv1,*py2,*pu2,*pv2,*dst2; py2 = py1 = src[0] + coded_picture_width; pu2 = pu1 = src[1] + chrom_width; pv2 = pv1 = src[2] + chrom_width; dst2 = dst; for (j=0; j<coded_picture_height; j+=4) { /* line j + 0, j + 1 */ for (i=0; i<coded_picture_width; i+=4) { y1 = *py1++; y2 = *py2++; u1 = *pu1++ >> 1; v1 = *pv1++ >> 1; u2 = *pu2++ >> 1; v2 = *pv2++ >> 1; *dst++ = pixel[ytab[((3*y1+y2)>>2)+15]|utab[((3*u1+u2)>>2)+15] |vtab[((3*v1+v2)>>2)+15]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)]|utab[((u1+u2)>>1)] |vtab[((v1+v2)>>1)]]; y1 = *py1++; y2 = *py2++; *dst++ = pixel[ytab[((3*y1+y2)>>2)+7]|utab[((3*u1+u2)>>2)+7] |vtab[((3*v1+v2)>>2)+7]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+8]|utab[((u1+u2)>>1)+8] |vtab[((v1+v2)>>1)+8]]; y1 = *py1++; y2 = *py2++; u1 = *pu1++ >> 1; v1 = *pv1++ >> 1; u2 = *pu2++ >> 1; v2 = *pv2++ >> 1; *dst++ = pixel[ytab[((3*y1+y2)>>2)+13]|utab[((3*u1+u2)>>2)+13] |vtab[((3*v1+v2)>>2)+13]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+2]|utab[((u1+u2)>>1)+2] |vtab[((v1+v2)>>1)+2]]; y1 = *py1++; y2 = *py2++; *dst++ = pixel[ytab[((3*y1+y2)>>2)+5]|utab[((3*u1+u2)>>2)+5] |vtab[((3*v1+v2)>>2)+5]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+10]|utab[((u1+u2)>>1)+10] |vtab[((v1+v2)>>1)+10]]; } if (j!=0) py1 += coded_picture_width; else py1 -= coded_picture_width; py2 += coded_picture_width; pu1 -= chrom_width; pv1 -= chrom_width; pu2 -= chrom_width; pv2 -= chrom_width; if (j!=0) dst += coded_picture_width; dst2 += coded_picture_width; /* line j + 2, j + 3 */ for (i=0; i<coded_picture_width; i+=4) { y1 = *py1++; y2 = *py2++; u1 = *pu1++ >> 1; v1 = *pv1++ >> 1; u2 = *pu2++ >> 1; v2 = *pv2++ >> 1; *dst++ = pixel[ytab[((3*y1+y2)>>2)+12]|utab[((u1+3*u2)>>2)+12] |vtab[((v1+3*v2)>>2)+12]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+3]|utab[u2+3] |vtab[v2+3]]; y1 = *py1++; y2 = *py2++; *dst++ = pixel[ytab[((3*y1+y2)>>2)+4]|utab[((u1+3*u2)>>2)+4] |vtab[((v1+3*v2)>>2)+4]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+11]|utab[u2+11] |vtab[v2+11]]; y1 = *py1++; y2 = *py2++; u1 = *pu1++ >> 1; v1 = *pv1++ >> 1; u2 = *pu2++ >> 1; v2 = *pv2++ >> 1; *dst++ = pixel[ytab[((3*y1+y2)>>2)+14]|utab[((u1+3*u2)>>2)+14] |vtab[((v1+3*v2)>>2)+14]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+1]|utab[u2+1] |vtab[v2+1]]; y1 = *py1++; y2 = *py2++; *dst++ = pixel[ytab[((3*y1+y2)>>2)+6]|utab[((u1+3*u2)>>2)+6] |vtab[((v1+3*v2)>>2)+6]]; *dst2++ = pixel[ytab[((y1+3*y2)>>2)+9]|utab[u2+9] |vtab[v2+9]]; } py1 += coded_picture_width; py2 += coded_picture_width; if (j!=0) { pu1 += chrom_width; pv1 += chrom_width; } else { pu1 -= chrom_width; pv1 -= chrom_width; } pu2 += chrom_width; pv2 += chrom_width; dst += coded_picture_width; dst2+= coded_picture_width; } py2 -= (coded_picture_width<<1); pu2 -= (chrom_width<<1); pv2 -= (chrom_width<<1); /* dither last line */ for (i=0; i<coded_picture_width; i+=4) { y1 = *py1++; y2 = *py2++; u1 = *pu1++ >> 1; v1 = *pv1++ >> 1; u2 = *pu2++ >> 1; v2 = *pv2++ >> 1; *dst++ = pixel[ytab[((3*y1+y2)>>2)+15]|utab[((3*u1+u2)>>2)+15] |vtab[((3*v1+v2)>>2)+15]]; y1 = *py1++; y2 = *py2++; *dst++ = pixel[ytab[((3*y1+y2)>>2)+7]|utab[((3*u1+u2)>>2)+7] |vtab[((3*v1+v2)>>2)+7]]; y1 = *py1++; y2 = *py2++; u1 = *pu1++ >> 1; v1 = *pv1++ >> 1; u2 = *pu2++ >> 1; v2 = *pv2++ >> 1; *dst++ = pixel[ytab[((3*y1+y2)>>2)+13]|utab[((3*u1+u2)>>2)+13] |vtab[((3*v1+v2)>>2)+13]]; y1 = *py1++; y2 = *py2++; *dst++ = pixel[ytab[((3*y1+y2)>>2)+5]|utab[((3*u1+u2)>>2)+5] |vtab[((3*v1+v2)>>2)+5]]; }}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -