Lines Matching refs:state
66 DitherState *state; // dither states for each channel
142 static int generate_dither_noise(DitherContext *c, DitherState *state,
151 av_freep(&state->noise_buf);
152 state->noise_buf_size = state->noise_buf_ptr = 0;
154 state->noise_buf = av_malloc(buf_samples * sizeof(*state->noise_buf));
155 if (!state->noise_buf)
157 state->noise_buf_size = FFALIGN(min_samples, 16);
158 noise_buf_ui = (unsigned int *)state->noise_buf;
160 av_lfg_init(&state->lfg, state->seed);
162 noise_buf_ui[i] = av_lfg_get(&state->lfg);
164 c->ddsp.dither_int_to_float(state->noise_buf, noise_buf_ui, nb_samples);
167 dither_highpass_filter(state->noise_buf, nb_samples);
172 static void quantize_triangular_ns(DitherContext *c, DitherState *state,
177 float *dither = &state->noise_buf[state->noise_buf_ptr];
179 if (state->mute > c->mute_reset_threshold)
180 memset(state->dither_a, 0, sizeof(state->dither_a));
187 err += c->ns_coef_b[j] * state->dither_b[j] -
188 c->ns_coef_a[j] * state->dither_a[j];
191 state->dither_a[j] = state->dither_a[j - 1];
192 state->dither_b[j] = state->dither_b[j - 1];
194 state->dither_a[0] = err;
197 if (state->mute > c->mute_dither_threshold) {
199 state->dither_b[0] = 0;
202 state->dither_b[0] = av_clipf(dst[i] - sample, -1.5f, 1.5f);
205 state->mute++;
207 state->mute = 0;
218 DitherState *state = &c->state[ch];
220 if (state->noise_buf_size < aligned_samples) {
221 ret = generate_dither_noise(c, state, nb_samples);
224 } else if (state->noise_buf_size - state->noise_buf_ptr < aligned_samples) {
225 state->noise_buf_ptr = 0;
229 quantize_triangular_ns(c, state, dst[ch], src[ch], nb_samples);
232 &state->noise_buf[state->noise_buf_ptr],
236 state->noise_buf_ptr += aligned_samples;
324 av_free(c->state[ch].noise_buf);
325 av_free(c->state);
416 c->state = av_mallocz(channels * sizeof(*c->state));
417 if (!c->state)
429 DitherState *state = &c->state[ch];
430 state->mute = c->mute_reset_threshold + 1;
431 state->seed = av_lfg_get(&seed_gen);
432 generate_dither_noise(c, state, FFMAX(32768, sample_rate / 2));