diff options
Diffstat (limited to 'media/libjpeg/jcmaster.c')
-rw-r--r-- | media/libjpeg/jcmaster.c | 137 |
1 files changed, 69 insertions, 68 deletions
diff --git a/media/libjpeg/jcmaster.c b/media/libjpeg/jcmaster.c index 03a8b40ea9..c2b2600031 100644 --- a/media/libjpeg/jcmaster.c +++ b/media/libjpeg/jcmaster.c @@ -5,7 +5,7 @@ * Copyright (C) 1991-1997, Thomas G. Lane. * Modified 2003-2010 by Guido Vollbeding. * libjpeg-turbo Modifications: - * Copyright (C) 2010, 2016, D. R. Commander. + * Copyright (C) 2010, 2016, 2018, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -25,9 +25,9 @@ /* Private state */ typedef enum { - main_pass, /* input data, also do first output step */ - huff_opt_pass, /* Huffman code optimization pass */ - output_pass /* data output pass */ + main_pass, /* input data, also do first output step */ + huff_opt_pass, /* Huffman code optimization pass */ + output_pass /* data output pass */ } c_pass_type; typedef struct { @@ -66,7 +66,7 @@ typedef my_comp_master *my_master_ptr; */ GLOBAL(void) -jpeg_calc_jpeg_dimensions (j_compress_ptr cinfo) +jpeg_calc_jpeg_dimensions(j_compress_ptr cinfo) /* Do computations that are needed before master selection phase */ { /* Hardwire it to "no scaling" */ @@ -79,7 +79,7 @@ jpeg_calc_jpeg_dimensions (j_compress_ptr cinfo) LOCAL(void) -initial_setup (j_compress_ptr cinfo, boolean transcode_only) +initial_setup(j_compress_ptr cinfo, boolean transcode_only) /* Do computations that are needed before master selection phase */ { int ci; @@ -95,19 +95,19 @@ initial_setup (j_compress_ptr cinfo, boolean transcode_only) #endif /* Sanity check on image dimensions */ - if (cinfo->_jpeg_height <= 0 || cinfo->_jpeg_width <= 0 - || cinfo->num_components <= 0 || cinfo->input_components <= 0) + if (cinfo->_jpeg_height <= 0 || cinfo->_jpeg_width <= 0 || + cinfo->num_components <= 0 || cinfo->input_components <= 0) ERREXIT(cinfo, JERR_EMPTY_IMAGE); /* Make sure image isn't bigger than I can handle */ - if ((long) cinfo->_jpeg_height > (long) JPEG_MAX_DIMENSION || - (long) cinfo->_jpeg_width > (long) JPEG_MAX_DIMENSION) - ERREXIT1(cinfo, JERR_IMAGE_TOO_BIG, (unsigned int) JPEG_MAX_DIMENSION); + if ((long)cinfo->_jpeg_height > (long)JPEG_MAX_DIMENSION || + (long)cinfo->_jpeg_width > (long)JPEG_MAX_DIMENSION) + ERREXIT1(cinfo, JERR_IMAGE_TOO_BIG, (unsigned int)JPEG_MAX_DIMENSION); /* Width of an input scanline must be representable as JDIMENSION. */ - samplesperrow = (long) cinfo->image_width * (long) cinfo->input_components; - jd_samplesperrow = (JDIMENSION) samplesperrow; - if ((long) jd_samplesperrow != samplesperrow) + samplesperrow = (long)cinfo->image_width * (long)cinfo->input_components; + jd_samplesperrow = (JDIMENSION)samplesperrow; + if ((long)jd_samplesperrow != samplesperrow) ERREXIT(cinfo, JERR_WIDTH_OVERFLOW); /* For now, precision must match compiled-in value... */ @@ -124,8 +124,10 @@ initial_setup (j_compress_ptr cinfo, boolean transcode_only) cinfo->max_v_samp_factor = 1; for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components; ci++, compptr++) { - if (compptr->h_samp_factor<=0 || compptr->h_samp_factor>MAX_SAMP_FACTOR || - compptr->v_samp_factor<=0 || compptr->v_samp_factor>MAX_SAMP_FACTOR) + if (compptr->h_samp_factor <= 0 || + compptr->h_samp_factor > MAX_SAMP_FACTOR || + compptr->v_samp_factor <= 0 || + compptr->v_samp_factor > MAX_SAMP_FACTOR) ERREXIT(cinfo, JERR_BAD_SAMPLING); cinfo->max_h_samp_factor = MAX(cinfo->max_h_samp_factor, compptr->h_samp_factor); @@ -146,18 +148,18 @@ initial_setup (j_compress_ptr cinfo, boolean transcode_only) #endif /* Size in DCT blocks */ compptr->width_in_blocks = (JDIMENSION) - jdiv_round_up((long) cinfo->_jpeg_width * (long) compptr->h_samp_factor, - (long) (cinfo->max_h_samp_factor * DCTSIZE)); + jdiv_round_up((long)cinfo->_jpeg_width * (long)compptr->h_samp_factor, + (long)(cinfo->max_h_samp_factor * DCTSIZE)); compptr->height_in_blocks = (JDIMENSION) - jdiv_round_up((long) cinfo->_jpeg_height * (long) compptr->v_samp_factor, - (long) (cinfo->max_v_samp_factor * DCTSIZE)); + jdiv_round_up((long)cinfo->_jpeg_height * (long)compptr->v_samp_factor, + (long)(cinfo->max_v_samp_factor * DCTSIZE)); /* Size in samples */ compptr->downsampled_width = (JDIMENSION) - jdiv_round_up((long) cinfo->_jpeg_width * (long) compptr->h_samp_factor, - (long) cinfo->max_h_samp_factor); + jdiv_round_up((long)cinfo->_jpeg_width * (long)compptr->h_samp_factor, + (long)cinfo->max_h_samp_factor); compptr->downsampled_height = (JDIMENSION) - jdiv_round_up((long) cinfo->_jpeg_height * (long) compptr->v_samp_factor, - (long) cinfo->max_v_samp_factor); + jdiv_round_up((long)cinfo->_jpeg_height * (long)compptr->v_samp_factor, + (long)cinfo->max_v_samp_factor); /* Mark component needed (this flag isn't actually used for compression) */ compptr->component_needed = TRUE; } @@ -166,15 +168,15 @@ initial_setup (j_compress_ptr cinfo, boolean transcode_only) * main controller will call coefficient controller). */ cinfo->total_iMCU_rows = (JDIMENSION) - jdiv_round_up((long) cinfo->_jpeg_height, - (long) (cinfo->max_v_samp_factor*DCTSIZE)); + jdiv_round_up((long)cinfo->_jpeg_height, + (long)(cinfo->max_v_samp_factor * DCTSIZE)); } #ifdef C_MULTISCAN_FILES_SUPPORTED LOCAL(void) -validate_script (j_compress_ptr cinfo) +validate_script(j_compress_ptr cinfo) /* Verify that the scan script in cinfo->scan_info[] is valid; also * determine whether it uses progressive JPEG, and set cinfo->progressive_mode. */ @@ -196,10 +198,10 @@ validate_script (j_compress_ptr cinfo) * for progressive JPEG, no scan can have this. */ scanptr = cinfo->scan_info; - if (scanptr->Ss != 0 || scanptr->Se != DCTSIZE2-1) { + if (scanptr->Ss != 0 || scanptr->Se != DCTSIZE2 - 1) { #ifdef C_PROGRESSIVE_SUPPORTED cinfo->progressive_mode = TRUE; - last_bitpos_ptr = & last_bitpos[0][0]; + last_bitpos_ptr = &last_bitpos[0][0]; for (ci = 0; ci < cinfo->num_components; ci++) for (coefi = 0; coefi < DCTSIZE2; coefi++) *last_bitpos_ptr++ = -1; @@ -222,7 +224,7 @@ validate_script (j_compress_ptr cinfo) if (thisi < 0 || thisi >= cinfo->num_components) ERREXIT1(cinfo, JERR_BAD_SCAN_SCRIPT, scanno); /* Components must appear in SOF order within each scan */ - if (ci > 0 && thisi <= scanptr->component_index[ci-1]) + if (ci > 0 && thisi <= scanptr->component_index[ci - 1]) ERREXIT1(cinfo, JERR_BAD_SCAN_SCRIPT, scanno); } /* Validate progression parameters */ @@ -232,17 +234,17 @@ validate_script (j_compress_ptr cinfo) Al = scanptr->Al; if (cinfo->progressive_mode) { #ifdef C_PROGRESSIVE_SUPPORTED - /* The JPEG spec simply gives the ranges 0..13 for Ah and Al, but that - * seems wrong: the upper bound ought to depend on data precision. - * Perhaps they really meant 0..N+1 for N-bit precision. + /* Rec. ITU-T T.81 | ISO/IEC 10918-1 simply gives the ranges 0..13 for Ah + * and Al, but that seems wrong: the upper bound ought to depend on data + * precision. Perhaps they really meant 0..N+1 for N-bit precision. * Here we allow 0..10 for 8-bit data; Al larger than 10 results in * out-of-range reconstructed DC values during the first DC scan, * which might cause problems for some decoders. */ #if BITS_IN_JSAMPLE == 8 -#define MAX_AH_AL 10 +#define MAX_AH_AL 10 #else -#define MAX_AH_AL 13 +#define MAX_AH_AL 13 #endif if (Ss < 0 || Ss >= DCTSIZE2 || Se < Ss || Se >= DCTSIZE2 || Ah < 0 || Ah > MAX_AH_AL || Al < 0 || Al > MAX_AH_AL) @@ -255,7 +257,7 @@ validate_script (j_compress_ptr cinfo) ERREXIT1(cinfo, JERR_BAD_PROG_SCRIPT, scanno); } for (ci = 0; ci < ncomps; ci++) { - last_bitpos_ptr = & last_bitpos[scanptr->component_index[ci]][0]; + last_bitpos_ptr = &last_bitpos[scanptr->component_index[ci]][0]; if (Ss != 0 && last_bitpos_ptr[0] < 0) /* AC without prior DC scan */ ERREXIT1(cinfo, JERR_BAD_PROG_SCRIPT, scanno); for (coefi = Ss; coefi <= Se; coefi++) { @@ -265,7 +267,7 @@ validate_script (j_compress_ptr cinfo) ERREXIT1(cinfo, JERR_BAD_PROG_SCRIPT, scanno); } else { /* not first scan */ - if (Ah != last_bitpos_ptr[coefi] || Al != Ah-1) + if (Ah != last_bitpos_ptr[coefi] || Al != Ah - 1) ERREXIT1(cinfo, JERR_BAD_PROG_SCRIPT, scanno); } last_bitpos_ptr[coefi] = Al; @@ -274,7 +276,7 @@ validate_script (j_compress_ptr cinfo) #endif } else { /* For sequential JPEG, all progression parameters must be these: */ - if (Ss != 0 || Se != DCTSIZE2-1 || Ah != 0 || Al != 0) + if (Ss != 0 || Se != DCTSIZE2 - 1 || Ah != 0 || Al != 0) ERREXIT1(cinfo, JERR_BAD_PROG_SCRIPT, scanno); /* Make sure components are not sent twice */ for (ci = 0; ci < ncomps; ci++) { @@ -301,7 +303,7 @@ validate_script (j_compress_ptr cinfo) #endif } else { for (ci = 0; ci < cinfo->num_components; ci++) { - if (! component_sent[ci]) + if (!component_sent[ci]) ERREXIT(cinfo, JERR_MISSING_DATA); } } @@ -311,7 +313,7 @@ validate_script (j_compress_ptr cinfo) LOCAL(void) -select_scan_parameters (j_compress_ptr cinfo) +select_scan_parameters(j_compress_ptr cinfo) /* Set up the scan parameters for the current scan */ { int ci; @@ -319,7 +321,7 @@ select_scan_parameters (j_compress_ptr cinfo) #ifdef C_MULTISCAN_FILES_SUPPORTED if (cinfo->scan_info != NULL) { /* Prepare for current scan --- the script is already validated */ - my_master_ptr master = (my_master_ptr) cinfo->master; + my_master_ptr master = (my_master_ptr)cinfo->master; const jpeg_scan_info *scanptr = cinfo->scan_info + master->scan_number; cinfo->comps_in_scan = scanptr->comps_in_scan; @@ -331,8 +333,7 @@ select_scan_parameters (j_compress_ptr cinfo) cinfo->Se = scanptr->Se; cinfo->Ah = scanptr->Ah; cinfo->Al = scanptr->Al; - } - else + } else #endif { /* Prepare for single sequential-JPEG scan containing all components */ @@ -344,7 +345,7 @@ select_scan_parameters (j_compress_ptr cinfo) cinfo->cur_comp_info[ci] = &cinfo->comp_info[ci]; } cinfo->Ss = 0; - cinfo->Se = DCTSIZE2-1; + cinfo->Se = DCTSIZE2 - 1; cinfo->Ah = 0; cinfo->Al = 0; } @@ -352,7 +353,7 @@ select_scan_parameters (j_compress_ptr cinfo) LOCAL(void) -per_scan_setup (j_compress_ptr cinfo) +per_scan_setup(j_compress_ptr cinfo) /* Do computations that are needed before processing a JPEG scan */ /* cinfo->comps_in_scan and cinfo->cur_comp_info[] are already set */ { @@ -377,7 +378,7 @@ per_scan_setup (j_compress_ptr cinfo) /* For noninterleaved scans, it is convenient to define last_row_height * as the number of block rows present in the last iMCU row. */ - tmp = (int) (compptr->height_in_blocks % compptr->v_samp_factor); + tmp = (int)(compptr->height_in_blocks % compptr->v_samp_factor); if (tmp == 0) tmp = compptr->v_samp_factor; compptr->last_row_height = tmp; @@ -394,11 +395,11 @@ per_scan_setup (j_compress_ptr cinfo) /* Overall image size in MCUs */ cinfo->MCUs_per_row = (JDIMENSION) - jdiv_round_up((long) cinfo->_jpeg_width, - (long) (cinfo->max_h_samp_factor*DCTSIZE)); + jdiv_round_up((long)cinfo->_jpeg_width, + (long)(cinfo->max_h_samp_factor * DCTSIZE)); cinfo->MCU_rows_in_scan = (JDIMENSION) - jdiv_round_up((long) cinfo->_jpeg_height, - (long) (cinfo->max_v_samp_factor*DCTSIZE)); + jdiv_round_up((long)cinfo->_jpeg_height, + (long)(cinfo->max_v_samp_factor * DCTSIZE)); cinfo->blocks_in_MCU = 0; @@ -410,10 +411,10 @@ per_scan_setup (j_compress_ptr cinfo) compptr->MCU_blocks = compptr->MCU_width * compptr->MCU_height; compptr->MCU_sample_width = compptr->MCU_width * DCTSIZE; /* Figure number of non-dummy blocks in last MCU column & row */ - tmp = (int) (compptr->width_in_blocks % compptr->MCU_width); + tmp = (int)(compptr->width_in_blocks % compptr->MCU_width); if (tmp == 0) tmp = compptr->MCU_width; compptr->last_col_width = tmp; - tmp = (int) (compptr->height_in_blocks % compptr->MCU_height); + tmp = (int)(compptr->height_in_blocks % compptr->MCU_height); if (tmp == 0) tmp = compptr->MCU_height; compptr->last_row_height = tmp; /* Prepare array describing MCU composition */ @@ -430,8 +431,8 @@ per_scan_setup (j_compress_ptr cinfo) /* Convert restart specified in rows to actual MCU count. */ /* Note that count must fit in 16 bits, so we provide limiting. */ if (cinfo->restart_in_rows > 0) { - long nominal = (long) cinfo->restart_in_rows * (long) cinfo->MCUs_per_row; - cinfo->restart_interval = (unsigned int) MIN(nominal, 65535L); + long nominal = (long)cinfo->restart_in_rows * (long)cinfo->MCUs_per_row; + cinfo->restart_interval = (unsigned int)MIN(nominal, 65535L); } } @@ -445,9 +446,9 @@ per_scan_setup (j_compress_ptr cinfo) */ METHODDEF(void) -prepare_for_pass (j_compress_ptr cinfo) +prepare_for_pass(j_compress_ptr cinfo) { - my_master_ptr master = (my_master_ptr) cinfo->master; + my_master_ptr master = (my_master_ptr)cinfo->master; switch (master->pass_type) { case main_pass: @@ -456,7 +457,7 @@ prepare_for_pass (j_compress_ptr cinfo) */ select_scan_parameters(cinfo); per_scan_setup(cinfo); - if (! cinfo->raw_data_in) { + if (!cinfo->raw_data_in) { (*cinfo->cconvert->start_pass) (cinfo); (*cinfo->downsample->start_pass) (cinfo); (*cinfo->prep->start_pass) (cinfo, JBUF_PASS_THRU); @@ -491,12 +492,12 @@ prepare_for_pass (j_compress_ptr cinfo) */ master->pass_type = output_pass; master->pass_number++; - /*FALLTHROUGH*/ #endif + FALLTHROUGH /*FALLTHROUGH*/ case output_pass: /* Do a data-output pass. */ /* We need not repeat per-scan setup if prior optimization pass did it. */ - if (! cinfo->optimize_coding) { + if (!cinfo->optimize_coding) { select_scan_parameters(cinfo); per_scan_setup(cinfo); } @@ -512,7 +513,7 @@ prepare_for_pass (j_compress_ptr cinfo) ERREXIT(cinfo, JERR_NOT_COMPILED); } - master->pub.is_last_pass = (master->pass_number == master->total_passes-1); + master->pub.is_last_pass = (master->pass_number == master->total_passes - 1); /* Set up progress monitor's pass info if present */ if (cinfo->progress != NULL) { @@ -533,7 +534,7 @@ prepare_for_pass (j_compress_ptr cinfo) */ METHODDEF(void) -pass_startup (j_compress_ptr cinfo) +pass_startup(j_compress_ptr cinfo) { cinfo->master->call_pass_startup = FALSE; /* reset flag so call only once */ @@ -547,9 +548,9 @@ pass_startup (j_compress_ptr cinfo) */ METHODDEF(void) -finish_pass_master (j_compress_ptr cinfo) +finish_pass_master(j_compress_ptr cinfo) { - my_master_ptr master = (my_master_ptr) cinfo->master; + my_master_ptr master = (my_master_ptr)cinfo->master; /* The entropy coder always needs an end-of-pass call, * either to analyze statistics or to flush its output buffer. @@ -563,7 +564,7 @@ finish_pass_master (j_compress_ptr cinfo) * or output of scan 1 (if no optimization). */ master->pass_type = output_pass; - if (! cinfo->optimize_coding) + if (!cinfo->optimize_coding) master->scan_number++; break; case huff_opt_pass: @@ -587,14 +588,14 @@ finish_pass_master (j_compress_ptr cinfo) */ GLOBAL(void) -jinit_c_master_control (j_compress_ptr cinfo, boolean transcode_only) +jinit_c_master_control(j_compress_ptr cinfo, boolean transcode_only) { my_master_ptr master; master = (my_master_ptr) - (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE, - sizeof(my_comp_master)); - cinfo->master = (struct jpeg_comp_master *) master; + (*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE, + sizeof(my_comp_master)); + cinfo->master = (struct jpeg_comp_master *)master; master->pub.prepare_for_pass = prepare_for_pass; master->pub.pass_startup = pass_startup; master->pub.finish_pass = finish_pass_master; |