diff options
| author | Mickael Savinaud <savmickael@users.noreply.github.com> | 2012-10-25 13:15:37 +0000 |
|---|---|---|
| committer | Mickael Savinaud <savmickael@users.noreply.github.com> | 2012-10-25 13:15:37 +0000 |
| commit | ee8ee69c30ffe3854c84adf13908c2d4b6de5ee1 (patch) | |
| tree | 41f0b4194218a5bf3679085681f212110b139b32 /src/lib/openjp2/phix_manager.c | |
| parent | 4941ebcc9145e55eb6782fcde862f9bd12a31362 (diff) | |
[trunk]clean jpip marker functions but it is still experimental
Diffstat (limited to 'src/lib/openjp2/phix_manager.c')
| -rw-r--r-- | src/lib/openjp2/phix_manager.c | 190 |
1 files changed, 15 insertions, 175 deletions
diff --git a/src/lib/openjp2/phix_manager.c b/src/lib/openjp2/phix_manager.c index bb15ed37..7bb7fe98 100644 --- a/src/lib/openjp2/phix_manager.c +++ b/src/lib/openjp2/phix_manager.c @@ -47,87 +47,38 @@ * @param[in] cio file output handle * @return length of faix box */ -int write_phixfaix( int coff, int compno, opj_codestream_info_t cstr_info, opj_bool EPHused, int j2klen, opj_cio_t *cio); -int write_phix( int coff, opj_codestream_info_t cstr_info, opj_bool EPHused, int j2klen, opj_cio_t *cio) -{ - int len, lenp=0, compno, i; - opj_jp2_box_t *box; - - box = (opj_jp2_box_t *)opj_calloc( cstr_info.numcomps, sizeof(opj_jp2_box_t)); - - for( i=0;i<2;i++){ - if (i) cio_seek( cio, lenp); - - lenp = cio_tell( cio); - cio_skip( cio, 4); /* L [at the end] */ - cio_write( cio, JPIP_PHIX, 4); /* PHIX */ - - write_manf( i, cstr_info.numcomps, box, cio); - - for( compno=0; compno<cstr_info.numcomps; compno++){ - box[compno].length = write_phixfaix( coff, compno, cstr_info, EPHused, j2klen, cio); - box[compno].type = JPIP_FAIX; - } - - len = cio_tell( cio)-lenp; - cio_seek( cio, lenp); - cio_write( cio, len, 4); /* L */ - cio_seek( cio, lenp+len); - } - - opj_free(box); - - return len; -} - -int write_phix_v2( int coff, opj_codestream_info_t cstr_info, opj_bool EPHused, int j2klen, opj_stream_private_t *cio, +int opj_write_phix( int coff, opj_codestream_info_t cstr_info, opj_bool EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t * p_manager ) { OPJ_BYTE l_data_header [8]; - int len, lenp=0, compno, i; + int len, compno, i; opj_jp2_box_t *box; + OPJ_OFF_T lenp; box = (opj_jp2_box_t *)opj_calloc( cstr_info.numcomps, sizeof(opj_jp2_box_t)); for( i=0;i<2;i++){ if (i) -#if 0 - cio_seek( cio, lenp); -#else opj_stream_seek( cio, lenp, p_manager); -#endif -#if 0 - lenp = cio_tell( cio); - cio_skip( cio, 4); /* L [at the end] */ - cio_write( cio, JPIP_PHIX, 4); /* PHIX */ -#else lenp = opj_stream_tell(cio); opj_stream_skip(cio, 4, p_manager); /* L [at the end] */ opj_write_bytes(l_data_header,JPIP_PHIX,4); /* PHIX */ opj_stream_write_data(cio,l_data_header,4,p_manager); -#endif - write_manf_v2( i, cstr_info.numcomps, box, cio); + opj_write_manf( i, cstr_info.numcomps, box, cio, p_manager ); for( compno=0; compno<cstr_info.numcomps; compno++){ - box[compno].length = write_phixfaix_v2( coff, compno, cstr_info, EPHused, j2klen, cio,p_manager); + box[compno].length = opj_write_phixfaix( coff, compno, cstr_info, EPHused, j2klen, cio,p_manager); box[compno].type = JPIP_FAIX; } -#if 0 - len = cio_tell( cio)-lenp; - cio_seek( cio, lenp); - cio_write( cio, len, 4); /* L */ - cio_seek( cio, lenp+len); -#else - lenp = opj_stream_tell(cio); + len = (OPJ_UINT32)(opj_stream_tell(cio)-lenp); opj_stream_seek(cio, 4, 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); -#endif } opj_free(box); @@ -135,105 +86,23 @@ int write_phix_v2( int coff, opj_codestream_info_t cstr_info, opj_bool EPHused, return len; } -int write_phixfaix( int coff, int compno, opj_codestream_info_t cstr_info, opj_bool EPHused, int j2klen, opj_cio_t *cio) -{ - int len, lenp, tileno, version, i, nmax, size_of_coding; /* 4 or 8 */ - opj_tile_info_t *tile_Idx; - opj_packet_info_t packet; - int resno, precno, layno, num_packet; - int numOfres, numOfprec, numOflayers; - packet.end_ph_pos = packet.start_pos = -1; - (void)EPHused; /* unused ? */ - if( j2klen > pow( 2, 32)){ - size_of_coding = 8; - version = 1; - } - else{ - size_of_coding = 4; - version = 0; - } - - lenp = cio_tell( cio); - cio_skip( cio, 4); /* L [at the end] */ - cio_write( cio, JPIP_FAIX, 4); /* FAIX */ - cio_write( cio, version,1); /* Version 0 = 4 bytes */ - - nmax = 0; - for( i=0; i<=cstr_info.numdecompos[compno]; i++) - nmax += cstr_info.tile[0].ph[i] * cstr_info.tile[0].pw[i] * cstr_info.numlayers; - - cio_write( cio, nmax, size_of_coding); /* NMAX */ - cio_write( cio, cstr_info.tw*cstr_info.th, size_of_coding); /* M */ - - for( tileno=0; tileno<cstr_info.tw*cstr_info.th; tileno++){ - tile_Idx = &cstr_info.tile[ tileno]; - - num_packet = 0; - numOfres = cstr_info.numdecompos[compno] + 1; - - for( resno=0; resno<numOfres ; resno++){ - numOfprec = tile_Idx->pw[resno]*tile_Idx->ph[resno]; - for( precno=0; precno<numOfprec; precno++){ - numOflayers = cstr_info.numlayers; - for( layno=0; layno<numOflayers; layno++){ - - switch ( cstr_info.prog){ - case LRCP: - packet = tile_Idx->packet[ ((layno*numOfres+resno)*cstr_info.numcomps+compno)*numOfprec+precno]; - break; - case RLCP: - packet = tile_Idx->packet[ ((resno*numOflayers+layno)*cstr_info.numcomps+compno)*numOfprec+precno]; - break; - case RPCL: - packet = tile_Idx->packet[ ((resno*numOfprec+precno)*cstr_info.numcomps+compno)*numOflayers+layno]; - break; - case PCRL: - packet = tile_Idx->packet[ ((precno*cstr_info.numcomps+compno)*numOfres+resno)*numOflayers + layno]; - break; - case CPRL: - packet = tile_Idx->packet[ ((compno*numOfprec+precno)*numOfres+resno)*numOflayers + layno]; - break; - default: - fprintf( stderr, "failed to ppix indexing\n"); - } - - cio_write( cio, packet.start_pos-coff, size_of_coding); /* start position */ - cio_write( cio, packet.end_ph_pos-packet.start_pos+1, size_of_coding); /* length */ - - num_packet++; - } - } - } - - /* PADDING */ - while( num_packet < nmax){ - cio_write( cio, 0, size_of_coding); /* start position */ - cio_write( cio, 0, size_of_coding); /* length */ - num_packet++; - } - } - - len = cio_tell( cio)-lenp; - cio_seek( cio, lenp); - cio_write( cio, len, 4); /* L */ - cio_seek( cio, lenp+len); - - return len; -} - -int write_phixfaix_v2( int coff, int compno, opj_codestream_info_t cstr_info, opj_bool EPHused, int j2klen, opj_stream_private_t *cio, +int opj_write_phixfaix( int coff, int compno, opj_codestream_info_t cstr_info, opj_bool EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t * p_manager ) { - int len, lenp, tileno, version, i, nmax, size_of_coding; /* 4 or 8 */ + int tileno, version, i, nmax, size_of_coding; /* 4 or 8 */ opj_tile_info_t *tile_Idx; opj_packet_info_t packet; int resno, precno, layno, num_packet; int numOfres, numOfprec, numOflayers; OPJ_BYTE l_data_header [8]; + OPJ_OFF_T lenp; + OPJ_UINT32 len; + packet.end_ph_pos = packet.start_pos = -1; (void)EPHused; /* unused ? */ + if( j2klen > pow( 2, 32)){ size_of_coding = 8; version = 1; @@ -243,33 +112,21 @@ int write_phixfaix_v2( int coff, int compno, opj_codestream_info_t cstr_info, op version = 0; } -#if 0 - lenp = cio_tell( cio); - cio_skip( cio, 4); /* L [at the end] */ - cio_write( cio, JPIP_FAIX, 4); /* FAIX */ - cio_write( cio, version,1); /* Version 0 = 4 bytes */ -#else lenp = opj_stream_tell(cio); opj_stream_skip(cio, 4, p_manager); /* L [at the end] */ opj_write_bytes(l_data_header,JPIP_FAIX,4); /* FAIX */ opj_stream_write_data(cio,l_data_header,4,p_manager); opj_write_bytes(l_data_header,version,1); /* Version 0 = 4 bytes */ opj_stream_write_data(cio,l_data_header,1,p_manager); -#endif nmax = 0; for( i=0; i<=cstr_info.numdecompos[compno]; i++) nmax += cstr_info.tile[0].ph[i] * cstr_info.tile[0].pw[i] * cstr_info.numlayers; -#if 0 - cio_write( cio, nmax, size_of_coding); /* NMAX */ - cio_write( cio, cstr_info.tw*cstr_info.th, size_of_coding); /* M */ -#else opj_write_bytes(l_data_header,nmax,size_of_coding); /* NMAX */ opj_stream_write_data(cio,l_data_header,size_of_coding,p_manager); opj_write_bytes(l_data_header,cstr_info.tw*cstr_info.th,size_of_coding); /* M */ opj_stream_write_data(cio,l_data_header,size_of_coding,p_manager); -#endif for( tileno=0; tileno<cstr_info.tw*cstr_info.th; tileno++){ tile_Idx = &cstr_info.tile[ tileno]; @@ -303,15 +160,10 @@ int write_phixfaix_v2( int coff, int compno, opj_codestream_info_t cstr_info, op fprintf( stderr, "failed to ppix indexing\n"); } -#if 0 - cio_write( cio, packet.start_pos-coff, size_of_coding); /* start position */ - cio_write( cio, packet.end_ph_pos-packet.start_pos+1, size_of_coding); /* length */ -#else - opj_write_bytes(l_data_header,packet.start_pos-coff,size_of_coding); /* start position */ + opj_write_bytes(l_data_header,(OPJ_UINT32)(packet.start_pos-coff),size_of_coding); /* start position */ opj_stream_write_data(cio,l_data_header,size_of_coding,p_manager); - opj_write_bytes(l_data_header,packet.end_ph_pos-packet.start_pos+1,size_of_coding); /* length */ + opj_write_bytes(l_data_header,(OPJ_UINT32)(packet.end_ph_pos-packet.start_pos+1),size_of_coding); /* length */ opj_stream_write_data(cio,l_data_header,size_of_coding,p_manager); -#endif num_packet++; } @@ -320,31 +172,19 @@ int write_phixfaix_v2( int coff, int compno, opj_codestream_info_t cstr_info, op /* PADDING */ while( num_packet < nmax){ -#if 0 - cio_write( cio, 0, size_of_coding); /* start position */ - cio_write( cio, 0, size_of_coding); /* length */ -#else opj_write_bytes(l_data_header,0,size_of_coding);/* start position */ opj_stream_write_data(cio,l_data_header,size_of_coding,p_manager); opj_write_bytes(l_data_header,0,size_of_coding);/* length */ opj_stream_write_data(cio,l_data_header,size_of_coding,p_manager); -#endif num_packet++; } } -#if 0 - len = cio_tell( cio)-lenp; - cio_seek( cio, lenp); - cio_write( cio, len, 4); /* L */ - cio_seek( cio, lenp+len); -#else - len = opj_stream_tell(cio)-lenp; + 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); -#endif return len; } |
