📄 colorcvt.c
字号:
(CLIP8[y2 + guv] << 8) | (CLIP8[y2 + rv] << 16); /* next 2x2 block */ sy1 += 2; sy2 += 2; su += 1; sv += 1; d1 += 2*BPP4; d2 += 2*BPP4; } /* convert the last 2x1 block: */ if (dx & 1) { bu = butab[su[0]]; guv = gutab[su[0]] + gvtab[sv[0]]; rv = rvtab[sv[0]]; y1 = ytab[sy1[0]]; y2 = ytab[sy2[0]]; /* first line BGR0 */ *(unsigned int *)(d1+0) = (CLIP8[y1 + bu]) | (CLIP8[y1 + guv] << 8) | (CLIP8[y1 + rv] << 16); /* second line BGR0 */ *(unsigned int *)(d2+0) = (CLIP8[y2 + bu]) | (CLIP8[y2 + guv] << 8) | (CLIP8[y2 + rv] << 16); }}static void dblineI420toRGB32alpha (unsigned char *d1, unsigned char *d2, int dest_x, unsigned char *sy1, unsigned char *sy2, unsigned char *su, unsigned char *sv, int src_x, int dx){ register int y1, y2, ruv, guv, buv; register int i; /* convert first 2x1 block: */ if (src_x & 1) { buv = butab[su[0]] + bvtab[sv[0]]; guv = gutab[su[0]] + gvtab[sv[0]]; ruv = rutab[su[0]] + rvtab[sv[0]]; y1 = ytab[sy1[0]]; y2 = ytab[sy2[0]]; /* first line BGR0 */ *(unsigned int *)(d1+0) = (CLIP8[y1 + buv]) | (CLIP8[y1 + guv] << 8) | (CLIP8[y1 + ruv] << 16); /* second line BGR0 */ *(unsigned int *)(d2+0) = (CLIP8[y2 + buv]) | (CLIP8[y2 + guv] << 8) | (CLIP8[y2 + ruv] << 16); sy1 += 1; sy2 += 1; su += 1; sv += 1; /* shift luma !!! */ d1 += BPP4; d2 += BPP4; dx --; } /* convert all integral 2x2 blocks: */ for (i = 0; i < dx/2; i ++) { buv = butab[su[0]] + bvtab[sv[0]]; guv = gutab[su[0]] + gvtab[sv[0]]; ruv = rutab[su[0]] + rvtab[sv[0]]; y1 = ytab[sy1[0]]; y2 = ytab[sy2[0]]; /* first line BGR0 */ *(unsigned int *)(d1+0) = (CLIP8[y1 + buv]) | (CLIP8[y1 + guv] << 8) | (CLIP8[y1 + ruv] << 16); /* second line BGR0 */ *(unsigned int *)(d2+0) = (CLIP8[y2 + buv]) | (CLIP8[y2 + guv] << 8) | (CLIP8[y2 + ruv] << 16); y1 = ytab[sy1[1]]; y2 = ytab[sy2[1]]; /* first line BGR0 */ *(unsigned int *)(d1+BPP4) = (CLIP8[y1 + buv]) | (CLIP8[y1 + guv] << 8) | (CLIP8[y1 + ruv] << 16); /* second line BGR0 */ *(unsigned int *)(d2+BPP4) = (CLIP8[y2 + buv]) | (CLIP8[y2 + guv] << 8) | (CLIP8[y2 + ruv] << 16); /* next 2x2 block */ sy1 += 2; sy2 += 2; su += 1; sv += 1; d1 += 2*BPP4; d2 += 2*BPP4; } /* convert last 2x1 block: */ if (dx & 1) { buv = butab[su[0]] + bvtab[sv[0]]; guv = gutab[su[0]] + gvtab[sv[0]]; ruv = rutab[su[0]] + rvtab[sv[0]]; y1 = ytab[sy1[0]]; y2 = ytab[sy2[0]]; /* first line BGR0 */ *(unsigned int *)(d1+0) = (CLIP8[y1 + buv]) | (CLIP8[y1 + guv] << 8) | (CLIP8[y1 + ruv] << 16); /* second line BGR0 */ *(unsigned int *)(d2+0) = (CLIP8[y2 + buv]) | (CLIP8[y2 + guv] << 8) | (CLIP8[y2 + ruv] << 16); }}static void dblineI420toBGR32 (unsigned char *d1, unsigned char *d2, int dest_x, unsigned char *sy1, unsigned char *sy2, unsigned char *su, unsigned char *sv, int src_x, int dx){ register int y1, y2, rv, guv, bu; register int i; /* convert first 2x1 block: */ if (src_x & 1) { bu = butab[su[0]]; guv = gutab[su[0]] + gvtab[sv[0]]; rv = rvtab[sv[0]]; y1 = ytab[sy1[0]]; y2 = ytab[sy2[0]]; /* first line BGR0 */ *(unsigned int *)(d1+0) = (CLIP8[y1 + bu] << 16)| (CLIP8[y1 + guv] << 8) | (CLIP8[y1 + rv] << 0); /* second line BGR0 */ *(unsigned int *)(d2+0) = (CLIP8[y2 + bu] << 16)| (CLIP8[y2 + guv] << 8) | (CLIP8[y2 + rv] << 0); sy1 += 1; sy2 += 1; su += 1; sv += 1; /* shift luma !!! */ d1 += BPP4; d2 += BPP4; dx --; } /* convert all integral 2x2 blocks: */ for (i = 0; i < dx/2; i ++) { bu = butab[su[0]]; guv = gutab[su[0]] + gvtab[sv[0]]; rv = rvtab[sv[0]]; y1 = ytab[sy1[0]]; y2 = ytab[sy2[0]]; /* first line BGR0 */ *(unsigned int *)(d1+0) = (CLIP8[y1 + bu] << 16)| (CLIP8[y1 + guv] << 8) | (CLIP8[y1 + rv] << 0); /* second line BGR0 */ *(unsigned int *)(d2+0) = (CLIP8[y2 + bu] << 16)| (CLIP8[y2 + guv] << 8) | (CLIP8[y2 + rv] << 0); /* 2nd row: */ y1 = ytab[sy1[1]]; y2 = ytab[sy2[1]]; /* first line BGR0 */ *(unsigned int *)(d1+BPP4) = (CLIP8[y1 + bu] << 16)| (CLIP8[y1 + guv] << 8) | (CLIP8[y1 + rv] << 0); /* second line BGR0 */ *(unsigned int *)(d2+BPP4) = (CLIP8[y2 + bu] << 16)| (CLIP8[y2 + guv] << 8) | (CLIP8[y2 + rv] << 0); /* next 2x2 block */ sy1 += 2; sy2 += 2; su += 1; sv += 1; d1 += 2*BPP4; d2 += 2*BPP4; } /* convert the last 2x1 block: */ if (dx & 1) { bu = butab[su[0]]; guv = gutab[su[0]] + gvtab[sv[0]]; rv = rvtab[sv[0]]; y1 = ytab[sy1[0]]; y2 = ytab[sy2[0]]; /* first line BGR0 */ *(unsigned int *)(d1+0) = (CLIP8[y1 + bu] << 16)| (CLIP8[y1 + guv] << 8) | (CLIP8[y1 + rv] << 0); /* second line BGR0 */ *(unsigned int *)(d2+0) = (CLIP8[y2 + bu] << 16)| (CLIP8[y2 + guv] << 8) | (CLIP8[y2 + rv] << 0); }}static void dblineI420toBGR32alpha (unsigned char *d1, unsigned char *d2, int dest_x, unsigned char *sy1, unsigned char *sy2, unsigned char *su, unsigned char *sv, int src_x, int dx){ register int y1, y2, ruv, guv, buv; register int i; /* convert first 2x1 block: */ if (src_x & 1) { buv = butab[su[0]] + bvtab[sv[0]]; guv = gutab[su[0]] + gvtab[sv[0]]; ruv = rutab[su[0]] + rvtab[sv[0]]; y1 = ytab[sy1[0]]; y2 = ytab[sy2[0]]; /* first line BGR0 */ *(unsigned int *)(d1+0) = (CLIP8[y1 + buv] << 16)| (CLIP8[y1 + guv] << 8) | (CLIP8[y1 + ruv] << 0); /* second line BGR0 */ *(unsigned int *)(d2+0) = (CLIP8[y2 + buv] << 16)| (CLIP8[y2 + guv] << 8) | (CLIP8[y2 + ruv] << 0); sy1 += 1; sy2 += 1; su += 1; sv += 1; /* shift luma !!! */ d1 += BPP4; d2 += BPP4; dx --; } /* convert all integral 2x2 blocks: */ for (i = 0; i < dx/2; i ++) { buv = butab[su[0]] + bvtab[sv[0]]; guv = gutab[su[0]] + gvtab[sv[0]]; ruv = rutab[su[0]] + rvtab[sv[0]]; y1 = ytab[sy1[0]]; y2 = ytab[sy2[0]]; /* first line BGR0 */ *(unsigned int *)(d1+0) = (CLIP8[y1 + buv] << 16)| (CLIP8[y1 + guv] << 8) | (CLIP8[y1 + ruv] << 0); /* second line BGR0 */ *(unsigned int *)(d2+0) = (CLIP8[y2 + buv] << 16)| (CLIP8[y2 + guv] << 8) | (CLIP8[y2 + ruv] << 0); y1 = ytab[sy1[1]]; y2 = ytab[sy2[1]]; /* first line BGR0 */ *(unsigned int *)(d1+BPP4) = (CLIP8[y1 + buv] << 16)| (CLIP8[y1 + guv] << 8) | (CLIP8[y1 + ruv] << 0); /* second line BGR0 */ *(unsigned int *)(d2+BPP4) = (CLIP8[y2 + buv] << 16)| (CLIP8[y2 + guv] << 8) | (CLIP8[y2 + ruv] << 0); /* next 2x2 block */ sy1 += 2; sy2 += 2; su += 1; sv += 1; d1 += 2*BPP4; d2 += 2*BPP4; } /* convert last 2x1 block: */ if (dx & 1) { buv = butab[su[0]] + bvtab[sv[0]]; guv = gutab[su[0]] + gvtab[sv[0]]; ruv = rutab[su[0]] + rvtab[sv[0]]; y1 = ytab[sy1[0]]; y2 = ytab[sy2[0]]; /* first line BGR0 */ *(unsigned int *)(d1+0) = (CLIP8[y1 + buv] << 16)| (CLIP8[y1 + guv] << 8) | (CLIP8[y1 + ruv] << 0); /* second line BGR0 */ *(unsigned int *)(d2+0) = (CLIP8[y2 + buv] << 16)| (CLIP8[y2 + guv] << 8) | (CLIP8[y2 + ruv] << 0); }}static void dblineI420toRGB24 (unsigned char *d1, unsigned char *d2, int dest_x, unsigned char *sy1, unsigned char *sy2, unsigned char *su, unsigned char *sv, int src_x, int dx){ /* check if we can use a fast 32-bit code: */ if (LITTLE_ENDIAN && !((src_x ^ dest_x) & 1)) { /* aligned input/output on little-endian machine: */ register int y11, y12, y13, y14, y21, y22, y23, y24; register int rv, rv2, guv, guv2, bu, bu2; register int i; /* convert first 2x1 block: */ if (dest_x & 1) { bu = butab[su[0]]; guv = gutab[su[0]] + gvtab[sv[0]]; rv = rvtab[sv[0]]; y11 = ytab[sy1[0]]; y21 = ytab[sy2[0]]; /* first line BGR: */ d1[0] = CLIP8[y11 + bu]; d1[1] = CLIP8[y11 + guv]; d1[2] = CLIP8[y11 + rv]; /* second line BGR: */ d2[0] = CLIP8[y21 + bu]; d2[1] = CLIP8[y21 + guv]; d2[2] = CLIP8[y21 + rv]; sy1 += 1; sy2 += 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -