diff options
Diffstat (limited to 'src/lib/openjp2/thix_manager.c')
| -rw-r--r-- | src/lib/openjp2/thix_manager.c | 148 |
1 files changed, 74 insertions, 74 deletions
diff --git a/src/lib/openjp2/thix_manager.c b/src/lib/openjp2/thix_manager.c index 0967b1e9..c606f659 100644 --- a/src/lib/openjp2/thix_manager.c +++ b/src/lib/openjp2/thix_manager.c @@ -38,48 +38,48 @@ int opj_write_thix( int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, - opj_event_mgr_t * p_manager ) + opj_event_mgr_t * p_manager ) { - OPJ_BYTE l_data_header [4]; - int i; - int tileno; - opj_jp2_box_t *box; - OPJ_UINT32 len; - OPJ_OFF_T lenp; - - lenp = 0; - box = (opj_jp2_box_t *)opj_calloc( (size_t)(cstr_info.tw*cstr_info.th), sizeof(opj_jp2_box_t)); - - for ( i = 0; i < 2 ; i++ ){ - if (i) - opj_stream_seek( cio, lenp, p_manager); - - lenp = opj_stream_tell(cio); - opj_stream_skip(cio, 4, p_manager); /* L [at the end] */ - opj_write_bytes(l_data_header,JPIP_THIX,4); /* THIX */ - opj_stream_write_data(cio,l_data_header,4,p_manager); + OPJ_BYTE l_data_header [4]; + int i; + int tileno; + opj_jp2_box_t *box; + OPJ_UINT32 len; + OPJ_OFF_T lenp; + + lenp = 0; + box = (opj_jp2_box_t *)opj_calloc( (size_t)(cstr_info.tw*cstr_info.th), sizeof(opj_jp2_box_t)); + + for ( i = 0; i < 2 ; i++ ) { + if (i) + opj_stream_seek( cio, lenp, p_manager); + + lenp = opj_stream_tell(cio); + opj_stream_skip(cio, 4, p_manager); /* L [at the end] */ + opj_write_bytes(l_data_header,JPIP_THIX,4); /* THIX */ + opj_stream_write_data(cio,l_data_header,4,p_manager); + + opj_write_manf( i, cstr_info.tw*cstr_info.th, box, cio, p_manager); + + for (tileno = 0; tileno < cstr_info.tw*cstr_info.th; tileno++) { + box[tileno].length = (OPJ_UINT32)opj_write_tilemhix( coff, cstr_info, tileno, cio,p_manager); + box[tileno].type = JPIP_MHIX; + } + + len = (OPJ_UINT32)(opj_stream_tell(cio)-lenp); + opj_stream_seek(cio, lenp, p_manager); + opj_write_bytes(l_data_header,len,4); /* L */ + opj_stream_write_data(cio,l_data_header,4,p_manager); + opj_stream_seek( cio, lenp+len,p_manager); - opj_write_manf( i, cstr_info.tw*cstr_info.th, box, cio, p_manager); - - for (tileno = 0; tileno < cstr_info.tw*cstr_info.th; tileno++){ - box[tileno].length = (OPJ_UINT32)opj_write_tilemhix( coff, cstr_info, tileno, cio,p_manager); - box[tileno].type = JPIP_MHIX; } - - len = (OPJ_UINT32)(opj_stream_tell(cio)-lenp); - opj_stream_seek(cio, lenp, p_manager); - opj_write_bytes(l_data_header,len,4); /* L */ - opj_stream_write_data(cio,l_data_header,4,p_manager); - opj_stream_seek( cio, lenp+len,p_manager); - - } - opj_free(box); + opj_free(box); - return (int)len; + return (int)len; } -/* +/* * Write tile-part headers mhix box * * @param[in] coff offset of j2k codestream @@ -89,46 +89,46 @@ int opj_write_thix( int coff, opj_codestream_info_t cstr_info, opj_stream_privat * @return length of mhix box */ int opj_write_tilemhix( int coff, opj_codestream_info_t cstr_info, int tileno, opj_stream_private_t *cio, - opj_event_mgr_t * p_manager ) + opj_event_mgr_t * p_manager ) { - OPJ_BYTE l_data_header [8]; - int i; - opj_tile_info_t tile; - opj_tp_info_t tp; - opj_marker_info_t *marker; - OPJ_UINT32 len; - OPJ_OFF_T lenp; - - lenp = opj_stream_tell (cio); - opj_stream_skip(cio, 4, p_manager); /* L [at the end] */ - opj_write_bytes(l_data_header,JPIP_MHIX,4); /* MHIX */ - opj_stream_write_data(cio,l_data_header,4,p_manager); - - tile = cstr_info.tile[tileno]; - tp = tile.tp[0]; - - opj_write_bytes(l_data_header,(OPJ_UINT32)(tp.tp_end_header-tp.tp_start_pos+1), 8); /* TLEN */ - opj_stream_write_data(cio,l_data_header,8,p_manager); - - marker = cstr_info.tile[tileno].marker; - - for( i=0; i<cstr_info.tile[tileno].marknum; i++){ /* Marker restricted to 1 apparition */ - opj_write_bytes( l_data_header, marker[i].type, 2); - opj_write_bytes( l_data_header+2, 0, 2); + OPJ_BYTE l_data_header [8]; + int i; + opj_tile_info_t tile; + opj_tp_info_t tp; + opj_marker_info_t *marker; + OPJ_UINT32 len; + OPJ_OFF_T lenp; + + lenp = opj_stream_tell (cio); + opj_stream_skip(cio, 4, p_manager); /* L [at the end] */ + opj_write_bytes(l_data_header,JPIP_MHIX,4); /* MHIX */ opj_stream_write_data(cio,l_data_header,4,p_manager); - opj_write_bytes( l_data_header, (OPJ_UINT32)(marker[i].pos-coff), 8); + + tile = cstr_info.tile[tileno]; + tp = tile.tp[0]; + + opj_write_bytes(l_data_header,(OPJ_UINT32)(tp.tp_end_header-tp.tp_start_pos+1), 8); /* TLEN */ opj_stream_write_data(cio,l_data_header,8,p_manager); - opj_write_bytes( l_data_header, (OPJ_UINT32)marker[i].len, 2); - opj_stream_write_data(cio,l_data_header,2,p_manager); - } - - /* free( marker);*/ - - len = (OPJ_UINT32)(opj_stream_tell(cio)-lenp); - opj_stream_seek(cio, lenp,p_manager); - opj_write_bytes(l_data_header,len,4);/* L */ - opj_stream_write_data(cio,l_data_header,4,p_manager); - opj_stream_seek(cio, lenp+len,p_manager); - - return (int)len; + + marker = cstr_info.tile[tileno].marker; + + for( i=0; i<cstr_info.tile[tileno].marknum; i++) { /* Marker restricted to 1 apparition */ + opj_write_bytes( l_data_header, marker[i].type, 2); + opj_write_bytes( l_data_header+2, 0, 2); + opj_stream_write_data(cio,l_data_header,4,p_manager); + opj_write_bytes( l_data_header, (OPJ_UINT32)(marker[i].pos-coff), 8); + opj_stream_write_data(cio,l_data_header,8,p_manager); + opj_write_bytes( l_data_header, (OPJ_UINT32)marker[i].len, 2); + opj_stream_write_data(cio,l_data_header,2,p_manager); + } + + /* free( marker);*/ + + len = (OPJ_UINT32)(opj_stream_tell(cio)-lenp); + opj_stream_seek(cio, lenp,p_manager); + opj_write_bytes(l_data_header,len,4);/* L */ + opj_stream_write_data(cio,l_data_header,4,p_manager); + opj_stream_seek(cio, lenp+len,p_manager); + + return (int)len; } |
