| OLD | NEW |
| 1 /* | 1 /* |
| 2 * The copyright in this software is being made available under the 2-clauses | 2 * The copyright in this software is being made available under the 2-clauses |
| 3 * BSD License, included below. This software may be subject to other third | 3 * BSD License, included below. This software may be subject to other third |
| 4 * party and contributor rights, including patent rights, and no such rights | 4 * party and contributor rights, including patent rights, and no such rights |
| 5 * are granted under this license. | 5 * are granted under this license. |
| 6 * | 6 * |
| 7 * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium | 7 * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium |
| 8 * Copyright (c) 2002-2014, Professor Benoit Macq | 8 * Copyright (c) 2002-2014, Professor Benoit Macq |
| 9 * Copyright (c) 2001-2003, David Janssens | 9 * Copyright (c) 2001-2003, David Janssens |
| 10 * Copyright (c) 2002-2003, Yannick Verschueren | 10 * Copyright (c) 2002-2003, Yannick Verschueren |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 | 90 |
| 91 @return FIXME DOC | 91 @return FIXME DOC |
| 92 */ | 92 */ |
| 93 static OPJ_BOOL opj_t2_decode_packet( opj_t2_t* t2, | 93 static OPJ_BOOL opj_t2_decode_packet( opj_t2_t* t2, |
| 94 opj_tcd_tile_t *tile, | 94 opj_tcd_tile_t *tile, |
| 95 opj_tcp_t *tcp, | 95 opj_tcp_t *tcp, |
| 96 opj_pi_iterator_t *pi, | 96 opj_pi_iterator_t *pi, |
| 97 OPJ_BYTE *src, | 97 OPJ_BYTE *src, |
| 98 OPJ_UINT32 * data_read, | 98 OPJ_UINT32 * data_read, |
| 99 OPJ_UINT32 max_length, | 99 OPJ_UINT32 max_length, |
| 100 opj_packet_info_t *pack_info); | 100 opj_packet_info_t *pack_info, |
| 101 opj_event_mgr_t *p_manager); |
| 101 | 102 |
| 102 static OPJ_BOOL opj_t2_skip_packet( opj_t2_t* p_t2, | 103 static OPJ_BOOL opj_t2_skip_packet( opj_t2_t* p_t2, |
| 103 opj_tcd_tile_t *p_tile, | 104 opj_tcd_tile_t *p_tile, |
| 104 opj_tcp_t *p_tcp, | 105 opj_tcp_t *p_tcp, |
| 105 opj_pi_iterator_t *p_pi, | 106 opj_pi_iterator_t *p_pi, |
| 106 OPJ_BYTE *p_src, | 107 OPJ_BYTE *p_src, |
| 107 OPJ_UINT32 * p_data_read, | 108 OPJ_UINT32 * p_data_read, |
| 108 OPJ_UINT32 p_max_length, | 109 OPJ_UINT32 p_max_length, |
| 109 opj_packet_info_t *p_pack_info); | 110 opj_packet_info_t *p_pack_info, |
| 111 opj_event_mgr_t *p_manager); |
| 110 | 112 |
| 111 static OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, | 113 static OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, |
| 112 opj_tcd_tile_t *p_tile, | 114 opj_tcd_tile_t *p_tile, |
| 113 opj_tcp_t *p_tcp, | 115 opj_tcp_t *p_tcp, |
| 114 opj_pi_iterator_t *p_pi, | 116 opj_pi_iterator_t *p_pi, |
| 115 OPJ_BOOL * p_is_data_present, | 117 OPJ_BOOL * p_is_data_present, |
| 116 OPJ_BYTE *p_src_data, | 118 OPJ_BYTE *p_src_data, |
| 117 OPJ_UINT32 * p_data_read, | 119 OPJ_UINT32 * p_data_read, |
| 118 OPJ_UINT32 p_max_length, | 120 OPJ_UINT32 p_max_length, |
| 119 opj_packet_info_t *p_pack_info); | 121 opj_packet_info_t *p_pack_info, |
| 122 opj_event_mgr_t *p_manager); |
| 120 | 123 |
| 121 static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, | 124 static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, |
| 122 opj_tcd_tile_t *p_tile, | 125 opj_tcd_tile_t *p_tile, |
| 123 opj_pi_iterator_t *p_pi, | 126 opj_pi_iterator_t *p_pi, |
| 124 OPJ_BYTE *p_src_data, | 127 OPJ_BYTE *p_src_data, |
| 125 OPJ_UINT32 * p_data_read, | 128 OPJ_UINT32 * p_data_read, |
| 126 OPJ_UINT32 p_max_length, | 129 OPJ_UINT32 p_max_length, |
| 127 opj_packet_info_t *pack_info); | 130 opj_packet_info_t *pack_info, |
| 131 opj_event_mgr_t *p_manager); |
| 128 | 132 |
| 129 static OPJ_BOOL opj_t2_skip_packet_data(opj_t2_t* p_t2, | 133 static OPJ_BOOL opj_t2_skip_packet_data(opj_t2_t* p_t2, |
| 130 opj_tcd_tile_t *p_tile, | 134 opj_tcd_tile_t *p_tile, |
| 131 opj_pi_iterator_t *p_pi, | 135 opj_pi_iterator_t *p_pi, |
| 132 OPJ_UINT32 * p_data_read, | 136 OPJ_UINT32 * p_data_read, |
| 133 OPJ_UINT32 p_max_length, | 137 OPJ_UINT32 p_max_length, |
| 134 opj_packet_info_t *pack_info); | 138 opj_packet_info_t *pack_info, |
| 139 opj_event_mgr_t *p_manager); |
| 135 | 140 |
| 136 /** | 141 /** |
| 137 @param cblk | 142 @param cblk |
| 138 @param index | 143 @param index |
| 139 @param cblksty | 144 @param cblksty |
| 140 @param first | 145 @param first |
| 141 */ | 146 */ |
| 142 static OPJ_BOOL opj_t2_init_seg( opj_tcd_cblk_dec_t* cblk, | 147 static OPJ_BOOL opj_t2_init_seg( opj_tcd_cblk_dec_t* cblk, |
| 143 OPJ_UINT32 index, | 148 OPJ_UINT32 index, |
| 144 OPJ_UINT32 cblksty, | 149 OPJ_UINT32 cblksty, |
| 145 OPJ_UINT32 first); | 150 OPJ_UINT32 first); |
| 146 | 151 |
| 147 /*@}*/ | 152 /*@}*/ |
| 148 | 153 |
| 149 /*@}*/ | 154 /*@}*/ |
| 150 | 155 |
| 151 /* ----------------------------------------------------------------------- */ | 156 /* ----------------------------------------------------------------------- */ |
| 152 | 157 |
| 153 /* #define RESTART 0x04 */ | 158 /* #define RESTART 0x04 */ |
| 154 static void opj_t2_putcommacode(opj_bio_t *bio, OPJ_INT32 n) { | 159 static void opj_t2_putcommacode(opj_bio_t *bio, OPJ_INT32 n) { |
| 155 while (--n >= 0) { | 160 while (--n >= 0) { |
| 156 opj_bio_write(bio, 1, 1); | 161 opj_bio_write(bio, 1, 1); |
| 157 } | 162 } |
| 158 opj_bio_write(bio, 0, 1); | 163 opj_bio_write(bio, 0, 1); |
| 159 } | 164 } |
| 160 | 165 |
| 161 OPJ_UINT32 opj_t2_getcommacode(opj_bio_t *bio) | 166 static OPJ_UINT32 opj_t2_getcommacode(opj_bio_t *bio) |
| 162 { | 167 { |
| 163 OPJ_UINT32 n = 0; | 168 OPJ_UINT32 n = 0; |
| 164 while (opj_bio_read(bio, 1)) { | 169 while (opj_bio_read(bio, 1)) { |
| 165 ++n; | 170 ++n; |
| 166 } | 171 } |
| 167 return n; | 172 return n; |
| 168 } | 173 } |
| 169 | 174 |
| 170 void opj_t2_putnumpasses(opj_bio_t *bio, OPJ_UINT32 n) { | 175 static void opj_t2_putnumpasses(opj_bio_t *bio, OPJ_UINT32 n) { |
| 171 if (n == 1) { | 176 if (n == 1) { |
| 172 opj_bio_write(bio, 0, 1); | 177 opj_bio_write(bio, 0, 1); |
| 173 } else if (n == 2) { | 178 } else if (n == 2) { |
| 174 opj_bio_write(bio, 2, 2); | 179 opj_bio_write(bio, 2, 2); |
| 175 } else if (n <= 5) { | 180 } else if (n <= 5) { |
| 176 opj_bio_write(bio, 0xc | (n - 3), 4); | 181 opj_bio_write(bio, 0xc | (n - 3), 4); |
| 177 } else if (n <= 36) { | 182 } else if (n <= 36) { |
| 178 opj_bio_write(bio, 0x1e0 | (n - 6), 9); | 183 opj_bio_write(bio, 0x1e0 | (n - 6), 9); |
| 179 } else if (n <= 164) { | 184 } else if (n <= 164) { |
| 180 opj_bio_write(bio, 0xff80 | (n - 37), 16); | 185 opj_bio_write(bio, 0xff80 | (n - 37), 16); |
| 181 } | 186 } |
| 182 } | 187 } |
| 183 | 188 |
| 184 OPJ_UINT32 opj_t2_getnumpasses(opj_bio_t *bio) { | 189 static OPJ_UINT32 opj_t2_getnumpasses(opj_bio_t *bio) { |
| 185 OPJ_UINT32 n; | 190 OPJ_UINT32 n; |
| 186 if (!opj_bio_read(bio, 1)) | 191 if (!opj_bio_read(bio, 1)) |
| 187 return 1; | 192 return 1; |
| 188 if (!opj_bio_read(bio, 1)) | 193 if (!opj_bio_read(bio, 1)) |
| 189 return 2; | 194 return 2; |
| 190 if ((n = opj_bio_read(bio, 2)) != 3) | 195 if ((n = opj_bio_read(bio, 2)) != 3) |
| 191 return (3 + n); | 196 return (3 + n); |
| 192 if ((n = opj_bio_read(bio, 5)) != 31) | 197 if ((n = opj_bio_read(bio, 5)) != 31) |
| 193 return (6 + n); | 198 return (6 + n); |
| 194 return (37 + opj_bio_read(bio, 7)); | 199 return (37 + opj_bio_read(bio, 7)); |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 338 } | 343 } |
| 339 #define JAS_FPRINTF opj_null_jas_fprintf | 344 #define JAS_FPRINTF opj_null_jas_fprintf |
| 340 #endif | 345 #endif |
| 341 | 346 |
| 342 OPJ_BOOL opj_t2_decode_packets( opj_t2_t *p_t2, | 347 OPJ_BOOL opj_t2_decode_packets( opj_t2_t *p_t2, |
| 343 OPJ_UINT32 p_tile_no, | 348 OPJ_UINT32 p_tile_no, |
| 344 opj_tcd_tile_t *p_tile, | 349 opj_tcd_tile_t *p_tile, |
| 345 OPJ_BYTE *p_src, | 350 OPJ_BYTE *p_src, |
| 346 OPJ_UINT32 * p_data_read, | 351 OPJ_UINT32 * p_data_read, |
| 347 OPJ_UINT32 p_max_len, | 352 OPJ_UINT32 p_max_len, |
| 348 opj_codestream_index_t *p_cstr_index) | 353 opj_codestream_index_t *p_cstr_index, |
| 354 opj_event_mgr_t *p_manager) |
| 349 { | 355 { |
| 350 OPJ_BYTE *l_current_data = p_src; | 356 OPJ_BYTE *l_current_data = p_src; |
| 351 opj_pi_iterator_t *l_pi = 00; | 357 opj_pi_iterator_t *l_pi = 00; |
| 352 OPJ_UINT32 pino; | 358 OPJ_UINT32 pino; |
| 353 opj_image_t *l_image = p_t2->image; | 359 opj_image_t *l_image = p_t2->image; |
| 354 opj_cp_t *l_cp = p_t2->cp; | 360 opj_cp_t *l_cp = p_t2->cp; |
| 355 opj_tcp_t *l_tcp = &(p_t2->cp->tcps[p_tile_no]); | 361 opj_tcp_t *l_tcp = &(p_t2->cp->tcps[p_tile_no]); |
| 356 OPJ_UINT32 l_nb_bytes_read; | 362 OPJ_UINT32 l_nb_bytes_read; |
| 357 OPJ_UINT32 l_nb_pocs = l_tcp->numpocs + 1; | 363 OPJ_UINT32 l_nb_pocs = l_tcp->numpocs + 1; |
| 358 opj_pi_iterator_t *l_current_pi = 00; | 364 opj_pi_iterator_t *l_current_pi = 00; |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 while (opj_pi_next(l_current_pi)) { | 412 while (opj_pi_next(l_current_pi)) { |
| 407 JAS_FPRINTF( stderr, "packet offset=00000166 prg=%d cmptno=%02
d rlvlno=%02d prcno=%03d lyrno=%02d\n\n", | 413 JAS_FPRINTF( stderr, "packet offset=00000166 prg=%d cmptno=%02
d rlvlno=%02d prcno=%03d lyrno=%02d\n\n", |
| 408 l_current_pi->poc.prg1, l_current_pi->compno, l_current_pi->
resno, l_current_pi->precno, l_current_pi->layno ); | 414 l_current_pi->poc.prg1, l_current_pi->compno, l_current_pi->
resno, l_current_pi->precno, l_current_pi->layno ); |
| 409 | 415 |
| 410 if (l_tcp->num_layers_to_decode > l_current_pi->layno | 416 if (l_tcp->num_layers_to_decode > l_current_pi->layno |
| 411 && l_current_pi->resno < p_tile->comps[l
_current_pi->compno].minimum_num_resolutions) { | 417 && l_current_pi->resno < p_tile->comps[l
_current_pi->compno].minimum_num_resolutions) { |
| 412 l_nb_bytes_read = 0; | 418 l_nb_bytes_read = 0; |
| 413 | 419 |
| 414 first_pass_failed[l_current_pi->compno] = OPJ_FA
LSE; | 420 first_pass_failed[l_current_pi->compno] = OPJ_FA
LSE; |
| 415 | 421 |
| 416 if (! opj_t2_decode_packet(p_t2,p_tile,l_tcp,l_c
urrent_pi,l_current_data,&l_nb_bytes_read,p_max_len,l_pack_info)) { | 422 if (! opj_t2_decode_packet(p_t2,p_tile,l_tcp,l_c
urrent_pi,l_current_data,&l_nb_bytes_read,p_max_len,l_pack_info, p_manager)) { |
| 417 opj_pi_destroy(l_pi,l_nb_pocs); | 423 opj_pi_destroy(l_pi,l_nb_pocs); |
| 418 opj_free(first_pass_failed); | 424 opj_free(first_pass_failed); |
| 419 return OPJ_FALSE; | 425 return OPJ_FALSE; |
| 420 } | 426 } |
| 421 | 427 |
| 422 l_img_comp = &(l_image->comps[l_current_pi->comp
no]); | 428 l_img_comp = &(l_image->comps[l_current_pi->comp
no]); |
| 423 l_img_comp->resno_decoded = opj_uint_max(l_curre
nt_pi->resno, l_img_comp->resno_decoded); | 429 l_img_comp->resno_decoded = opj_uint_max(l_curre
nt_pi->resno, l_img_comp->resno_decoded); |
| 424 } | 430 } |
| 425 else { | 431 else { |
| 426 l_nb_bytes_read = 0; | 432 l_nb_bytes_read = 0; |
| 427 if (! opj_t2_skip_packet(p_t2,p_tile,l_tcp,l_cur
rent_pi,l_current_data,&l_nb_bytes_read,p_max_len,l_pack_info)) { | 433 if (! opj_t2_skip_packet(p_t2,p_tile,l_tcp,l_cur
rent_pi,l_current_data,&l_nb_bytes_read,p_max_len,l_pack_info, p_manager)) { |
| 428 opj_pi_destroy(l_pi,l_nb_pocs); | 434 opj_pi_destroy(l_pi,l_nb_pocs); |
| 429 opj_free(first_pass_failed); | 435 opj_free(first_pass_failed); |
| 430 return OPJ_FALSE; | 436 return OPJ_FALSE; |
| 431 } | 437 } |
| 432 } | 438 } |
| 433 | 439 |
| 434 if (first_pass_failed[l_current_pi->compno]) { | 440 if (first_pass_failed[l_current_pi->compno]) { |
| 435 l_img_comp = &(l_image->comps[l_current_pi->comp
no]); | 441 l_img_comp = &(l_image->comps[l_current_pi->comp
no]); |
| 436 if (l_img_comp->resno_decoded == 0) | 442 if (l_img_comp->resno_decoded == 0) |
| 437 l_img_comp->resno_decoded = p_tile->comp
s[l_current_pi->compno].minimum_num_resolutions - 1; | 443 l_img_comp->resno_decoded = p_tile->comp
s[l_current_pi->compno].minimum_num_resolutions - 1; |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 504 | 510 |
| 505 return l_t2; | 511 return l_t2; |
| 506 } | 512 } |
| 507 | 513 |
| 508 void opj_t2_destroy(opj_t2_t *t2) { | 514 void opj_t2_destroy(opj_t2_t *t2) { |
| 509 if(t2) { | 515 if(t2) { |
| 510 opj_free(t2); | 516 opj_free(t2); |
| 511 } | 517 } |
| 512 } | 518 } |
| 513 | 519 |
| 514 OPJ_BOOL opj_t2_decode_packet( opj_t2_t* p_t2, | 520 static OPJ_BOOL opj_t2_decode_packet( opj_t2_t* p_t2, |
| 515 opj_tcd_tile_t *p_tile, | 521 opj_tcd_tile_t *p_tile, |
| 516 opj_tcp_t *p_tcp, | 522 opj_tcp_t *p_tcp, |
| 517 opj_pi_iterator_t *p_pi, | 523 opj_pi_iterator_t *p_pi, |
| 518 OPJ_BYTE *p_src, | 524 OPJ_BYTE *p_src, |
| 519 OPJ_UINT32 * p_data_read, | 525 OPJ_UINT32 * p_data_read, |
| 520 OPJ_UINT32 p_max_length, | 526 OPJ_UINT32 p_max_length, |
| 521 opj_packet_info_t *p_pack_info) | 527 opj_packet_info_t *p_pack_info, |
| 528 opj_event_mgr_t *p_manager) |
| 522 { | 529 { |
| 523 OPJ_BOOL l_read_data; | 530 OPJ_BOOL l_read_data; |
| 524 OPJ_UINT32 l_nb_bytes_read = 0; | 531 OPJ_UINT32 l_nb_bytes_read = 0; |
| 525 OPJ_UINT32 l_nb_total_bytes_read = 0; | 532 OPJ_UINT32 l_nb_total_bytes_read = 0; |
| 526 | 533 |
| 527 *p_data_read = 0; | 534 *p_data_read = 0; |
| 528 | 535 |
| 529 if (! opj_t2_read_packet_header(p_t2,p_tile,p_tcp,p_pi,&l_read_data,p_sr
c,&l_nb_bytes_read,p_max_length,p_pack_info)) { | 536 if (! opj_t2_read_packet_header(p_t2,p_tile,p_tcp,p_pi,&l_read_data,p_sr
c,&l_nb_bytes_read,p_max_length,p_pack_info, p_manager)) { |
| 530 return OPJ_FALSE; | 537 return OPJ_FALSE; |
| 531 } | 538 } |
| 532 | 539 |
| 533 p_src += l_nb_bytes_read; | 540 p_src += l_nb_bytes_read; |
| 534 l_nb_total_bytes_read += l_nb_bytes_read; | 541 l_nb_total_bytes_read += l_nb_bytes_read; |
| 535 p_max_length -= l_nb_bytes_read; | 542 p_max_length -= l_nb_bytes_read; |
| 536 | 543 |
| 537 /* we should read data for the packet */ | 544 /* we should read data for the packet */ |
| 538 if (l_read_data) { | 545 if (l_read_data) { |
| 539 l_nb_bytes_read = 0; | 546 l_nb_bytes_read = 0; |
| 540 | 547 |
| 541 if (! opj_t2_read_packet_data(p_t2,p_tile,p_pi,p_src,&l_nb_bytes
_read,p_max_length,p_pack_info)) { | 548 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)) { |
| 542 return OPJ_FALSE; | 549 return OPJ_FALSE; |
| 543 } | 550 } |
| 544 | 551 |
| 545 l_nb_total_bytes_read += l_nb_bytes_read; | 552 l_nb_total_bytes_read += l_nb_bytes_read; |
| 546 } | 553 } |
| 547 | 554 |
| 548 *p_data_read = l_nb_total_bytes_read; | 555 *p_data_read = l_nb_total_bytes_read; |
| 549 | 556 |
| 550 return OPJ_TRUE; | 557 return OPJ_TRUE; |
| 551 } | 558 } |
| 552 | 559 |
| 553 OPJ_BOOL opj_t2_encode_packet( OPJ_UINT32 tileno, | 560 static OPJ_BOOL opj_t2_encode_packet( OPJ_UINT32 tileno, |
| 554 opj_tcd_tile_t * tile, | 561 opj_tcd_tile_t * tile, |
| 555 opj_tcp_t * tcp, | 562 opj_tcp_t * tcp, |
| 556 opj_pi_iterator_t *pi, | 563 opj_pi_iterator_t *pi, |
| 557 OPJ_BYTE *dest, | 564 OPJ_BYTE *dest, |
| 558 OPJ_UINT32 * p_data_written, | 565 OPJ_UINT32 * p_data_written, |
| 559 OPJ_UINT32 length, | 566 OPJ_UINT32 length, |
| 560 opj_codestream_info_t *cstr_info) | 567 opj_codestream_info_t *cstr_info) |
| 561 { | 568 { |
| 562 OPJ_UINT32 bandno, cblkno; | 569 OPJ_UINT32 bandno, cblkno; |
| 563 OPJ_BYTE* c = dest; | 570 OPJ_BYTE* c = dest; |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 return OPJ_TRUE; | 793 return OPJ_TRUE; |
| 787 } | 794 } |
| 788 | 795 |
| 789 static OPJ_BOOL opj_t2_skip_packet( opj_t2_t* p_t2, | 796 static OPJ_BOOL opj_t2_skip_packet( opj_t2_t* p_t2, |
| 790 opj_tcd_tile_t *p_tile, | 797 opj_tcd_tile_t *p_tile, |
| 791 opj_tcp_t *p_tcp, | 798 opj_tcp_t *p_tcp, |
| 792 opj_pi_iterator_t *p_pi, | 799 opj_pi_iterator_t *p_pi, |
| 793 OPJ_BYTE *p_src, | 800 OPJ_BYTE *p_src, |
| 794 OPJ_UINT32 * p_data_read, | 801 OPJ_UINT32 * p_data_read, |
| 795 OPJ_UINT32 p_max_length, | 802 OPJ_UINT32 p_max_length, |
| 796 opj_packet_info_t *p_pack_info) | 803 opj_packet_info_t *p_pack_info, |
| 804 opj_event_mgr_t *p_manager) |
| 797 { | 805 { |
| 798 OPJ_BOOL l_read_data; | 806 OPJ_BOOL l_read_data; |
| 799 OPJ_UINT32 l_nb_bytes_read = 0; | 807 OPJ_UINT32 l_nb_bytes_read = 0; |
| 800 OPJ_UINT32 l_nb_total_bytes_read = 0; | 808 OPJ_UINT32 l_nb_total_bytes_read = 0; |
| 801 | 809 |
| 802 *p_data_read = 0; | 810 *p_data_read = 0; |
| 803 | 811 |
| 804 if (! opj_t2_read_packet_header(p_t2,p_tile,p_tcp,p_pi,&l_read_data,p_sr
c,&l_nb_bytes_read,p_max_length,p_pack_info)) { | 812 if (! opj_t2_read_packet_header(p_t2,p_tile,p_tcp,p_pi,&l_read_data,p_sr
c,&l_nb_bytes_read,p_max_length,p_pack_info, p_manager)) { |
| 805 return OPJ_FALSE; | 813 return OPJ_FALSE; |
| 806 } | 814 } |
| 807 | 815 |
| 808 p_src += l_nb_bytes_read; | 816 p_src += l_nb_bytes_read; |
| 809 l_nb_total_bytes_read += l_nb_bytes_read; | 817 l_nb_total_bytes_read += l_nb_bytes_read; |
| 810 p_max_length -= l_nb_bytes_read; | 818 p_max_length -= l_nb_bytes_read; |
| 811 | 819 |
| 812 /* we should read data for the packet */ | 820 /* we should read data for the packet */ |
| 813 if (l_read_data) { | 821 if (l_read_data) { |
| 814 l_nb_bytes_read = 0; | 822 l_nb_bytes_read = 0; |
| 815 | 823 |
| 816 if (! opj_t2_skip_packet_data(p_t2,p_tile,p_pi,&l_nb_bytes_read,
p_max_length,p_pack_info)) { | 824 if (! opj_t2_skip_packet_data(p_t2,p_tile,p_pi,&l_nb_bytes_read,
p_max_length,p_pack_info, p_manager)) { |
| 817 return OPJ_FALSE; | 825 return OPJ_FALSE; |
| 818 } | 826 } |
| 819 | 827 |
| 820 l_nb_total_bytes_read += l_nb_bytes_read; | 828 l_nb_total_bytes_read += l_nb_bytes_read; |
| 821 } | 829 } |
| 822 *p_data_read = l_nb_total_bytes_read; | 830 *p_data_read = l_nb_total_bytes_read; |
| 823 | 831 |
| 824 return OPJ_TRUE; | 832 return OPJ_TRUE; |
| 825 } | 833 } |
| 826 | 834 |
| 827 | 835 |
| 828 OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, | 836 static OPJ_BOOL opj_t2_read_packet_header( opj_t2_t* p_t2, |
| 829 opj_tcd_tile_t *p_tile, | 837 opj_tcd_tile_t *p_tile, |
| 830 opj_tcp_t *p_tcp, | 838 opj_tcp_t *p_tcp, |
| 831 opj_pi_iterator_t *p_pi, | 839 opj_pi_iterator_t *p_pi, |
| 832 OPJ_BOOL * p_is_data_present, | 840 OPJ_BOOL * p_is_data_present, |
| 833 OPJ_BYTE *p_src_data, | 841 OPJ_BYTE *p_src_data, |
| 834 OPJ_UINT32 * p_data_read, | 842 OPJ_UINT32 * p_data_read, |
| 835 OPJ_UINT32 p_max_length, | 843 OPJ_UINT32 p_max_length, |
| 836 opj_packet_info_t *p_pack_info) | 844 opj_packet_info_t *p_pack_info, |
| 845 opj_event_mgr_t *p_manager) |
| 837 | 846 |
| 838 { | 847 { |
| 839 /* loop */ | 848 /* loop */ |
| 840 OPJ_UINT32 bandno, cblkno; | 849 OPJ_UINT32 bandno, cblkno; |
| 841 OPJ_UINT32 l_nb_code_blocks; | 850 OPJ_UINT32 l_nb_code_blocks; |
| 842 OPJ_UINT32 l_remaining_length; | 851 OPJ_UINT32 l_remaining_length; |
| 843 OPJ_UINT32 l_header_length; | 852 OPJ_UINT32 l_header_length; |
| 844 OPJ_UINT32 * l_modified_length_ptr = 00; | 853 OPJ_UINT32 * l_modified_length_ptr = 00; |
| 845 OPJ_BYTE *l_current_data = p_src_data; | 854 OPJ_BYTE *l_current_data = p_src_data; |
| 846 opj_cp_t *l_cp = p_t2->cp; | 855 opj_cp_t *l_cp = p_t2->cp; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 875 } | 884 } |
| 876 | 885 |
| 877 ++l_band; | 886 ++l_band; |
| 878 } | 887 } |
| 879 } | 888 } |
| 880 | 889 |
| 881 /* SOP markers */ | 890 /* SOP markers */ |
| 882 | 891 |
| 883 if (p_tcp->csty & J2K_CP_CSTY_SOP) { | 892 if (p_tcp->csty & J2K_CP_CSTY_SOP) { |
| 884 if (p_max_length < 6) { | 893 if (p_max_length < 6) { |
| 885 /* TODO opj_event_msg(p_t2->cinfo->event_mgr, EVT_WARNIN
G, "Not enough space for expected SOP marker\n"); */ | 894 » » » » » » » » » »
» » opj_event_msg(p_manager, EVT_WARNING, "Not enough space for expe
cted SOP marker\n"); |
| 886 fprintf(stderr, "Not enough space for expected SOP marke
r\n"); | |
| 887 } else if ((*l_current_data) != 0xff || (*(l_current_data + 1) !
= 0x91)) { | 895 } else if ((*l_current_data) != 0xff || (*(l_current_data + 1) !
= 0x91)) { |
| 888 /* TODO opj_event_msg(p_t2->cinfo->event_mgr, EVT_WARNIN
G, "Expected SOP marker\n"); */ | 896 opj_event_msg(p_manager, EVT_WARNING, "Expected SOP mark
er\n"); |
| 889 fprintf(stderr, "Warning: expected SOP marker\n"); | |
| 890 } else { | 897 } else { |
| 891 l_current_data += 6; | 898 l_current_data += 6; |
| 892 } | 899 } |
| 893 | 900 |
| 894 /** TODO : check the Nsop value */ | 901 /** TODO : check the Nsop value */ |
| 895 } | 902 } |
| 896 | 903 |
| 897 /* | 904 /* |
| 898 When the marker PPT/PPM is used the packet header are store in PPT/PPM m
arker | 905 When the marker PPT/PPM is used the packet header are store in PPT/PPM m
arker |
| 899 This part deal with this caracteristic | 906 This part deal with this caracteristic |
| (...skipping 30 matching lines...) Expand all Loading... |
| 930 JAS_FPRINTF(stderr, "present=%d \n", l_present ); | 937 JAS_FPRINTF(stderr, "present=%d \n", l_present ); |
| 931 if (!l_present) { | 938 if (!l_present) { |
| 932 /* TODO MSD: no test to control the output of this function*/ | 939 /* TODO MSD: no test to control the output of this function*/ |
| 933 opj_bio_inalign(l_bio); | 940 opj_bio_inalign(l_bio); |
| 934 l_header_data += opj_bio_numbytes(l_bio); | 941 l_header_data += opj_bio_numbytes(l_bio); |
| 935 opj_bio_destroy(l_bio); | 942 opj_bio_destroy(l_bio); |
| 936 | 943 |
| 937 /* EPH markers */ | 944 /* EPH markers */ |
| 938 if (p_tcp->csty & J2K_CP_CSTY_EPH) { | 945 if (p_tcp->csty & J2K_CP_CSTY_EPH) { |
| 939 if ((*l_modified_length_ptr - (OPJ_UINT32)(l_header_data
- *l_header_data_start)) < 2U) { | 946 if ((*l_modified_length_ptr - (OPJ_UINT32)(l_header_data
- *l_header_data_start)) < 2U) { |
| 940 fprintf(stderr, "Not enough space for expected E
PH marker\n"); | 947 opj_event_msg(p_manager, EVT_WARNING, "Not enoug
h space for expected EPH marker\n"); |
| 941 } else if ((*l_header_data) != 0xff || (*(l_header_data
+ 1) != 0x92)) { | 948 } else if ((*l_header_data) != 0xff || (*(l_header_data
+ 1) != 0x92)) { |
| 942 fprintf(stderr, "Error : expected EPH marker\n")
; | 949 opj_event_msg(p_manager, EVT_WARNING, "Expected
EPH marker\n"); |
| 943 } else { | 950 } else { |
| 944 l_header_data += 2; | 951 l_header_data += 2; |
| 945 } | 952 } |
| 946 } | 953 } |
| 947 | 954 |
| 948 l_header_length = (OPJ_UINT32)(l_header_data - *l_header_data_st
art); | 955 l_header_length = (OPJ_UINT32)(l_header_data - *l_header_data_st
art); |
| 949 *l_modified_length_ptr -= l_header_length; | 956 *l_modified_length_ptr -= l_header_length; |
| 950 *l_header_data_start += l_header_length; | 957 *l_header_data_start += l_header_length; |
| 951 | 958 |
| 952 /* << INDEX */ | 959 /* << INDEX */ |
| (...skipping 30 matching lines...) Expand all Loading... |
| 983 /* else one bit */ | 990 /* else one bit */ |
| 984 } | 991 } |
| 985 else { | 992 else { |
| 986 l_included = opj_bio_read(l_bio, 1); | 993 l_included = opj_bio_read(l_bio, 1); |
| 987 } | 994 } |
| 988 | 995 |
| 989 /* if cblk not included */ | 996 /* if cblk not included */ |
| 990 if (!l_included) { | 997 if (!l_included) { |
| 991 l_cblk->numnewpasses = 0; | 998 l_cblk->numnewpasses = 0; |
| 992 ++l_cblk; | 999 ++l_cblk; |
| 993 JAS_FPRINTF(stderr, "included=%d \n", l_included); | 1000 JAS_FPRINTF(stderr, "included=%d \n", l_included
); |
| 994 continue; | 1001 continue; |
| 995 } | 1002 } |
| 996 | 1003 |
| 997 /* if cblk not yet included --> zero-bitplane tagtree */ | 1004 /* if cblk not yet included --> zero-bitplane tagtree */ |
| 998 if (!l_cblk->numsegs) { | 1005 if (!l_cblk->numsegs) { |
| 999 OPJ_UINT32 i = 0; | 1006 OPJ_UINT32 i = 0; |
| 1000 | 1007 |
| 1001 while (!opj_tgt_decode(l_bio, l_prc->imsbtree, c
blkno, (OPJ_INT32)i)) { | 1008 while (!opj_tgt_decode(l_bio, l_prc->imsbtree, c
blkno, (OPJ_INT32)i)) { |
| 1002 ++i; | 1009 ++i; |
| 1003 } | 1010 } |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1058 opj_bio_destroy(l_bio); | 1065 opj_bio_destroy(l_bio); |
| 1059 return OPJ_FALSE; | 1066 return OPJ_FALSE; |
| 1060 } | 1067 } |
| 1061 | 1068 |
| 1062 l_header_data += opj_bio_numbytes(l_bio); | 1069 l_header_data += opj_bio_numbytes(l_bio); |
| 1063 opj_bio_destroy(l_bio); | 1070 opj_bio_destroy(l_bio); |
| 1064 | 1071 |
| 1065 /* EPH markers */ | 1072 /* EPH markers */ |
| 1066 if (p_tcp->csty & J2K_CP_CSTY_EPH) { | 1073 if (p_tcp->csty & J2K_CP_CSTY_EPH) { |
| 1067 if ((*l_modified_length_ptr - (OPJ_UINT32)(l_header_data - *l_he
ader_data_start)) < 2U) { | 1074 if ((*l_modified_length_ptr - (OPJ_UINT32)(l_header_data - *l_he
ader_data_start)) < 2U) { |
| 1068 fprintf(stderr, "Not enough space for expected EPH marke
r\n"); | 1075 opj_event_msg(p_manager, EVT_WARNING, "Not enough space
for expected EPH marker\n"); |
| 1069 } else if ((*l_header_data) != 0xff || (*(l_header_data + 1) !=
0x92)) { | 1076 } else if ((*l_header_data) != 0xff || (*(l_header_data + 1) !=
0x92)) { |
| 1070 /* TODO opj_event_msg(t2->cinfo->event_mgr, EVT_ERROR, "
Expected EPH marker\n"); */ | 1077 opj_event_msg(p_manager, EVT_WARNING, "Expected EPH mark
er\n"); |
| 1071 fprintf(stderr, "Error : expected EPH marker\n"); | |
| 1072 } else { | 1078 } else { |
| 1073 l_header_data += 2; | 1079 l_header_data += 2; |
| 1074 } | 1080 } |
| 1075 } | 1081 } |
| 1076 | 1082 |
| 1077 l_header_length = (OPJ_UINT32)(l_header_data - *l_header_data_start); | 1083 l_header_length = (OPJ_UINT32)(l_header_data - *l_header_data_start); |
| 1078 JAS_FPRINTF( stderr, "hdrlen=%d \n", l_header_length ); | 1084 JAS_FPRINTF( stderr, "hdrlen=%d \n", l_header_length ); |
| 1079 JAS_FPRINTF( stderr, "packet body\n"); | 1085 JAS_FPRINTF( stderr, "packet body\n"); |
| 1080 *l_modified_length_ptr -= l_header_length; | 1086 *l_modified_length_ptr -= l_header_length; |
| 1081 *l_header_data_start += l_header_length; | 1087 *l_header_data_start += l_header_length; |
| 1082 | 1088 |
| 1083 /* << INDEX */ | 1089 /* << INDEX */ |
| 1084 /* End of packet header position. Currently only represents the distance
to start of packet | 1090 /* End of packet header position. Currently only represents the distance
to start of packet |
| 1085 Will be updated later by incrementing with packet start value */ | 1091 Will be updated later by incrementing with packet start value */ |
| 1086 if (p_pack_info) { | 1092 if (p_pack_info) { |
| 1087 p_pack_info->end_ph_pos = (OPJ_INT32)(l_current_data - p_src_dat
a); | 1093 p_pack_info->end_ph_pos = (OPJ_INT32)(l_current_data - p_src_dat
a); |
| 1088 } | 1094 } |
| 1089 /* INDEX >> */ | 1095 /* INDEX >> */ |
| 1090 | 1096 |
| 1091 *p_is_data_present = OPJ_TRUE; | 1097 *p_is_data_present = OPJ_TRUE; |
| 1092 *p_data_read = (OPJ_UINT32)(l_current_data - p_src_data); | 1098 *p_data_read = (OPJ_UINT32)(l_current_data - p_src_data); |
| 1093 | 1099 |
| 1094 return OPJ_TRUE; | 1100 return OPJ_TRUE; |
| 1095 } | 1101 } |
| 1096 | 1102 |
| 1097 OPJ_BOOL opj_t2_read_packet_data( opj_t2_t* p_t2, | 1103 static OPJ_BOOL opj_t2_read_packet_data( opj_t2_t* p_t2, |
| 1098 opj_tcd_tile_t *p_tile, | 1104 opj_tcd_tile_t *p_tile, |
| 1099 opj_pi_iterator_t *p_pi, | 1105 opj_pi_iterator_t *p_pi, |
| 1100 OPJ_BYTE *p_src_data, | 1106 OPJ_BYTE *p_src_data, |
| 1101 OPJ_UINT32 * p_data_read, | 1107 OPJ_UINT32 * p_data_read, |
| 1102 OPJ_UINT32 p_max_length, | 1108 OPJ_UINT32 p_max_length, |
| 1103 opj_packet_info_t *pack_info) | 1109 opj_packet_info_t *pack_info, |
| 1110 opj_event_mgr_t* p_manager) |
| 1104 { | 1111 { |
| 1105 OPJ_UINT32 bandno, cblkno; | 1112 OPJ_UINT32 bandno, cblkno; |
| 1106 OPJ_UINT32 l_nb_code_blocks; | 1113 OPJ_UINT32 l_nb_code_blocks; |
| 1107 OPJ_BYTE *l_current_data = p_src_data; | 1114 OPJ_BYTE *l_current_data = p_src_data; |
| 1108 opj_tcd_band_t *l_band = 00; | 1115 opj_tcd_band_t *l_band = 00; |
| 1109 opj_tcd_cblk_dec_t* l_cblk = 00; | 1116 opj_tcd_cblk_dec_t* l_cblk = 00; |
| 1110 opj_tcd_resolution_t* l_res = &p_tile->comps[p_pi->compno].resolutions[p
_pi->resno]; | 1117 opj_tcd_resolution_t* l_res = &p_tile->comps[p_pi->compno].resolutions[p
_pi->resno]; |
| 1111 | 1118 |
| 1112 OPJ_ARG_NOT_USED(p_t2); | 1119 OPJ_ARG_NOT_USED(p_t2); |
| 1113 OPJ_ARG_NOT_USED(pack_info); | 1120 OPJ_ARG_NOT_USED(pack_info); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1143 | 1150 |
| 1144 if (l_seg->numpasses == l_seg->maxpasses) { | 1151 if (l_seg->numpasses == l_seg->maxpasses) { |
| 1145 ++l_seg; | 1152 ++l_seg; |
| 1146 ++l_cblk->numsegs; | 1153 ++l_cblk->numsegs; |
| 1147 } | 1154 } |
| 1148 } | 1155 } |
| 1149 | 1156 |
| 1150 do { | 1157 do { |
| 1151 /* Check possible overflow (on l_current_data on
ly, assumes input args already checked) then size */ | 1158 /* Check possible overflow (on l_current_data on
ly, assumes input args already checked) then size */ |
| 1152 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)) { | 1159 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)) { |
| 1153 fprintf(stderr, "read: segment too long
(%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", | 1160 opj_event_msg(p_manager, EVT_ERROR, "rea
d: segment too long (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)
\n", |
| 1154 l_seg->newlen, p_max_length, cbl
kno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); | 1161 » » » » » » » » » »
» » » » » » » » » »
» » » » l_seg->newlen, p_max_length, cblkno, p_pi->precn
o, bandno, p_pi->resno, p_pi->compno); |
| 1155 return OPJ_FALSE; | 1162 return OPJ_FALSE; |
| 1156 } | 1163 } |
| 1157 | 1164 |
| 1158 #ifdef USE_JPWL | 1165 #ifdef USE_JPWL |
| 1159 /* we need here a j2k handle to verify if making a check
to | 1166 /* we need here a j2k handle to verify if making a check
to |
| 1160 the validity of cblocks parameters is selected from user
(-W) */ | 1167 the validity of cblocks parameters is selected from user
(-W) */ |
| 1161 | 1168 |
| 1162 /* let's check that we are not exceeding */ | 1169 /* let's check that we are not exceeding */ |
| 1163 if ((l_cblk->len + l_seg->newlen) > 8192) { | 1170 if ((l_cblk->len + l_seg->newlen) > 8192) { |
| 1164 opj_event_msg(p_t2->cinfo, EVT_WARNING, | 1171 opj_event_msg(p_manager, EVT_WARNING, |
| 1165 "JPWL: segment too long (%d) for
codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", | 1172 "JPWL: segment too long (%d) for
codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", |
| 1166 l_seg->newlen, cblkno, p_pi->pre
cno, bandno, p_pi->resno, p_pi->compno); | 1173 l_seg->newlen, cblkno, p_pi->pre
cno, bandno, p_pi->resno, p_pi->compno); |
| 1167 if (!JPWL_ASSUME) { | 1174 if (!JPWL_ASSUME) { |
| 1168 opj_event_msg(p_t2->cinfo, EVT_E
RROR, "JPWL: giving up\n"); | 1175 opj_event_msg(p_manager, EVT_ERR
OR, "JPWL: giving up\n"); |
| 1169 return OPJ_FALSE; | 1176 return OPJ_FALSE; |
| 1170 } | 1177 } |
| 1171 l_seg->newlen = 8192 - l_cblk->len; | 1178 l_seg->newlen = 8192 - l_cblk->len; |
| 1172 opj_event_msg(p_t2->cinfo, EVT_WARNING,
" - truncating segment to %d\n", l_seg->newlen); | 1179 opj_event_msg(p_manager, EVT_WARNING, "
- truncating segment to %d\n", l_seg->newlen); |
| 1173 break; | 1180 break; |
| 1174 }; | 1181 }; |
| 1175 | 1182 |
| 1176 #endif /* USE_JPWL */ | 1183 #endif /* USE_JPWL */ |
| 1177 /* Check possible overflow on size */ | 1184 /* Check possible overflow on size */ |
| 1178 if ((l_cblk->data_current_size + l_seg->newlen)
< l_cblk->data_current_size) { | 1185 if ((l_cblk->data_current_size + l_seg->newlen)
< l_cblk->data_current_size) { |
| 1179 fprintf(stderr, "read: segment too long
(%d) with current size (%d > %d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", | 1186 opj_event_msg(p_manager, EVT_ERROR, "rea
d: segment too long (%d) with current size (%d > %d) for codeblock %d (p=%d, b=%
d, r=%d, c=%d)\n", |
| 1180 l_seg->newlen, l_cblk->data_curr
ent_size, 0xFFFFFFFF - l_seg->newlen, cblkno, p_pi->precno, bandno, p_pi->resno,
p_pi->compno); | 1187 l_seg->newlen, l_cblk->data_curr
ent_size, 0xFFFFFFFF - l_seg->newlen, cblkno, p_pi->precno, bandno, p_pi->resno,
p_pi->compno); |
| 1181 return OPJ_FALSE; | 1188 return OPJ_FALSE; |
| 1182 } | 1189 } |
| 1183 /* Check if the cblk->data have allocated enough
memory */ | 1190 /* Check if the cblk->data have allocated enough
memory */ |
| 1184 if ((l_cblk->data_current_size + l_seg->newlen)
> l_cblk->data_max_size) { | 1191 if ((l_cblk->data_current_size + l_seg->newlen)
> l_cblk->data_max_size) { |
| 1185 OPJ_BYTE* new_cblk_data = (OPJ_BYTE*) opj_re
alloc(l_cblk->data, l_cblk->data_current_size + l_seg->newlen); | 1192 OPJ_BYTE* new_cblk_data = (OPJ_BYTE*) opj_re
alloc(l_cblk->data, l_cblk->data_current_size + l_seg->newlen); |
| 1186 if(! new_cblk_data) { | 1193 if(! new_cblk_data) { |
| 1187 opj_free(l_cblk->data); | 1194 opj_free(l_cblk->data); |
| 1188 l_cblk->data = NULL; | 1195 l_cblk->data = NULL; |
| 1189 l_cblk->data_max_size = 0; | 1196 l_cblk->data_max_size = 0; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1221 | 1228 |
| 1222 ++l_band; | 1229 ++l_band; |
| 1223 } | 1230 } |
| 1224 | 1231 |
| 1225 *(p_data_read) = (OPJ_UINT32)(l_current_data - p_src_data); | 1232 *(p_data_read) = (OPJ_UINT32)(l_current_data - p_src_data); |
| 1226 | 1233 |
| 1227 | 1234 |
| 1228 return OPJ_TRUE; | 1235 return OPJ_TRUE; |
| 1229 } | 1236 } |
| 1230 | 1237 |
| 1231 OPJ_BOOL opj_t2_skip_packet_data( opj_t2_t* p_t2, | 1238 static OPJ_BOOL opj_t2_skip_packet_data( opj_t2_t* p_t2, |
| 1232 opj_tcd_tile_t *p_tile, | 1239 opj_tcd_tile_t *p_tile, |
| 1233 opj_pi_iterator_t *p_pi, | 1240 opj_pi_iterator_t *p_pi, |
| 1234 OPJ_UINT32 * p_data_read, | 1241 OPJ_UINT32 * p_data_read, |
| 1235 OPJ_UINT32 p_max_length, | 1242 OPJ_UINT32 p_max_length, |
| 1236 opj_packet_info_t *pack_info) | 1243 opj_packet_info_t *pack_info, |
| 1244 opj_event_mgr_t *p_manager) |
| 1237 { | 1245 { |
| 1238 OPJ_UINT32 bandno, cblkno; | 1246 OPJ_UINT32 bandno, cblkno; |
| 1239 OPJ_UINT32 l_nb_code_blocks; | 1247 OPJ_UINT32 l_nb_code_blocks; |
| 1240 opj_tcd_band_t *l_band = 00; | 1248 opj_tcd_band_t *l_band = 00; |
| 1241 opj_tcd_cblk_dec_t* l_cblk = 00; | 1249 opj_tcd_cblk_dec_t* l_cblk = 00; |
| 1242 opj_tcd_resolution_t* l_res = &p_tile->comps[p_pi->compno].resolutions[p
_pi->resno]; | 1250 opj_tcd_resolution_t* l_res = &p_tile->comps[p_pi->compno].resolutions[p
_pi->resno]; |
| 1243 | 1251 |
| 1244 OPJ_ARG_NOT_USED(p_t2); | 1252 OPJ_ARG_NOT_USED(p_t2); |
| 1245 OPJ_ARG_NOT_USED(pack_info); | 1253 OPJ_ARG_NOT_USED(pack_info); |
| 1246 | 1254 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1277 | 1285 |
| 1278 if (l_seg->numpasses == l_seg->maxpasses) { | 1286 if (l_seg->numpasses == l_seg->maxpasses) { |
| 1279 ++l_seg; | 1287 ++l_seg; |
| 1280 ++l_cblk->numsegs; | 1288 ++l_cblk->numsegs; |
| 1281 } | 1289 } |
| 1282 } | 1290 } |
| 1283 | 1291 |
| 1284 do { | 1292 do { |
| 1285 /* Check possible overflow then size */ | 1293 /* Check possible overflow then size */ |
| 1286 if (((*p_data_read + l_seg->newlen) < (*p_data_r
ead)) || ((*p_data_read + l_seg->newlen) > p_max_length)) { | 1294 if (((*p_data_read + l_seg->newlen) < (*p_data_r
ead)) || ((*p_data_read + l_seg->newlen) > p_max_length)) { |
| 1287 fprintf(stderr, "skip: segment too long
(%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", | 1295 opj_event_msg(p_manager, EVT_ERROR, "ski
p: segment too long (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)
\n", |
| 1288 l_seg->newlen, p_max_length, cbl
kno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); | 1296 l_seg->newlen, p_max_length, cbl
kno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); |
| 1289 return OPJ_FALSE; | 1297 return OPJ_FALSE; |
| 1290 } | 1298 } |
| 1291 | 1299 |
| 1292 #ifdef USE_JPWL | 1300 #ifdef USE_JPWL |
| 1293 /* we need here a j2k handle to verify if making a check
to | 1301 /* we need here a j2k handle to verify if making a check
to |
| 1294 the validity of cblocks parameters is selected from user
(-W) */ | 1302 the validity of cblocks parameters is selected from user
(-W) */ |
| 1295 | 1303 |
| 1296 /* let's check that we are not exceeding */ | 1304 /* let's check that we are not exceeding */ |
| 1297 if ((l_cblk->len + l_seg->newlen) > 8192) { | 1305 if ((l_cblk->len + l_seg->newlen) > 8192) { |
| 1298 opj_event_msg(p_t2->cinfo, EVT_WARNING, | 1306 opj_event_msg(p_manager, EVT_WARNING, |
| 1299 "JPWL: segment too long (%d) for
codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", | 1307 "JPWL: segment too long (%d) for
codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", |
| 1300 l_seg->newlen, cblkno, p_pi->pre
cno, bandno, p_pi->resno, p_pi->compno); | 1308 l_seg->newlen, cblkno, p_pi->pre
cno, bandno, p_pi->resno, p_pi->compno); |
| 1301 if (!JPWL_ASSUME) { | 1309 if (!JPWL_ASSUME) { |
| 1302 opj_event_msg(p_t2->cinfo, EVT_E
RROR, "JPWL: giving up\n"); | 1310 opj_event_msg(p_manager, EVT_ERR
OR, "JPWL: giving up\n"); |
| 1303 return -999; | 1311 return -999; |
| 1304 } | 1312 } |
| 1305 l_seg->newlen = 8192 - l_cblk->len; | 1313 l_seg->newlen = 8192 - l_cblk->len; |
| 1306 opj_event_msg(p_t2->cinfo, EVT_WARNING,
" - truncating segment to %d\n", l_seg->newlen); | 1314 opj_event_msg(p_manager, EVT_WARNING, "
- truncating segment to %d\n", l_seg->newlen); |
| 1307 break; | 1315 break; |
| 1308 }; | 1316 }; |
| 1309 | 1317 |
| 1310 #endif /* USE_JPWL */ | 1318 #endif /* USE_JPWL */ |
| 1311 JAS_FPRINTF(stderr, "p_data_read (%d) ne
wlen (%d) \n", *p_data_read, l_seg->newlen ); | 1319 JAS_FPRINTF(stderr, "p_data_read (%d) ne
wlen (%d) \n", *p_data_read, l_seg->newlen ); |
| 1312 *(p_data_read) += l_seg->newlen; | 1320 *(p_data_read) += l_seg->newlen; |
| 1313 | 1321 |
| 1314 l_seg->numpasses += l_seg->numnewpasses; | 1322 l_seg->numpasses += l_seg->numnewpasses; |
| 1315 l_cblk->numnewpasses -= l_seg->numnewpasses; | 1323 l_cblk->numnewpasses -= l_seg->numnewpasses; |
| 1316 if (l_cblk->numnewpasses > 0) | 1324 if (l_cblk->numnewpasses > 0) |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1364 seg->maxpasses = 10; | 1372 seg->maxpasses = 10; |
| 1365 } else { | 1373 } else { |
| 1366 seg->maxpasses = (((seg - 1)->maxpasses == 1) || ((seg -
1)->maxpasses == 10)) ? 2 : 1; | 1374 seg->maxpasses = (((seg - 1)->maxpasses == 1) || ((seg -
1)->maxpasses == 10)) ? 2 : 1; |
| 1367 } | 1375 } |
| 1368 } else { | 1376 } else { |
| 1369 seg->maxpasses = 109; | 1377 seg->maxpasses = 109; |
| 1370 } | 1378 } |
| 1371 | 1379 |
| 1372 return OPJ_TRUE; | 1380 return OPJ_TRUE; |
| 1373 } | 1381 } |
| OLD | NEW |