diff --git a/src/lib/openjp2/tcd.c b/src/lib/openjp2/tcd.c index 438247b6..d17750f7 100644 --- a/src/lib/openjp2/tcd.c +++ b/src/lib/openjp2/tcd.c @@ -633,7 +633,9 @@ OPJ_BOOL opj_tcd_rateallocate(opj_tcd_t *tcd, if (distoachieved < distotarget) { hi = thresh; - stable_thresh = thresh; + if (distoachieved > DBL_EPSILON) { + stable_thresh = thresh; + } continue; } else { lo = thresh; @@ -645,7 +647,9 @@ OPJ_BOOL opj_tcd_rateallocate(opj_tcd_t *tcd, if (distoachieved < distotarget) { hi = thresh; - stable_thresh = thresh; + if (distoachieved > DBL_EPSILON) { + stable_thresh = thresh; + } continue; } lo = thresh; @@ -690,7 +694,7 @@ OPJ_BOOL opj_tcd_rateallocate(opj_tcd_t *tcd, } } - goodthresh = stable_thresh == 0 ? thresh : stable_thresh; + goodthresh = stable_thresh == 0 ? lo : stable_thresh; opj_t2_destroy(t2); } else {