Lines Matching refs:state
60 static inline void ls_encode_regular(JLSState *state, PutBitContext *pb, int Q,
67 for (k = 0; (state->N[Q] << k) < state->A[Q]; k++)
70 map = !state->near && !k && (2 * state->B[Q] <= -state->N[Q]);
73 err += state->range;
74 if (err >= (state->range + 1 >> 1)) {
75 err -= state->range;
80 set_ur_golomb_jpegls(pb, val, k, state->limit, state->qbpp);
82 ff_jpegls_update_state_regular(state, Q, err);
88 static inline void ls_encode_runterm(JLSState *state, PutBitContext *pb,
96 temp = state->A[Q];
98 temp += state->N[Q] >> 1;
99 for (k = 0; (state->N[Q] << k) < temp; k++)
102 if (!k && err && (2 * state->B[Q] < state->N[Q]))
109 set_ur_golomb_jpegls(pb, val, k, state->limit - limit_add - 1, state->qbpp);
112 state->B[Q]++;
113 state->A[Q] += (val + 1 - RItype) >> 1;
115 ff_jpegls_downscale_state(state, Q);
121 static inline void ls_encode_run(JLSState *state, PutBitContext *pb, int run,
124 while (run >= (1 << ff_log2_run[state->run_index[comp]])) {
126 run -= 1 << ff_log2_run[state->run_index[comp]];
127 if (state->run_index[comp] < 31)
128 state->run_index[comp]++;
135 if (ff_log2_run[state->run_index[comp]])
136 put_bits(pb, ff_log2_run[state->run_index[comp]], run);
143 static inline void ls_encode_line(JLSState *state, PutBitContext *pb,
162 if ((FFABS(D0) <= state->near) &&
163 (FFABS(D1) <= state->near) &&
164 (FFABS(D2) <= state->near)) {
169 while (x < w && (FFABS(R(in, x) - RUNval) <= state->near)) {
174 ls_encode_run(state, pb, run, comp, x < w);
178 RItype = FFABS(Ra - Rb) <= state->near;
185 if (state->near) {
187 err = (state->near + err) / state->twonear;
189 err = -(state->near - err) / state->twonear;
192 Ra = av_clip(pred + err * state->twonear, 0, state->maxval);
194 Ra = av_clip(pred - err * state->twonear, 0, state->maxval);
200 err += state->range;
201 if (err >= state->range + 1 >> 1)
202 err -= state->range;
204 ls_encode_runterm(state, pb, RItype, err,
205 ff_log2_run[state->run_index[comp]]);
207 if (state->run_index[comp] > 0)
208 state->run_index[comp]--;
212 context = ff_jpegls_quantize(state, D0) * 81 +
213 ff_jpegls_quantize(state, D1) * 9 +
214 ff_jpegls_quantize(state, D2);
220 pred = av_clip(pred - state->C[context], 0, state->maxval);
224 pred = av_clip(pred + state->C[context], 0, state->maxval);
228 if (state->near) {
230 err = (state->near + err) / state->twonear;
232 err = -(state->near - err) / state->twonear;
234 Ra = av_clip(pred + err * state->twonear, 0, state->maxval);
236 Ra = av_clip(pred - err * state->twonear, 0, state->maxval);
241 ls_encode_regular(state, pb, context, err);
248 static void ls_store_lse(JLSState *state, PutByteContext *pb)
252 state2.bpp = state->bpp;
253 state2.near = state->near;
255 if (state->T1 == state2.T1 &&
256 state->T2 == state2.T2 &&
257 state->T3 == state2.T3 &&
258 state->reset == state2.reset)
264 bytestream2_put_be16u(pb, state->maxval);
265 bytestream2_put_be16u(pb, state->T1);
266 bytestream2_put_be16u(pb, state->T2);
267 bytestream2_put_be16u(pb, state->T3);
268 bytestream2_put_be16u(pb, state->reset);
281 JLSState state = { 0 };
293 /* initialize JPEG-LS state from JPEG parameters */
294 state.near = ctx->pred;
295 state.bpp = (avctx->pix_fmt == AV_PIX_FMT_GRAY16) ? 16 : 8;
296 ff_jpegls_reset_coding_parameters(&state, 0);
297 ff_jpegls_init_state(&state);
305 ls_encode_line(&state, &pb2, last, in, t, avctx->width, 1, 0, 8);
314 ls_encode_line(&state, &pb2, last, in, t, avctx->width, 1, 0, 16);
326 ls_encode_line(&state, &pb2, last + j, in + j, Rc[j],
340 ls_encode_line(&state, &pb2, last + j, in + j, Rc[j],
398 ls_store_lse(&state, &pb);