Index: core/src/fxcodec/fx_libopenjpeg/libopenjpeg20/tcd.c |
diff --git a/core/src/fxcodec/fx_libopenjpeg/libopenjpeg20/tcd.c b/core/src/fxcodec/fx_libopenjpeg/libopenjpeg20/tcd.c |
index c1086755d639af4927eb28e6a92ba962a49ed6db..7dd93e99168600adec87d2efc26796414f0cfbe1 100644 |
--- a/core/src/fxcodec/fx_libopenjpeg/libopenjpeg20/tcd.c |
+++ b/core/src/fxcodec/fx_libopenjpeg/libopenjpeg20/tcd.c |
@@ -175,20 +175,18 @@ opj_tcd_t* opj_tcd_create(OPJ_BOOL p_is_decoder) |
opj_tcd_t *l_tcd = 00; |
/* create the tcd structure */ |
- l_tcd = (opj_tcd_t*) opj_malloc(sizeof(opj_tcd_t)); |
+ l_tcd = (opj_tcd_t*) opj_calloc(1,sizeof(opj_tcd_t)); |
if (!l_tcd) { |
return 00; |
} |
- memset(l_tcd,0,sizeof(opj_tcd_t)); |
l_tcd->m_is_decoder = p_is_decoder ? 1 : 0; |
- l_tcd->tcd_image = (opj_tcd_image_t*)opj_malloc(sizeof(opj_tcd_image_t)); |
+ l_tcd->tcd_image = (opj_tcd_image_t*)opj_calloc(1,sizeof(opj_tcd_image_t)); |
if (!l_tcd->tcd_image) { |
opj_free(l_tcd); |
return 00; |
} |
- memset(l_tcd->tcd_image,0,sizeof(opj_tcd_image_t)); |
return l_tcd; |
} |
@@ -467,6 +465,10 @@ OPJ_BOOL opj_tcd_rateallocate( opj_tcd_t *tcd, |
tile_info->numpix = tcd_tile->numpix; |
tile_info->distotile = tcd_tile->distotile; |
tile_info->thresh = (OPJ_FLOAT64 *) opj_malloc(tcd_tcp->numlayers * sizeof(OPJ_FLOAT64)); |
+ if (!tile_info->thresh) { |
+ /* FIXME event manager error callback */ |
+ return OPJ_FALSE; |
+ } |
} |
for (layno = 0; layno < tcd_tcp->numlayers; layno++) { |
@@ -502,7 +504,7 @@ OPJ_BOOL opj_tcd_rateallocate( opj_tcd_t *tcd, |
opj_tcd_makelayer(tcd, layno, thresh, 0); |
if (cp->m_specific_param.m_enc.m_fixed_quality) { /* fixed_quality */ |
- if(cp->m_specific_param.m_enc.m_cinema){ |
+ if(OPJ_IS_CINEMA(cp->rsiz)){ |
if (! opj_t2_encode_packets(t2,tcd->tcd_tileno, tcd_tile, layno + 1, dest, p_data_written, maxlen, cstr_info,tcd->cur_tp_num,tcd->tp_pos,tcd->cur_pino,THRESH_CALC)) { |
lo = thresh; |
@@ -575,23 +577,18 @@ OPJ_BOOL opj_tcd_init( opj_tcd_t *p_tcd, |
opj_image_t * p_image, |
opj_cp_t * p_cp ) |
{ |
- OPJ_UINT32 l_tile_comp_size; |
- |
p_tcd->image = p_image; |
p_tcd->cp = p_cp; |
- p_tcd->tcd_image->tiles = (opj_tcd_tile_t *) opj_malloc(sizeof(opj_tcd_tile_t)); |
+ p_tcd->tcd_image->tiles = (opj_tcd_tile_t *) opj_calloc(1,sizeof(opj_tcd_tile_t)); |
if (! p_tcd->tcd_image->tiles) { |
return OPJ_FALSE; |
} |
- memset(p_tcd->tcd_image->tiles,0, sizeof(opj_tcd_tile_t)); |
- l_tile_comp_size = p_image->numcomps * (OPJ_UINT32)sizeof(opj_tcd_tilecomp_t); |
- p_tcd->tcd_image->tiles->comps = (opj_tcd_tilecomp_t *) opj_malloc(l_tile_comp_size); |
+ p_tcd->tcd_image->tiles->comps = (opj_tcd_tilecomp_t *) opj_calloc(p_image->numcomps,sizeof(opj_tcd_tilecomp_t)); |
if (! p_tcd->tcd_image->tiles->comps ) { |
return OPJ_FALSE; |
} |
- memset( p_tcd->tcd_image->tiles->comps , 0 , l_tile_comp_size); |
p_tcd->tcd_image->tiles->numcomps = p_image->numcomps; |
p_tcd->tp_pos = p_cp->m_specific_param.m_enc.m_tp_pos; |
@@ -686,7 +683,7 @@ OPJ_BOOL FUNCTION ( opj_tcd_t *p_tcd, \ |
l_tilec->x1 = opj_int_ceildiv(l_tile->x1, (OPJ_INT32)l_image_comp->dx); \ |
l_tilec->y1 = opj_int_ceildiv(l_tile->y1, (OPJ_INT32)l_image_comp->dy); \ |
/*fprintf(stderr, "\tTile compo border = %d,%d,%d,%d\n", l_tilec->x0, l_tilec->y0,l_tilec->x1,l_tilec->y1);*/ \ |
- if (l_tilec->x1 < 0 || l_tilec->x0 < 0 || l_tilec->y1 < 0 || l_tilec->y0 < 0) return OPJ_FALSE;\ |
+ \ |
l_data_size = (OPJ_UINT32)(l_tilec->x1 - l_tilec->x0) \ |
* (OPJ_UINT32)(l_tilec->y1 - l_tilec->y0) * (OPJ_UINT32)sizeof(OPJ_UINT32 );\ |
l_tilec->numresolutions = l_tccp->numresolutions; \ |
@@ -775,8 +772,6 @@ OPJ_BOOL FUNCTION ( opj_tcd_t *p_tcd, \ |
/* p. 35, table A-23, ISO/IEC FDIS154444-1 : 2000 (18 august 2000) */ \ |
l_pdx = l_tccp->prcw[resno]; \ |
l_pdy = l_tccp->prch[resno]; \ |
- if (l_pdx == 0 || l_pdy == 0) \ |
- return OPJ_FALSE; \ |
/*fprintf(stderr, "\t\t\tpdx=%d, pdy=%d\n", l_pdx, l_pdy);*/ \ |
/* p. 64, B.6, ISO/IEC FDIS15444-1 : 2000 (18 august 2000) */ \ |
l_tl_prc_x_start = opj_int_floordivpow2(l_res->x0, (OPJ_INT32)l_pdx) << l_pdx; \ |
@@ -1023,20 +1018,17 @@ OPJ_BOOL opj_tcd_code_block_enc_allocate (opj_tcd_cblk_enc_t * p_code_block) |
p_code_block->data+=1; |
/* no memset since data */ |
- p_code_block->layers = (opj_tcd_layer_t*) opj_malloc(100 * sizeof(opj_tcd_layer_t)); |
+ p_code_block->layers = (opj_tcd_layer_t*) opj_calloc(100, sizeof(opj_tcd_layer_t)); |
if (! p_code_block->layers) { |
return OPJ_FALSE; |
} |
- p_code_block->passes = (opj_tcd_pass_t*) opj_malloc(100 * sizeof(opj_tcd_pass_t)); |
+ p_code_block->passes = (opj_tcd_pass_t*) opj_calloc(100, sizeof(opj_tcd_pass_t)); |
if (! p_code_block->passes) { |
return OPJ_FALSE; |
} |
} |
- memset(p_code_block->layers,0,100 * sizeof(opj_tcd_layer_t)); |
- memset(p_code_block->passes,0,100 * sizeof(opj_tcd_pass_t)); |
- |
return OPJ_TRUE; |
} |
@@ -1045,8 +1037,6 @@ OPJ_BOOL opj_tcd_code_block_enc_allocate (opj_tcd_cblk_enc_t * p_code_block) |
*/ |
OPJ_BOOL opj_tcd_code_block_dec_allocate (opj_tcd_cblk_dec_t * p_code_block) |
{ |
- OPJ_UINT32 l_seg_size; |
- |
if (! p_code_block->data) { |
p_code_block->data = (OPJ_BYTE*) opj_malloc(OPJ_J2K_DEFAULT_CBLK_DATA_SIZE); |
@@ -1056,12 +1046,10 @@ OPJ_BOOL opj_tcd_code_block_dec_allocate (opj_tcd_cblk_dec_t * p_code_block) |
p_code_block->data_max_size = OPJ_J2K_DEFAULT_CBLK_DATA_SIZE; |
/*fprintf(stderr, "Allocate 8192 elements of code_block->data\n");*/ |
- l_seg_size = OPJ_J2K_DEFAULT_NB_SEGS * sizeof(opj_tcd_seg_t); |
- p_code_block->segs = (opj_tcd_seg_t *) opj_malloc(l_seg_size); |
+ p_code_block->segs = (opj_tcd_seg_t *) opj_calloc(OPJ_J2K_DEFAULT_NB_SEGS,sizeof(opj_tcd_seg_t)); |
if (! p_code_block->segs) { |
return OPJ_FALSE; |
} |
- memset(p_code_block->segs,0,l_seg_size); |
/*fprintf(stderr, "Allocate %d elements of code_block->data\n", OPJ_J2K_DEFAULT_NB_SEGS * sizeof(opj_tcd_seg_t));*/ |
p_code_block->m_current_max_segs = OPJ_J2K_DEFAULT_NB_SEGS; |
@@ -1137,6 +1125,10 @@ OPJ_BOOL opj_tcd_encode_tile( opj_tcd_t *p_tcd, |
p_cstr_info->tile[p_tile_no].pdy[i] = (int)l_tccp->prch[i]; |
} |
p_cstr_info->tile[p_tile_no].packet = (opj_packet_info_t*) opj_calloc((size_t)p_cstr_info->numcomps * (size_t)p_cstr_info->numlayers * l_num_packs, sizeof(opj_packet_info_t)); |
+ if (!p_cstr_info->tile[p_tile_no].packet) { |
+ /* FIXME event manager error callback */ |
+ return OPJ_FALSE; |
+ } |
} |
/* << INDEX */ |