]> granicus.if.org Git - openjpeg/commitdiff
Fix crash on encoding if using opj_set_default_encoder_parameters() without defining...
authorEven Rouault <even.rouault@spatialys.com>
Thu, 10 Aug 2017 12:43:16 +0000 (14:43 +0200)
committerEven Rouault <even.rouault@spatialys.com>
Thu, 10 Aug 2017 12:43:16 +0000 (14:43 +0200)
src/bin/jp2/opj_compress.c
src/lib/openjp2/j2k.c

index 1bbcebde148cd1a73858b29d6762f997439c2817..494b366a7211d7cd3796b55299568e3b8a2a29bd 100644 (file)
@@ -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;
     }
index 44de79a7516dac5e3fe8c59fab43c402125deb9f..496d4fe4cecd923948d49006a49ba4b24931683c 100644 (file)
@@ -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) {