[trunk] WIP: enhance j2k_to_image with new get_decoded_tile functionality
This commit is contained in:
parent
380a357b08
commit
aaf6e84373
1
CHANGES
1
CHANGES
@ -6,6 +6,7 @@ What's New for OpenJPEG
|
|||||||
+ : added
|
+ : added
|
||||||
|
|
||||||
November 17, 2011
|
November 17, 2011
|
||||||
|
+ [mickael] WIP: enhance j2k_to_image with new get_decoded_tile functionality
|
||||||
+ [mickael] WIP: clean j2k_dump and enhance j2k_dump with commit 1052.
|
+ [mickael] WIP: clean j2k_dump and enhance j2k_dump with commit 1052.
|
||||||
+ [mickael] WIP: add a set decoded resolution factor function and update j2k_to_image help about decoded region.
|
+ [mickael] WIP: add a set decoded resolution factor function and update j2k_to_image help about decoded region.
|
||||||
|
|
||||||
|
@ -143,7 +143,11 @@ void decode_help_display(void) {
|
|||||||
fprintf(stdout," -d <x0,y0,x1,y1>\n");
|
fprintf(stdout," -d <x0,y0,x1,y1>\n");
|
||||||
fprintf(stdout," OPTIONAL\n");
|
fprintf(stdout," OPTIONAL\n");
|
||||||
fprintf(stdout," Decoding area\n");
|
fprintf(stdout," Decoding area\n");
|
||||||
fprintf(stdout," By default all tiles header are read.\n");
|
fprintf(stdout," By default all the image is decoded.\n");
|
||||||
|
fprintf(stdout," -t <tile_number>\n");
|
||||||
|
fprintf(stdout," OPTIONAL\n");
|
||||||
|
fprintf(stdout," Set the tile number of the decoded tile. Follow the JPEG2000 convention from left-up to bottom-up\n");
|
||||||
|
fprintf(stdout," By default all tiles are decoded.\n");
|
||||||
fprintf(stdout,"\n");
|
fprintf(stdout,"\n");
|
||||||
/* UniPG>> */
|
/* UniPG>> */
|
||||||
#ifdef USE_JPWL
|
#ifdef USE_JPWL
|
||||||
@ -271,8 +275,12 @@ static int infile_format(const char *fname)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
memset(buf, 0, 12);
|
memset(buf, 0, 12);
|
||||||
fread(buf, 1, 12, reader);
|
unsigned int l_nb_read = fread(buf, 1, 12, reader);
|
||||||
fclose(reader);
|
fclose(reader);
|
||||||
|
if (l_nb_read != 12)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ext_format = get_file_format(fname);
|
ext_format = get_file_format(fname);
|
||||||
|
|
||||||
@ -316,7 +324,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i
|
|||||||
{"OutFor",REQ_ARG, NULL ,'O'},
|
{"OutFor",REQ_ARG, NULL ,'O'},
|
||||||
};
|
};
|
||||||
|
|
||||||
const char optlist[] = "i:o:r:l:x:d:"
|
const char optlist[] = "i:o:r:l:x:d:t:"
|
||||||
|
|
||||||
/* UniPG>> */
|
/* UniPG>> */
|
||||||
#ifdef USE_JPWL
|
#ifdef USE_JPWL
|
||||||
@ -468,6 +476,16 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i
|
|||||||
|
|
||||||
free(ROI_values);
|
free(ROI_values);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* ----------------------------------------------------- */
|
||||||
|
|
||||||
|
case 't': /* Input tile index */
|
||||||
|
{
|
||||||
|
sscanf(opj_optarg, "%d", ¶meters->tile_index);
|
||||||
|
parameters->nb_tile_to_decode = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
/* ----------------------------------------------------- */
|
/* ----------------------------------------------------- */
|
||||||
|
|
||||||
@ -785,37 +803,47 @@ int main(int argc, char **argv)
|
|||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! opj_set_decode_area( dinfo, image,
|
if (!parameters.nb_tile_to_decode) {
|
||||||
parameters.DA_x0, parameters.DA_y0, parameters.DA_x1, parameters.DA_y1)){
|
// Optional if you want decode the entire image
|
||||||
fprintf(stderr, "ERROR -> j2k_to_image: failed to set the decoded area\n");
|
if (!opj_set_decode_area(dinfo, image, parameters.DA_x0,
|
||||||
opj_stream_destroy(cio);
|
parameters.DA_y0, parameters.DA_x1, parameters.DA_y1)){
|
||||||
opj_destroy_codec(dinfo);
|
fprintf(stderr,
|
||||||
opj_image_destroy(image);
|
"ERROR -> j2k_to_image: failed to set the decoded area\n");
|
||||||
fclose(fsrc);
|
opj_stream_destroy(cio);
|
||||||
return EXIT_FAILURE;
|
opj_destroy_codec(dinfo);
|
||||||
|
opj_image_destroy(image);
|
||||||
|
fclose(fsrc);
|
||||||
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the decoded image */
|
/* Get the decoded image */
|
||||||
if ( !( opj_decode_v2(dinfo, cio, image) && opj_end_decompress(dinfo,cio) ) ) {
|
if (!(opj_decode_v2(dinfo, cio, image) && opj_end_decompress(dinfo,
|
||||||
fprintf(stderr, "ERROR -> j2k_to_image: failed to decode image!\n");
|
cio))) {
|
||||||
opj_destroy_codec(dinfo);
|
fprintf(stderr,
|
||||||
opj_stream_destroy(cio);
|
"ERROR -> j2k_to_image: failed to decode image!\n");
|
||||||
opj_image_destroy(image);
|
opj_destroy_codec(dinfo);
|
||||||
fclose(fsrc);
|
opj_stream_destroy(cio);
|
||||||
return EXIT_FAILURE;
|
opj_image_destroy(image);
|
||||||
|
fclose(fsrc);
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (!opj_get_decoded_tile(dinfo, cio, image, parameters.tile_index)) {
|
||||||
|
fprintf(stderr, "ERROR -> j2k_to_image: failed to decode tile!\n");
|
||||||
|
opj_destroy_codec(dinfo);
|
||||||
|
opj_stream_destroy(cio);
|
||||||
|
opj_image_destroy(image);
|
||||||
|
fclose(fsrc);
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
fprintf(stdout, "tile %d is decoded!\n\n", parameters.tile_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*opj_dump_codec(dinfo, OPJ_J2K_MH_IND, stdout );
|
|
||||||
|
|
||||||
cstr_index = opj_get_cstr_index(dinfo);*/
|
|
||||||
|
|
||||||
fprintf(stderr, "image is decoded!\n");
|
|
||||||
|
|
||||||
/* Close the byte stream */
|
/* Close the byte stream */
|
||||||
opj_stream_destroy(cio);
|
opj_stream_destroy(cio);
|
||||||
fclose(fsrc);
|
fclose(fsrc);
|
||||||
|
|
||||||
|
|
||||||
if(image->color_space == CLRSPC_SYCC){
|
if(image->color_space == CLRSPC_SYCC){
|
||||||
color_sycc_to_rgb(image); /* FIXME */
|
color_sycc_to_rgb(image); /* FIXME */
|
||||||
}
|
}
|
||||||
|
@ -8371,6 +8371,12 @@ opj_bool j2k_get_tile( opj_j2k_v2_t *p_j2k,
|
|||||||
return OPJ_FALSE;
|
return OPJ_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tile_index >= p_j2k->m_cp.th * p_j2k->m_cp.tw) {
|
||||||
|
opj_event_msg_v2(p_manager, EVT_ERROR, "Decoded tile index is "
|
||||||
|
"inconsistent with the number of tiles in the codestream (%d vs %d).\n", tile_index, p_j2k->m_cp.th * p_j2k->m_cp.tw );
|
||||||
|
return OPJ_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Compute the dimension of the desired tile*/
|
/* Compute the dimension of the desired tile*/
|
||||||
l_tile_x = tile_index % p_j2k->m_cp.tw;
|
l_tile_x = tile_index % p_j2k->m_cp.tw;
|
||||||
l_tile_y = tile_index / p_j2k->m_cp.tw;
|
l_tile_y = tile_index / p_j2k->m_cp.tw;
|
||||||
|
@ -439,6 +439,11 @@ typedef struct opj_dparameters {
|
|||||||
/** Verbose mode */
|
/** Verbose mode */
|
||||||
opj_bool m_verbose;
|
opj_bool m_verbose;
|
||||||
|
|
||||||
|
/** tile number ot the decoded tile*/
|
||||||
|
OPJ_UINT32 tile_index;
|
||||||
|
/** Nb of tile to decode */
|
||||||
|
OPJ_UINT32 nb_tile_to_decode;
|
||||||
|
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
/* UniPG>> */
|
/* UniPG>> */
|
||||||
|
@ -96,6 +96,11 @@ j2k_to_image -i @INPUT_CONF_PATH@/p1_06.j2k -o @TEMP_PATH@/p1_06_4.j2k.png -d 3,
|
|||||||
j2k_to_image -i @INPUT_CONF_PATH@/p1_06.j2k -o @TEMP_PATH@/p1_06_5.j2k.png -d 4,4,7,7 -r 1
|
j2k_to_image -i @INPUT_CONF_PATH@/p1_06.j2k -o @TEMP_PATH@/p1_06_5.j2k.png -d 4,4,7,7 -r 1
|
||||||
j2k_to_image -i @INPUT_CONF_PATH@/p1_06.j2k -o @TEMP_PATH@/p1_06_6.j2k.png -d 4,4,5,5 -r 1
|
j2k_to_image -i @INPUT_CONF_PATH@/p1_06.j2k -o @TEMP_PATH@/p1_06_6.j2k.png -d 4,4,5,5 -r 1
|
||||||
|
|
||||||
|
j2k_to_image -i @INPUT_CONF_PATH@/p1_06.j2k -o @TEMP_PATH@/p1_06.j2k_0.png -t 0
|
||||||
|
j2k_to_image -i @INPUT_CONF_PATH@/p1_06.j2k -o @TEMP_PATH@/p1_06_1.j2k_5.png -t 5
|
||||||
|
j2k_to_image -i @INPUT_CONF_PATH@/p1_06.j2k -o @TEMP_PATH@/p1_06_2.j2k_9.png -t 9
|
||||||
|
j2k_to_image -i @INPUT_CONF_PATH@/p1_06.j2k -o @TEMP_PATH@/p1_06_3.j2k_15.png -t 15
|
||||||
|
|
||||||
# prec=4; nb_c=3 ; signd=yes
|
# prec=4; nb_c=3 ; signd=yes
|
||||||
j2k_to_image -i @INPUT_CONF_PATH@/p0_04.j2k -o @TEMP_PATH@/p0_04.j2k.png -d 0,0,256,256
|
j2k_to_image -i @INPUT_CONF_PATH@/p0_04.j2k -o @TEMP_PATH@/p0_04.j2k.png -d 0,0,256,256
|
||||||
j2k_to_image -i @INPUT_CONF_PATH@/p0_04.j2k -o @TEMP_PATH@/p0_04_1.j2k.png -d 128,0,256,128
|
j2k_to_image -i @INPUT_CONF_PATH@/p0_04.j2k -o @TEMP_PATH@/p0_04_1.j2k.png -d 128,0,256,128
|
||||||
|
Loading…
Reference in New Issue
Block a user