int main(int argc,char *argv[]) { msgqueue_param_t *msgqueue; int infd, outfd; Byte8_t jptlen, j2klen; struct stat sb; Byte_t *jptstream, *j2kstream; if( argc < 3){ fprintf( stderr, "Too few arguments:\n"); fprintf( stderr, " - input jpt file\n"); fprintf( stderr, " - output j2k file\n"); return -1; } if(( infd = open( argv[1], O_RDONLY)) == -1){ fprintf( stderr, "file %s not exist\n", argv[1]); return -1; } if( fstat( infd, &sb) == -1){ fprintf( stderr, "input file stream is broken\n"); return -1; } jptlen = (Byte8_t)sb.st_size; jptstream = (Byte_t *)malloc( jptlen); if( read( infd, jptstream, jptlen) != jptlen){ fprintf( stderr, "file reading error\n"); free( jptstream); return -1; } close(infd); msgqueue = gene_msgqueue( true, NULL); parse_stream( jptstream, jptlen, 0, msgqueue); //print_msgqueue( msgqueue); j2kstream = recons_j2k( msgqueue, jptstream, msgqueue->first->csn, 0, &j2klen); delete_msgqueue( &msgqueue); free( jptstream); if(( outfd = open( argv[2], O_WRONLY|O_CREAT, S_IRWXU|S_IRWXG)) == -1){ fprintf( stderr, "file %s open error\n", argv[2]); return -1; } if( write( outfd, j2kstream, j2klen) != j2klen) fprintf( stderr, "j2k file write error\n"); free( j2kstream); close(outfd); return 0; }
void end_QRprocess( server_record_t *rec, QR_t **qr) { /* TODO: record client preferences if necessary*/ (void)rec; /* unused */ delete_query( &((*qr)->query)); delete_msgqueue( &((*qr)->msgqueue)); opj_free( *qr); }
void OPJ_CALLCONV terminate_dec_server( dec_server_record_t **rec) { delete_cachelist( &(*rec)->cachelist); opj_free( (*rec)->jpipstream); if( (*rec)->msgqueue) delete_msgqueue( &((*rec)->msgqueue)); if( close_socket( (*rec)->listening_socket) != 0) perror("close"); opj_free( *rec); }
OPJ_BOOL OPJ_CALLCONV fwrite_jp2k( const char fname[], jpip_dec_param_t *dec) { int outfd; #ifdef _WIN32 if(( outfd = open( fname, O_WRONLY|O_CREAT, _S_IREAD | _S_IWRITE)) == -1){ #else if(( outfd = open( fname, O_WRONLY|O_CREAT, S_IRWXU|S_IRWXG)) == -1){ #endif fprintf( stderr, "file %s open error\n", fname); return OPJ_FALSE; } if( write( outfd, dec->jp2kstream, dec->jp2klen) != (int)dec->jp2klen) fprintf( stderr, "j2k file write error\n"); close(outfd); return OPJ_TRUE; } void OPJ_CALLCONV output_log( OPJ_BOOL messages, OPJ_BOOL metadata, OPJ_BOOL ihdrbox, jpip_dec_param_t *dec) { if( messages) print_msgqueue( dec->msgqueue); if( metadata) print_allmetadata( dec->metadatalist); if( ihdrbox){ printf("W*H: %d*%d\n", dec->ihdrbox->height, dec->ihdrbox->width); printf("NC: %d, bpc: %d\n", dec->ihdrbox->nc, dec->ihdrbox->bpc); } } void OPJ_CALLCONV destroy_jpipdecoder( jpip_dec_param_t **dec) { opj_free( (*dec)->jpipstream); delete_msgqueue( &(*dec)->msgqueue); if( (*dec)->metadatalist){ delete_metadatalist( &(*dec)->metadatalist); opj_free( (*dec)->ihdrbox); } opj_free( (*dec)->jp2kstream); opj_free( *dec); }