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

Side by Side Diff: simd/jsimd_arm.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 | « simd/jsimd.h ('k') | simd/jsimd_arm_neon.S » ('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 * jsimd_arm.c 2 * jsimd_arm.c
3 * 3 *
4 * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB 4 * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
5 * Copyright 2009-2011 D. R. Commander 5 * Copyright 2009-2011, 2013-2014D. R. Commander
6 * 6 *
7 * Based on the x86 SIMD extension for IJG JPEG library, 7 * Based on the x86 SIMD extension for IJG JPEG library,
8 * Copyright (C) 1999-2006, MIYASAKA Masaru. 8 * Copyright (C) 1999-2006, MIYASAKA Masaru.
9 * For conditions of distribution and use, see copyright notice in jsimdext.inc 9 * For conditions of distribution and use, see copyright notice in jsimdext.inc
10 * 10 *
11 * This file contains the interface between the "normal" portions 11 * This file contains the interface between the "normal" portions
12 * of the library and the SIMD implementations when running on 12 * of the library and the SIMD implementations when running on
13 * ARM architecture. 13 * ARM architecture.
14 * 14 *
15 * Based on the stubs from 'jsimd_none.c' 15 * Based on the stubs from 'jsimd_none.c'
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 if (sizeof(JDIMENSION) != 4) 169 if (sizeof(JDIMENSION) != 4)
170 return 0; 170 return 0;
171 if ((RGB_PIXELSIZE != 3) && (RGB_PIXELSIZE != 4)) 171 if ((RGB_PIXELSIZE != 3) && (RGB_PIXELSIZE != 4))
172 return 0; 172 return 0;
173 if (simd_support & JSIMD_ARM_NEON) 173 if (simd_support & JSIMD_ARM_NEON)
174 return 1; 174 return 1;
175 175
176 return 0; 176 return 0;
177 } 177 }
178 178
179 GLOBAL(int)
180 jsimd_can_ycc_rgb565 (void)
181 {
182 init_simd();
183
184 /* The code is optimised for these values only */
185 if (BITS_IN_JSAMPLE != 8)
186 return 0;
187 if (sizeof(JDIMENSION) != 4)
188 return 0;
189
190 if (simd_support & JSIMD_ARM_NEON)
191 return 1;
192
193 return 0;
194 }
195
179 GLOBAL(void) 196 GLOBAL(void)
180 jsimd_rgb_ycc_convert (j_compress_ptr cinfo, 197 jsimd_rgb_ycc_convert (j_compress_ptr cinfo,
181 JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 198 JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
182 JDIMENSION output_row, int num_rows) 199 JDIMENSION output_row, int num_rows)
183 { 200 {
184 void (*neonfct)(JDIMENSION, JSAMPARRAY, JSAMPIMAGE, JDIMENSION, int); 201 void (*neonfct)(JDIMENSION, JSAMPARRAY, JSAMPIMAGE, JDIMENSION, int);
185 202
186 switch(cinfo->in_color_space) 203 switch(cinfo->in_color_space)
187 { 204 {
188 case JCS_EXT_RGB: 205 case JCS_EXT_RGB:
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 neonfct=jsimd_ycc_extbgrx_convert_neon; 265 neonfct=jsimd_ycc_extbgrx_convert_neon;
249 break; 266 break;
250 case JCS_EXT_XBGR: 267 case JCS_EXT_XBGR:
251 case JCS_EXT_ABGR: 268 case JCS_EXT_ABGR:
252 neonfct=jsimd_ycc_extxbgr_convert_neon; 269 neonfct=jsimd_ycc_extxbgr_convert_neon;
253 break; 270 break;
254 case JCS_EXT_XRGB: 271 case JCS_EXT_XRGB:
255 case JCS_EXT_ARGB: 272 case JCS_EXT_ARGB:
256 neonfct=jsimd_ycc_extxrgb_convert_neon; 273 neonfct=jsimd_ycc_extxrgb_convert_neon;
257 break; 274 break;
258 default: 275 default:
259 neonfct=jsimd_ycc_extrgb_convert_neon; 276 neonfct=jsimd_ycc_extrgb_convert_neon;
260 break; 277 break;
261 } 278 }
262 279
263 if (simd_support & JSIMD_ARM_NEON) 280 if (simd_support & JSIMD_ARM_NEON)
264 neonfct(cinfo->output_width, input_buf, 281 neonfct(cinfo->output_width, input_buf,
265 input_row, output_buf, num_rows); 282 input_row, output_buf, num_rows);
266 } 283 }
267 284
285 GLOBAL(void)
286 jsimd_ycc_rgb565_convert (j_decompress_ptr cinfo,
287 JSAMPIMAGE input_buf, JDIMENSION input_row,
288 JSAMPARRAY output_buf, int num_rows)
289 {
290 if (simd_support & JSIMD_ARM_NEON)
291 jsimd_ycc_rgb565_convert_neon(cinfo->output_width, input_buf, input_row,
292 output_buf, num_rows);
293 }
294
268 GLOBAL(int) 295 GLOBAL(int)
269 jsimd_can_h2v2_downsample (void) 296 jsimd_can_h2v2_downsample (void)
270 { 297 {
271 init_simd(); 298 init_simd();
272 299
273 return 0; 300 return 0;
274 } 301 }
275 302
276 GLOBAL(int) 303 GLOBAL(int)
277 jsimd_can_h2v1_downsample (void) 304 jsimd_can_h2v1_downsample (void)
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 jsimd_idct_ifast_neon(compptr->dct_table, coef_block, output_buf, output_col ); 700 jsimd_idct_ifast_neon(compptr->dct_table, coef_block, output_buf, output_col );
674 } 701 }
675 702
676 GLOBAL(void) 703 GLOBAL(void)
677 jsimd_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr, 704 jsimd_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr,
678 JCOEFPTR coef_block, JSAMPARRAY output_buf, 705 JCOEFPTR coef_block, JSAMPARRAY output_buf,
679 JDIMENSION output_col) 706 JDIMENSION output_col)
680 { 707 {
681 } 708 }
682 709
OLDNEW
« no previous file with comments | « simd/jsimd.h ('k') | simd/jsimd_arm_neon.S » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698