aboutsummaryrefslogtreecommitdiff
path: root/jdcolor.c
diff options
context:
space:
mode:
authordcommander <dcommander@632fc199-4ca6-4c93-a231-07263d6284db>2009-09-24 06:18:25 +0000
committerdcommander <dcommander@632fc199-4ca6-4c93-a231-07263d6284db>2009-09-24 06:18:25 +0000
commit01d039fd938c51991a5c62ad1bf31ac188e140d1 (patch)
treef5b3c9d4a07f7a27c89ec761ae40d29a7807c2a9 /jdcolor.c
parent1417e2b9b3fc73bde032138df58aeed225ac34aa (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.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/jdcolor.c b/jdcolor.c
index 8e638c9..e02ea4f 100644
--- a/jdcolor.c
+++ b/jdcolor.c
@@ -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;
}
}
}