remove deprecated v1 style function j2k_setup_encoder; rename opj_j2k_setup_encoder_v2 to opj_j2k_setup_encoder
This commit is contained in:
parent
5d494e940f
commit
ff43b4dca0
|
@ -6119,273 +6119,11 @@ opj_j2k_v2_t* opj_j2k_create_compress_v2(void)
|
||||||
return l_j2k;
|
return l_j2k;
|
||||||
}
|
}
|
||||||
|
|
||||||
void j2k_setup_encoder(opj_j2k_t *j2k, opj_cparameters_t *parameters, opj_image_t *image) {
|
|
||||||
OPJ_UINT32 i,j;
|
|
||||||
int tileno, numpocs_tile;
|
|
||||||
opj_cp_t *cp = NULL;
|
|
||||||
|
|
||||||
if(!j2k || !parameters || ! image) {
|
void opj_j2k_setup_encoder( opj_j2k_v2_t *p_j2k,
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* create and initialize the coding parameters structure */
|
|
||||||
cp = (opj_cp_t*) opj_calloc(1, sizeof(opj_cp_t));
|
|
||||||
|
|
||||||
/* keep a link to cp so that we can destroy it later in j2k_destroy_compress */
|
|
||||||
j2k->cp = cp;
|
|
||||||
|
|
||||||
/* set default values for cp */
|
|
||||||
cp->tw = 1;
|
|
||||||
cp->th = 1;
|
|
||||||
|
|
||||||
/*
|
|
||||||
copy user encoding parameters
|
|
||||||
*/
|
|
||||||
cp->cinema = parameters->cp_cinema;
|
|
||||||
cp->max_comp_size = parameters->max_comp_size;
|
|
||||||
cp->rsiz = parameters->cp_rsiz;
|
|
||||||
cp->disto_alloc = parameters->cp_disto_alloc;
|
|
||||||
cp->fixed_alloc = parameters->cp_fixed_alloc;
|
|
||||||
cp->fixed_quality = parameters->cp_fixed_quality;
|
|
||||||
|
|
||||||
/* mod fixed_quality */
|
|
||||||
if(parameters->cp_matrice) {
|
|
||||||
size_t array_size = parameters->tcp_numlayers * parameters->numresolution * 3 * sizeof(int);
|
|
||||||
cp->matrice = (int *) opj_malloc(array_size);
|
|
||||||
memcpy(cp->matrice, parameters->cp_matrice, array_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* tiles */
|
|
||||||
cp->tdx = parameters->cp_tdx;
|
|
||||||
cp->tdy = parameters->cp_tdy;
|
|
||||||
|
|
||||||
/* tile offset */
|
|
||||||
cp->tx0 = parameters->cp_tx0;
|
|
||||||
cp->ty0 = parameters->cp_ty0;
|
|
||||||
|
|
||||||
/* comment string */
|
|
||||||
if(parameters->cp_comment) {
|
|
||||||
cp->comment = (char*)opj_malloc(strlen(parameters->cp_comment) + 1);
|
|
||||||
if(cp->comment) {
|
|
||||||
strcpy(cp->comment, parameters->cp_comment);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
calculate other encoding parameters
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (parameters->tile_size_on) {
|
|
||||||
cp->tw = int_ceildiv(image->x1 - cp->tx0, cp->tdx);
|
|
||||||
cp->th = int_ceildiv(image->y1 - cp->ty0, cp->tdy);
|
|
||||||
} else {
|
|
||||||
cp->tdx = image->x1 - cp->tx0;
|
|
||||||
cp->tdy = image->y1 - cp->ty0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(parameters->tp_on){
|
|
||||||
cp->tp_flag = parameters->tp_flag;
|
|
||||||
cp->tp_on = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
cp->img_size = 0;
|
|
||||||
for(i=0;i<image->numcomps ;i++){
|
|
||||||
cp->img_size += (image->comps[i].w *image->comps[i].h * image->comps[i].prec);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef USE_JPWL
|
|
||||||
/*
|
|
||||||
calculate JPWL encoding parameters
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (parameters->jpwl_epc_on) {
|
|
||||||
OPJ_UINT32 i;
|
|
||||||
|
|
||||||
/* set JPWL on */
|
|
||||||
cp->epc_on = OPJ_TRUE;
|
|
||||||
cp->info_on = OPJ_FALSE; /* no informative technique */
|
|
||||||
|
|
||||||
/* set EPB on */
|
|
||||||
if ((parameters->jpwl_hprot_MH > 0) || (parameters->jpwl_hprot_TPH[0] > 0)) {
|
|
||||||
cp->epb_on = OPJ_TRUE;
|
|
||||||
|
|
||||||
cp->hprot_MH = parameters->jpwl_hprot_MH;
|
|
||||||
for (i = 0; i < JPWL_MAX_NO_TILESPECS; i++) {
|
|
||||||
cp->hprot_TPH_tileno[i] = parameters->jpwl_hprot_TPH_tileno[i];
|
|
||||||
cp->hprot_TPH[i] = parameters->jpwl_hprot_TPH[i];
|
|
||||||
}
|
|
||||||
/* if tile specs are not specified, copy MH specs */
|
|
||||||
if (cp->hprot_TPH[0] == -1) {
|
|
||||||
cp->hprot_TPH_tileno[0] = 0;
|
|
||||||
cp->hprot_TPH[0] = parameters->jpwl_hprot_MH;
|
|
||||||
}
|
|
||||||
for (i = 0; i < JPWL_MAX_NO_PACKSPECS; i++) {
|
|
||||||
cp->pprot_tileno[i] = parameters->jpwl_pprot_tileno[i];
|
|
||||||
cp->pprot_packno[i] = parameters->jpwl_pprot_packno[i];
|
|
||||||
cp->pprot[i] = parameters->jpwl_pprot[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set ESD writing */
|
|
||||||
if ((parameters->jpwl_sens_size == 1) || (parameters->jpwl_sens_size == 2)) {
|
|
||||||
cp->esd_on = OPJ_TRUE;
|
|
||||||
|
|
||||||
cp->sens_size = parameters->jpwl_sens_size;
|
|
||||||
cp->sens_addr = parameters->jpwl_sens_addr;
|
|
||||||
cp->sens_range = parameters->jpwl_sens_range;
|
|
||||||
|
|
||||||
cp->sens_MH = parameters->jpwl_sens_MH;
|
|
||||||
for (i = 0; i < JPWL_MAX_NO_TILESPECS; i++) {
|
|
||||||
cp->sens_TPH_tileno[i] = parameters->jpwl_sens_TPH_tileno[i];
|
|
||||||
cp->sens_TPH[i] = parameters->jpwl_sens_TPH[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* always set RED writing to false: we are at the encoder */
|
|
||||||
cp->red_on = OPJ_FALSE;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
cp->epc_on = OPJ_FALSE;
|
|
||||||
}
|
|
||||||
#endif /* USE_JPWL */
|
|
||||||
|
|
||||||
|
|
||||||
/* initialize the mutiple tiles */
|
|
||||||
/* ---------------------------- */
|
|
||||||
cp->tcps = (opj_tcp_t*) opj_calloc(cp->tw * cp->th, sizeof(opj_tcp_t));
|
|
||||||
|
|
||||||
for (tileno = 0; tileno < cp->tw * cp->th; tileno++) {
|
|
||||||
opj_tcp_t *tcp = &cp->tcps[tileno];
|
|
||||||
tcp->numlayers = parameters->tcp_numlayers;
|
|
||||||
assert ( tcp->numlayers >= 0 );
|
|
||||||
for (j = 0; j < (OPJ_UINT32)tcp->numlayers; j++) {
|
|
||||||
if(cp->cinema){
|
|
||||||
if (cp->fixed_quality) {
|
|
||||||
tcp->distoratio[j] = parameters->tcp_distoratio[j];
|
|
||||||
}
|
|
||||||
tcp->rates[j] = parameters->tcp_rates[j];
|
|
||||||
}else{
|
|
||||||
if (cp->fixed_quality) { /* add fixed_quality */
|
|
||||||
tcp->distoratio[j] = parameters->tcp_distoratio[j];
|
|
||||||
} else {
|
|
||||||
tcp->rates[j] = parameters->tcp_rates[j];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tcp->csty = parameters->csty;
|
|
||||||
tcp->prg = parameters->prog_order;
|
|
||||||
tcp->mct = parameters->tcp_mct;
|
|
||||||
|
|
||||||
numpocs_tile = 0;
|
|
||||||
tcp->POC = 0;
|
|
||||||
if (parameters->numpocs) {
|
|
||||||
/* initialisation of POC */
|
|
||||||
tcp->POC = 1;
|
|
||||||
assert( parameters->numpocs >= 0 );
|
|
||||||
for (i = 0; i < (OPJ_UINT32)parameters->numpocs; i++) {
|
|
||||||
if((tileno == parameters->POC[i].tile - 1) || (parameters->POC[i].tile == -1)) {
|
|
||||||
opj_poc_t *tcp_poc = &tcp->pocs[numpocs_tile];
|
|
||||||
tcp_poc->resno0 = parameters->POC[numpocs_tile].resno0;
|
|
||||||
tcp_poc->compno0 = parameters->POC[numpocs_tile].compno0;
|
|
||||||
tcp_poc->layno1 = parameters->POC[numpocs_tile].layno1;
|
|
||||||
tcp_poc->resno1 = parameters->POC[numpocs_tile].resno1;
|
|
||||||
tcp_poc->compno1 = parameters->POC[numpocs_tile].compno1;
|
|
||||||
tcp_poc->prg1 = parameters->POC[numpocs_tile].prg1;
|
|
||||||
tcp_poc->tile = parameters->POC[numpocs_tile].tile;
|
|
||||||
numpocs_tile++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tcp->numpocs = numpocs_tile -1 ;
|
|
||||||
}else{
|
|
||||||
tcp->numpocs = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
tcp->tccps = (opj_tccp_t*) opj_calloc(image->numcomps, sizeof(opj_tccp_t));
|
|
||||||
|
|
||||||
for (i = 0; i < image->numcomps; i++) {
|
|
||||||
opj_tccp_t *tccp = &tcp->tccps[i];
|
|
||||||
tccp->csty = parameters->csty & 0x01; /* 0 => one precinct || 1 => custom precinct */
|
|
||||||
tccp->numresolutions = parameters->numresolution;
|
|
||||||
tccp->cblkw = int_floorlog2(parameters->cblockw_init);
|
|
||||||
tccp->cblkh = int_floorlog2(parameters->cblockh_init);
|
|
||||||
tccp->cblksty = parameters->mode;
|
|
||||||
tccp->qmfbid = parameters->irreversible ? 0 : 1;
|
|
||||||
tccp->qntsty = parameters->irreversible ? J2K_CCP_QNTSTY_SEQNT : J2K_CCP_QNTSTY_NOQNT;
|
|
||||||
tccp->numgbits = 2;
|
|
||||||
assert(parameters->roi_compno >= 0);
|
|
||||||
if (i == (OPJ_UINT32)parameters->roi_compno) {
|
|
||||||
tccp->roishift = parameters->roi_shift;
|
|
||||||
} else {
|
|
||||||
tccp->roishift = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(parameters->cp_cinema)
|
|
||||||
{
|
|
||||||
/*Precinct size for lowest frequency subband=128*/
|
|
||||||
tccp->prcw[0] = 7;
|
|
||||||
tccp->prch[0] = 7;
|
|
||||||
/*Precinct size at all other resolutions = 256*/
|
|
||||||
for (j = 1; j < tccp->numresolutions; j++) {
|
|
||||||
tccp->prcw[j] = 8;
|
|
||||||
tccp->prch[j] = 8;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
if (parameters->csty & J2K_CCP_CSTY_PRT) {
|
|
||||||
int p = 0;
|
|
||||||
assert(tccp->numresolutions > 0);
|
|
||||||
for (j = (OPJ_UINT32)(tccp->numresolutions - 1); (int)j >= 0; j--) {
|
|
||||||
if (p < parameters->res_spec) {
|
|
||||||
|
|
||||||
if (parameters->prcw_init[p] < 1) {
|
|
||||||
tccp->prcw[j] = 1;
|
|
||||||
} else {
|
|
||||||
tccp->prcw[j] = int_floorlog2(parameters->prcw_init[p]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parameters->prch_init[p] < 1) {
|
|
||||||
tccp->prch[j] = 1;
|
|
||||||
}else {
|
|
||||||
tccp->prch[j] = int_floorlog2(parameters->prch_init[p]);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
int res_spec = parameters->res_spec;
|
|
||||||
int size_prcw = parameters->prcw_init[res_spec - 1] >> (p - (res_spec - 1));
|
|
||||||
int size_prch = parameters->prch_init[res_spec - 1] >> (p - (res_spec - 1));
|
|
||||||
|
|
||||||
if (size_prcw < 1) {
|
|
||||||
tccp->prcw[j] = 1;
|
|
||||||
} else {
|
|
||||||
tccp->prcw[j] = int_floorlog2(size_prcw);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (size_prch < 1) {
|
|
||||||
tccp->prch[j] = 1;
|
|
||||||
} else {
|
|
||||||
tccp->prch[j] = int_floorlog2(size_prch);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
p++;
|
|
||||||
/*printf("\nsize precinct for level %d : %d,%d\n", j,tccp->prcw[j], tccp->prch[j]); */
|
|
||||||
} /*end for*/
|
|
||||||
} else {
|
|
||||||
for (j = 0; j < tccp->numresolutions; j++) {
|
|
||||||
tccp->prcw[j] = 15;
|
|
||||||
tccp->prch[j] = 15;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dwt_calc_explicit_stepsizes(tccp, image->comps[i].prec);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void opj_j2k_setup_encoder_v2( opj_j2k_v2_t *p_j2k,
|
|
||||||
opj_cparameters_t *parameters,
|
opj_cparameters_t *parameters,
|
||||||
opj_image_t *image,
|
opj_image_t *image,
|
||||||
struct opj_event_mgr * p_manager)
|
opj_event_mgr_t * p_manager)
|
||||||
{
|
{
|
||||||
OPJ_UINT32 i, j, tileno, numpocs_tile;
|
OPJ_UINT32 i, j, tileno, numpocs_tile;
|
||||||
opj_cp_v2_t *cp = 00;
|
opj_cp_v2_t *cp = 00;
|
||||||
|
|
|
@ -801,19 +801,11 @@ Creates a J2K compression structure
|
||||||
*/
|
*/
|
||||||
opj_j2k_v2_t* opj_j2k_create_compress_v2(void);
|
opj_j2k_v2_t* opj_j2k_create_compress_v2(void);
|
||||||
|
|
||||||
/**
|
|
||||||
Setup the encoder parameters using the current image and using user parameters.
|
|
||||||
Coding parameters are returned in j2k->cp.
|
|
||||||
@param j2k J2K compressor handle
|
|
||||||
@param parameters compression parameters
|
|
||||||
@param image input filled image
|
|
||||||
*/
|
|
||||||
void j2k_setup_encoder(opj_j2k_t *j2k, opj_cparameters_t *parameters, opj_image_t *image);
|
|
||||||
|
|
||||||
void opj_j2k_setup_encoder_v2( opj_j2k_v2_t *p_j2k,
|
void opj_j2k_setup_encoder( opj_j2k_v2_t *p_j2k,
|
||||||
opj_cparameters_t *parameters,
|
opj_cparameters_t *parameters,
|
||||||
opj_image_t *image,
|
opj_image_t *image,
|
||||||
struct opj_event_mgr * p_manager);
|
opj_event_mgr_t * p_manager);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Converts an enum type progression order to string type
|
Converts an enum type progression order to string type
|
||||||
|
|
|
@ -1517,7 +1517,7 @@ void opj_jp2_setup_encoder( opj_jp2_v2_t *jp2,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
opj_j2k_setup_encoder_v2(jp2->j2k, parameters, image, p_manager );
|
opj_j2k_setup_encoder(jp2->j2k, parameters, image, p_manager );
|
||||||
|
|
||||||
/* setup the JP2 codec */
|
/* setup the JP2 codec */
|
||||||
/* ------------------- */
|
/* ------------------- */
|
||||||
|
|
|
@ -749,7 +749,7 @@ opj_codec_t* OPJ_CALLCONV opj_create_compress(OPJ_CODEC_FORMAT p_format)
|
||||||
l_codec->m_codec_data.m_compression.opj_setup_encoder = (void (*) ( void *,
|
l_codec->m_codec_data.m_compression.opj_setup_encoder = (void (*) ( void *,
|
||||||
opj_cparameters_t *,
|
opj_cparameters_t *,
|
||||||
struct opj_image *,
|
struct opj_image *,
|
||||||
struct opj_event_mgr * )) opj_j2k_setup_encoder_v2;
|
struct opj_event_mgr * )) opj_j2k_setup_encoder;
|
||||||
|
|
||||||
l_codec->m_codec = opj_j2k_create_compress_v2();
|
l_codec->m_codec = opj_j2k_create_compress_v2();
|
||||||
if (! l_codec->m_codec) {
|
if (! l_codec->m_codec) {
|
||||||
|
|
Loading…
Reference in New Issue