diff options
Diffstat (limited to 'third_party/libopenjpeg20/t2.c')
-rw-r--r-- | third_party/libopenjpeg20/t2.c | 98 |
1 files changed, 53 insertions, 45 deletions
diff --git a/third_party/libopenjpeg20/t2.c b/third_party/libopenjpeg20/t2.c index 6f0ac91569..5af1a69aae 100644 --- a/third_party/libopenjpeg20/t2.c +++ b/third_party/libopenjpeg20/t2.c @@ -97,7 +97,8 @@ static OPJ_BOOL opj_t2_decode_packet( opj_t2_t* t2, OPJ_BYTE *src, OPJ_UINT32 * data_read, OPJ_UINT32 max_length, - opj_packet_info_t *pack_info); + opj_packet_info_t *pack_info, + opj_event_mgr_t *p_manager); static OPJ_BOOL opj_t2_skip_packet( opj_t2_t* p_t2, opj_tcd_tile_t *p_tile, @@ -106,7 +107,8 @@ static OPJ_BOOL opj_t2_skip_packet( opj_t2_t* p_t2, OPJ_BYTE *p_src, OPJ_UINT32 * p_data_read, OPJ_UINT32 p_max_length, - opj_packet_info_t *p_pack_info); + opj_packet_info_t *p_pack_info, + opj_event_mgr_t *p_manager); static OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, opj_tcd_tile_t *p_tile, @@ -116,7 +118,8 @@ static OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, OPJ_BYTE *p_src_data, OPJ_UINT32 * p_data_read, OPJ_UINT32 p_max_length, - opj_packet_info_t *p_pack_info); + opj_packet_info_t *p_pack_info, + opj_event_mgr_t *p_manager); static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, opj_tcd_tile_t *p_tile, @@ -124,14 +127,16 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, OPJ_BYTE *p_src_data, OPJ_UINT32 * p_data_read, OPJ_UINT32 p_max_length, - opj_packet_info_t *pack_info); + opj_packet_info_t *pack_info, + opj_event_mgr_t *p_manager); static OPJ_BOOL opj_t2_skip_packet_data(opj_t2_t* p_t2, opj_tcd_tile_t *p_tile, opj_pi_iterator_t *p_pi, OPJ_UINT32 * p_data_read, OPJ_UINT32 p_max_length, - opj_packet_info_t *pack_info); + opj_packet_info_t *pack_info, + opj_event_mgr_t *p_manager); /** @param cblk @@ -158,7 +163,7 @@ static void opj_t2_putcommacode(opj_bio_t *bio, OPJ_INT32 n) { opj_bio_write(bio, 0, 1); } -OPJ_UINT32 opj_t2_getcommacode(opj_bio_t *bio) +static OPJ_UINT32 opj_t2_getcommacode(opj_bio_t *bio) { OPJ_UINT32 n = 0; while (opj_bio_read(bio, 1)) { @@ -167,7 +172,7 @@ OPJ_UINT32 opj_t2_getcommacode(opj_bio_t *bio) return n; } -void opj_t2_putnumpasses(opj_bio_t *bio, OPJ_UINT32 n) { +static void opj_t2_putnumpasses(opj_bio_t *bio, OPJ_UINT32 n) { if (n == 1) { opj_bio_write(bio, 0, 1); } else if (n == 2) { @@ -181,7 +186,7 @@ void opj_t2_putnumpasses(opj_bio_t *bio, OPJ_UINT32 n) { } } -OPJ_UINT32 opj_t2_getnumpasses(opj_bio_t *bio) { +static OPJ_UINT32 opj_t2_getnumpasses(opj_bio_t *bio) { OPJ_UINT32 n; if (!opj_bio_read(bio, 1)) return 1; @@ -345,7 +350,8 @@ OPJ_BOOL opj_t2_decode_packets( opj_t2_t *p_t2, OPJ_BYTE *p_src, OPJ_UINT32 * p_data_read, OPJ_UINT32 p_max_len, - opj_codestream_index_t *p_cstr_index) + opj_codestream_index_t *p_cstr_index, + opj_event_mgr_t *p_manager) { OPJ_BYTE *l_current_data = p_src; opj_pi_iterator_t *l_pi = 00; @@ -413,7 +419,7 @@ OPJ_BOOL opj_t2_decode_packets( opj_t2_t *p_t2, first_pass_failed[l_current_pi->compno] = OPJ_FALSE; - if (! opj_t2_decode_packet(p_t2,p_tile,l_tcp,l_current_pi,l_current_data,&l_nb_bytes_read,p_max_len,l_pack_info)) { + if (! opj_t2_decode_packet(p_t2,p_tile,l_tcp,l_current_pi,l_current_data,&l_nb_bytes_read,p_max_len,l_pack_info, p_manager)) { opj_pi_destroy(l_pi,l_nb_pocs); opj_free(first_pass_failed); return OPJ_FALSE; @@ -424,7 +430,7 @@ OPJ_BOOL opj_t2_decode_packets( opj_t2_t *p_t2, } else { l_nb_bytes_read = 0; - if (! opj_t2_skip_packet(p_t2,p_tile,l_tcp,l_current_pi,l_current_data,&l_nb_bytes_read,p_max_len,l_pack_info)) { + if (! opj_t2_skip_packet(p_t2,p_tile,l_tcp,l_current_pi,l_current_data,&l_nb_bytes_read,p_max_len,l_pack_info, p_manager)) { opj_pi_destroy(l_pi,l_nb_pocs); opj_free(first_pass_failed); return OPJ_FALSE; @@ -511,14 +517,15 @@ void opj_t2_destroy(opj_t2_t *t2) { } } -OPJ_BOOL opj_t2_decode_packet( opj_t2_t* p_t2, +static OPJ_BOOL opj_t2_decode_packet( opj_t2_t* p_t2, opj_tcd_tile_t *p_tile, opj_tcp_t *p_tcp, opj_pi_iterator_t *p_pi, OPJ_BYTE *p_src, OPJ_UINT32 * p_data_read, OPJ_UINT32 p_max_length, - opj_packet_info_t *p_pack_info) + opj_packet_info_t *p_pack_info, + opj_event_mgr_t *p_manager) { OPJ_BOOL l_read_data; OPJ_UINT32 l_nb_bytes_read = 0; @@ -526,7 +533,7 @@ OPJ_BOOL opj_t2_decode_packet( opj_t2_t* p_t2, *p_data_read = 0; - if (! opj_t2_read_packet_header(p_t2,p_tile,p_tcp,p_pi,&l_read_data,p_src,&l_nb_bytes_read,p_max_length,p_pack_info)) { + if (! opj_t2_read_packet_header(p_t2,p_tile,p_tcp,p_pi,&l_read_data,p_src,&l_nb_bytes_read,p_max_length,p_pack_info, p_manager)) { return OPJ_FALSE; } @@ -538,7 +545,7 @@ OPJ_BOOL opj_t2_decode_packet( opj_t2_t* p_t2, if (l_read_data) { l_nb_bytes_read = 0; - if (! opj_t2_read_packet_data(p_t2,p_tile,p_pi,p_src,&l_nb_bytes_read,p_max_length,p_pack_info)) { + if (! opj_t2_read_packet_data(p_t2,p_tile,p_pi,p_src,&l_nb_bytes_read,p_max_length,p_pack_info, p_manager)) { return OPJ_FALSE; } @@ -550,7 +557,7 @@ OPJ_BOOL opj_t2_decode_packet( opj_t2_t* p_t2, return OPJ_TRUE; } -OPJ_BOOL opj_t2_encode_packet( OPJ_UINT32 tileno, +static OPJ_BOOL opj_t2_encode_packet( OPJ_UINT32 tileno, opj_tcd_tile_t * tile, opj_tcp_t * tcp, opj_pi_iterator_t *pi, @@ -793,7 +800,8 @@ static OPJ_BOOL opj_t2_skip_packet( opj_t2_t* p_t2, OPJ_BYTE *p_src, OPJ_UINT32 * p_data_read, OPJ_UINT32 p_max_length, - opj_packet_info_t *p_pack_info) + opj_packet_info_t *p_pack_info, + opj_event_mgr_t *p_manager) { OPJ_BOOL l_read_data; OPJ_UINT32 l_nb_bytes_read = 0; @@ -801,7 +809,7 @@ static OPJ_BOOL opj_t2_skip_packet( opj_t2_t* p_t2, *p_data_read = 0; - if (! opj_t2_read_packet_header(p_t2,p_tile,p_tcp,p_pi,&l_read_data,p_src,&l_nb_bytes_read,p_max_length,p_pack_info)) { + if (! opj_t2_read_packet_header(p_t2,p_tile,p_tcp,p_pi,&l_read_data,p_src,&l_nb_bytes_read,p_max_length,p_pack_info, p_manager)) { return OPJ_FALSE; } @@ -813,7 +821,7 @@ static OPJ_BOOL opj_t2_skip_packet( opj_t2_t* p_t2, if (l_read_data) { l_nb_bytes_read = 0; - if (! opj_t2_skip_packet_data(p_t2,p_tile,p_pi,&l_nb_bytes_read,p_max_length,p_pack_info)) { + if (! opj_t2_skip_packet_data(p_t2,p_tile,p_pi,&l_nb_bytes_read,p_max_length,p_pack_info, p_manager)) { return OPJ_FALSE; } @@ -825,7 +833,7 @@ static OPJ_BOOL opj_t2_skip_packet( opj_t2_t* p_t2, } -OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, +static OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, opj_tcd_tile_t *p_tile, opj_tcp_t *p_tcp, opj_pi_iterator_t *p_pi, @@ -833,7 +841,8 @@ OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, OPJ_BYTE *p_src_data, OPJ_UINT32 * p_data_read, OPJ_UINT32 p_max_length, - opj_packet_info_t *p_pack_info) + opj_packet_info_t *p_pack_info, + opj_event_mgr_t *p_manager) { /* loop */ @@ -882,11 +891,9 @@ OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, if (p_tcp->csty & J2K_CP_CSTY_SOP) { if (p_max_length < 6) { - /* TODO opj_event_msg(p_t2->cinfo->event_mgr, EVT_WARNING, "Not enough space for expected SOP marker\n"); */ - fprintf(stderr, "Not enough space for expected SOP marker\n"); + opj_event_msg(p_manager, EVT_WARNING, "Not enough space for expected SOP marker\n"); } else if ((*l_current_data) != 0xff || (*(l_current_data + 1) != 0x91)) { - /* TODO opj_event_msg(p_t2->cinfo->event_mgr, EVT_WARNING, "Expected SOP marker\n"); */ - fprintf(stderr, "Warning: expected SOP marker\n"); + opj_event_msg(p_manager, EVT_WARNING, "Expected SOP marker\n"); } else { l_current_data += 6; } @@ -937,9 +944,9 @@ OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, /* EPH markers */ if (p_tcp->csty & J2K_CP_CSTY_EPH) { if ((*l_modified_length_ptr - (OPJ_UINT32)(l_header_data - *l_header_data_start)) < 2U) { - fprintf(stderr, "Not enough space for expected EPH marker\n"); + opj_event_msg(p_manager, EVT_WARNING, "Not enough space for expected EPH marker\n"); } else if ((*l_header_data) != 0xff || (*(l_header_data + 1) != 0x92)) { - fprintf(stderr, "Error : expected EPH marker\n"); + opj_event_msg(p_manager, EVT_WARNING, "Expected EPH marker\n"); } else { l_header_data += 2; } @@ -990,7 +997,7 @@ OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, if (!l_included) { l_cblk->numnewpasses = 0; ++l_cblk; - JAS_FPRINTF(stderr, "included=%d \n", l_included); + JAS_FPRINTF(stderr, "included=%d \n", l_included); continue; } @@ -1065,10 +1072,9 @@ OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, /* EPH markers */ if (p_tcp->csty & J2K_CP_CSTY_EPH) { if ((*l_modified_length_ptr - (OPJ_UINT32)(l_header_data - *l_header_data_start)) < 2U) { - fprintf(stderr, "Not enough space for expected EPH marker\n"); + opj_event_msg(p_manager, EVT_WARNING, "Not enough space for expected EPH marker\n"); } else if ((*l_header_data) != 0xff || (*(l_header_data + 1) != 0x92)) { - /* TODO opj_event_msg(t2->cinfo->event_mgr, EVT_ERROR, "Expected EPH marker\n"); */ - fprintf(stderr, "Error : expected EPH marker\n"); + opj_event_msg(p_manager, EVT_WARNING, "Expected EPH marker\n"); } else { l_header_data += 2; } @@ -1094,13 +1100,14 @@ OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, return OPJ_TRUE; } -OPJ_BOOL opj_t2_read_packet_data( opj_t2_t* p_t2, +static OPJ_BOOL opj_t2_read_packet_data( opj_t2_t* p_t2, opj_tcd_tile_t *p_tile, opj_pi_iterator_t *p_pi, OPJ_BYTE *p_src_data, OPJ_UINT32 * p_data_read, OPJ_UINT32 p_max_length, - opj_packet_info_t *pack_info) + opj_packet_info_t *pack_info, + opj_event_mgr_t* p_manager) { OPJ_UINT32 bandno, cblkno; OPJ_UINT32 l_nb_code_blocks; @@ -1150,8 +1157,8 @@ OPJ_BOOL opj_t2_read_packet_data( opj_t2_t* p_t2, do { /* Check possible overflow (on l_current_data only, assumes input args already checked) then size */ if ((((OPJ_SIZE_T)l_current_data + (OPJ_SIZE_T)l_seg->newlen) < (OPJ_SIZE_T)l_current_data) || (l_current_data + l_seg->newlen > p_src_data + p_max_length)) { - fprintf(stderr, "read: segment too long (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", - l_seg->newlen, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); + opj_event_msg(p_manager, EVT_ERROR, "read: segment too long (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", + l_seg->newlen, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); return OPJ_FALSE; } @@ -1161,22 +1168,22 @@ OPJ_BOOL opj_t2_read_packet_data( opj_t2_t* p_t2, /* let's check that we are not exceeding */ if ((l_cblk->len + l_seg->newlen) > 8192) { - opj_event_msg(p_t2->cinfo, EVT_WARNING, + opj_event_msg(p_manager, EVT_WARNING, "JPWL: segment too long (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", l_seg->newlen, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); if (!JPWL_ASSUME) { - opj_event_msg(p_t2->cinfo, EVT_ERROR, "JPWL: giving up\n"); + opj_event_msg(p_manager, EVT_ERROR, "JPWL: giving up\n"); return OPJ_FALSE; } l_seg->newlen = 8192 - l_cblk->len; - opj_event_msg(p_t2->cinfo, EVT_WARNING, " - truncating segment to %d\n", l_seg->newlen); + opj_event_msg(p_manager, EVT_WARNING, " - truncating segment to %d\n", l_seg->newlen); break; }; #endif /* USE_JPWL */ /* Check possible overflow on size */ if ((l_cblk->data_current_size + l_seg->newlen) < l_cblk->data_current_size) { - fprintf(stderr, "read: segment too long (%d) with current size (%d > %d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", + opj_event_msg(p_manager, EVT_ERROR, "read: segment too long (%d) with current size (%d > %d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", l_seg->newlen, l_cblk->data_current_size, 0xFFFFFFFF - l_seg->newlen, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); return OPJ_FALSE; } @@ -1228,12 +1235,13 @@ OPJ_BOOL opj_t2_read_packet_data( opj_t2_t* p_t2, return OPJ_TRUE; } -OPJ_BOOL opj_t2_skip_packet_data( opj_t2_t* p_t2, +static OPJ_BOOL opj_t2_skip_packet_data( opj_t2_t* p_t2, opj_tcd_tile_t *p_tile, opj_pi_iterator_t *p_pi, OPJ_UINT32 * p_data_read, OPJ_UINT32 p_max_length, - opj_packet_info_t *pack_info) + opj_packet_info_t *pack_info, + opj_event_mgr_t *p_manager) { OPJ_UINT32 bandno, cblkno; OPJ_UINT32 l_nb_code_blocks; @@ -1284,7 +1292,7 @@ OPJ_BOOL opj_t2_skip_packet_data( opj_t2_t* p_t2, do { /* Check possible overflow then size */ if (((*p_data_read + l_seg->newlen) < (*p_data_read)) || ((*p_data_read + l_seg->newlen) > p_max_length)) { - fprintf(stderr, "skip: segment too long (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", + opj_event_msg(p_manager, EVT_ERROR, "skip: segment too long (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", l_seg->newlen, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); return OPJ_FALSE; } @@ -1295,15 +1303,15 @@ OPJ_BOOL opj_t2_skip_packet_data( opj_t2_t* p_t2, /* let's check that we are not exceeding */ if ((l_cblk->len + l_seg->newlen) > 8192) { - opj_event_msg(p_t2->cinfo, EVT_WARNING, + opj_event_msg(p_manager, EVT_WARNING, "JPWL: segment too long (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", l_seg->newlen, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); if (!JPWL_ASSUME) { - opj_event_msg(p_t2->cinfo, EVT_ERROR, "JPWL: giving up\n"); + opj_event_msg(p_manager, EVT_ERROR, "JPWL: giving up\n"); return -999; } l_seg->newlen = 8192 - l_cblk->len; - opj_event_msg(p_t2->cinfo, EVT_WARNING, " - truncating segment to %d\n", l_seg->newlen); + opj_event_msg(p_manager, EVT_WARNING, " - truncating segment to %d\n", l_seg->newlen); break; }; |