Autocorr constructor

Autocorr(
  1. int n,
  2. int inputLen
)

Implementation

factory Autocorr(int n, int inputLen) {
  final plan = yl_fft_plan_r2c_create(n);
  if (plan == ffi.nullptr) {
    throw StateError('yl_fft_plan_r2c_create($n) returned nullptr');
  }

  ffi.Pointer<ffi.Float>? inPtr, xcorrPtr;
  try {
    inPtr = calloc<ffi.Float>(inputLen);
    xcorrPtr = calloc<ffi.Float>(inputLen);
    return Autocorr._(n, inputLen, _AutocorrRes(plan, inPtr, xcorrPtr));
  } catch (_) {
    if (inPtr != null) calloc.free(inPtr);
    if (xcorrPtr != null) calloc.free(xcorrPtr);
    yl_fft_plan_destroy(plan);
    rethrow;
  }
}