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 1901 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1912 OPJ_BYTE * p_header_data, | 1912 OPJ_BYTE * p_header_data, |
1913 OPJ_UINT32 p_header_size, | 1913 OPJ_UINT32 p_header_size, |
1914 opj_event_mgr_t * p_manager | 1914 opj_event_mgr_t * p_manager |
1915 ) | 1915 ) |
1916 { | 1916 { |
1917 OPJ_UINT32 i; | 1917 OPJ_UINT32 i; |
1918 OPJ_UINT32 l_nb_comp; | 1918 OPJ_UINT32 l_nb_comp; |
1919 OPJ_UINT32 l_nb_comp_remain; | 1919 OPJ_UINT32 l_nb_comp_remain; |
1920 OPJ_UINT32 l_remaining_size; | 1920 OPJ_UINT32 l_remaining_size; |
1921 OPJ_UINT32 l_nb_tiles; | 1921 OPJ_UINT32 l_nb_tiles; |
1922 OPJ_UINT32 l_tmp; | 1922 OPJ_UINT32 l_tmp, l_tx1, l_ty1; |
1923 opj_image_t *l_image = 00; | 1923 opj_image_t *l_image = 00; |
1924 opj_cp_t *l_cp = 00; | 1924 opj_cp_t *l_cp = 00; |
1925 opj_image_comp_t * l_img_comp = 00; | 1925 opj_image_comp_t * l_img_comp = 00; |
1926 opj_tcp_t * l_current_tile_param = 00; | 1926 opj_tcp_t * l_current_tile_param = 00; |
1927 | 1927 |
1928 /* preconditions */ | 1928 /* preconditions */ |
1929 assert(p_j2k != 00); | 1929 assert(p_j2k != 00); |
1930 assert(p_manager != 00); | 1930 assert(p_manager != 00); |
1931 assert(p_header_data != 00); | 1931 assert(p_header_data != 00); |
1932 | 1932 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1974 opj_event_msg(p_manager, EVT_ERROR, "Error with SIZ marker: numb
er of component is illegal -> %d\n", l_tmp); | 1974 opj_event_msg(p_manager, EVT_ERROR, "Error with SIZ marker: numb
er of component is illegal -> %d\n", l_tmp); |
1975 return OPJ_FALSE; | 1975 return OPJ_FALSE; |
1976 } | 1976 } |
1977 | 1977 |
1978 if (l_image->numcomps != l_nb_comp) { | 1978 if (l_image->numcomps != l_nb_comp) { |
1979 opj_event_msg(p_manager, EVT_ERROR, "Error with SIZ marker: numb
er of component is not compatible with the remaining number of parameters ( %d v
s %d)\n", l_image->numcomps, l_nb_comp); | 1979 opj_event_msg(p_manager, EVT_ERROR, "Error with SIZ marker: numb
er of component is not compatible with the remaining number of parameters ( %d v
s %d)\n", l_image->numcomps, l_nb_comp); |
1980 return OPJ_FALSE; | 1980 return OPJ_FALSE; |
1981 } | 1981 } |
1982 | 1982 |
1983 /* testcase 4035.pdf.SIGSEGV.d8b.3375 */ | 1983 /* testcase 4035.pdf.SIGSEGV.d8b.3375 */ |
1984 if (l_image->x0 > l_image->x1 || l_image->y0 > l_image->y1) { | 1984 /* testcase issue427-null-image-size.jp2 */ |
1985 opj_event_msg(p_manager, EVT_ERROR, "Error with SIZ marker: nega
tive image size (%d x %d)\n", l_image->x1 - l_image->x0, l_image->y1 - l_image->
y0); | 1985 if ((l_image->x0 >= l_image->x1) || (l_image->y0 >= l_image->y1)) { |
| 1986 opj_event_msg(p_manager, EVT_ERROR, "Error with SIZ marker: nega
tive or zero image size (%d x %d)\n", l_image->x1 - l_image->x0, l_image->y1 - l
_image->y0); |
1986 return OPJ_FALSE; | 1987 return OPJ_FALSE; |
1987 } | 1988 } |
1988 /* testcase 2539.pdf.SIGFPE.706.1712 (also 3622.pdf.SIGFPE.706.2916 and
4008.pdf.SIGFPE.706.3345 and maybe more) */ | 1989 /* testcase 2539.pdf.SIGFPE.706.1712 (also 3622.pdf.SIGFPE.706.2916 and
4008.pdf.SIGFPE.706.3345 and maybe more) */ |
1989 if (!(l_cp->tdx * l_cp->tdy)) { | 1990 if (!(l_cp->tdx * l_cp->tdy)) { |
1990 opj_event_msg(p_manager, EVT_ERROR, "Error with SIZ marker: inva
lid tile size (tdx: %d, tdy: %d)\n", l_cp->tdx, l_cp->tdy); | 1991 opj_event_msg(p_manager, EVT_ERROR, "Error with SIZ marker: inva
lid tile size (tdx: %d, tdy: %d)\n", l_cp->tdx, l_cp->tdy); |
1991 return OPJ_FALSE; | 1992 return OPJ_FALSE; |
1992 } | 1993 } |
1993 | 1994 |
1994 /* testcase 1610.pdf.SIGSEGV.59c.681 */ | 1995 /* testcase 1610.pdf.SIGSEGV.59c.681 */ |
1995 if (((OPJ_UINT64)l_image->x1) * ((OPJ_UINT64)l_image->y1) != (l_image->x
1 * l_image->y1)) { | 1996 if (((OPJ_UINT64)l_image->x1) * ((OPJ_UINT64)l_image->y1) != (l_image->x
1 * l_image->y1)) { |
1996 opj_event_msg(p_manager, EVT_ERROR, "Prevent buffer overflow (x1
: %d, y1: %d)\n", l_image->x1, l_image->y1); | 1997 opj_event_msg(p_manager, EVT_ERROR, "Prevent buffer overflow (x1
: %d, y1: %d)\n", l_image->x1, l_image->y1); |
1997 return OPJ_FALSE; | 1998 return OPJ_FALSE; |
1998 } | 1999 } |
1999 | 2000 |
| 2001 /* testcase issue427-illegal-tile-offset.jp2 */ |
| 2002 l_tx1 = l_cp->tx0 + l_cp->tdx; |
| 2003 if (l_tx1 < l_cp->tx0) { /* manage overflow */ |
| 2004 l_tx1 = 0xFFFFFFFFU; |
| 2005 } |
| 2006 l_ty1 = l_cp->ty0 + l_cp->tdy; |
| 2007 if (l_ty1 < l_cp->ty0) { /* manage overflow */ |
| 2008 l_ty1 = 0xFFFFFFFFU; |
| 2009 } |
| 2010 if ((l_cp->tx0 > l_image->x0) || (l_cp->ty0 > l_image->y0) || (l_tx1 <=
l_image->x0) || (l_ty1 <= l_image->y0) ) { |
| 2011 opj_event_msg(p_manager, EVT_ERROR, "Error with SIZ marker: ille
gal tile offset\n"); |
| 2012 return OPJ_FALSE; |
| 2013 } |
| 2014 |
2000 #ifdef USE_JPWL | 2015 #ifdef USE_JPWL |
2001 if (l_cp->correct) { | 2016 if (l_cp->correct) { |
2002 /* if JPWL is on, we check whether TX errors have damaged | 2017 /* if JPWL is on, we check whether TX errors have damaged |
2003 too much the SIZ parameters */ | 2018 too much the SIZ parameters */ |
2004 if (!(l_image->x1 * l_image->y1)) { | 2019 if (!(l_image->x1 * l_image->y1)) { |
2005 opj_event_msg(p_manager, EVT_ERROR, | 2020 opj_event_msg(p_manager, EVT_ERROR, |
2006 "JPWL: bad image size (%d x %d)\n", | 2021 "JPWL: bad image size (%d x %d)\n", |
2007 l_image->x1, l_image->y1); | 2022 l_image->x1, l_image->y1); |
2008 if (!JPWL_ASSUME || JPWL_ASSUME) { | 2023 if (!JPWL_ASSUME || JPWL_ASSUME) { |
2009 opj_event_msg(p_manager, EVT_ERROR, "JPWL: givin
g up\n"); | 2024 opj_event_msg(p_manager, EVT_ERROR, "JPWL: givin
g up\n"); |
(...skipping 3204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5214 l_tcp->m_nb_mct_records = 0; | 5229 l_tcp->m_nb_mct_records = 0; |
5215 opj_event_msg(p_manager, EVT_ERROR, "Not enough
memory to read MCT marker\n"); | 5230 opj_event_msg(p_manager, EVT_ERROR, "Not enough
memory to read MCT marker\n"); |
5216 return OPJ_FALSE; | 5231 return OPJ_FALSE; |
5217 } | 5232 } |
5218 l_tcp->m_mct_records = new_mct_records; | 5233 l_tcp->m_mct_records = new_mct_records; |
5219 l_mct_data = l_tcp->m_mct_records + l_tcp->m_nb_mct_reco
rds; | 5234 l_mct_data = l_tcp->m_mct_records + l_tcp->m_nb_mct_reco
rds; |
5220 memset(l_mct_data ,0,(l_tcp->m_nb_max_mct_records - l_tc
p->m_nb_mct_records) * sizeof(opj_mct_data_t)); | 5235 memset(l_mct_data ,0,(l_tcp->m_nb_max_mct_records - l_tc
p->m_nb_mct_records) * sizeof(opj_mct_data_t)); |
5221 } | 5236 } |
5222 | 5237 |
5223 l_mct_data = l_tcp->m_mct_records + l_tcp->m_nb_mct_records; | 5238 l_mct_data = l_tcp->m_mct_records + l_tcp->m_nb_mct_records; |
| 5239 ++l_tcp->m_nb_mct_records; |
5224 } | 5240 } |
5225 | 5241 |
5226 if (l_mct_data->m_data) { | 5242 if (l_mct_data->m_data) { |
5227 opj_free(l_mct_data->m_data); | 5243 opj_free(l_mct_data->m_data); |
5228 l_mct_data->m_data = 00; | 5244 l_mct_data->m_data = 00; |
5229 } | 5245 } |
5230 | 5246 |
5231 l_mct_data->m_index = l_indix; | 5247 l_mct_data->m_index = l_indix; |
5232 l_mct_data->m_array_type = (J2K_MCT_ARRAY_TYPE)((l_tmp >> 8) & 3); | 5248 l_mct_data->m_array_type = (J2K_MCT_ARRAY_TYPE)((l_tmp >> 8) & 3); |
5233 l_mct_data->m_element_type = (J2K_MCT_ELEMENT_TYPE)((l_tmp >> 10) & 3); | 5249 l_mct_data->m_element_type = (J2K_MCT_ELEMENT_TYPE)((l_tmp >> 10) & 3); |
5234 | 5250 |
5235 opj_read_bytes(p_header_data,&l_tmp,2); /* Ymct
*/ | 5251 opj_read_bytes(p_header_data,&l_tmp,2); /* Ymct
*/ |
5236 p_header_data+=2; | 5252 p_header_data+=2; |
5237 if (l_tmp != 0) { | 5253 if (l_tmp != 0) { |
5238 opj_event_msg(p_manager, EVT_WARNING, "Cannot take in charge mul
tiple MCT markers\n"); | 5254 opj_event_msg(p_manager, EVT_WARNING, "Cannot take in charge mul
tiple MCT markers\n"); |
5239 return OPJ_TRUE; | 5255 return OPJ_TRUE; |
5240 } | 5256 } |
5241 | 5257 |
5242 p_header_size -= 6; | 5258 p_header_size -= 6; |
5243 | 5259 |
5244 l_mct_data->m_data = (OPJ_BYTE*)opj_malloc(p_header_size); | 5260 l_mct_data->m_data = (OPJ_BYTE*)opj_malloc(p_header_size); |
5245 if (! l_mct_data->m_data) { | 5261 if (! l_mct_data->m_data) { |
5246 opj_event_msg(p_manager, EVT_ERROR, "Error reading MCT marker\n"
); | 5262 opj_event_msg(p_manager, EVT_ERROR, "Error reading MCT marker\n"
); |
5247 return OPJ_FALSE; | 5263 return OPJ_FALSE; |
5248 } | 5264 } |
5249 memcpy(l_mct_data->m_data,p_header_data,p_header_size); | 5265 memcpy(l_mct_data->m_data,p_header_data,p_header_size); |
5250 | 5266 |
5251 l_mct_data->m_data_size = p_header_size; | 5267 l_mct_data->m_data_size = p_header_size; |
5252 ++l_tcp->m_nb_mct_records; | |
5253 | 5268 |
5254 return OPJ_TRUE; | 5269 return OPJ_TRUE; |
5255 } | 5270 } |
5256 | 5271 |
5257 OPJ_BOOL opj_j2k_write_mcc_record( opj_j2k_t *p_j2k, | 5272 OPJ_BOOL opj_j2k_write_mcc_record( opj_j2k_t *p_j2k, |
5258 struct opj_simpl
e_mcc_decorrelation_data * p_mcc_record, | 5273 struct opj_simpl
e_mcc_decorrelation_data * p_mcc_record, |
5259 struct opj_strea
m_private *p_stream, | 5274 struct opj_strea
m_private *p_stream, |
5260 struct opj_event
_mgr * p_manager ) | 5275 struct opj_event
_mgr * p_manager ) |
5261 { | 5276 { |
5262 OPJ_UINT32 i; | 5277 OPJ_UINT32 i; |
(...skipping 1301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6564 tccp->m_dc_level_shift = l_dc_shift[i]; | 6579 tccp->m_dc_level_shift = l_dc_shift[i]; |
6565 } | 6580 } |
6566 | 6581 |
6567 if (opj_j2k_setup_mct_encoding(tcp,image) == OPJ_FALSE) { | 6582 if (opj_j2k_setup_mct_encoding(tcp,image) == OPJ_FALSE) { |
6568 /* free will be handled by opj_j2k_destroy */ | 6583 /* free will be handled by opj_j2k_destroy */ |
6569
opj_event_msg(p_manager, EVT_ERROR, "Failed to setup j2k mct enc
oding\n"); | 6584
opj_event_msg(p_manager, EVT_ERROR, "Failed to setup j2k mct enc
oding\n"); |
6570 return OPJ_FALSE; | 6585 return OPJ_FALSE; |
6571 } | 6586 } |
6572 } | 6587 } |
6573 else { | 6588 else { |
6574 if(tcp->mct==1 && image->numcomps == 3) { /* RGB->YCC MCT is
enabled */ | 6589 if(tcp->mct==1 && image->numcomps >= 3) { /* RGB->YCC MCT is
enabled */ |
6575 if ((image->comps[0].dx != image->comps[1].dx) || | 6590 if ((image->comps[0].dx != image->comps[1].dx) || |
6576 (image->comps[0].dx != image->comps[2].dx) || | 6591 (image->comps[0].dx != image->comps[2].dx) || |
6577 (image->comps[0].dy != image->comps[1].dy) || | 6592 (image->comps[0].dy != image->comps[1].dy) || |
6578 (image->comps[0].dy != image->comps[2].dy)) { | 6593 (image->comps[0].dy != image->comps[2].dy)) { |
6579 opj_event_msg(p_manager, EVT_WARNING, "Cannot perfor
m MCT on components with different sizes. Disabling MCT.\n"); | 6594 opj_event_msg(p_manager, EVT_WARNING, "Cannot perfor
m MCT on components with different sizes. Disabling MCT.\n"); |
6580 tcp->mct = 0; | 6595 tcp->mct = 0; |
6581 } | 6596 } |
6582 } | 6597 } |
6583 for (i = 0; i < image->numcomps; i++) { | 6598 for (i = 0; i < image->numcomps; i++) { |
6584 opj_tccp_t *tccp = &tcp->tccps[i]; | 6599 opj_tccp_t *tccp = &tcp->tccps[i]; |
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7052 /* STATE checking */ | 7067 /* STATE checking */ |
7053 /* make sure the state is at 0 */ | 7068 /* make sure the state is at 0 */ |
7054 l_is_valid &= (p_j2k->m_specific_param.m_decoder.m_state == J2K_STATE_NO
NE); | 7069 l_is_valid &= (p_j2k->m_specific_param.m_decoder.m_state == J2K_STATE_NO
NE); |
7055 | 7070 |
7056 /* POINTER validation */ | 7071 /* POINTER validation */ |
7057 /* make sure a p_j2k codec is present */ | 7072 /* make sure a p_j2k codec is present */ |
7058 l_is_valid &= (p_j2k->m_procedure_list != 00); | 7073 l_is_valid &= (p_j2k->m_procedure_list != 00); |
7059 /* make sure a validation list is present */ | 7074 /* make sure a validation list is present */ |
7060 l_is_valid &= (p_j2k->m_validation_list != 00); | 7075 l_is_valid &= (p_j2k->m_validation_list != 00); |
7061 | 7076 |
7062 » /* ISO 15444-1:2004 states between 1 & 33 (0 -> 32) */ | 7077 /* ISO 15444-1:2004 states between 1 & 33 (0 -> 32) */ |
7063 » /* 33 (32) would always fail the 2 checks below (if a cast to 64bi
ts was done) */ | 7078 /* 33 (32) would always fail the check below (if a cast to 64bits was do
ne) */ |
7064 » /* 32 (31) would always fail the 2 checks below (if a cast to 64bi
ts was done) */ | 7079 /* FIXME Shall we change OPJ_J2K_MAXRLVLS to 32 ? */ |
7065 /* FIXME Shall we change OPJ_J2K_MAXRLVLS to 31 ? */ | 7080 if ((p_j2k->m_cp.tcps->tccps->numresolutions <= 0) || (p_j2k->m_cp.tcps-
>tccps->numresolutions > 32)) { |
7066 if ((p_j2k->m_cp.tcps->tccps->numresolutions <= 0) || (p_j2k->m_cp.tcps-
>tccps->numresolutions > 31)) { | |
7067 opj_event_msg(p_manager, EVT_ERROR, "Number of resolutions is to
o high in comparison to the size of tiles\n"); | 7081 opj_event_msg(p_manager, EVT_ERROR, "Number of resolutions is to
o high in comparison to the size of tiles\n"); |
7068 return OPJ_FALSE; | 7082 return OPJ_FALSE; |
7069 } | 7083 } |
7070 | 7084 |
7071 if ((p_j2k->m_cp.tdx) < (OPJ_UINT32) (1 << p_j2k->m_cp.tcps->tccps->numr
esolutions)) { | 7085 if ((p_j2k->m_cp.tdx) < (OPJ_UINT32) (1 << (p_j2k->m_cp.tcps->tccps->num
resolutions - 1U))) { |
7072 opj_event_msg(p_manager, EVT_ERROR, "Number of resolutions is to
o high in comparison to the size of tiles\n"); | 7086 opj_event_msg(p_manager, EVT_ERROR, "Number of resolutions is to
o high in comparison to the size of tiles\n"); |
7073 return OPJ_FALSE; | 7087 return OPJ_FALSE; |
7074 } | 7088 } |
7075 | 7089 |
7076 if ((p_j2k->m_cp.tdy) < (OPJ_UINT32) (1 << p_j2k->m_cp.tcps->tccps->numr
esolutions)) { | 7090 if ((p_j2k->m_cp.tdy) < (OPJ_UINT32) (1 << (p_j2k->m_cp.tcps->tccps->num
resolutions - 1U))) { |
7077 opj_event_msg(p_manager, EVT_ERROR, "Number of resolutions is to
o high in comparison to the size of tiles\n"); | 7091 opj_event_msg(p_manager, EVT_ERROR, "Number of resolutions is to
o high in comparison to the size of tiles\n"); |
7078 return OPJ_FALSE; | 7092 return OPJ_FALSE; |
7079 } | 7093 } |
7080 | 7094 |
7081 /* PARAMETER VALIDATION */ | 7095 /* PARAMETER VALIDATION */ |
7082 return l_is_valid; | 7096 return l_is_valid; |
7083 } | 7097 } |
7084 | 7098 |
7085 OPJ_BOOL opj_j2k_decoding_validation ( opj_j2k_t *p_j2k, | 7099 OPJ_BOOL opj_j2k_decoding_validation ( opj_j2k_t *p_j2k, |
7086 opj_stream_private_t *p_stream, | 7100 opj_stream_private_t *p_stream, |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7144 } | 7158 } |
7145 | 7159 |
7146 /* Read 2 bytes as the new marker ID */ | 7160 /* Read 2 bytes as the new marker ID */ |
7147 opj_read_bytes(p_j2k->m_specific_param.m_decoder.m_header_data,&l_curren
t_marker,2); | 7161 opj_read_bytes(p_j2k->m_specific_param.m_decoder.m_header_data,&l_curren
t_marker,2); |
7148 | 7162 |
7149 /* Try to read until the SOT is detected */ | 7163 /* Try to read until the SOT is detected */ |
7150 while (l_current_marker != J2K_MS_SOT) { | 7164 while (l_current_marker != J2K_MS_SOT) { |
7151 | 7165 |
7152 /* Check if the current marker ID is valid */ | 7166 /* Check if the current marker ID is valid */ |
7153 if (l_current_marker < 0xff00) { | 7167 if (l_current_marker < 0xff00) { |
7154 opj_event_msg(p_manager, EVT_ERROR, "We expected read a
marker ID (0xff--) instead of %.8x\n", l_current_marker); | 7168 opj_event_msg(p_manager, EVT_ERROR, "A marker ID was exp
ected (0xff--) instead of %.8x\n", l_current_marker); |
7155 return OPJ_FALSE; | 7169 return OPJ_FALSE; |
7156 } | 7170 } |
7157 | 7171 |
7158 /* Get the marker handler from the marker ID */ | 7172 /* Get the marker handler from the marker ID */ |
7159 l_marker_handler = opj_j2k_get_marker_handler(l_current_marker); | 7173 l_marker_handler = opj_j2k_get_marker_handler(l_current_marker); |
7160 | 7174 |
7161 /* Manage case where marker is unknown */ | 7175 /* Manage case where marker is unknown */ |
7162 if (l_marker_handler->id == J2K_MS_UNK) { | 7176 if (l_marker_handler->id == J2K_MS_UNK) { |
7163 if (! opj_j2k_read_unk(p_j2k, p_stream, &l_current_marke
r, p_manager)){ | 7177 if (! opj_j2k_read_unk(p_j2k, p_stream, &l_current_marke
r, p_manager)){ |
7164 opj_event_msg(p_manager, EVT_ERROR, "Unknow mark
er have been detected and generated error.\n"); | 7178 opj_event_msg(p_manager, EVT_ERROR, "Unknow mark
er have been detected and generated error.\n"); |
(...skipping 2604 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9769 OPJ_UINT32 i, j; | 9783 OPJ_UINT32 i, j; |
9770 OPJ_UINT32 l_nb_tiles; | 9784 OPJ_UINT32 l_nb_tiles; |
9771 OPJ_UINT32 l_max_tile_size = 0, l_current_tile_size; | 9785 OPJ_UINT32 l_max_tile_size = 0, l_current_tile_size; |
9772 OPJ_BYTE * l_current_data = 00; | 9786 OPJ_BYTE * l_current_data = 00; |
9773 opj_tcd_t* p_tcd = 00; | 9787 opj_tcd_t* p_tcd = 00; |
9774 | 9788 |
9775 /* preconditions */ | 9789 /* preconditions */ |
9776 assert(p_j2k != 00); | 9790 assert(p_j2k != 00); |
9777 assert(p_stream != 00); | 9791 assert(p_stream != 00); |
9778 assert(p_manager != 00); | 9792 assert(p_manager != 00); |
9779 | 9793 » |
9780 p_tcd = p_j2k->m_tcd; | 9794 p_tcd = p_j2k->m_tcd; |
9781 | 9795 |
9782 l_nb_tiles = p_j2k->m_cp.th * p_j2k->m_cp.tw; | 9796 l_nb_tiles = p_j2k->m_cp.th * p_j2k->m_cp.tw; |
9783 for (i=0;i<l_nb_tiles;++i) { | 9797 for (i=0;i<l_nb_tiles;++i) { |
9784 if (! opj_j2k_pre_write_tile(p_j2k,i,p_stream,p_manager)) { | 9798 if (! opj_j2k_pre_write_tile(p_j2k,i,p_stream,p_manager)) { |
9785 if (l_current_data) { | 9799 if (l_current_data) { |
9786 opj_free(l_current_data); | 9800 opj_free(l_current_data); |
9787 } | 9801 } |
9788 return OPJ_FALSE; | 9802 return OPJ_FALSE; |
9789 } | 9803 } |
(...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10560 return OPJ_FALSE; | 10574 return OPJ_FALSE; |
10561 } | 10575 } |
10562 if (! opj_j2k_post_write_tile(p_j2k,p_stream,p_manager)) { | 10576 if (! opj_j2k_post_write_tile(p_j2k,p_stream,p_manager)) { |
10563 opj_event_msg(p_manager, EVT_ERROR, "Error while opj_j2k
_post_write_tile with tile index = %d\n", p_tile_index); | 10577 opj_event_msg(p_manager, EVT_ERROR, "Error while opj_j2k
_post_write_tile with tile index = %d\n", p_tile_index); |
10564 return OPJ_FALSE; | 10578 return OPJ_FALSE; |
10565 } | 10579 } |
10566 } | 10580 } |
10567 | 10581 |
10568 return OPJ_TRUE; | 10582 return OPJ_TRUE; |
10569 } | 10583 } |
OLD | NEW |