The code in 'opj_decompress.c' - in short - runs:
----------------------------------------------------------
opj_set_default_decoder_parameters(¶meters);
parse_cmdline_decoder(argc, argv,
¶meters,&img_fol, indexfilename);
l_stream =
opj_stream_create_default_file_stream_v3(parameters.infile,1);
l_codec =
opj_create_decompress(OPJ_CODEC_[J2K|JP2|JPT]);
/* Optional */
opj_set_info_handler(l_codec, info_callback,00);
opj_set_warning_handler(l_codec, warning_callback,00);
opj_set_error_handler(l_codec, error_callback,00);
opj_setup_decoder(l_codec, ¶meters);
opj_read_header(l_stream, l_codec, &image);
opj_get_decoded_tile(l_codec, l_stream, image,
parameters.tile_index);
opj_stream_destroy_v3(l_stream);
----------------------------------------------------------
And when I use an image with severeal tiles
and call
./opj_decompress -i image.jp2 -o tile.5 -t 5
then I get tile 5.
Why?
You wrote
>but when i set parameters.nb_tile_to_decode it doesn't change
>anything,
As the code above shows in the function
parse_cmdline_decoder()
you must set
parameters->tile_index = your_tile_number;
parameters->nb_tile_to_decode = 1;
------------------------------------------
case 't': /* Input tile index */
{
sscanf(opj_optarg, "%d", ¶meters->tile_index);
parameters->nb_tile_to_decode = 1;
}
------------------------------------------
Now it must work.
winfried