diff options
Diffstat (limited to 'jdmerge.c')
-rw-r--r-- | jdmerge.c | 77 |
1 files changed, 67 insertions, 10 deletions
@@ -391,6 +391,24 @@ METHODDEF(void) h2v1_merged_upsample_565 (j_decompress_ptr cinfo, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf) +#ifdef ANDROID_JPEG_USE_VENUM +{ + my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample; + JSAMPROW inptr0, inptr1, inptr2; + JSAMPROW outptr; + + inptr0 = input_buf[0][in_row_group_ctr]; + inptr1 = input_buf[1][in_row_group_ctr]; + inptr2 = input_buf[2][in_row_group_ctr]; + outptr = output_buf[0]; + + yyvup2rgb565_venum((UINT8*) inptr0, + (UINT8*) inptr2, + (UINT8*) inptr1, + (UINT8*) outptr, + cinfo->output_width); +} +#else { my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample; register int y, cred, cgreen, cblue; @@ -449,6 +467,7 @@ h2v1_merged_upsample_565 (j_decompress_ptr cinfo, *(INT16*)outptr = rgb; } } +#endif METHODDEF(void) h2v1_merged_upsample_565D (j_decompress_ptr cinfo, @@ -521,6 +540,31 @@ METHODDEF(void) h2v2_merged_upsample_565 (j_decompress_ptr cinfo, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf) +#ifdef ANDROID_JPEG_USE_VENUM +{ + my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample; + JSAMPROW outptr0, outptr1; + JSAMPROW inptr00, inptr01, inptr1, inptr2; + inptr00 = input_buf[0][in_row_group_ctr*2]; + inptr01 = input_buf[0][in_row_group_ctr*2 + 1]; + inptr1 = input_buf[1][in_row_group_ctr]; + inptr2 = input_buf[2][in_row_group_ctr]; + outptr0 = output_buf[0]; + outptr1 = output_buf[1]; + + yyvup2rgb565_venum((UINT8*) inptr00, + (UINT8*) inptr2, + (UINT8*) inptr1, + (UINT8*) outptr0, + cinfo->output_width); + + yyvup2rgb565_venum((UINT8*) inptr01, + (UINT8*) inptr2, + (UINT8*) inptr1, + (UINT8*) outptr1, + cinfo->output_width); +} +#else { my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample; register int y, cred, cgreen, cblue; @@ -599,6 +643,7 @@ h2v2_merged_upsample_565 (j_decompress_ptr cinfo, *(INT16*)outptr1 = rgb; } } +#endif METHODDEF(void) h2v2_merged_upsample_565D (j_decompress_ptr cinfo, @@ -727,11 +772,16 @@ jinit_merged_upsampler (j_decompress_ptr cinfo) #ifdef ANDROID_RGB if (cinfo->out_color_space == JCS_RGB_565) { - if (cinfo->dither_mode == JDITHER_NONE) { - upsample->upmethod = h2v2_merged_upsample_565; - } else { - upsample->upmethod = h2v2_merged_upsample_565D; - } +#ifndef ANDROID_JPEG_USE_VENUM + if (cinfo->dither_mode != JDITHER_NONE) { + upsample->upmethod = h2v2_merged_upsample_565D; + } else +#endif + { + /* If VeNum routines are enabled, use h2v2_merged_upsample_565 + * function regardless of dither mode. */ + upsample->upmethod = h2v2_merged_upsample_565; + } } #endif /* ANDROID_RGB */ @@ -747,18 +797,25 @@ jinit_merged_upsampler (j_decompress_ptr cinfo) upsample->upmethod = h2v1_merged_upsample; #ifdef ANDROID_RGB if (cinfo->out_color_space == JCS_RGB_565) { - if (cinfo->dither_mode == JDITHER_NONE) { - upsample->upmethod = h2v1_merged_upsample_565; - } else { - upsample->upmethod = h2v1_merged_upsample_565D; - } +#ifndef ANDROID_JPEG_USE_VENUM + if (cinfo->dither_mode != JDITHER_NONE) { + upsample->upmethod = h2v1_merged_upsample_565D; + } else +#endif + { + /* If VeNum routines are enabled, use h2v1_merged_upsample_565 + * function regardless of dither mode. */ + upsample->upmethod = h2v1_merged_upsample_565; + } } #endif /* ANDROID_RGB */ /* No spare row needed */ upsample->spare_row = NULL; } +#ifndef ANDROID_JPEG_USE_VENUM build_ycc_rgb_table(cinfo); +#endif } #endif /* UPSAMPLE_MERGING_SUPPORTED */ |