123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- /*
- * jcext.c
- *
- * Copyright (C) 2014, D. R. Commander.
- * Copyright (C) 2014, Mozilla Corporation.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains accessor functions for extension parameters. These
- * allow for extending the functionality of the libjpeg API without breaking
- * backward ABI compatibility.
- */
- #define JPEG_INTERNALS
- #include "jinclude.h"
- #include "jpeglib.h"
- GLOBAL(boolean)
- jpeg_c_bool_param_supported (const j_compress_ptr cinfo, J_BOOLEAN_PARAM param)
- {
- switch (param) {
- case JBOOLEAN_OPTIMIZE_SCANS:
- case JBOOLEAN_TRELLIS_QUANT:
- case JBOOLEAN_TRELLIS_QUANT_DC:
- case JBOOLEAN_TRELLIS_EOB_OPT:
- case JBOOLEAN_USE_LAMBDA_WEIGHT_TBL:
- case JBOOLEAN_USE_SCANS_IN_TRELLIS:
- case JBOOLEAN_TRELLIS_Q_OPT:
- case JBOOLEAN_OVERSHOOT_DERINGING:
- return TRUE;
- }
- return FALSE;
- }
- GLOBAL(void)
- jpeg_c_set_bool_param (j_compress_ptr cinfo, J_BOOLEAN_PARAM param,
- boolean value)
- {
- switch(param) {
- case JBOOLEAN_OPTIMIZE_SCANS:
- cinfo->master->optimize_scans = value;
- break;
- case JBOOLEAN_TRELLIS_QUANT:
- cinfo->master->trellis_quant = value;
- break;
- case JBOOLEAN_TRELLIS_QUANT_DC:
- cinfo->master->trellis_quant_dc = value;
- break;
- case JBOOLEAN_TRELLIS_EOB_OPT:
- cinfo->master->trellis_eob_opt = value;
- break;
- case JBOOLEAN_USE_LAMBDA_WEIGHT_TBL:
- cinfo->master->use_lambda_weight_tbl = value;
- break;
- case JBOOLEAN_USE_SCANS_IN_TRELLIS:
- cinfo->master->use_scans_in_trellis = value;
- break;
- case JBOOLEAN_TRELLIS_Q_OPT:
- cinfo->master->trellis_q_opt = value;
- break;
- case JBOOLEAN_OVERSHOOT_DERINGING:
- cinfo->master->overshoot_deringing = value;
- break;
- default:
- ERREXIT(cinfo, JERR_BAD_PARAM);
- }
- }
- GLOBAL(boolean)
- jpeg_c_get_bool_param (const j_compress_ptr cinfo, J_BOOLEAN_PARAM param)
- {
- switch(param) {
- case JBOOLEAN_OPTIMIZE_SCANS:
- return cinfo->master->optimize_scans;
- case JBOOLEAN_TRELLIS_QUANT:
- return cinfo->master->trellis_quant;
- case JBOOLEAN_TRELLIS_QUANT_DC:
- return cinfo->master->trellis_quant_dc;
- case JBOOLEAN_TRELLIS_EOB_OPT:
- return cinfo->master->trellis_eob_opt;
- case JBOOLEAN_USE_LAMBDA_WEIGHT_TBL:
- return cinfo->master->use_lambda_weight_tbl;
- case JBOOLEAN_USE_SCANS_IN_TRELLIS:
- return cinfo->master->use_scans_in_trellis;
- case JBOOLEAN_TRELLIS_Q_OPT:
- return cinfo->master->trellis_q_opt;
- case JBOOLEAN_OVERSHOOT_DERINGING:
- return cinfo->master->overshoot_deringing;
- default:
- ERREXIT(cinfo, JERR_BAD_PARAM);
- }
- return FALSE;
- }
- GLOBAL(boolean)
- jpeg_c_float_param_supported (const j_compress_ptr cinfo, J_FLOAT_PARAM param)
- {
- switch (param) {
- case JFLOAT_LAMBDA_LOG_SCALE1:
- case JFLOAT_LAMBDA_LOG_SCALE2:
- case JFLOAT_TRELLIS_DELTA_DC_WEIGHT:
- return TRUE;
- }
- return FALSE;
- }
- GLOBAL(void)
- jpeg_c_set_float_param (j_compress_ptr cinfo, J_FLOAT_PARAM param, float value)
- {
- switch (param) {
- case JFLOAT_LAMBDA_LOG_SCALE1:
- cinfo->master->lambda_log_scale1 = value;
- break;
- case JFLOAT_LAMBDA_LOG_SCALE2:
- cinfo->master->lambda_log_scale2 = value;
- break;
- case JFLOAT_TRELLIS_DELTA_DC_WEIGHT:
- cinfo->master->trellis_delta_dc_weight = value;
- break;
- default:
- ERREXIT(cinfo, JERR_BAD_PARAM);
- }
- }
- GLOBAL(float)
- jpeg_c_get_float_param (const j_compress_ptr cinfo, J_FLOAT_PARAM param)
- {
- switch (param) {
- case JFLOAT_LAMBDA_LOG_SCALE1:
- return cinfo->master->lambda_log_scale1;
- case JFLOAT_LAMBDA_LOG_SCALE2:
- return cinfo->master->lambda_log_scale2;
- case JFLOAT_TRELLIS_DELTA_DC_WEIGHT:
- return cinfo->master->trellis_delta_dc_weight;
- default:
- ERREXIT(cinfo, JERR_BAD_PARAM);
- }
- return -1;
- }
- GLOBAL(boolean)
- jpeg_c_int_param_supported (const j_compress_ptr cinfo, J_INT_PARAM param)
- {
- switch (param) {
- case JINT_COMPRESS_PROFILE:
- case JINT_TRELLIS_FREQ_SPLIT:
- case JINT_TRELLIS_NUM_LOOPS:
- case JINT_BASE_QUANT_TBL_IDX:
- case JINT_DC_SCAN_OPT_MODE:
- return TRUE;
- }
- return FALSE;
- }
- GLOBAL(void)
- jpeg_c_set_int_param (j_compress_ptr cinfo, J_INT_PARAM param, int value)
- {
- switch (param) {
- case JINT_COMPRESS_PROFILE:
- switch (value) {
- case JCP_MAX_COMPRESSION:
- case JCP_FASTEST:
- cinfo->master->compress_profile = value;
- break;
- default:
- ERREXIT(cinfo, JERR_BAD_PARAM_VALUE);
- }
- break;
- case JINT_TRELLIS_FREQ_SPLIT:
- cinfo->master->trellis_freq_split = value;
- break;
- case JINT_TRELLIS_NUM_LOOPS:
- cinfo->master->trellis_num_loops = value;
- break;
- case JINT_BASE_QUANT_TBL_IDX:
- if (value >= 0 && value <= 8)
- cinfo->master->quant_tbl_master_idx = value;
- break;
- case JINT_DC_SCAN_OPT_MODE:
- cinfo->master->dc_scan_opt_mode = value;
- break;
- default:
- ERREXIT(cinfo, JERR_BAD_PARAM);
- }
- }
- GLOBAL(int)
- jpeg_c_get_int_param (const j_compress_ptr cinfo, J_INT_PARAM param)
- {
- switch (param) {
- case JINT_COMPRESS_PROFILE:
- return cinfo->master->compress_profile;
- case JINT_TRELLIS_FREQ_SPLIT:
- return cinfo->master->trellis_freq_split;
- case JINT_TRELLIS_NUM_LOOPS:
- return cinfo->master->trellis_num_loops;
- case JINT_BASE_QUANT_TBL_IDX:
- return cinfo->master->quant_tbl_master_idx;
- case JINT_DC_SCAN_OPT_MODE:
- return cinfo->master->dc_scan_opt_mode;
- default:
- ERREXIT(cinfo, JERR_BAD_PARAM);
- }
- return -1;
- }
|