aboutsummaryrefslogtreecommitdiff
path: root/jdmerge.c
diff options
context:
space:
mode:
Diffstat (limited to 'jdmerge.c')
-rw-r--r--jdmerge.c77
1 files changed, 67 insertions, 10 deletions
diff --git a/jdmerge.c b/jdmerge.c
index dec2e29..bde1b11 100644
--- a/jdmerge.c
+++ b/jdmerge.c
@@ -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 */