diff options
| author | Kaori Hagihara <khagihara@users.noreply.github.com> | 2011-10-25 21:10:48 +0000 |
|---|---|---|
| committer | Kaori Hagihara <khagihara@users.noreply.github.com> | 2011-10-25 21:10:48 +0000 |
| commit | 8d7073abf6f79e29db9ae382909001aac6bd1129 (patch) | |
| tree | 27fbb4ba135a06debaf46e768645855d5e04e380 /libopenjpeg/ppix_manager.c | |
| parent | f1c8dd887ba23de7a0c27924bb07e9ca95be9528 (diff) | |
patches for cmake and autotool are applied
Diffstat (limited to 'libopenjpeg/ppix_manager.c')
| -rwxr-xr-x | libopenjpeg/ppix_manager.c | 57 |
1 files changed, 38 insertions, 19 deletions
diff --git a/libopenjpeg/ppix_manager.c b/libopenjpeg/ppix_manager.c index 4106144d..41f6d0b4 100755 --- a/libopenjpeg/ppix_manager.c +++ b/libopenjpeg/ppix_manager.c @@ -87,14 +87,12 @@ int write_ppix( int coff, opj_codestream_info_t cstr_info, opj_bool EPHused, int int write_ppixfaix( int coff, int compno, opj_codestream_info_t cstr_info, opj_bool EPHused, int j2klen, opj_cio_t *cio) { - int len, lenp; - int tileno, resno, precno, layno, num_packet=0; - int size_of_coding; // 4 or 8 - int version; - int i,nmax=0; + 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; + if( j2klen > pow( 2, 32)){ size_of_coding = 8; version = 1; @@ -109,6 +107,7 @@ int write_ppixfaix( int coff, int compno, opj_codestream_info_t cstr_info, opj_b 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; @@ -116,29 +115,50 @@ int write_ppixfaix( int coff, int compno, opj_codestream_info_t cstr_info, opj_b 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]; - // int correction = EPHused ? 3 : 1; + num_packet=0; - - for( resno=0; resno<=cstr_info.numdecompos[compno]; resno++){ - for( precno=0; precno<tile_Idx->pw[resno]*tile_Idx->ph[resno]; precno++){ - for( layno=0; layno<cstr_info.numlayers; layno++){ - packet = tile_Idx->packet[num_packet * cstr_info.numcomps + compno]; - cio_write( cio, packet.start_pos-coff, size_of_coding); /* start position */ + 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_pos-packet.start_pos+1, size_of_coding); /* length */ num_packet++; } } } - - /* PADDING */ - while( num_packet < nmax){ + + while( num_packet < nmax){ /* PADDING */ cio_write( cio, 0, size_of_coding); /* start position */ cio_write( cio, 0, size_of_coding); /* length */ num_packet++; - } + } } len = cio_tell( cio)-lenp; @@ -147,5 +167,4 @@ int write_ppixfaix( int coff, int compno, opj_codestream_info_t cstr_info, opj_b cio_seek( cio, lenp+len); return len; - } |
