diff options
author | dcommander <dcommander@632fc199-4ca6-4c93-a231-07263d6284db> | 2009-09-24 06:18:25 +0000 |
---|---|---|
committer | dcommander <dcommander@632fc199-4ca6-4c93-a231-07263d6284db> | 2009-09-24 06:18:25 +0000 |
commit | 01d039fd938c51991a5c62ad1bf31ac188e140d1 (patch) | |
tree | f5b3c9d4a07f7a27c89ec761ae40d29a7807c2a9 /jdcolor.c | |
parent | 1417e2b9b3fc73bde032138df58aeed225ac34aa (diff) |
Significantly improve grayscale performance
git-svn-id: svn://svn.code.sf.net/p/libjpeg-turbo/code/trunk@63 632fc199-4ca6-4c93-a231-07263d6284db
Diffstat (limited to 'jdcolor.c')
-rw-r--r-- | jdcolor.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -222,18 +222,21 @@ gray_rgb_convert (j_decompress_ptr cinfo, JSAMPARRAY output_buf, int num_rows) { register JSAMPROW inptr, outptr; + JSAMPLE *maxinptr; register JDIMENSION col; JDIMENSION num_cols = cinfo->output_width; + int rindex = rgb_red[cinfo->out_color_space]; + int gindex = rgb_green[cinfo->out_color_space]; + int bindex = rgb_blue[cinfo->out_color_space]; + int rgbstride = rgb_pixelsize[cinfo->out_color_space]; while (--num_rows >= 0) { inptr = input_buf[0][input_row++]; + maxinptr = &inptr[num_cols]; outptr = *output_buf++; - for (col = 0; col < num_cols; col++) { + for (; inptr < maxinptr; inptr++, outptr += rgbstride) { /* We can dispense with GETJSAMPLE() here */ - outptr[rgb_red[cinfo->out_color_space]] = - outptr[rgb_green[cinfo->out_color_space]] = - outptr[rgb_blue[cinfo->out_color_space]] = inptr[col]; - outptr += rgb_pixelsize[cinfo->out_color_space]; + outptr[rindex] = outptr[gindex] = outptr[bindex] = *inptr; } } } |