Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(733)

Side by Side Diff: core/src/fxcodec/fx_libopenjpeg/libopenjpeg20/tcd.c

Issue 960183004: Upgrade openjpeg to revision 2997. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 * Allocates memory for a decoding code block. 113 * Allocates memory for a decoding code block.
114 */ 114 */
115 static OPJ_BOOL opj_tcd_code_block_dec_allocate (opj_tcd_cblk_dec_t * p_code_blo ck); 115 static OPJ_BOOL opj_tcd_code_block_dec_allocate (opj_tcd_cblk_dec_t * p_code_blo ck);
116 116
117 /** 117 /**
118 * Deallocates the decoding data of the given precinct. 118 * Deallocates the decoding data of the given precinct.
119 */ 119 */
120 static void opj_tcd_code_block_dec_deallocate (opj_tcd_precinct_t * p_precinct); 120 static void opj_tcd_code_block_dec_deallocate (opj_tcd_precinct_t * p_precinct);
121 121
122 /** 122 /**
123 * Allocates memory for an encoding code block. 123 * Allocates memory for an encoding code block (but not data).
124 */ 124 */
125 static OPJ_BOOL opj_tcd_code_block_enc_allocate (opj_tcd_cblk_enc_t * p_code_blo ck); 125 static OPJ_BOOL opj_tcd_code_block_enc_allocate (opj_tcd_cblk_enc_t * p_code_blo ck);
126 126
127 /** 127 /**
128 * Allocates data for an encoding code block
129 */
130 static OPJ_BOOL opj_tcd_code_block_enc_allocate_data (opj_tcd_cblk_enc_t * p_cod e_block);
131
132 /**
128 * Deallocates the encoding data of the given precinct. 133 * Deallocates the encoding data of the given precinct.
129 */ 134 */
130 static void opj_tcd_code_block_enc_deallocate (opj_tcd_precinct_t * p_precinct); 135 static void opj_tcd_code_block_enc_deallocate (opj_tcd_precinct_t * p_precinct);
131 136
132 137
133 /** 138 /**
134 Free the memory allocated for encoding 139 Free the memory allocated for encoding
135 @param tcd TCD handle 140 @param tcd TCD handle
136 */ 141 */
137 static void opj_tcd_free_tile(opj_tcd_t *tcd); 142 static void opj_tcd_free_tile(opj_tcd_t *tcd);
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 opj_tcd_resolution_t *l_res = 00; 668 opj_tcd_resolution_t *l_res = 00;
664 opj_tcd_band_t *l_band = 00; 669 opj_tcd_band_t *l_band = 00;
665 opj_stepsize_t * l_step_size = 00; 670 opj_stepsize_t * l_step_size = 00;
666 opj_tcd_precinct_t *l_current_precinct = 00; 671 opj_tcd_precinct_t *l_current_precinct = 00;
667 opj_image_t *l_image = 00; 672 opj_image_t *l_image = 00;
668 OPJ_UINT32 p,q; 673 OPJ_UINT32 p,q;
669 OPJ_UINT32 l_level_no; 674 OPJ_UINT32 l_level_no;
670 OPJ_UINT32 l_pdx, l_pdy; 675 OPJ_UINT32 l_pdx, l_pdy;
671 OPJ_UINT32 l_gain; 676 OPJ_UINT32 l_gain;
672 OPJ_INT32 l_x0b, l_y0b; 677 OPJ_INT32 l_x0b, l_y0b;
678 OPJ_UINT32 l_tx0, l_ty0;
673 /* extent of precincts , top left, bottom right**/ 679 /* extent of precincts , top left, bottom right**/
674 OPJ_INT32 l_tl_prc_x_start, l_tl_prc_y_start, l_br_prc_x_end, l_br_prc_y _end; 680 OPJ_INT32 l_tl_prc_x_start, l_tl_prc_y_start, l_br_prc_x_end, l_br_prc_y _end;
675 /* number of precinct for a resolution */ 681 /* number of precinct for a resolution */
676 OPJ_UINT32 l_nb_precincts; 682 OPJ_UINT32 l_nb_precincts;
677 /* room needed to store l_nb_precinct precinct for a resolution */ 683 /* room needed to store l_nb_precinct precinct for a resolution */
678 OPJ_UINT32 l_nb_precinct_size; 684 OPJ_UINT32 l_nb_precinct_size;
679 /* number of code blocks for a precinct*/ 685 /* number of code blocks for a precinct*/
680 OPJ_UINT32 l_nb_code_blocks; 686 OPJ_UINT32 l_nb_code_blocks;
681 /* room needed to store l_nb_code_blocks code blocks for a precinct*/ 687 /* room needed to store l_nb_code_blocks code blocks for a precinct*/
682 OPJ_UINT32 l_nb_code_blocks_size; 688 OPJ_UINT32 l_nb_code_blocks_size;
683 /* size of data for a tile */ 689 /* size of data for a tile */
684 OPJ_UINT32 l_data_size; 690 OPJ_UINT32 l_data_size;
685 691 »
686 l_cp = p_tcd->cp; 692 l_cp = p_tcd->cp;
687 l_tcp = &(l_cp->tcps[p_tile_no]); 693 l_tcp = &(l_cp->tcps[p_tile_no]);
688 l_tile = p_tcd->tcd_image->tiles; 694 l_tile = p_tcd->tcd_image->tiles;
689 l_tccp = l_tcp->tccps; 695 l_tccp = l_tcp->tccps;
690 l_tilec = l_tile->comps; 696 l_tilec = l_tile->comps;
691 l_image = p_tcd->image; 697 l_image = p_tcd->image;
692 l_image_comp = p_tcd->image->comps; 698 l_image_comp = p_tcd->image->comps;
693 699 »
694 p = p_tile_no % l_cp->tw; /* tile coordinates */ 700 p = p_tile_no % l_cp->tw; /* tile coordinates */
695 q = p_tile_no / l_cp->tw; 701 q = p_tile_no / l_cp->tw;
696 /*fprintf(stderr, "Tile coordinate = %d,%d\n", p, q);*/ 702 /*fprintf(stderr, "Tile coordinate = %d,%d\n", p, q);*/
703
704 /* 4 borders of the tile rescale on the image if necessary */
705 l_tx0 = l_cp->tx0 + p * l_cp->tdx; /* can't be greater than l_image->x1 so won't overflow */
706 l_tile->x0 = (OPJ_INT32)opj_uint_max(l_tx0, l_image->x0);
707 l_tile->x1 = (OPJ_INT32)opj_uint_min(opj_uint_adds(l_tx0, l_cp->tdx), l_ image->x1);
708 l_ty0 = l_cp->ty0 + q * l_cp->tdy; /* can't be greater than l_image->y1 so won't overflow */
709 l_tile->y0 = (OPJ_INT32)opj_uint_max(l_ty0, l_image->y0);
710 l_tile->y1 = (OPJ_INT32)opj_uint_min(opj_uint_adds(l_ty0, l_cp->tdy), l_ image->y1);
697 711
698 /* 4 borders of the tile rescale on the image if necessary */
699 l_tile->x0 = opj_int_max((OPJ_INT32)(l_cp->tx0 + p * l_cp->tdx), (OPJ_IN T32)l_image->x0);
700 l_tile->y0 = opj_int_max((OPJ_INT32)(l_cp->ty0 + q * l_cp->tdy), (OPJ_IN T32)l_image->y0);
701 l_tile->x1 = opj_int_min((OPJ_INT32)(l_cp->tx0 + (p + 1) * l_cp->tdx), ( OPJ_INT32)l_image->x1);
702 l_tile->y1 = opj_int_min((OPJ_INT32)(l_cp->ty0 + (q + 1) * l_cp->tdy), ( OPJ_INT32)l_image->y1);
703 /* testcase 1888.pdf.asan.35.988 */ 712 /* testcase 1888.pdf.asan.35.988 */
704 if (l_tccp->numresolutions == 0) { 713 if (l_tccp->numresolutions == 0) {
705 fprintf(stderr, "tiles require at least one resolution\n"); 714 fprintf(stderr, "tiles require at least one resolution\n");
706 return OPJ_FALSE; 715 return OPJ_FALSE;
707 } 716 }
708 /*fprintf(stderr, "Tile border = %d,%d,%d,%d\n", l_tile->x0, l_tile->y0, l_tile->x1,l_tile->y1);*/ 717 /*fprintf(stderr, "Tile border = %d,%d,%d,%d\n", l_tile->x0, l_tile->y0, l_tile->x1,l_tile->y1);*/
709 718 »
710 /*tile->numcomps = image->numcomps; */ 719 /*tile->numcomps = image->numcomps; */
711 for (compno = 0; compno < l_tile->numcomps; ++compno) { 720 for (compno = 0; compno < l_tile->numcomps; ++compno) {
712 /*fprintf(stderr, "compno = %d/%d\n", compno, l_tile->numcomps); */ 721 /*fprintf(stderr, "compno = %d/%d\n", compno, l_tile->numcomps); */
713 l_image_comp->resno_decoded = 0; 722 l_image_comp->resno_decoded = 0;
714 /* border of each l_tile component (global) */ 723 /* border of each l_tile component (global) */
715 l_tilec->x0 = opj_int_ceildiv(l_tile->x0, (OPJ_INT32)l_image_com p->dx); 724 l_tilec->x0 = opj_int_ceildiv(l_tile->x0, (OPJ_INT32)l_image_com p->dx);
716 l_tilec->y0 = opj_int_ceildiv(l_tile->y0, (OPJ_INT32)l_image_com p->dy); 725 l_tilec->y0 = opj_int_ceildiv(l_tile->y0, (OPJ_INT32)l_image_com p->dy);
717 l_tilec->x1 = opj_int_ceildiv(l_tile->x1, (OPJ_INT32)l_image_com p->dx); 726 l_tilec->x1 = opj_int_ceildiv(l_tile->x1, (OPJ_INT32)l_image_com p->dx);
718 l_tilec->y1 = opj_int_ceildiv(l_tile->y1, (OPJ_INT32)l_image_com p->dy); 727 l_tilec->y1 = opj_int_ceildiv(l_tile->y1, (OPJ_INT32)l_image_com p->dy);
719 /*fprintf(stderr, "\tTile compo border = %d,%d,%d,%d\n", l_tilec ->x0, l_tilec->y0,l_tilec->x1,l_tilec->y1);*/ 728 /*fprintf(stderr, "\tTile compo border = %d,%d,%d,%d\n", l_tilec ->x0, l_tilec->y0,l_tilec->x1,l_tilec->y1);*/
720 729 » »
721 /* compute l_data_size with overflow check */ 730 /* compute l_data_size with overflow check */
722 l_data_size = (OPJ_UINT32)(l_tilec->x1 - l_tilec->x0); 731 l_data_size = (OPJ_UINT32)(l_tilec->x1 - l_tilec->x0);
723 if ((((OPJ_UINT32)-1) / l_data_size) < (OPJ_UINT32)(l_tilec->y1 - l_tilec->y0)) { 732 if ((((OPJ_UINT32)-1) / l_data_size) < (OPJ_UINT32)(l_tilec->y1 - l_tilec->y0)) {
724 /* TODO event */ 733 /* TODO event */
725 return OPJ_FALSE; 734 return OPJ_FALSE;
726 } 735 }
727 l_data_size = l_data_size * (OPJ_UINT32)(l_tilec->y1 - l_tilec-> y0); 736 l_data_size = l_data_size * (OPJ_UINT32)(l_tilec->y1 - l_tilec-> y0);
728 737 » »
729 if ((((OPJ_UINT32)-1) / (OPJ_UINT32)sizeof(OPJ_UINT32)) < l_data _size) { 738 if ((((OPJ_UINT32)-1) / (OPJ_UINT32)sizeof(OPJ_UINT32)) < l_data _size) {
730 /* TODO event */ 739 /* TODO event */
731 return OPJ_FALSE; 740 return OPJ_FALSE;
732 } 741 }
733 l_data_size = l_data_size * (OPJ_UINT32)sizeof(OPJ_UINT32); 742 l_data_size = l_data_size * (OPJ_UINT32)sizeof(OPJ_UINT32);
734 l_tilec->numresolutions = l_tccp->numresolutions; 743 l_tilec->numresolutions = l_tccp->numresolutions;
735 if (l_tccp->numresolutions < l_cp->m_specific_param.m_dec.m_redu ce) { 744 if (l_tccp->numresolutions < l_cp->m_specific_param.m_dec.m_redu ce) {
736 l_tilec->minimum_num_resolutions = 1; 745 l_tilec->minimum_num_resolutions = 1;
737 } 746 }
738 else { 747 else {
739 l_tilec->minimum_num_resolutions = l_tccp->numresolution s - l_cp->m_specific_param.m_dec.m_reduce; 748 l_tilec->minimum_num_resolutions = l_tccp->numresolution s - l_cp->m_specific_param.m_dec.m_reduce;
740 } 749 }
741 750 » »
742 l_tilec->data_size_needed = l_data_size; 751 l_tilec->data_size_needed = l_data_size;
743 if (p_tcd->m_is_decoder && !opj_alloc_tile_component_data(l_tile c)) { 752 if (p_tcd->m_is_decoder && !opj_alloc_tile_component_data(l_tile c)) {
744 return OPJ_FALSE; 753 return OPJ_FALSE;
745 } 754 }
746 755 » »
747 l_data_size = l_tilec->numresolutions * (OPJ_UINT32)sizeof(opj_t cd_resolution_t); 756 l_data_size = l_tilec->numresolutions * (OPJ_UINT32)sizeof(opj_t cd_resolution_t);
748 757 » »
749 if (l_tilec->resolutions == 00) { 758 if (l_tilec->resolutions == 00) {
750 l_tilec->resolutions = (opj_tcd_resolution_t *) opj_mall oc(l_data_size); 759 l_tilec->resolutions = (opj_tcd_resolution_t *) opj_mall oc(l_data_size);
751 if (! l_tilec->resolutions ) { 760 if (! l_tilec->resolutions ) {
752 return OPJ_FALSE; 761 return OPJ_FALSE;
753 } 762 }
754 /*fprintf(stderr, "\tAllocate resolutions of tilec (opj_ tcd_resolution_t): %d\n",l_data_size);*/ 763 /*fprintf(stderr, "\tAllocate resolutions of tilec (opj_ tcd_resolution_t): %d\n",l_data_size);*/
755 l_tilec->resolutions_size = l_data_size; 764 l_tilec->resolutions_size = l_data_size;
756 memset(l_tilec->resolutions,0,l_data_size); 765 memset(l_tilec->resolutions,0,l_data_size);
757 } 766 }
758 else if (l_data_size > l_tilec->resolutions_size) { 767 else if (l_data_size > l_tilec->resolutions_size) {
759 opj_tcd_resolution_t* new_resolutions = (opj_tcd_resolut ion_t *) opj_realloc(l_tilec->resolutions, l_data_size); 768 opj_tcd_resolution_t* new_resolutions = (opj_tcd_resolut ion_t *) opj_realloc(l_tilec->resolutions, l_data_size);
760 if (! new_resolutions) { 769 if (! new_resolutions) {
761 /* opj_event_msg(p_manager, EVT_ERROR, "Not enou gh memory to tile resolutions\n"); */ 770 /* opj_event_msg(p_manager, EVT_ERROR, "Not enou gh memory to tile resolutions\n"); */
762 fprintf(stderr, "Not enough memory to tile resol utions\n"); 771 fprintf(stderr, "Not enough memory to tile resol utions\n");
763 opj_free(l_tilec->resolutions); 772 opj_free(l_tilec->resolutions);
764 l_tilec->resolutions = NULL; 773 l_tilec->resolutions = NULL;
765 l_tilec->resolutions_size = 0; 774 l_tilec->resolutions_size = 0;
766 return OPJ_FALSE; 775 return OPJ_FALSE;
767 } 776 }
768 l_tilec->resolutions = new_resolutions; 777 l_tilec->resolutions = new_resolutions;
769 /*fprintf(stderr, "\tReallocate data of tilec (int): fro m %d to %d x OPJ_UINT32\n", l_tilec->resolutions_size, l_data_size);*/ 778 /*fprintf(stderr, "\tReallocate data of tilec (int): fro m %d to %d x OPJ_UINT32\n", l_tilec->resolutions_size, l_data_size);*/
770 memset(((OPJ_BYTE*) l_tilec->resolutions)+l_tilec->resol utions_size,0,l_data_size - l_tilec->resolutions_size); 779 memset(((OPJ_BYTE*) l_tilec->resolutions)+l_tilec->resol utions_size,0,l_data_size - l_tilec->resolutions_size);
771 l_tilec->resolutions_size = l_data_size; 780 l_tilec->resolutions_size = l_data_size;
772 } 781 }
773 782 » »
774 l_level_no = l_tilec->numresolutions - 1; 783 l_level_no = l_tilec->numresolutions - 1;
775 l_res = l_tilec->resolutions; 784 l_res = l_tilec->resolutions;
776 l_step_size = l_tccp->stepsizes; 785 l_step_size = l_tccp->stepsizes;
777 if (l_tccp->qmfbid == 0) { 786 if (l_tccp->qmfbid == 0) {
778 l_gain_ptr = &opj_dwt_getgain_real; 787 l_gain_ptr = &opj_dwt_getgain_real;
779 } 788 }
780 else { 789 else {
781 l_gain_ptr = &opj_dwt_getgain; 790 l_gain_ptr = &opj_dwt_getgain;
782 } 791 }
783 /*fprintf(stderr, "\tlevel_no=%d\n",l_level_no);*/ 792 /*fprintf(stderr, "\tlevel_no=%d\n",l_level_no);*/
784 793 » »
785 for (resno = 0; resno < l_tilec->numresolutions; ++resno) { 794 for (resno = 0; resno < l_tilec->numresolutions; ++resno) {
786 /*fprintf(stderr, "\t\tresno = %d/%d\n", resno, l_tilec- >numresolutions);*/ 795 /*fprintf(stderr, "\t\tresno = %d/%d\n", resno, l_tilec- >numresolutions);*/
787 OPJ_INT32 tlcbgxstart, tlcbgystart /*, brcbgxend, brcbgy end*/; 796 OPJ_INT32 tlcbgxstart, tlcbgystart /*, brcbgxend, brcbgy end*/;
788 OPJ_UINT32 cbgwidthexpn, cbgheightexpn; 797 OPJ_UINT32 cbgwidthexpn, cbgheightexpn;
789 OPJ_UINT32 cblkwidthexpn, cblkheightexpn; 798 OPJ_UINT32 cblkwidthexpn, cblkheightexpn;
790 799 » » »
791 /* border for each resolution level (global) */ 800 /* border for each resolution level (global) */
792 l_res->x0 = opj_int_ceildivpow2(l_tilec->x0, (OPJ_INT32) l_level_no); 801 l_res->x0 = opj_int_ceildivpow2(l_tilec->x0, (OPJ_INT32) l_level_no);
793 l_res->y0 = opj_int_ceildivpow2(l_tilec->y0, (OPJ_INT32) l_level_no); 802 l_res->y0 = opj_int_ceildivpow2(l_tilec->y0, (OPJ_INT32) l_level_no);
794 l_res->x1 = opj_int_ceildivpow2(l_tilec->x1, (OPJ_INT32) l_level_no); 803 l_res->x1 = opj_int_ceildivpow2(l_tilec->x1, (OPJ_INT32) l_level_no);
795 l_res->y1 = opj_int_ceildivpow2(l_tilec->y1, (OPJ_INT32) l_level_no); 804 l_res->y1 = opj_int_ceildivpow2(l_tilec->y1, (OPJ_INT32) l_level_no);
796 /*fprintf(stderr, "\t\t\tres_x0= %d, res_y0 =%d, res_x1= %d, res_y1=%d\n", l_res->x0, l_res->y0, l_res->x1, l_res->y1);*/ 805 /*fprintf(stderr, "\t\t\tres_x0= %d, res_y0 =%d, res_x1= %d, res_y1=%d\n", l_res->x0, l_res->y0, l_res->x1, l_res->y1);*/
797 /* p. 35, table A-23, ISO/IEC FDIS154444-1 : 2000 (18 au gust 2000) */ 806 /* p. 35, table A-23, ISO/IEC FDIS154444-1 : 2000 (18 au gust 2000) */
798 l_pdx = l_tccp->prcw[resno]; 807 l_pdx = l_tccp->prcw[resno];
799 l_pdy = l_tccp->prch[resno]; 808 l_pdy = l_tccp->prch[resno];
800 /*fprintf(stderr, "\t\t\tpdx=%d, pdy=%d\n", l_pdx, l_pdy );*/ 809 /*fprintf(stderr, "\t\t\tpdx=%d, pdy=%d\n", l_pdx, l_pdy );*/
801 /* p. 64, B.6, ISO/IEC FDIS15444-1 : 2000 (18 august 200 0) */ 810 /* p. 64, B.6, ISO/IEC FDIS15444-1 : 2000 (18 august 200 0) */
802 l_tl_prc_x_start = opj_int_floordivpow2(l_res->x0, (OPJ_ INT32)l_pdx) << l_pdx; 811 l_tl_prc_x_start = opj_int_floordivpow2(l_res->x0, (OPJ_ INT32)l_pdx) << l_pdx;
803 l_tl_prc_y_start = opj_int_floordivpow2(l_res->y0, (OPJ_ INT32)l_pdy) << l_pdy; 812 l_tl_prc_y_start = opj_int_floordivpow2(l_res->y0, (OPJ_ INT32)l_pdy) << l_pdy;
804 l_br_prc_x_end = opj_int_ceildivpow2(l_res->x1, (OPJ_INT 32)l_pdx) << l_pdx; 813 l_br_prc_x_end = opj_int_ceildivpow2(l_res->x1, (OPJ_INT 32)l_pdx) << l_pdx;
805 l_br_prc_y_end = opj_int_ceildivpow2(l_res->y1, (OPJ_INT 32)l_pdy) << l_pdy; 814 l_br_prc_y_end = opj_int_ceildivpow2(l_res->y1, (OPJ_INT 32)l_pdy) << l_pdy;
806 /*fprintf(stderr, "\t\t\tprc_x_start=%d, prc_y_start=%d, br_prc_x_end=%d, br_prc_y_end=%d \n", l_tl_prc_x_start, l_tl_prc_y_start, l_br_ prc_x_end ,l_br_prc_y_end );*/ 815 /*fprintf(stderr, "\t\t\tprc_x_start=%d, prc_y_start=%d, br_prc_x_end=%d, br_prc_y_end=%d \n", l_tl_prc_x_start, l_tl_prc_y_start, l_br_ prc_x_end ,l_br_prc_y_end );*/
807 816 » » »
808 l_res->pw = (l_res->x0 == l_res->x1) ? 0 : (OPJ_UINT32)( (l_br_prc_x_end - l_tl_prc_x_start) >> l_pdx); 817 l_res->pw = (l_res->x0 == l_res->x1) ? 0 : (OPJ_UINT32)( (l_br_prc_x_end - l_tl_prc_x_start) >> l_pdx);
809 l_res->ph = (l_res->y0 == l_res->y1) ? 0 : (OPJ_UINT32)( (l_br_prc_y_end - l_tl_prc_y_start) >> l_pdy); 818 l_res->ph = (l_res->y0 == l_res->y1) ? 0 : (OPJ_UINT32)( (l_br_prc_y_end - l_tl_prc_y_start) >> l_pdy);
810 /*fprintf(stderr, "\t\t\tres_pw=%d, res_ph=%d\n", l_res- >pw, l_res->ph );*/ 819 /*fprintf(stderr, "\t\t\tres_pw=%d, res_ph=%d\n", l_res- >pw, l_res->ph );*/
811 820 » » »
812 l_nb_precincts = l_res->pw * l_res->ph; 821 l_nb_precincts = l_res->pw * l_res->ph;
813 l_nb_precinct_size = l_nb_precincts * (OPJ_UINT32)sizeof (opj_tcd_precinct_t); 822 l_nb_precinct_size = l_nb_precincts * (OPJ_UINT32)sizeof (opj_tcd_precinct_t);
814 if (resno == 0) { 823 if (resno == 0) {
815 tlcbgxstart = l_tl_prc_x_start; 824 tlcbgxstart = l_tl_prc_x_start;
816 tlcbgystart = l_tl_prc_y_start; 825 tlcbgystart = l_tl_prc_y_start;
817 /*brcbgxend = l_br_prc_x_end;*/ 826 /*brcbgxend = l_br_prc_x_end;*/
818 /* brcbgyend = l_br_prc_y_end;*/ 827 /* brcbgyend = l_br_prc_y_end;*/
819 cbgwidthexpn = l_pdx; 828 cbgwidthexpn = l_pdx;
820 cbgheightexpn = l_pdy; 829 cbgheightexpn = l_pdy;
821 l_res->numbands = 1; 830 l_res->numbands = 1;
822 } 831 }
823 else { 832 else {
824 tlcbgxstart = opj_int_ceildivpow2(l_tl_prc_x_sta rt, 1); 833 tlcbgxstart = opj_int_ceildivpow2(l_tl_prc_x_sta rt, 1);
825 tlcbgystart = opj_int_ceildivpow2(l_tl_prc_y_sta rt, 1); 834 tlcbgystart = opj_int_ceildivpow2(l_tl_prc_y_sta rt, 1);
826 /*brcbgxend = opj_int_ceildivpow2(l_br_prc_x_end , 1);*/ 835 /*brcbgxend = opj_int_ceildivpow2(l_br_prc_x_end , 1);*/
827 /*brcbgyend = opj_int_ceildivpow2(l_br_prc_y_end , 1);*/ 836 /*brcbgyend = opj_int_ceildivpow2(l_br_prc_y_end , 1);*/
828 cbgwidthexpn = l_pdx - 1; 837 cbgwidthexpn = l_pdx - 1;
829 cbgheightexpn = l_pdy - 1; 838 cbgheightexpn = l_pdy - 1;
830 l_res->numbands = 3; 839 l_res->numbands = 3;
831 } 840 }
832 841 » » »
833 cblkwidthexpn = opj_uint_min(l_tccp->cblkw, cbgwidthexpn ); 842 cblkwidthexpn = opj_uint_min(l_tccp->cblkw, cbgwidthexpn );
834 cblkheightexpn = opj_uint_min(l_tccp->cblkh, cbgheightex pn); 843 cblkheightexpn = opj_uint_min(l_tccp->cblkh, cbgheightex pn);
835 l_band = l_res->bands; 844 l_band = l_res->bands;
836 845 » » »
837 for (bandno = 0; bandno < l_res->numbands; ++bandno) { 846 for (bandno = 0; bandno < l_res->numbands; ++bandno) {
838 OPJ_INT32 numbps; 847 OPJ_INT32 numbps;
839 /*fprintf(stderr, "\t\t\tband_no=%d/%d\n", bandn o, l_res->numbands );*/ 848 /*fprintf(stderr, "\t\t\tband_no=%d/%d\n", bandn o, l_res->numbands );*/
840 849 » » » »
841 if (resno == 0) { 850 if (resno == 0) {
842 l_band->bandno = 0 ; 851 l_band->bandno = 0 ;
843 l_band->x0 = opj_int_ceildivpow2(l_tilec ->x0, (OPJ_INT32)l_level_no); 852 l_band->x0 = opj_int_ceildivpow2(l_tilec ->x0, (OPJ_INT32)l_level_no);
844 l_band->y0 = opj_int_ceildivpow2(l_tilec ->y0, (OPJ_INT32)l_level_no); 853 l_band->y0 = opj_int_ceildivpow2(l_tilec ->y0, (OPJ_INT32)l_level_no);
845 l_band->x1 = opj_int_ceildivpow2(l_tilec ->x1, (OPJ_INT32)l_level_no); 854 l_band->x1 = opj_int_ceildivpow2(l_tilec ->x1, (OPJ_INT32)l_level_no);
846 l_band->y1 = opj_int_ceildivpow2(l_tilec ->y1, (OPJ_INT32)l_level_no); 855 l_band->y1 = opj_int_ceildivpow2(l_tilec ->y1, (OPJ_INT32)l_level_no);
847 } 856 }
848 else { 857 else {
849 l_band->bandno = bandno + 1; 858 l_band->bandno = bandno + 1;
850 /* x0b = 1 if bandno = 1 or 3 */ 859 /* x0b = 1 if bandno = 1 or 3 */
851 l_x0b = l_band->bandno&1; 860 l_x0b = l_band->bandno&1;
852 /* y0b = 1 if bandno = 2 or 3 */ 861 /* y0b = 1 if bandno = 2 or 3 */
853 l_y0b = (OPJ_INT32)((l_band->bandno)>>1) ; 862 l_y0b = (OPJ_INT32)((l_band->bandno)>>1) ;
854 /* l_band border (global) */ 863 /* l_band border (global) */
855 l_band->x0 = opj_int_ceildivpow2(l_tilec ->x0 - (1 << l_level_no) * l_x0b, (OPJ_INT32)(l_level_no + 1)); 864 l_band->x0 = opj_int_ceildivpow2(l_tilec ->x0 - (1 << l_level_no) * l_x0b, (OPJ_INT32)(l_level_no + 1));
856 l_band->y0 = opj_int_ceildivpow2(l_tilec ->y0 - (1 << l_level_no) * l_y0b, (OPJ_INT32)(l_level_no + 1)); 865 l_band->y0 = opj_int_ceildivpow2(l_tilec ->y0 - (1 << l_level_no) * l_y0b, (OPJ_INT32)(l_level_no + 1));
857 l_band->x1 = opj_int_ceildivpow2(l_tilec ->x1 - (1 << l_level_no) * l_x0b, (OPJ_INT32)(l_level_no + 1)); 866 l_band->x1 = opj_int_ceildivpow2(l_tilec ->x1 - (1 << l_level_no) * l_x0b, (OPJ_INT32)(l_level_no + 1));
858 l_band->y1 = opj_int_ceildivpow2(l_tilec ->y1 - (1 << l_level_no) * l_y0b, (OPJ_INT32)(l_level_no + 1)); 867 l_band->y1 = opj_int_ceildivpow2(l_tilec ->y1 - (1 << l_level_no) * l_y0b, (OPJ_INT32)(l_level_no + 1));
859 } 868 }
860 869 » » » »
861 /** avoid an if with storing function pointer */ 870 /** avoid an if with storing function pointer */
862 l_gain = (*l_gain_ptr) (l_band->bandno); 871 l_gain = (*l_gain_ptr) (l_band->bandno);
863 numbps = (OPJ_INT32)(l_image_comp->prec + l_gain ); 872 numbps = (OPJ_INT32)(l_image_comp->prec + l_gain );
864 l_band->stepsize = (OPJ_FLOAT32)(((1.0 + l_step_ size->mant / 2048.0) * pow(2.0, (OPJ_INT32) (numbps - l_step_size->expn)))) * fr action; 873 l_band->stepsize = (OPJ_FLOAT32)(((1.0 + l_step_ size->mant / 2048.0) * pow(2.0, (OPJ_INT32) (numbps - l_step_size->expn)))) * fr action;
865 l_band->numbps = l_step_size->expn + (OPJ_INT32) l_tccp->numgbits - 1; /* WHY -1 ? */ 874 l_band->numbps = l_step_size->expn + (OPJ_INT32) l_tccp->numgbits - 1; /* WHY -1 ? */
866 875 » » » »
867 if (! l_band->precincts) { 876 if (! l_band->precincts) {
868 l_band->precincts = (opj_tcd_precinct_t *) opj_malloc( /*3 * */ l_nb_precinct_size); 877 l_band->precincts = (opj_tcd_precinct_t *) opj_malloc( /*3 * */ l_nb_precinct_size);
869 if (! l_band->precincts) { 878 if (! l_band->precincts) {
870 return OPJ_FALSE; 879 return OPJ_FALSE;
871 } 880 }
872 /*fprintf(stderr, "\t\t\t\tAllocate prec incts of a band (opj_tcd_precinct_t): %d\n",l_nb_precinct_size); */ 881 /*fprintf(stderr, "\t\t\t\tAllocate prec incts of a band (opj_tcd_precinct_t): %d\n",l_nb_precinct_size); */
873 memset(l_band->precincts,0,l_nb_precinct _size); 882 memset(l_band->precincts,0,l_nb_precinct _size);
874 l_band->precincts_data_size = l_nb_preci nct_size; 883 l_band->precincts_data_size = l_nb_preci nct_size;
875 } 884 }
876 else if (l_band->precincts_data_size < l_nb_prec inct_size) { 885 else if (l_band->precincts_data_size < l_nb_prec inct_size) {
877 886 » » » » »
878 opj_tcd_precinct_t * new_precincts = (op j_tcd_precinct_t *) opj_realloc(l_band->precincts,/*3 * */ l_nb_precinct_size); 887 opj_tcd_precinct_t * new_precincts = (op j_tcd_precinct_t *) opj_realloc(l_band->precincts,/*3 * */ l_nb_precinct_size);
879 if (! new_precincts) { 888 if (! new_precincts) {
880 /* opj_event_msg(p_manager, EVT_ ERROR, "Not enough memory to handle band precints\n"); */ 889 /* opj_event_msg(p_manager, EVT_ ERROR, "Not enough memory to handle band precints\n"); */
881 fprintf(stderr, "Not enough memo ry to handle band precints\n"); 890 fprintf(stderr, "Not enough memo ry to handle band precints\n");
882 opj_free(l_band->precincts); 891 opj_free(l_band->precincts);
883 l_band->precincts = NULL; 892 l_band->precincts = NULL;
884 l_band->precincts_data_size = 0; 893 l_band->precincts_data_size = 0;
885 return OPJ_FALSE; 894 return OPJ_FALSE;
886 } 895 }
887 l_band->precincts = new_precincts; 896 l_band->precincts = new_precincts;
888 /*fprintf(stderr, "\t\t\t\tReallocate pr ecincts of a band (opj_tcd_precinct_t): from %d to %d\n",l_band->precincts_data_ size, l_nb_precinct_size);*/ 897 /*fprintf(stderr, "\t\t\t\tReallocate pr ecincts of a band (opj_tcd_precinct_t): from %d to %d\n",l_band->precincts_data_ size, l_nb_precinct_size);*/
889 memset(((OPJ_BYTE *) l_band->precincts) + l_band->precincts_data_size,0,l_nb_precinct_size - l_band->precincts_data_size ); 898 memset(((OPJ_BYTE *) l_band->precincts) + l_band->precincts_data_size,0,l_nb_precinct_size - l_band->precincts_data_size );
890 l_band->precincts_data_size = l_nb_preci nct_size; 899 l_band->precincts_data_size = l_nb_preci nct_size;
891 } 900 }
892 901 » » » »
893 l_current_precinct = l_band->precincts; 902 l_current_precinct = l_band->precincts;
894 for (precno = 0; precno < l_nb_precincts; ++prec no) { 903 for (precno = 0; precno < l_nb_precincts; ++prec no) {
895 OPJ_INT32 tlcblkxstart, tlcblkystart, br cblkxend, brcblkyend; 904 OPJ_INT32 tlcblkxstart, tlcblkystart, br cblkxend, brcblkyend;
896 OPJ_INT32 cbgxstart = tlcbgxstart + (OPJ _INT32)(precno % l_res->pw) * (1 << cbgwidthexpn); 905 OPJ_INT32 cbgxstart = tlcbgxstart + (OPJ _INT32)(precno % l_res->pw) * (1 << cbgwidthexpn);
897 OPJ_INT32 cbgystart = tlcbgystart + (OPJ _INT32)(precno / l_res->pw) * (1 << cbgheightexpn); 906 OPJ_INT32 cbgystart = tlcbgystart + (OPJ _INT32)(precno / l_res->pw) * (1 << cbgheightexpn);
898 OPJ_INT32 cbgxend = cbgxstart + (1 << cb gwidthexpn); 907 OPJ_INT32 cbgxend = cbgxstart + (1 << cb gwidthexpn);
899 OPJ_INT32 cbgyend = cbgystart + (1 << cb gheightexpn); 908 OPJ_INT32 cbgyend = cbgystart + (1 << cb gheightexpn);
900 /*fprintf(stderr, "\t precno=%d; bandno= %d, resno=%d; compno=%d\n", precno, bandno , resno, compno);*/ 909 /*fprintf(stderr, "\t precno=%d; bandno= %d, resno=%d; compno=%d\n", precno, bandno , resno, compno);*/
901 /*fprintf(stderr, "\t tlcbgxstart(=%d) + (precno(=%d) percent res->pw(=%d)) * (1 << cbgwidthexpn(=%d)) \n",tlcbgxstart,p recno,l_res->pw,cbgwidthexpn);*/ 910 /*fprintf(stderr, "\t tlcbgxstart(=%d) + (precno(=%d) percent res->pw(=%d)) * (1 << cbgwidthexpn(=%d)) \n",tlcbgxstart,p recno,l_res->pw,cbgwidthexpn);*/
902 911 » » » » »
903 /* precinct size (global) */ 912 /* precinct size (global) */
904 /*fprintf(stderr, "\t cbgxstart=%d, l_ba nd->x0 = %d \n",cbgxstart, l_band->x0);*/ 913 /*fprintf(stderr, "\t cbgxstart=%d, l_ba nd->x0 = %d \n",cbgxstart, l_band->x0);*/
905 914 » » » » »
906 l_current_precinct->x0 = opj_int_max(cbg xstart, l_band->x0); 915 l_current_precinct->x0 = opj_int_max(cbg xstart, l_band->x0);
907 l_current_precinct->y0 = opj_int_max(cbg ystart, l_band->y0); 916 l_current_precinct->y0 = opj_int_max(cbg ystart, l_band->y0);
908 l_current_precinct->x1 = opj_int_min(cbg xend, l_band->x1); 917 l_current_precinct->x1 = opj_int_min(cbg xend, l_band->x1);
909 l_current_precinct->y1 = opj_int_min(cbg yend, l_band->y1); 918 l_current_precinct->y1 = opj_int_min(cbg yend, l_band->y1);
910 /*fprintf(stderr, "\t prc_x0=%d; prc_y0= %d, prc_x1=%d; prc_y1=%d\n",l_current_precinct->x0, l_current_precinct->y0 ,l_cu rrent_precinct->x1, l_current_precinct->y1);*/ 919 /*fprintf(stderr, "\t prc_x0=%d; prc_y0= %d, prc_x1=%d; prc_y1=%d\n",l_current_precinct->x0, l_current_precinct->y0 ,l_cu rrent_precinct->x1, l_current_precinct->y1);*/
911 920 » » » » »
912 tlcblkxstart = opj_int_floordivpow2(l_cu rrent_precinct->x0, (OPJ_INT32)cblkwidthexpn) << cblkwidthexpn; 921 tlcblkxstart = opj_int_floordivpow2(l_cu rrent_precinct->x0, (OPJ_INT32)cblkwidthexpn) << cblkwidthexpn;
913 /*fprintf(stderr, "\t tlcblkxstart =%d\n ",tlcblkxstart );*/ 922 /*fprintf(stderr, "\t tlcblkxstart =%d\n ",tlcblkxstart );*/
914 tlcblkystart = opj_int_floordivpow2(l_cu rrent_precinct->y0, (OPJ_INT32)cblkheightexpn) << cblkheightexpn; 923 tlcblkystart = opj_int_floordivpow2(l_cu rrent_precinct->y0, (OPJ_INT32)cblkheightexpn) << cblkheightexpn;
915 /*fprintf(stderr, "\t tlcblkystart =%d\n ",tlcblkystart );*/ 924 /*fprintf(stderr, "\t tlcblkystart =%d\n ",tlcblkystart );*/
916 brcblkxend = opj_int_ceildivpow2(l_curre nt_precinct->x1, (OPJ_INT32)cblkwidthexpn) << cblkwidthexpn; 925 brcblkxend = opj_int_ceildivpow2(l_curre nt_precinct->x1, (OPJ_INT32)cblkwidthexpn) << cblkwidthexpn;
917 /*fprintf(stderr, "\t brcblkxend =%d\n", brcblkxend );*/ 926 /*fprintf(stderr, "\t brcblkxend =%d\n", brcblkxend );*/
918 brcblkyend = opj_int_ceildivpow2(l_curre nt_precinct->y1, (OPJ_INT32)cblkheightexpn) << cblkheightexpn; 927 brcblkyend = opj_int_ceildivpow2(l_curre nt_precinct->y1, (OPJ_INT32)cblkheightexpn) << cblkheightexpn;
919 /*fprintf(stderr, "\t brcblkyend =%d\n", brcblkyend );*/ 928 /*fprintf(stderr, "\t brcblkyend =%d\n", brcblkyend );*/
920 l_current_precinct->cw = (OPJ_UINT32)((b rcblkxend - tlcblkxstart) >> cblkwidthexpn); 929 l_current_precinct->cw = (OPJ_UINT32)((b rcblkxend - tlcblkxstart) >> cblkwidthexpn);
921 l_current_precinct->ch = (OPJ_UINT32)((b rcblkyend - tlcblkystart) >> cblkheightexpn); 930 l_current_precinct->ch = (OPJ_UINT32)((b rcblkyend - tlcblkystart) >> cblkheightexpn);
922 931 » » » » »
923 l_nb_code_blocks = l_current_precinct->c w * l_current_precinct->ch; 932 l_nb_code_blocks = l_current_precinct->c w * l_current_precinct->ch;
924 /*fprintf(stderr, "\t\t\t\t precinct_cw = %d x recinct_ch = %d\n",l_current_precinct->cw, l_current_precinct->ch); */ 933 /*fprintf(stderr, "\t\t\t\t precinct_cw = %d x recinct_ch = %d\n",l_current_precinct->cw, l_current_precinct->ch); */
925 l_nb_code_blocks_size = l_nb_code_blocks * (OPJ_UINT32)sizeof_block; 934 l_nb_code_blocks_size = l_nb_code_blocks * (OPJ_UINT32)sizeof_block;
926 935 » » » » »
927 if (! l_current_precinct->cblks.blocks) { 936 if (! l_current_precinct->cblks.blocks) {
928 l_current_precinct->cblks.blocks = opj_malloc(l_nb_code_blocks_size); 937 l_current_precinct->cblks.blocks = opj_malloc(l_nb_code_blocks_size);
929 if (! l_current_precinct->cblks. blocks ) { 938 if (! l_current_precinct->cblks. blocks ) {
930 return OPJ_FALSE; 939 return OPJ_FALSE;
931 } 940 }
932 /*fprintf(stderr, "\t\t\t\tAlloc ate cblks of a precinct (opj_tcd_cblk_dec_t): %d\n",l_nb_code_blocks_size);*/ 941 /*fprintf(stderr, "\t\t\t\tAlloc ate cblks of a precinct (opj_tcd_cblk_dec_t): %d\n",l_nb_code_blocks_size);*/
933 942 » » » » » »
934 memset(l_current_precinct->cblks .blocks,0,l_nb_code_blocks_size); 943 memset(l_current_precinct->cblks .blocks,0,l_nb_code_blocks_size);
935 944 » » » » » »
936 l_current_precinct->block_size = l_nb_code_blocks_size; 945 l_current_precinct->block_size = l_nb_code_blocks_size;
937 } 946 }
938 else if (l_nb_code_blocks_size > l_curre nt_precinct->block_size) { 947 else if (l_nb_code_blocks_size > l_curre nt_precinct->block_size) {
939 void *new_blocks = opj_realloc(l _current_precinct->cblks.blocks, l_nb_code_blocks_size); 948 void *new_blocks = opj_realloc(l _current_precinct->cblks.blocks, l_nb_code_blocks_size);
940 if (! new_blocks) { 949 if (! new_blocks) {
941 opj_free(l_current_preci nct->cblks.blocks); 950 opj_free(l_current_preci nct->cblks.blocks);
942 l_current_precinct->cblk s.blocks = NULL; 951 l_current_precinct->cblk s.blocks = NULL;
943 l_current_precinct->bloc k_size = 0; 952 l_current_precinct->bloc k_size = 0;
944 /* opj_event_msg(p_manag er, EVT_ERROR, "Not enough memory for current precinct codeblock element\n"); */ 953 /* opj_event_msg(p_manag er, EVT_ERROR, "Not enough memory for current precinct codeblock element\n"); */
945 fprintf(stderr, "Not eno ugh memory for current precinct codeblock element\n"); 954 fprintf(stderr, "Not eno ugh memory for current precinct codeblock element\n");
946 return OPJ_FALSE; 955 return OPJ_FALSE;
947 } 956 }
948 l_current_precinct->cblks.blocks = new_blocks; 957 l_current_precinct->cblks.blocks = new_blocks;
949 /*fprintf(stderr, "\t\t\t\tReall ocate cblks of a precinct (opj_tcd_cblk_dec_t): from %d to %d\n",l_current_preci nct->block_size, l_nb_code_blocks_size); */ 958 /*fprintf(stderr, "\t\t\t\tReall ocate cblks of a precinct (opj_tcd_cblk_dec_t): from %d to %d\n",l_current_preci nct->block_size, l_nb_code_blocks_size); */
950 959 » » » » » »
951 memset(((OPJ_BYTE *) l_current_p recinct->cblks.blocks) + l_current_precinct->block_size 960 memset(((OPJ_BYTE *) l_current_p recinct->cblks.blocks) + l_current_precinct->block_size
952 ,0 961 ,0
953 ,l_nb_c ode_blocks_size - l_current_precinct->block_size); 962 ,l_nb_c ode_blocks_size - l_current_precinct->block_size);
954 963 » » » » » »
955 l_current_precinct->block_size = l_nb_code_blocks_size; 964 l_current_precinct->block_size = l_nb_code_blocks_size;
956 } 965 }
957 966 » » » » »
958 if (! l_current_precinct->incltree) { 967 if (! l_current_precinct->incltree) {
959 l_current_precinct->incltree = o pj_tgt_create(l_current_precinct->cw, 968 l_current_precinct->incltree = o pj_tgt_create(l_current_precinct->cw,
960 l_curren t_precinct->ch); 969 l_curren t_precinct->ch);
961 } 970 }
962 else{ 971 else{
963 l_current_precinct->incltree = o pj_tgt_init(l_current_precinct->incltree, 972 l_current_precinct->incltree = o pj_tgt_init(l_current_precinct->incltree,
964 l_current_precin ct->cw, 973 l_current_precin ct->cw,
965 l_current_precin ct->ch); 974 l_current_precin ct->ch);
966 } 975 }
967 976
(...skipping 17 matching lines...) Expand all
985 if (! l_current_precinct->imsbtree) { 994 if (! l_current_precinct->imsbtree) {
986 fprintf(stderr, "WARNING: No ims btree created.\n"); 995 fprintf(stderr, "WARNING: No ims btree created.\n");
987 /*return OPJ_FALSE;*/ 996 /*return OPJ_FALSE;*/
988 } 997 }
989 998
990 for (cblkno = 0; cblkno < l_nb_code_bloc ks; ++cblkno) { 999 for (cblkno = 0; cblkno < l_nb_code_bloc ks; ++cblkno) {
991 OPJ_INT32 cblkxstart = tlcblkxst art + (OPJ_INT32)(cblkno % l_current_precinct->cw) * (1 << cblkwidthexpn); 1000 OPJ_INT32 cblkxstart = tlcblkxst art + (OPJ_INT32)(cblkno % l_current_precinct->cw) * (1 << cblkwidthexpn);
992 OPJ_INT32 cblkystart = tlcblkyst art + (OPJ_INT32)(cblkno / l_current_precinct->cw) * (1 << cblkheightexpn); 1001 OPJ_INT32 cblkystart = tlcblkyst art + (OPJ_INT32)(cblkno / l_current_precinct->cw) * (1 << cblkheightexpn);
993 OPJ_INT32 cblkxend = cblkxstart + (1 << cblkwidthexpn); 1002 OPJ_INT32 cblkxend = cblkxstart + (1 << cblkwidthexpn);
994 OPJ_INT32 cblkyend = cblkystart + (1 << cblkheightexpn); 1003 OPJ_INT32 cblkyend = cblkystart + (1 << cblkheightexpn);
995 1004 » » » » » »
996 if (isEncoder) { 1005 if (isEncoder) {
997 opj_tcd_cblk_enc_t* l_co de_block = l_current_precinct->cblks.enc + cblkno; 1006 opj_tcd_cblk_enc_t* l_co de_block = l_current_precinct->cblks.enc + cblkno;
998 1007 » » » » » » »
999 if (! opj_tcd_code_block _enc_allocate(l_code_block)) { 1008 if (! opj_tcd_code_block _enc_allocate(l_code_block)) {
1000 return OPJ_FALSE ; 1009 return OPJ_FALSE ;
1001 } 1010 }
1002 /* code-block size (glob al) */ 1011 /* code-block size (glob al) */
1003 l_code_block->x0 = opj_i nt_max(cblkxstart, l_current_precinct->x0); 1012 l_code_block->x0 = opj_i nt_max(cblkxstart, l_current_precinct->x0);
1004 l_code_block->y0 = opj_i nt_max(cblkystart, l_current_precinct->y0); 1013 l_code_block->y0 = opj_i nt_max(cblkystart, l_current_precinct->y0);
1005 l_code_block->x1 = opj_i nt_min(cblkxend, l_current_precinct->x1); 1014 l_code_block->x1 = opj_i nt_min(cblkxend, l_current_precinct->x1);
1006 l_code_block->y1 = opj_i nt_min(cblkyend, l_current_precinct->y1); 1015 l_code_block->y1 = opj_i nt_min(cblkyend, l_current_precinct->y1);
1016
1017 if (! opj_tcd_code_block _enc_allocate_data(l_code_block)) {
1018 return OPJ_FALSE ;
1019 }
1007 } else { 1020 } else {
1008 opj_tcd_cblk_dec_t* l_co de_block = l_current_precinct->cblks.dec + cblkno; 1021 opj_tcd_cblk_dec_t* l_co de_block = l_current_precinct->cblks.dec + cblkno;
1009 1022 » » » » » » »
1010 if (! opj_tcd_code_block _dec_allocate(l_code_block)) { 1023 if (! opj_tcd_code_block _dec_allocate(l_code_block)) {
1011 return OPJ_FALSE ; 1024 return OPJ_FALSE ;
1012 } 1025 }
1013 /* code-block size (glob al) */ 1026 /* code-block size (glob al) */
1014 l_code_block->x0 = opj_i nt_max(cblkxstart, l_current_precinct->x0); 1027 l_code_block->x0 = opj_i nt_max(cblkxstart, l_current_precinct->x0);
1015 l_code_block->y0 = opj_i nt_max(cblkystart, l_current_precinct->y0); 1028 l_code_block->y0 = opj_i nt_max(cblkystart, l_current_precinct->y0);
1016 l_code_block->x1 = opj_i nt_min(cblkxend, l_current_precinct->x1); 1029 l_code_block->x1 = opj_i nt_min(cblkxend, l_current_precinct->x1);
1017 l_code_block->y1 = opj_i nt_min(cblkyend, l_current_precinct->y1); 1030 l_code_block->y1 = opj_i nt_min(cblkyend, l_current_precinct->y1);
1018 } 1031 }
1019 } 1032 }
(...skipping 16 matching lines...) Expand all
1036 { 1049 {
1037 return opj_tcd_init_tile(p_tcd, p_tile_no, OPJ_TRUE, 1.0F, sizeof(opj_tc d_cblk_enc_t)); 1050 return opj_tcd_init_tile(p_tcd, p_tile_no, OPJ_TRUE, 1.0F, sizeof(opj_tc d_cblk_enc_t));
1038 } 1051 }
1039 1052
1040 OPJ_BOOL opj_tcd_init_decode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no) 1053 OPJ_BOOL opj_tcd_init_decode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no)
1041 { 1054 {
1042 return opj_tcd_init_tile(p_tcd, p_tile_no, OPJ_FALSE, 0.5F, sizeof(opj_t cd_cblk_dec_t)); 1055 return opj_tcd_init_tile(p_tcd, p_tile_no, OPJ_FALSE, 0.5F, sizeof(opj_t cd_cblk_dec_t));
1043 } 1056 }
1044 1057
1045 /** 1058 /**
1046 * Allocates memory for an encoding code block. 1059 * Allocates memory for an encoding code block (but not data memory).
1047 */ 1060 */
1048 OPJ_BOOL opj_tcd_code_block_enc_allocate (opj_tcd_cblk_enc_t * p_code_block) 1061 static OPJ_BOOL opj_tcd_code_block_enc_allocate (opj_tcd_cblk_enc_t * p_code_blo ck)
1049 { 1062 {
1050 if (! p_code_block->data) { 1063 » if (! p_code_block->layers) {
1064 » » /* no memset since data */
1065 » » p_code_block->layers = (opj_tcd_layer_t*) opj_calloc(100, sizeof (opj_tcd_layer_t));
1066 » » if (! p_code_block->layers) {
1067 » » » return OPJ_FALSE;
1068 » » }
1069 » }
1070 » if (! p_code_block->passes) {
1071 » » p_code_block->passes = (opj_tcd_pass_t*) opj_calloc(100, sizeof( opj_tcd_pass_t));
1072 » » if (! p_code_block->passes) {
1073 » » » return OPJ_FALSE;
1074 » » }
1075 » }
1076 » return OPJ_TRUE;
1077 }
1051 1078
1052 p_code_block->data = (OPJ_BYTE*) opj_malloc(OPJ_J2K_DEFAULT_CBLK _DATA_SIZE*2); /*why +1 ?*/ 1079 /**
1053 if(! p_code_block->data) { 1080 * Allocates data memory for an encoding code block.
1054 return OPJ_FALSE; 1081 */
1055 } 1082 static OPJ_BOOL opj_tcd_code_block_enc_allocate_data (opj_tcd_cblk_enc_t * p_cod e_block)
1056 1083 {
1057 p_code_block->data[0] = 0; 1084 » OPJ_UINT32 l_data_size;
1058 p_code_block->data+=1; 1085 »
1059 1086 » l_data_size = (OPJ_UINT32)((p_code_block->x1 - p_code_block->x0) * (p_co de_block->y1 - p_code_block->y0) * (OPJ_INT32)sizeof(OPJ_UINT32));
1060 /* no memset since data */ 1087 »
1061 p_code_block->layers = (opj_tcd_layer_t*) opj_calloc(100, sizeof (opj_tcd_layer_t)); 1088 » if (l_data_size > p_code_block->data_size) {
1062 if (! p_code_block->layers) { 1089 » » if (p_code_block->data) {
1063 return OPJ_FALSE; 1090 » » » opj_free(p_code_block->data - 1); /* again, why -1 */
1064 } 1091 » » }
1065 1092 » » p_code_block->data = (OPJ_BYTE*) opj_malloc(l_data_size);
1066 p_code_block->passes = (opj_tcd_pass_t*) opj_calloc(100, sizeof( opj_tcd_pass_t)); 1093 » » if(! p_code_block->data) {
1067 if (! p_code_block->passes) { 1094 » » » p_code_block->data_size = 0U;
1068 return OPJ_FALSE; 1095 » » » return OPJ_FALSE;
1069 } 1096 » » }
1070 } 1097 » » p_code_block->data_size = l_data_size;
1071 1098 » »
1072 return OPJ_TRUE; 1099 » » p_code_block->data[0] = 0;
1100 » » p_code_block->data+=1; /*why +1 ?*/
1101 » }
1102 » return OPJ_TRUE;
1073 } 1103 }
1074 1104
1075 /** 1105 /**
1076 * Allocates memory for a decoding code block. 1106 * Allocates memory for a decoding code block.
1077 */ 1107 */
1078 OPJ_BOOL opj_tcd_code_block_dec_allocate (opj_tcd_cblk_dec_t * p_code_block) 1108 static OPJ_BOOL opj_tcd_code_block_dec_allocate (opj_tcd_cblk_dec_t * p_code_blo ck)
1079 { 1109 {
1080 if (! p_code_block->data) { 1110 if (! p_code_block->data) {
1081 1111
1082 p_code_block->data = (OPJ_BYTE*) opj_malloc(OPJ_J2K_DEFAULT_CBLK _DATA_SIZE); 1112 p_code_block->data = (OPJ_BYTE*) opj_malloc(OPJ_J2K_DEFAULT_CBLK _DATA_SIZE);
1083 if (! p_code_block->data) { 1113 if (! p_code_block->data) {
1084 return OPJ_FALSE; 1114 return OPJ_FALSE;
1085 } 1115 }
1086 p_code_block->data_max_size = OPJ_J2K_DEFAULT_CBLK_DATA_SIZE; 1116 p_code_block->data_max_size = OPJ_J2K_DEFAULT_CBLK_DATA_SIZE;
1087 /*fprintf(stderr, "Allocate 8192 elements of code_block->data\n" );*/ 1117 /*fprintf(stderr, "Allocate 8192 elements of code_block->data\n" );*/
1088 1118
(...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after
1982 ++l_tccp; 2012 ++l_tccp;
1983 } 2013 }
1984 2014
1985 return OPJ_TRUE; 2015 return OPJ_TRUE;
1986 } 2016 }
1987 2017
1988 OPJ_BOOL opj_tcd_t1_encode ( opj_tcd_t *p_tcd ) 2018 OPJ_BOOL opj_tcd_t1_encode ( opj_tcd_t *p_tcd )
1989 { 2019 {
1990 opj_t1_t * l_t1; 2020 opj_t1_t * l_t1;
1991 const OPJ_FLOAT64 * l_mct_norms; 2021 const OPJ_FLOAT64 * l_mct_norms;
2022 OPJ_UINT32 l_mct_numcomps = 0U;
1992 opj_tcp_t * l_tcp = p_tcd->tcp; 2023 opj_tcp_t * l_tcp = p_tcd->tcp;
1993 2024
1994 l_t1 = opj_t1_create(OPJ_TRUE); 2025 l_t1 = opj_t1_create(OPJ_TRUE);
1995 if (l_t1 == 00) { 2026 if (l_t1 == 00) {
1996 return OPJ_FALSE; 2027 return OPJ_FALSE;
1997 } 2028 }
1998 2029
1999 if (l_tcp->mct == 1) { 2030 if (l_tcp->mct == 1) {
2031 l_mct_numcomps = 3U;
2000 /* irreversible encoding */ 2032 /* irreversible encoding */
2001 if (l_tcp->tccps->qmfbid == 0) { 2033 if (l_tcp->tccps->qmfbid == 0) {
2002 l_mct_norms = opj_mct_get_mct_norms_real(); 2034 l_mct_norms = opj_mct_get_mct_norms_real();
2003 } 2035 }
2004 else { 2036 else {
2005 l_mct_norms = opj_mct_get_mct_norms(); 2037 l_mct_norms = opj_mct_get_mct_norms();
2006 } 2038 }
2007 } 2039 }
2008 else { 2040 else {
2041 l_mct_numcomps = p_tcd->image->numcomps;
2009 l_mct_norms = (const OPJ_FLOAT64 *) (l_tcp->mct_norms); 2042 l_mct_norms = (const OPJ_FLOAT64 *) (l_tcp->mct_norms);
2010 } 2043 }
2011 2044
2012 if (! opj_t1_encode_cblks(l_t1, p_tcd->tcd_image->tiles , l_tcp, l_mct_n orms)) { 2045 if (! opj_t1_encode_cblks(l_t1, p_tcd->tcd_image->tiles , l_tcp, l_mct_n orms, l_mct_numcomps)) {
2013 opj_t1_destroy(l_t1); 2046 opj_t1_destroy(l_t1);
2014 return OPJ_FALSE; 2047 return OPJ_FALSE;
2015 } 2048 }
2016 2049
2017 opj_t1_destroy(l_t1); 2050 opj_t1_destroy(l_t1);
2018 2051
2019 return OPJ_TRUE; 2052 return OPJ_TRUE;
2020 } 2053 }
2021 2054
2022 OPJ_BOOL opj_tcd_t2_encode (opj_tcd_t *p_tcd, 2055 OPJ_BOOL opj_tcd_t2_encode (opj_tcd_t *p_tcd,
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
2167 } 2200 }
2168 break; 2201 break;
2169 } 2202 }
2170 2203
2171 ++l_img_comp; 2204 ++l_img_comp;
2172 ++l_tilec; 2205 ++l_tilec;
2173 } 2206 }
2174 2207
2175 return OPJ_TRUE; 2208 return OPJ_TRUE;
2176 } 2209 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698