+
+av_cold int ff_lpc_init(LPCContext *s, int blocksize, int max_order,
+ enum FFLPCType lpc_type)
+{
+ s->blocksize = blocksize;
+ s->max_order = max_order;
+ s->lpc_type = lpc_type;
+
+ s->windowed_buffer = av_mallocz((blocksize + 2 + FFALIGN(max_order, 4)) *
+ sizeof(*s->windowed_samples));
+ if (!s->windowed_buffer)
+ return AVERROR(ENOMEM);
+ s->windowed_samples = s->windowed_buffer + FFALIGN(max_order, 4);
+
+ s->lpc_apply_welch_window = lpc_apply_welch_window_c;
+ s->lpc_compute_autocorr = lpc_compute_autocorr_c;
+
+ if (ARCH_X86)
+ ff_lpc_init_x86(s);
+
+ return 0;
+}
+
+av_cold void ff_lpc_end(LPCContext *s)
+{
+ av_freep(&s->windowed_buffer);
+}