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

Side by Side Diff: jdmaster.c

Issue 1270213002: Add support for decoding to 565 to libjpeg_turbo (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git@master
Patch Set: Link crbug in the README Created 5 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
« no previous file with comments | « jdcolor.c ('k') | jdmerge.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 * jdmaster.c 2 * jdmaster.c
3 * 3 *
4 * This file was part of the Independent JPEG Group's software: 4 * This file was part of the Independent JPEG Group's software:
5 * Copyright (C) 1991-1997, Thomas G. Lane. 5 * Copyright (C) 1991-1997, Thomas G. Lane.
6 * Modified 2002-2009 by Guido Vollbeding. 6 * Modified 2002-2009 by Guido Vollbeding.
7 * libjpeg-turbo Modifications: 7 * libjpeg-turbo Modifications:
8 * Copyright (C) 2009-2011, D. R. Commander. 8 * Copyright (C) 2009-2011, D. R. Commander.
9 * Copyright (C) 2013, Linaro Limited.
10
9 * For conditions of distribution and use, see the accompanying README file. 11 * For conditions of distribution and use, see the accompanying README file.
10 * 12 *
11 * This file contains master control logic for the JPEG decompressor. 13 * This file contains master control logic for the JPEG decompressor.
12 * These routines are concerned with selecting the modules to be executed 14 * These routines are concerned with selecting the modules to be executed
13 * and with determining the number of passes and the work to be done in each 15 * and with determining the number of passes and the work to be done in each
14 * pass. 16 * pass.
15 */ 17 */
16 18
17 #define JPEG_INTERNALS 19 #define JPEG_INTERNALS
18 #include "jinclude.h" 20 #include "jinclude.h"
(...skipping 25 matching lines...) Expand all
44 * CRUCIAL: this must match the actual capabilities of jdmerge.c! 46 * CRUCIAL: this must match the actual capabilities of jdmerge.c!
45 */ 47 */
46 48
47 LOCAL(boolean) 49 LOCAL(boolean)
48 use_merged_upsample (j_decompress_ptr cinfo) 50 use_merged_upsample (j_decompress_ptr cinfo)
49 { 51 {
50 #ifdef UPSAMPLE_MERGING_SUPPORTED 52 #ifdef UPSAMPLE_MERGING_SUPPORTED
51 /* Merging is the equivalent of plain box-filter upsampling */ 53 /* Merging is the equivalent of plain box-filter upsampling */
52 if (cinfo->do_fancy_upsampling || cinfo->CCIR601_sampling) 54 if (cinfo->do_fancy_upsampling || cinfo->CCIR601_sampling)
53 return FALSE; 55 return FALSE;
54 /* jdmerge.c only supports YCC=>RGB color conversion */ 56 /* jdmerge.c only supports YCC=>RGB and YCC=>RGB565 color conversion */
55 if (cinfo->jpeg_color_space != JCS_YCbCr || cinfo->num_components != 3 || 57 if (cinfo->jpeg_color_space != JCS_YCbCr || cinfo->num_components != 3 ||
56 (cinfo->out_color_space != JCS_RGB && 58 (cinfo->out_color_space != JCS_RGB &&
59 cinfo->out_color_space != JCS_RGB565 &&
57 cinfo->out_color_space != JCS_EXT_RGB && 60 cinfo->out_color_space != JCS_EXT_RGB &&
58 cinfo->out_color_space != JCS_EXT_RGBX && 61 cinfo->out_color_space != JCS_EXT_RGBX &&
59 cinfo->out_color_space != JCS_EXT_BGR && 62 cinfo->out_color_space != JCS_EXT_BGR &&
60 cinfo->out_color_space != JCS_EXT_BGRX && 63 cinfo->out_color_space != JCS_EXT_BGRX &&
61 cinfo->out_color_space != JCS_EXT_XBGR && 64 cinfo->out_color_space != JCS_EXT_XBGR &&
62 cinfo->out_color_space != JCS_EXT_XRGB && 65 cinfo->out_color_space != JCS_EXT_XRGB &&
63 cinfo->out_color_space != JCS_EXT_RGBA && 66 cinfo->out_color_space != JCS_EXT_RGBA &&
64 cinfo->out_color_space != JCS_EXT_BGRA && 67 cinfo->out_color_space != JCS_EXT_BGRA &&
65 cinfo->out_color_space != JCS_EXT_ABGR && 68 cinfo->out_color_space != JCS_EXT_ABGR &&
66 cinfo->out_color_space != JCS_EXT_ARGB) || 69 cinfo->out_color_space != JCS_EXT_ARGB))
67 cinfo->out_color_components != rgb_pixelsize[cinfo->out_color_space]) 70 return FALSE;
71 if ((cinfo->out_color_space == JCS_RGB565 &&
72 cinfo->out_color_components != 3) ||
73 (cinfo->out_color_space != JCS_RGB565 &&
74 cinfo->out_color_components != rgb_pixelsize[cinfo->out_color_space]))
68 return FALSE; 75 return FALSE;
69 /* and it only handles 2h1v or 2h2v sampling ratios */ 76 /* and it only handles 2h1v or 2h2v sampling ratios */
70 if (cinfo->comp_info[0].h_samp_factor != 2 || 77 if (cinfo->comp_info[0].h_samp_factor != 2 ||
71 cinfo->comp_info[1].h_samp_factor != 1 || 78 cinfo->comp_info[1].h_samp_factor != 1 ||
72 cinfo->comp_info[2].h_samp_factor != 1 || 79 cinfo->comp_info[2].h_samp_factor != 1 ||
73 cinfo->comp_info[0].v_samp_factor > 2 || 80 cinfo->comp_info[0].v_samp_factor > 2 ||
74 cinfo->comp_info[1].v_samp_factor != 1 || 81 cinfo->comp_info[1].v_samp_factor != 1 ||
75 cinfo->comp_info[2].v_samp_factor != 1) 82 cinfo->comp_info[2].v_samp_factor != 1)
76 return FALSE; 83 return FALSE;
77 /* furthermore, it doesn't work if we've scaled the IDCTs differently */ 84 /* furthermore, it doesn't work if we've scaled the IDCTs differently */
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 case JCS_EXT_BGRX: 352 case JCS_EXT_BGRX:
346 case JCS_EXT_XBGR: 353 case JCS_EXT_XBGR:
347 case JCS_EXT_XRGB: 354 case JCS_EXT_XRGB:
348 case JCS_EXT_RGBA: 355 case JCS_EXT_RGBA:
349 case JCS_EXT_BGRA: 356 case JCS_EXT_BGRA:
350 case JCS_EXT_ABGR: 357 case JCS_EXT_ABGR:
351 case JCS_EXT_ARGB: 358 case JCS_EXT_ARGB:
352 cinfo->out_color_components = rgb_pixelsize[cinfo->out_color_space]; 359 cinfo->out_color_components = rgb_pixelsize[cinfo->out_color_space];
353 break; 360 break;
354 case JCS_YCbCr: 361 case JCS_YCbCr:
362 case JCS_RGB565:
355 cinfo->out_color_components = 3; 363 cinfo->out_color_components = 3;
356 break; 364 break;
357 case JCS_CMYK: 365 case JCS_CMYK:
358 case JCS_YCCK: 366 case JCS_YCCK:
359 cinfo->out_color_components = 4; 367 cinfo->out_color_components = 4;
360 break; 368 break;
361 default: /* else must be same colorspace as in file */ 369 default: /* else must be same colorspace as in file */
362 cinfo->out_color_components = cinfo->num_components; 370 cinfo->out_color_components = cinfo->num_components;
363 break; 371 break;
364 } 372 }
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
724 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE, 732 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
725 SIZEOF(my_decomp_master)); 733 SIZEOF(my_decomp_master));
726 cinfo->master = (struct jpeg_decomp_master *) master; 734 cinfo->master = (struct jpeg_decomp_master *) master;
727 master->pub.prepare_for_output_pass = prepare_for_output_pass; 735 master->pub.prepare_for_output_pass = prepare_for_output_pass;
728 master->pub.finish_output_pass = finish_output_pass; 736 master->pub.finish_output_pass = finish_output_pass;
729 737
730 master->pub.is_dummy_pass = FALSE; 738 master->pub.is_dummy_pass = FALSE;
731 739
732 master_selection(cinfo); 740 master_selection(cinfo);
733 } 741 }
OLDNEW
« no previous file with comments | « jdcolor.c ('k') | jdmerge.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698