| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| INLINE |
| LOCAL(void) |
| rgb_ycc_convert_internal(j_compress_ptr cinfo, JSAMPARRAY input_buf, |
| JSAMPIMAGE output_buf, JDIMENSION output_row, |
| int num_rows) |
| { |
| my_cconvert_ptr cconvert = (my_cconvert_ptr)cinfo->cconvert; |
| register int r, g, b; |
| register JLONG *ctab = cconvert->rgb_ycc_tab; |
| register JSAMPROW inptr; |
| register JSAMPROW outptr0, outptr1, outptr2; |
| register JDIMENSION col; |
| JDIMENSION num_cols = cinfo->image_width; |
| |
| while (--num_rows >= 0) { |
| inptr = *input_buf++; |
| outptr0 = output_buf[0][output_row]; |
| outptr1 = output_buf[1][output_row]; |
| outptr2 = output_buf[2][output_row]; |
| output_row++; |
| for (col = 0; col < num_cols; col++) { |
| r = GETJSAMPLE(inptr[RGB_RED]); |
| g = GETJSAMPLE(inptr[RGB_GREEN]); |
| b = GETJSAMPLE(inptr[RGB_BLUE]); |
| inptr += RGB_PIXELSIZE; |
| |
| |
| |
| |
| |
| |
| outptr0[col] = (JSAMPLE)((ctab[r + R_Y_OFF] + ctab[g + G_Y_OFF] + |
| ctab[b + B_Y_OFF]) >> SCALEBITS); |
| |
| outptr1[col] = (JSAMPLE)((ctab[r + R_CB_OFF] + ctab[g + G_CB_OFF] + |
| ctab[b + B_CB_OFF]) >> SCALEBITS); |
| |
| outptr2[col] = (JSAMPLE)((ctab[r + R_CR_OFF] + ctab[g + G_CR_OFF] + |
| ctab[b + B_CR_OFF]) >> SCALEBITS); |
| } |
| } |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| INLINE |
| LOCAL(void) |
| rgb_gray_convert_internal(j_compress_ptr cinfo, JSAMPARRAY input_buf, |
| JSAMPIMAGE output_buf, JDIMENSION output_row, |
| int num_rows) |
| { |
| my_cconvert_ptr cconvert = (my_cconvert_ptr)cinfo->cconvert; |
| register int r, g, b; |
| register JLONG *ctab = cconvert->rgb_ycc_tab; |
| register JSAMPROW inptr; |
| register JSAMPROW outptr; |
| register JDIMENSION col; |
| JDIMENSION num_cols = cinfo->image_width; |
| |
| while (--num_rows >= 0) { |
| inptr = *input_buf++; |
| outptr = output_buf[0][output_row]; |
| output_row++; |
| for (col = 0; col < num_cols; col++) { |
| r = GETJSAMPLE(inptr[RGB_RED]); |
| g = GETJSAMPLE(inptr[RGB_GREEN]); |
| b = GETJSAMPLE(inptr[RGB_BLUE]); |
| inptr += RGB_PIXELSIZE; |
| |
| outptr[col] = (JSAMPLE)((ctab[r + R_Y_OFF] + ctab[g + G_Y_OFF] + |
| ctab[b + B_Y_OFF]) >> SCALEBITS); |
| } |
| } |
| } |
| |
| |
| |
| |
| |
| |
| |
| INLINE |
| LOCAL(void) |
| rgb_rgb_convert_internal(j_compress_ptr cinfo, JSAMPARRAY input_buf, |
| JSAMPIMAGE output_buf, JDIMENSION output_row, |
| int num_rows) |
| { |
| register JSAMPROW inptr; |
| register JSAMPROW outptr0, outptr1, outptr2; |
| register JDIMENSION col; |
| JDIMENSION num_cols = cinfo->image_width; |
| |
| while (--num_rows >= 0) { |
| inptr = *input_buf++; |
| outptr0 = output_buf[0][output_row]; |
| outptr1 = output_buf[1][output_row]; |
| outptr2 = output_buf[2][output_row]; |
| output_row++; |
| for (col = 0; col < num_cols; col++) { |
| outptr0[col] = GETJSAMPLE(inptr[RGB_RED]); |
| outptr1[col] = GETJSAMPLE(inptr[RGB_GREEN]); |
| outptr2[col] = GETJSAMPLE(inptr[RGB_BLUE]); |
| inptr += RGB_PIXELSIZE; |
| } |
| } |
| } |