| 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 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 331 opj_stream_private_t *p_stream, | 331 opj_stream_private_t *p_stream, |
| 332 opj_event_mgr_t * p_manager); | 332 opj_event_mgr_t * p_manager); |
| 333 | 333 |
| 334 static OPJ_BOOL opj_j2k_pre_write_tile ( opj_j2k_t * p_j2k, | 334 static OPJ_BOOL opj_j2k_pre_write_tile ( opj_j2k_t * p_j2k, |
| 335 OPJ
_UINT32 p_tile_index, | 335 OPJ
_UINT32 p_tile_index, |
| 336 opj
_stream_private_t *p_stream, | 336 opj
_stream_private_t *p_stream, |
| 337 opj
_event_mgr_t * p_manager ); | 337 opj
_event_mgr_t * p_manager ); |
| 338 | 338 |
| 339 static OPJ_BOOL opj_j2k_update_image_data (opj_tcd_t * p_tcd, OPJ_BYTE * p_data,
opj_image_t* p_output_image); | 339 static OPJ_BOOL opj_j2k_update_image_data (opj_tcd_t * p_tcd, OPJ_BYTE * p_data,
opj_image_t* p_output_image); |
| 340 | 340 |
| 341 static void opj_get_tile_dimensions(opj_image_t * l_image, |
| 342
opj_tcd_tilecomp
_t * l_tilec, |
| 343
opj_image_comp_t
* l_img_comp, |
| 344
OPJ_UINT32* l_si
ze_comp, |
| 345
OPJ_UINT32* l_wi
dth, |
| 346
OPJ_UINT32* l_he
ight, |
| 347
OPJ_UINT32* l_of
fset_x, |
| 348
OPJ_UINT32* l_of
fset_y, |
| 349
OPJ_UINT32* l_im
age_width, |
| 350
OPJ_UINT32* l_st
ride, |
| 351
OPJ_UINT32* l_ti
le_offset); |
| 352 |
| 341 static void opj_j2k_get_tile_data (opj_tcd_t * p_tcd, OPJ_BYTE * p_data); | 353 static void opj_j2k_get_tile_data (opj_tcd_t * p_tcd, OPJ_BYTE * p_data); |
| 342 | 354 |
| 343 static OPJ_BOOL opj_j2k_post_write_tile (opj_j2k_t * p_j2k, | 355 static OPJ_BOOL opj_j2k_post_write_tile (opj_j2k_t * p_j2k, |
| 344 OPJ
_BYTE * p_data, | |
| 345 OPJ
_UINT32 p_data_size, | |
| 346 opj
_stream_private_t *p_stream, | 356 opj
_stream_private_t *p_stream, |
| 347 opj
_event_mgr_t * p_manager ); | 357 opj
_event_mgr_t * p_manager ); |
| 348 | 358 |
| 349 /** | 359 /** |
| 350 * Sets up the procedures to do on writing header. | 360 * Sets up the procedures to do on writing header. |
| 351 * Developers wanting to extend the library can add their own writing procedures
. | 361 * Developers wanting to extend the library can add their own writing procedures
. |
| 352 */ | 362 */ |
| 353 static void opj_j2k_setup_header_writing (opj_j2k_t *p_j2k); | 363 static void opj_j2k_setup_header_writing (opj_j2k_t *p_j2k); |
| 354 | 364 |
| 355 static OPJ_BOOL opj_j2k_write_first_tile_part( opj_j2k_t *p_j2k, | 365 static OPJ_BOOL opj_j2k_write_first_tile_part( opj_j2k_t *p_j2k, |
| (...skipping 9393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9749 } | 9759 } |
| 9750 } | 9760 } |
| 9751 | 9761 |
| 9752 return OPJ_FALSE; | 9762 return OPJ_FALSE; |
| 9753 } | 9763 } |
| 9754 | 9764 |
| 9755 OPJ_BOOL opj_j2k_encode(opj_j2k_t * p_j2k, | 9765 OPJ_BOOL opj_j2k_encode(opj_j2k_t * p_j2k, |
| 9756 opj_stream_private_t *p_stream, | 9766 opj_stream_private_t *p_stream, |
| 9757 opj_event_mgr_t * p_manager ) | 9767 opj_event_mgr_t * p_manager ) |
| 9758 { | 9768 { |
| 9759 OPJ_UINT32 i; | 9769 OPJ_UINT32 i, j; |
| 9760 OPJ_UINT32 l_nb_tiles; | 9770 OPJ_UINT32 l_nb_tiles; |
| 9761 OPJ_UINT32 l_max_tile_size, l_current_tile_size; | 9771 OPJ_UINT32 l_max_tile_size = 0, l_current_tile_size; |
| 9762 OPJ_BYTE * l_current_data; | 9772 OPJ_BYTE * l_current_data = 00; |
| 9773 opj_tcd_t* p_tcd = 00; |
| 9763 | 9774 |
| 9764 /* preconditions */ | 9775 /* preconditions */ |
| 9765 assert(p_j2k != 00); | 9776 assert(p_j2k != 00); |
| 9766 assert(p_stream != 00); | 9777 assert(p_stream != 00); |
| 9767 assert(p_manager != 00); | 9778 assert(p_manager != 00); |
| 9768 | 9779 |
| 9769 l_current_data = (OPJ_BYTE*)opj_malloc(1000); | 9780 p_tcd = p_j2k->m_tcd; |
| 9770 if (! l_current_data) { | |
| 9771 opj_event_msg(p_manager, EVT_ERROR, "Not enough memory to encode
all tiles\n"); | |
| 9772 return OPJ_FALSE; | |
| 9773 } | |
| 9774 l_max_tile_size = 1000; | |
| 9775 | 9781 |
| 9776 l_nb_tiles = p_j2k->m_cp.th * p_j2k->m_cp.tw; | 9782 l_nb_tiles = p_j2k->m_cp.th * p_j2k->m_cp.tw; |
| 9777 for (i=0;i<l_nb_tiles;++i) { | 9783 for (i=0;i<l_nb_tiles;++i) { |
| 9778 if (! opj_j2k_pre_write_tile(p_j2k,i,p_stream,p_manager)) { | 9784 if (! opj_j2k_pre_write_tile(p_j2k,i,p_stream,p_manager)) { |
| 9779 opj_free(l_current_data); | 9785 if (l_current_data) { |
| 9786 opj_free(l_current_data); |
| 9787 } |
| 9780 return OPJ_FALSE; | 9788 return OPJ_FALSE; |
| 9781 } | 9789 } |
| 9782 | 9790 |
| 9791 /* if we only have one tile, then simply set tile component data
equal to image component data */ |
| 9792 /* otherwise, allocate the data */ |
| 9793 for (j=0;j<p_j2k->m_tcd->image->numcomps;++j) { |
| 9794 opj_tcd_tilecomp_t* l_tilec = p_tcd->tcd_image->tiles->c
omps + j; |
| 9795 if (l_nb_tiles == 1) { |
| 9796
opj_image_comp_t * l_img_comp = p_tcd->image->comps + j; |
| 9797
l_tilec->data = l_img_comp->data; |
| 9798
l_tilec->ownsData = OPJ_FALSE; |
| 9799 } else { |
| 9800
if(! opj_alloc_tile_component_data(l_tilec)) { |
| 9801
opj_event_msg(p_manager, EVT_ERROR, "Error alloc
ating tile component data." ); |
| 9802
if (l_current_data) { |
| 9803
opj_free(l_current_data); |
| 9804
} |
| 9805
return OPJ_FALSE; |
| 9806
} |
| 9807
opj_alloc_tile_component_data(l_tilec); |
| 9808 } |
| 9809 } |
| 9783 l_current_tile_size = opj_tcd_get_encoded_tile_size(p_j2k->m_tcd
); | 9810 l_current_tile_size = opj_tcd_get_encoded_tile_size(p_j2k->m_tcd
); |
| 9784 if (l_current_tile_size > l_max_tile_size) { | 9811 if (l_nb_tiles > 1) { |
| 9785 OPJ_BYTE *l_new_current_data = (OPJ_BYTE *) opj_realloc(
l_current_data, l_current_tile_size); | 9812 if (l_current_tile_size > l_max_tile_size) { |
| 9786 if (! l_new_current_data) { | 9813 » » » » » » » » » »
» » OPJ_BYTE *l_new_current_data = (OPJ_BYTE *) opj_realloc(
l_current_data, l_current_tile_size); |
| 9787 opj_free(l_current_data); | 9814 » » » » » » » » » »
» » if (! l_new_current_data) { |
| 9788 opj_event_msg(p_manager, EVT_ERROR, "Not enough
memory to encode all tiles\n"); | 9815 » » » » » » » » » »
» » if (l_current_data) { |
| 9789 return OPJ_FALSE; | 9816 » » » » » » » » » »
» » opj_free(l_current_data); |
| 9817 » » » » » » » » » »
» » } |
| 9818 » » » » » » » » » »
» » opj_event_msg(p_manager, EVT_ERROR, "Not enough
memory to encode all tiles\n"); |
| 9819 » » » » » » » » » »
» » return OPJ_FALSE; |
| 9820 » » » » » » » » » »
» » » » » » } |
| 9821 » » » » » » » » » »
» » » » » » l_current_data = l_new_current_d
ata; |
| 9822 » » » » » » » » » »
» » » » » » l_max_tile_size = l_current_tile
_size; |
| 9790 } | 9823 } |
| 9791 l_current_data = l_new_current_data; | 9824 |
| 9792 l_max_tile_size = l_current_tile_size; | 9825 /* copy image data (32 bit) to l_current_data as contigu
ous, all-component, zero offset buffer */ |
| 9826 /* 32 bit components @ 8 bit precision get converted to
8 bit */ |
| 9827 /* 32 bit components @ 16 bit precision get converted to
16 bit */ |
| 9828 opj_j2k_get_tile_data(p_j2k->m_tcd,l_current_data); |
| 9829 |
| 9830 /* now copy this data into the tile component */ |
| 9831 if (! opj_tcd_copy_tile_data(p_j2k->m_tcd,l_current_data
,l_current_tile_size)) { |
| 9832 » » » » » » » » » »
» » » » » » opj_event_msg(p_manager, EVT_ERR
OR, "Size mismatch between tile data and sent data." ); |
| 9833 » » » » » » » » » »
» » » » » » return OPJ_FALSE; |
| 9834 } |
| 9793 } | 9835 } |
| 9794 | 9836 |
| 9795 opj_j2k_get_tile_data(p_j2k->m_tcd,l_current_data); | 9837 if (! opj_j2k_post_write_tile (p_j2k,p_stream,p_manager)) { |
| 9796 | |
| 9797 if (! opj_j2k_post_write_tile (p_j2k,l_current_data,l_current_ti
le_size,p_stream,p_manager)) { | |
| 9798 return OPJ_FALSE; | 9838 return OPJ_FALSE; |
| 9799 } | 9839 } |
| 9800 } | 9840 } |
| 9801 | 9841 |
| 9802 opj_free(l_current_data); | 9842 if (l_current_data) { |
| 9843 opj_free(l_current_data); |
| 9844 } |
| 9803 return OPJ_TRUE; | 9845 return OPJ_TRUE; |
| 9804 } | 9846 } |
| 9805 | 9847 |
| 9806 OPJ_BOOL opj_j2k_end_compress( opj_j2k_t *p_j2k, | 9848 OPJ_BOOL opj_j2k_end_compress( opj_j2k_t *p_j2k, |
| 9807 opj_stream_private_t *p_
stream, | 9849 opj_stream_private_t *p_
stream, |
| 9808 opj_event_mgr_t * p_mana
ger) | 9850 opj_event_mgr_t * p_mana
ger) |
| 9809 { | 9851 { |
| 9810 /* customization of the encoding */ | 9852 /* customization of the encoding */ |
| 9811 opj_j2k_setup_end_compress(p_j2k); | 9853 opj_j2k_setup_end_compress(p_j2k); |
| 9812 | 9854 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9884 p_j2k->m_specific_param.m_encoder.m_current_poc_tile_part_number = 0; | 9926 p_j2k->m_specific_param.m_encoder.m_current_poc_tile_part_number = 0; |
| 9885 | 9927 |
| 9886 /* initialisation before tile encoding */ | 9928 /* initialisation before tile encoding */ |
| 9887 if (! opj_tcd_init_encode_tile(p_j2k->m_tcd, p_j2k->m_current_tile_numbe
r)) { | 9929 if (! opj_tcd_init_encode_tile(p_j2k->m_tcd, p_j2k->m_current_tile_numbe
r)) { |
| 9888 return OPJ_FALSE; | 9930 return OPJ_FALSE; |
| 9889 } | 9931 } |
| 9890 | 9932 |
| 9891 return OPJ_TRUE; | 9933 return OPJ_TRUE; |
| 9892 } | 9934 } |
| 9893 | 9935 |
| 9936 void opj_get_tile_dimensions(opj_image_t * l_image, |
| 9937 opj_tcd_tilecomp_t * l_tilec, |
| 9938 opj_image_comp_t * l_img_comp, |
| 9939 OPJ_UINT32* l_size_comp, |
| 9940 OPJ_UINT32* l_width, |
| 9941 OPJ_UINT32* l_height, |
| 9942 OPJ_UINT32* l_offset_x, |
| 9943 OPJ_UINT32* l_offset_y, |
| 9944 OPJ_UINT32* l_image_width, |
| 9945 OPJ_UINT32* l_stride, |
| 9946 OPJ_UINT32* l_tile_offset) { |
| 9947 OPJ_UINT32 l_remaining; |
| 9948 *l_size_comp = l_img_comp->prec >> 3; /* (/8) */ |
| 9949 l_remaining = l_img_comp->prec & 7; /* (%8) */ |
| 9950 if (l_remaining) { |
| 9951 *l_size_comp += 1; |
| 9952 } |
| 9953 |
| 9954 if (*l_size_comp == 3) { |
| 9955 *l_size_comp = 4; |
| 9956 } |
| 9957 |
| 9958 *l_width = (OPJ_UINT32)(l_tilec->x1 - l_tilec->x0); |
| 9959 *l_height = (OPJ_UINT32)(l_tilec->y1 - l_tilec->y0); |
| 9960 *l_offset_x = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)l_image->x0, (OPJ_I
NT32)l_img_comp->dx); |
| 9961 *l_offset_y = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)l_image->y0, (OPJ_I
NT32)l_img_comp->dy); |
| 9962 *l_image_width = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)l_image->x1 - (O
PJ_INT32)l_image->x0, (OPJ_INT32)l_img_comp->dx); |
| 9963 *l_stride = *l_image_width - *l_width; |
| 9964 *l_tile_offset = ((OPJ_UINT32)l_tilec->x0 - *l_offset_x) + ((OPJ_UINT32)
l_tilec->y0 - *l_offset_y) * *l_image_width; |
| 9965 } |
| 9966 |
| 9894 void opj_j2k_get_tile_data (opj_tcd_t * p_tcd, OPJ_BYTE * p_data) | 9967 void opj_j2k_get_tile_data (opj_tcd_t * p_tcd, OPJ_BYTE * p_data) |
| 9895 { | 9968 { |
| 9896 OPJ_UINT32 i,j,k = 0; | 9969 OPJ_UINT32 i,j,k = 0; |
| 9897 OPJ_UINT32 l_width,l_height,l_stride, l_offset_x,l_offset_y, l_image_wid
th; | |
| 9898 opj_image_comp_t * l_img_comp = 00; | |
| 9899 opj_tcd_tilecomp_t * l_tilec = 00; | |
| 9900 opj_image_t * l_image = 00; | |
| 9901 OPJ_UINT32 l_size_comp, l_remaining; | |
| 9902 OPJ_INT32 * l_src_ptr; | |
| 9903 l_tilec = p_tcd->tcd_image->tiles->comps; | |
| 9904 l_image = p_tcd->image; | |
| 9905 l_img_comp = l_image->comps; | |
| 9906 | 9970 |
| 9907 for (i=0;i<p_tcd->image->numcomps;++i) { | 9971 for (i=0;i<p_tcd->image->numcomps;++i) { |
| 9908 l_size_comp = l_img_comp->prec >> 3; /* (/8) */ | 9972 opj_image_t * l_image = p_tcd->image; |
| 9909 l_remaining = l_img_comp->prec & 7; /* (%8) */ | 9973 OPJ_INT32 * l_src_ptr; |
| 9910 if (l_remaining) { | 9974 opj_tcd_tilecomp_t * l_tilec = p_tcd->tcd_image->tiles->comps +
i; |
| 9911 ++l_size_comp; | 9975 opj_image_comp_t * l_img_comp = l_image->comps + i; |
| 9912 } | 9976 OPJ_UINT32 l_size_comp,l_width,l_height,l_offset_x,l_offset_y, l
_image_width,l_stride,l_tile_offset; |
| 9913 | 9977 |
| 9914 if (l_size_comp == 3) { | 9978 opj_get_tile_dimensions(l_image, |
| 9915 l_size_comp = 4; | 9979 l_tilec, |
| 9916 } | 9980 l_img_comp, |
| 9981 &l_size_comp, |
| 9982 &l_width, |
| 9983 &l_height, |
| 9984 &l_offset_x, |
| 9985 &l_offset_y, |
| 9986 &l_image_width, |
| 9987 &l_stride, |
| 9988 &l_tile_offset); |
| 9917 | 9989 |
| 9918 l_width = (OPJ_UINT32)(l_tilec->x1 - l_tilec->x0); | 9990 l_src_ptr = l_img_comp->data + l_tile_offset; |
| 9919 l_height = (OPJ_UINT32)(l_tilec->y1 - l_tilec->y0); | |
| 9920 l_offset_x = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)l_image->x0,
(OPJ_INT32)l_img_comp->dx); | |
| 9921 l_offset_y = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)l_image->y0,
(OPJ_INT32)l_img_comp->dy); | |
| 9922 l_image_width = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)l_image->
x1 - (OPJ_INT32)l_image->x0, (OPJ_INT32)l_img_comp->dx); | |
| 9923 l_stride = l_image_width - l_width; | |
| 9924 l_src_ptr = l_img_comp->data + ((OPJ_UINT32)l_tilec->x0 - l_offs
et_x) + ((OPJ_UINT32)l_tilec->y0 - l_offset_y) * l_image_width; | |
| 9925 | 9991 |
| 9926 switch (l_size_comp) { | 9992 switch (l_size_comp) { |
| 9927 case 1: | 9993 case 1: |
| 9928 { | 9994 { |
| 9929 OPJ_CHAR * l_dest_ptr = (OPJ_CHAR*) p_da
ta; | 9995 OPJ_CHAR * l_dest_ptr = (OPJ_CHAR*) p_da
ta; |
| 9930 if (l_img_comp->sgnd) { | 9996 if (l_img_comp->sgnd) { |
| 9931 for (j=0;j<l_height;++j) { | 9997 for (j=0;j<l_height;++j) { |
| 9932 for (k=0;k<l_width;++k)
{ | 9998 for (k=0;k<l_width;++k)
{ |
| 9933 *(l_dest_ptr) =
(OPJ_CHAR) (*l_src_ptr); | 9999 *(l_dest_ptr) =
(OPJ_CHAR) (*l_src_ptr); |
| 9934 ++l_dest_ptr; | 10000 ++l_dest_ptr; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9981 for (k=0;k<l_width;++k) { | 10047 for (k=0;k<l_width;++k) { |
| 9982 *(l_dest_ptr++) = *(l_sr
c_ptr++); | 10048 *(l_dest_ptr++) = *(l_sr
c_ptr++); |
| 9983 } | 10049 } |
| 9984 l_src_ptr += l_stride; | 10050 l_src_ptr += l_stride; |
| 9985 } | 10051 } |
| 9986 | 10052 |
| 9987 p_data = (OPJ_BYTE*) l_dest_ptr; | 10053 p_data = (OPJ_BYTE*) l_dest_ptr; |
| 9988 } | 10054 } |
| 9989 break; | 10055 break; |
| 9990 } | 10056 } |
| 9991 | |
| 9992 ++l_img_comp; | |
| 9993 ++l_tilec; | |
| 9994 } | 10057 } |
| 9995 } | 10058 } |
| 9996 | 10059 |
| 9997 OPJ_BOOL opj_j2k_post_write_tile ( opj_j2k_t * p_j2k, | 10060 OPJ_BOOL opj_j2k_post_write_tile ( opj_j2k_t * p_j2k, |
| 9998 OPJ_BYTE * p_dat
a, | |
| 9999 OPJ_UINT32 p_dat
a_size, | |
| 10000 opj_stream_priva
te_t *p_stream, | 10061 opj_stream_priva
te_t *p_stream, |
| 10001 opj_event_mgr_t
* p_manager ) | 10062 opj_event_mgr_t
* p_manager ) |
| 10002 { | 10063 { |
| 10003 opj_tcd_t * l_tcd = 00; | |
| 10004 OPJ_UINT32 l_nb_bytes_written; | 10064 OPJ_UINT32 l_nb_bytes_written; |
| 10005 OPJ_BYTE * l_current_data = 00; | 10065 OPJ_BYTE * l_current_data = 00; |
| 10006 OPJ_UINT32 l_tile_size = 0; | 10066 OPJ_UINT32 l_tile_size = 0; |
| 10007 OPJ_UINT32 l_available_data; | 10067 OPJ_UINT32 l_available_data; |
| 10008 | 10068 |
| 10009 /* preconditions */ | 10069 /* preconditions */ |
| 10010 assert(p_j2k->m_specific_param.m_encoder.m_encoded_tile_data); | 10070 assert(p_j2k->m_specific_param.m_encoder.m_encoded_tile_data); |
| 10011 | 10071 |
| 10012 l_tcd = p_j2k->m_tcd; | |
| 10013 | |
| 10014 l_tile_size = p_j2k->m_specific_param.m_encoder.m_encoded_tile_size; | 10072 l_tile_size = p_j2k->m_specific_param.m_encoder.m_encoded_tile_size; |
| 10015 l_available_data = l_tile_size; | 10073 l_available_data = l_tile_size; |
| 10016 l_current_data = p_j2k->m_specific_param.m_encoder.m_encoded_tile_data; | 10074 l_current_data = p_j2k->m_specific_param.m_encoder.m_encoded_tile_data; |
| 10017 | 10075 |
| 10018 if (! opj_tcd_copy_tile_data(l_tcd,p_data,p_data_size)) { | |
| 10019 opj_event_msg(p_manager, EVT_ERROR, "Size mismatch between tile
data and sent data." ); | |
| 10020 return OPJ_FALSE; | |
| 10021 } | |
| 10022 | |
| 10023 l_nb_bytes_written = 0; | 10076 l_nb_bytes_written = 0; |
| 10024 if (! opj_j2k_write_first_tile_part(p_j2k,l_current_data,&l_nb_bytes_wri
tten,l_available_data,p_stream,p_manager)) { | 10077 if (! opj_j2k_write_first_tile_part(p_j2k,l_current_data,&l_nb_bytes_wri
tten,l_available_data,p_stream,p_manager)) { |
| 10025 return OPJ_FALSE; | 10078 return OPJ_FALSE; |
| 10026 } | 10079 } |
| 10027 l_current_data += l_nb_bytes_written; | 10080 l_current_data += l_nb_bytes_written; |
| 10028 l_available_data -= l_nb_bytes_written; | 10081 l_available_data -= l_nb_bytes_written; |
| 10029 | 10082 |
| 10030 l_nb_bytes_written = 0; | 10083 l_nb_bytes_written = 0; |
| 10031 if (! opj_j2k_write_all_tile_parts(p_j2k,l_current_data,&l_nb_bytes_writ
ten,l_available_data,p_stream,p_manager)) { | 10084 if (! opj_j2k_write_all_tile_parts(p_j2k,l_current_data,&l_nb_bytes_writ
ten,l_available_data,p_stream,p_manager)) { |
| 10032 return OPJ_FALSE; | 10085 return OPJ_FALSE; |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10483 OPJ_BYTE * p_data, | 10536 OPJ_BYTE * p_data, |
| 10484 OPJ_UINT32 p_data_size, | 10537 OPJ_UINT32 p_data_size, |
| 10485 opj_stream_private_t *p_stream, | 10538 opj_stream_private_t *p_stream, |
| 10486 opj_event_mgr_t * p_manager ) | 10539 opj_event_mgr_t * p_manager ) |
| 10487 { | 10540 { |
| 10488 if (! opj_j2k_pre_write_tile(p_j2k,p_tile_index,p_stream,p_manager)) { | 10541 if (! opj_j2k_pre_write_tile(p_j2k,p_tile_index,p_stream,p_manager)) { |
| 10489 opj_event_msg(p_manager, EVT_ERROR, "Error while opj_j2k_pre_wri
te_tile with tile index = %d\n", p_tile_index); | 10542 opj_event_msg(p_manager, EVT_ERROR, "Error while opj_j2k_pre_wri
te_tile with tile index = %d\n", p_tile_index); |
| 10490 return OPJ_FALSE; | 10543 return OPJ_FALSE; |
| 10491 } | 10544 } |
| 10492 else { | 10545 else { |
| 10493 if (! opj_j2k_post_write_tile(p_j2k,p_data,p_data_size,p_stream,
p_manager)) { | 10546 OPJ_UINT32 j; |
| 10547 /* Allocate data */ |
| 10548 for (j=0;j<p_j2k->m_tcd->image->numcomps;++j) { |
| 10549 opj_tcd_tilecomp_t* l_tilec = p_j2k->m_tcd->tcd_image->t
iles->comps + j; |
| 10550 |
| 10551 if(! opj_alloc_tile_component_data(l_tilec)) { |
| 10552 » » » » » » » » » »
» » opj_event_msg(p_manager, EVT_ERROR, "Error allocating ti
le component data." ); |
| 10553 return OPJ_FALSE; |
| 10554 } |
| 10555 } |
| 10556 |
| 10557 /* now copy data into the the tile component */ |
| 10558 if (! opj_tcd_copy_tile_data(p_j2k->m_tcd,p_data,p_data_size)) { |
| 10559 opj_event_msg(p_manager, EVT_ERROR, "Size mismatch betwe
en tile data and sent data." ); |
| 10560 return OPJ_FALSE; |
| 10561 } |
| 10562 if (! opj_j2k_post_write_tile(p_j2k,p_stream,p_manager)) { |
| 10494 opj_event_msg(p_manager, EVT_ERROR, "Error while opj_j2k
_post_write_tile with tile index = %d\n", p_tile_index); | 10563 opj_event_msg(p_manager, EVT_ERROR, "Error while opj_j2k
_post_write_tile with tile index = %d\n", p_tile_index); |
| 10495 return OPJ_FALSE; | 10564 return OPJ_FALSE; |
| 10496 } | 10565 } |
| 10497 } | 10566 } |
| 10498 | 10567 |
| 10499 return OPJ_TRUE; | 10568 return OPJ_TRUE; |
| 10500 } | 10569 } |
| OLD | NEW |