diff options
author | dcommander <dcommander@3789f03b-4d11-0410-bbf8-ca57d06f2519> | 2011-04-25 22:41:14 +0000 |
---|---|---|
committer | dcommander <dcommander@3789f03b-4d11-0410-bbf8-ca57d06f2519> | 2011-04-25 22:41:14 +0000 |
commit | a95c4e673e3e25e889dd81df9388e1034d18456c (patch) | |
tree | 79df9f747564be4a304e57f2ca8ceae4a9925f98 /branches | |
parent | 5635523aee96c307e1ba1beb4161b2763c6ac12e (diff) |
Eliminate excessive I/O overhead when reading BMP files in cjpeg
git-svn-id: https://libjpeg-turbo.svn.sourceforge.net/svnroot/libjpeg-turbo@592 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'branches')
-rw-r--r-- | branches/1.1.x/ChangeLog.txt | 3 | ||||
-rw-r--r-- | branches/1.1.x/rdbmp.c | 14 |
2 files changed, 10 insertions, 7 deletions
diff --git a/branches/1.1.x/ChangeLog.txt b/branches/1.1.x/ChangeLog.txt index 1f9928a..160b554 100644 --- a/branches/1.1.x/ChangeLog.txt +++ b/branches/1.1.x/ChangeLog.txt @@ -27,6 +27,9 @@ enabled. This specifically caused the jpegoptim program to fail if it was linked against a version of libjpeg-turbo that was built with libjpeg v7 or v8 emulation. +[6] Eliminated excessive I/O overhead that occurred when reading BMP files in +cjpeg. + 1.1.0 ===== diff --git a/branches/1.1.x/rdbmp.c b/branches/1.1.x/rdbmp.c index fd773d4..be32e43 100644 --- a/branches/1.1.x/rdbmp.c +++ b/branches/1.1.x/rdbmp.c @@ -3,6 +3,7 @@ * * Copyright (C) 1994-1996, Thomas G. Lane. * Modified 2009-2010 by Guido Vollbeding. + * Modified 2011 by Siarhei Siamashka. * This file is part of the Independent JPEG Group's software. * For conditions of distribution and use, see the accompanying README file. * @@ -220,10 +221,9 @@ preload_image (j_compress_ptr cinfo, cjpeg_source_ptr sinfo) { bmp_source_ptr source = (bmp_source_ptr) sinfo; register FILE *infile = source->pub.input_file; - register int c; register JSAMPROW out_ptr; JSAMPARRAY image_ptr; - JDIMENSION row, col; + JDIMENSION row; cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress; /* Read the data into a virtual array in input-file row order. */ @@ -237,11 +237,11 @@ preload_image (j_compress_ptr cinfo, cjpeg_source_ptr sinfo) ((j_common_ptr) cinfo, source->whole_image, row, (JDIMENSION) 1, TRUE); out_ptr = image_ptr[0]; - for (col = source->row_width; col > 0; col--) { - /* inline copy of read_byte() for speed */ - if ((c = getc(infile)) == EOF) - ERREXIT(cinfo, JERR_INPUT_EOF); - *out_ptr++ = (JSAMPLE) c; + if (fread(out_ptr, 1, source->row_width, infile) != source->row_width) { + if (feof(infile)) + ERREXIT(cinfo, JERR_INPUT_EOF); + else + ERREXIT(cinfo, JERR_FILE_READ); } } if (progress != NULL) |