summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2017-08-10 14:43:16 +0200
committerEven Rouault <even.rouault@spatialys.com>2017-08-10 14:43:16 +0200
commita316f36dfc7cc4217bfce0ac6d23b47f90cf8fd9 (patch)
tree517961aad3a937e7d38cf88e837de58f694289b9 /src
parenta4c938181deb2cb48e408ac6e358062927060125 (diff)
Fix crash on encoding if using opj_set_default_encoder_parameters() without defining tcp_numlayers
Diffstat (limited to 'src')
-rw-r--r--src/bin/jp2/opj_compress.c5
-rw-r--r--src/lib/openjp2/j2k.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/src/bin/jp2/opj_compress.c b/src/bin/jp2/opj_compress.c
index 1bbcebde..494b366a 100644
--- a/src/bin/jp2/opj_compress.c
+++ b/src/bin/jp2/opj_compress.c
@@ -1618,9 +1618,12 @@ static int parse_cmdline_encoder(int argc, char **argv,
return 1;
} /* mod fixed_quality */
+
/* if no rate entered, lossless by default */
+ /* Note: post v2.2.0, this is no longer necessary, but for released */
+ /* versions at the time of writing, this is needed to avoid crashes */
if (parameters->tcp_numlayers == 0) {
- parameters->tcp_rates[0] = 0; /* MOD antonin : losslessbug */
+ parameters->tcp_rates[0] = 0;
parameters->tcp_numlayers++;
parameters->cp_disto_alloc = 1;
}
diff --git a/src/lib/openjp2/j2k.c b/src/lib/openjp2/j2k.c
index 44de79a7..496d4fe4 100644
--- a/src/lib/openjp2/j2k.c
+++ b/src/lib/openjp2/j2k.c
@@ -6769,6 +6769,13 @@ OPJ_BOOL opj_j2k_setup_encoder(opj_j2k_t *p_j2k,
}
}
+ /* If no explicit layers are provided, use lossless settings */
+ if (parameters->tcp_numlayers == 0) {
+ parameters->tcp_numlayers = 1;
+ parameters->cp_disto_alloc = 1;
+ parameters->tcp_rates[0] = 0;
+ }
+
/* see if max_codestream_size does limit input rate */
if (parameters->max_cs_size <= 0) {
if (parameters->tcp_rates[parameters->tcp_numlayers - 1] > 0) {