Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 53 of file jcmaster.c.
Referenced by initial_setup().
{ #ifdef DCT_SCALING_SUPPORTED /* Sanity check on input image dimensions to prevent overflow in * following calculation. * We do check jpeg_width and jpeg_height in initial_setup below, * but image_width and image_height can come from arbitrary data, * and we need some space for multiplication by block_size. */ if (((long) cinfo->image_width >> 24) || ((long) cinfo->image_height >> 24)) ERREXIT1(cinfo, JERR_IMAGE_TOO_BIG, (unsigned int) JPEG_MAX_DIMENSION); /* Compute actual JPEG image dimensions and DCT scaling choices. */ if (cinfo->scale_num >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/1 scaling */ cinfo->jpeg_width = cinfo->image_width * cinfo->block_size; cinfo->jpeg_height = cinfo->image_height * cinfo->block_size; cinfo->min_DCT_h_scaled_size = 1; cinfo->min_DCT_v_scaled_size = 1; } else if (cinfo->scale_num * 2 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/2 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 2L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 2L); cinfo->min_DCT_h_scaled_size = 2; cinfo->min_DCT_v_scaled_size = 2; } else if (cinfo->scale_num * 3 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/3 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 3L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 3L); cinfo->min_DCT_h_scaled_size = 3; cinfo->min_DCT_v_scaled_size = 3; } else if (cinfo->scale_num * 4 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/4 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 4L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 4L); cinfo->min_DCT_h_scaled_size = 4; cinfo->min_DCT_v_scaled_size = 4; } else if (cinfo->scale_num * 5 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/5 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 5L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 5L); cinfo->min_DCT_h_scaled_size = 5; cinfo->min_DCT_v_scaled_size = 5; } else if (cinfo->scale_num * 6 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/6 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 6L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 6L); cinfo->min_DCT_h_scaled_size = 6; cinfo->min_DCT_v_scaled_size = 6; } else if (cinfo->scale_num * 7 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/7 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 7L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 7L); cinfo->min_DCT_h_scaled_size = 7; cinfo->min_DCT_v_scaled_size = 7; } else if (cinfo->scale_num * 8 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/8 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 8L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 8L); cinfo->min_DCT_h_scaled_size = 8; cinfo->min_DCT_v_scaled_size = 8; } else if (cinfo->scale_num * 9 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/9 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 9L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 9L); cinfo->min_DCT_h_scaled_size = 9; cinfo->min_DCT_v_scaled_size = 9; } else if (cinfo->scale_num * 10 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/10 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 10L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 10L); cinfo->min_DCT_h_scaled_size = 10; cinfo->min_DCT_v_scaled_size = 10; } else if (cinfo->scale_num * 11 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/11 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 11L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 11L); cinfo->min_DCT_h_scaled_size = 11; cinfo->min_DCT_v_scaled_size = 11; } else if (cinfo->scale_num * 12 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/12 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 12L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 12L); cinfo->min_DCT_h_scaled_size = 12; cinfo->min_DCT_v_scaled_size = 12; } else if (cinfo->scale_num * 13 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/13 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 13L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 13L); cinfo->min_DCT_h_scaled_size = 13; cinfo->min_DCT_v_scaled_size = 13; } else if (cinfo->scale_num * 14 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/14 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 14L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 14L); cinfo->min_DCT_h_scaled_size = 14; cinfo->min_DCT_v_scaled_size = 14; } else if (cinfo->scale_num * 15 >= cinfo->scale_denom * cinfo->block_size) { /* Provide block_size/15 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 15L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 15L); cinfo->min_DCT_h_scaled_size = 15; cinfo->min_DCT_v_scaled_size = 15; } else { /* Provide block_size/16 scaling */ cinfo->jpeg_width = (JDIMENSION) jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 16L); cinfo->jpeg_height = (JDIMENSION) jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 16L); cinfo->min_DCT_h_scaled_size = 16; cinfo->min_DCT_v_scaled_size = 16; } #else /* !DCT_SCALING_SUPPORTED */ /* Hardwire it to "no scaling" */ cinfo->jpeg_width = cinfo->image_width; cinfo->jpeg_height = cinfo->image_height; cinfo->min_DCT_h_scaled_size = DCTSIZE; cinfo->min_DCT_v_scaled_size = DCTSIZE; #endif /* DCT_SCALING_SUPPORTED */ }