Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Side by Side Diff: third_party/libjpeg_turbo/jdatasrc.c

Issue 7554002: Updates libjpeg-turbo to 1.1.90 (r677) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/
Patch Set: '' Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/libjpeg_turbo/jdatadst-tj.c ('k') | third_party/libjpeg_turbo/jdatasrc-tj.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * jdatasrc.c 2 * jdatasrc.c
3 * 3 *
4 * Copyright (C) 1994-1996, Thomas G. Lane. 4 * Copyright (C) 1994-1996, Thomas G. Lane.
5 * Modified 2009-2010 by Guido Vollbeding.
5 * This file is part of the Independent JPEG Group's software. 6 * This file is part of the Independent JPEG Group's software.
6 * For conditions of distribution and use, see the accompanying README file. 7 * For conditions of distribution and use, see the accompanying README file.
7 * 8 *
8 * This file contains decompression data source routines for the case of 9 * This file contains decompression data source routines for the case of
9 * reading JPEG data from a file (or any stdio stream). While these routines 10 * reading JPEG data from memory or from a file (or any stdio stream).
10 * are sufficient for most applications, some will want to use a different 11 * While these routines are sufficient for most applications,
11 * source manager. 12 * some will want to use a different source manager.
12 * IMPORTANT: we assume that fread() will correctly transcribe an array of 13 * IMPORTANT: we assume that fread() will correctly transcribe an array of
13 * JOCTETs from 8-bit-wide elements on external storage. If char is wider 14 * JOCTETs from 8-bit-wide elements on external storage. If char is wider
14 * than 8 bits on your machine, you may need to do some tweaking. 15 * than 8 bits on your machine, you may need to do some tweaking.
15 */ 16 */
16 17
17 /* this is not a core library module, so it doesn't define JPEG_INTERNALS */ 18 /* this is not a core library module, so it doesn't define JPEG_INTERNALS */
18 #include "jinclude.h" 19 #include "jinclude.h"
19 #include "jpeglib.h" 20 #include "jpeglib.h"
20 #include "jerror.h" 21 #include "jerror.h"
21 22
(...skipping 23 matching lines...) Expand all
45 { 46 {
46 my_src_ptr src = (my_src_ptr) cinfo->src; 47 my_src_ptr src = (my_src_ptr) cinfo->src;
47 48
48 /* We reset the empty-input-file flag for each image, 49 /* We reset the empty-input-file flag for each image,
49 * but we don't clear the input buffer. 50 * but we don't clear the input buffer.
50 * This is correct behavior for reading a series of images from one source. 51 * This is correct behavior for reading a series of images from one source.
51 */ 52 */
52 src->start_of_file = TRUE; 53 src->start_of_file = TRUE;
53 } 54 }
54 55
56 #if JPEG_LIB_VERSION >= 80
57 METHODDEF(void)
58 init_mem_source (j_decompress_ptr cinfo)
59 {
60 /* no work necessary here */
61 }
62 #endif
63
55 64
56 /* 65 /*
57 * Fill the input buffer --- called whenever buffer is emptied. 66 * Fill the input buffer --- called whenever buffer is emptied.
58 * 67 *
59 * In typical applications, this should read fresh data into the buffer 68 * In typical applications, this should read fresh data into the buffer
60 * (ignoring the current state of next_input_byte & bytes_in_buffer), 69 * (ignoring the current state of next_input_byte & bytes_in_buffer),
61 * reset the pointer & count to the start of the buffer, and return TRUE 70 * reset the pointer & count to the start of the buffer, and return TRUE
62 * indicating that the buffer has been reloaded. It is not necessary to 71 * indicating that the buffer has been reloaded. It is not necessary to
63 * fill the buffer entirely, only to obtain at least one more byte. 72 * fill the buffer entirely, only to obtain at least one more byte.
64 * 73 *
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 nbytes = 2; 113 nbytes = 2;
105 } 114 }
106 115
107 src->pub.next_input_byte = src->buffer; 116 src->pub.next_input_byte = src->buffer;
108 src->pub.bytes_in_buffer = nbytes; 117 src->pub.bytes_in_buffer = nbytes;
109 src->start_of_file = FALSE; 118 src->start_of_file = FALSE;
110 119
111 return TRUE; 120 return TRUE;
112 } 121 }
113 122
123 #if JPEG_LIB_VERSION >= 80
124 METHODDEF(boolean)
125 fill_mem_input_buffer (j_decompress_ptr cinfo)
126 {
127 static JOCTET mybuffer[4];
128
129 /* The whole JPEG data is expected to reside in the supplied memory
130 * buffer, so any request for more data beyond the given buffer size
131 * is treated as an error.
132 */
133 WARNMS(cinfo, JWRN_JPEG_EOF);
134 /* Insert a fake EOI marker */
135 mybuffer[0] = (JOCTET) 0xFF;
136 mybuffer[1] = (JOCTET) JPEG_EOI;
137
138 cinfo->src->next_input_byte = mybuffer;
139 cinfo->src->bytes_in_buffer = 2;
140
141 return TRUE;
142 }
143 #endif
144
114 145
115 /* 146 /*
116 * Skip data --- used to skip over a potentially large amount of 147 * Skip data --- used to skip over a potentially large amount of
117 * uninteresting data (such as an APPn marker). 148 * uninteresting data (such as an APPn marker).
118 * 149 *
119 * Writers of suspendable-input applications must note that skip_input_data 150 * Writers of suspendable-input applications must note that skip_input_data
120 * is not granted the right to give a suspension return. If the skip extends 151 * is not granted the right to give a suspension return. If the skip extends
121 * beyond the data currently in the buffer, the buffer can be marked empty so 152 * beyond the data currently in the buffer, the buffer can be marked empty so
122 * that the next read will cause a fill_input_buffer call that can suspend. 153 * that the next read will cause a fill_input_buffer call that can suspend.
123 * Arranging for additional bytes to be discarded before reloading the input 154 * Arranging for additional bytes to be discarded before reloading the input
124 * buffer is the application writer's problem. 155 * buffer is the application writer's problem.
125 */ 156 */
126 157
127 METHODDEF(void) 158 METHODDEF(void)
128 skip_input_data (j_decompress_ptr cinfo, long num_bytes) 159 skip_input_data (j_decompress_ptr cinfo, long num_bytes)
129 { 160 {
130 my_src_ptr src = (my_src_ptr) cinfo->src; 161 struct jpeg_source_mgr * src = cinfo->src;
131 162
132 /* Just a dumb implementation for now. Could use fseek() except 163 /* Just a dumb implementation for now. Could use fseek() except
133 * it doesn't work on pipes. Not clear that being smart is worth 164 * it doesn't work on pipes. Not clear that being smart is worth
134 * any trouble anyway --- large skips are infrequent. 165 * any trouble anyway --- large skips are infrequent.
135 */ 166 */
136 if (num_bytes > 0) { 167 if (num_bytes > 0) {
137 while (num_bytes > (long) src->pub.bytes_in_buffer) { 168 while (num_bytes > (long) src->bytes_in_buffer) {
138 num_bytes -= (long) src->pub.bytes_in_buffer; 169 num_bytes -= (long) src->bytes_in_buffer;
139 (void) fill_input_buffer(cinfo); 170 (void) (*src->fill_input_buffer) (cinfo);
140 /* note we assume that fill_input_buffer will never return FALSE, 171 /* note we assume that fill_input_buffer will never return FALSE,
141 * so suspension need not be handled. 172 * so suspension need not be handled.
142 */ 173 */
143 } 174 }
144 src->pub.next_input_byte += (size_t) num_bytes; 175 src->next_input_byte += (size_t) num_bytes;
145 src->pub.bytes_in_buffer -= (size_t) num_bytes; 176 src->bytes_in_buffer -= (size_t) num_bytes;
146 } 177 }
147 } 178 }
148 179
149 180
150 /* 181 /*
151 * An additional method that can be provided by data source modules is the 182 * An additional method that can be provided by data source modules is the
152 * resync_to_restart method for error recovery in the presence of RST markers. 183 * resync_to_restart method for error recovery in the presence of RST markers.
153 * For the moment, this source module just uses the default resync method 184 * For the moment, this source module just uses the default resync method
154 * provided by the JPEG library. That method assumes that no backtracking 185 * provided by the JPEG library. That method assumes that no backtracking
155 * is possible. 186 * is possible.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 src = (my_src_ptr) cinfo->src; 234 src = (my_src_ptr) cinfo->src;
204 src->pub.init_source = init_source; 235 src->pub.init_source = init_source;
205 src->pub.fill_input_buffer = fill_input_buffer; 236 src->pub.fill_input_buffer = fill_input_buffer;
206 src->pub.skip_input_data = skip_input_data; 237 src->pub.skip_input_data = skip_input_data;
207 src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */ 238 src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */
208 src->pub.term_source = term_source; 239 src->pub.term_source = term_source;
209 src->infile = infile; 240 src->infile = infile;
210 src->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */ 241 src->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */
211 src->pub.next_input_byte = NULL; /* until buffer loaded */ 242 src->pub.next_input_byte = NULL; /* until buffer loaded */
212 } 243 }
244
245
246 #if JPEG_LIB_VERSION >= 80
247 /*
248 * Prepare for input from a supplied memory buffer.
249 * The buffer must contain the whole JPEG data.
250 */
251
252 GLOBAL(void)
253 jpeg_mem_src (j_decompress_ptr cinfo,
254 unsigned char * inbuffer, unsigned long insize)
255 {
256 struct jpeg_source_mgr * src;
257
258 if (inbuffer == NULL || insize == 0) /* Treat empty input as fatal error */
259 ERREXIT(cinfo, JERR_INPUT_EMPTY);
260
261 /* The source object is made permanent so that a series of JPEG images
262 * can be read from the same buffer by calling jpeg_mem_src only before
263 * the first one.
264 */
265 if (cinfo->src == NULL) { /* first time for this JPEG object? */
266 cinfo->src = (struct jpeg_source_mgr *)
267 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
268 SIZEOF(struct jpeg_source_mgr));
269 }
270
271 src = cinfo->src;
272 src->init_source = init_mem_source;
273 src->fill_input_buffer = fill_mem_input_buffer;
274 src->skip_input_data = skip_input_data;
275 src->resync_to_restart = jpeg_resync_to_restart; /* use default method */
276 src->term_source = term_source;
277 src->bytes_in_buffer = (size_t) insize;
278 src->next_input_byte = (JOCTET *) inbuffer;
279 }
280 #endif
OLDNEW
« no previous file with comments | « third_party/libjpeg_turbo/jdatadst-tj.c ('k') | third_party/libjpeg_turbo/jdatasrc-tj.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698