From 1f5d5a03933a0532b20c16826fe8f4e4add0f8e9 Mon Sep 17 00:00:00 2001 From: giraffedata Date: Sun, 6 Nov 2022 22:58:52 +0000 Subject: Fix assertion failure with numbps for codeblock being greater than numbps for band git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@4464 9d0c8265-081b-0410-96cb-a4ca84ce46f8 --- converter/other/jpeg2000/libjasper/jpc/jpc_enc.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'converter/other/jpeg2000/libjasper/jpc') diff --git a/converter/other/jpeg2000/libjasper/jpc/jpc_enc.c b/converter/other/jpeg2000/libjasper/jpc/jpc_enc.c index 8f13207c..debdeec0 100644 --- a/converter/other/jpeg2000/libjasper/jpc/jpc_enc.c +++ b/converter/other/jpeg2000/libjasper/jpc/jpc_enc.c @@ -1561,8 +1561,17 @@ quantizeBand(jpc_enc_band_t * const bandP, } bandP->stepsize = jpc_abstorelstepsize( bandP->absstepsize, prec + bandP->analgain); - - bandP->numbps = tccp_numgbits + JPC_QCX_GETEXPN(bandP->stepsize) - 1; + /* I couldn't figure out what the calculation with tccp_numgbits and + stepsize does (or even what a step size is), but there is an + assertion elsewhere than the number here is at least at large as + the 'numbps' value for every code block, which means + 'actualnumbps'. In practice, we saw that not be true, so we added + the code to make 'actualnumbps' the floor here in hopes that would + fix the problem. 22.11.06 + */ + bandP->numbps = + MAX(actualnumbps, + tccp_numgbits + JPC_QCX_GETEXPN(bandP->stepsize) - 1); if (!tileP->intmode && bandP->data) quantize(bandP->data, bandP->absstepsize); -- cgit 1.4.1