downscale_state(state, Q);
if(state->B[Q] <= -state->N[Q]) {
- state->B[Q] += state->N[Q];
+ state->B[Q]= FFMAX(state->B[Q] + state->N[Q], 1-state->N[Q]);
if(state->C[Q] > -128)
state->C[Q]--;
- if(state->B[Q] <= -state->N[Q])
- state->B[Q] = -state->N[Q] + 1;
}else if(state->B[Q] > 0){
- state->B[Q] -= state->N[Q];
+ state->B[Q]= FFMIN(state->B[Q] - state->N[Q], 0);
if(state->C[Q] < 127)
state->C[Q]++;
- if(state->B[Q] > 0)
- state->B[Q] = 0;
}
return err;
pred = clip(pred, 0, state->maxval);
}
+ pred &= state->maxval;
W(dst, x, pred);
x += stride;
}
*/
static inline void ls_encode_runterm(JLSState *state, PutBitContext *pb, int RItype, int err, int limit_add){
int k;
- int val;
+ int val, map;
int Q = 365 + RItype;
int temp;
if(RItype)
temp += state->N[Q] >> 1;
for(k = 0; (state->N[Q] << k) < temp; k++);
- if(!k && (2 * state->B[Q] < state->N[Q]))
- err= -err;
+ map = 0;
+ if(!k && err && (2 * state->B[Q] < state->N[Q]))
+ map = 1;
if(err < 0)
- val = - (2 * err) - 1 - RItype;
+ val = - (2 * err) - 1 - RItype + map;
else
- val = 2 * err - RItype;
+ val = 2 * err - RItype - map;
set_ur_golomb_jpegls(pb, val, k, state->limit - limit_add - 1, state->qbpp);
if(err < 0)