internal ComplexFirFilterVOLK(Complex[] coeffs, int decimation) { ctx = VolkApi.libsdr_filter_complex_create(coeffs.Length, decimation); for (int i = 0; i < coeffs.Length; i++) { ctx->coeffsBufferPtr[i] = coeffs[i]; } for (int i = 0; i < coeffs.Length * 2; i++) { ctx->insampBufferPtr[i] = 0; } }
internal ComplexFirFilterGeneric(Complex[] coeffs, int decimation) { VolkApi.WarnVolk(); coeffsBuffer = UnsafeBuffer.Create(coeffs.Length, out coeffsBufferPtr); insampBuffer = UnsafeBuffer.Create(coeffs.Length * 2, out insampBufferPtr); insampBufferPtrOffset = insampBufferPtr + coeffs.Length; taps = coeffs.Length; this.decimation = decimation; decimationIndex = 0; offset = 0; for (int i = 0; i < coeffs.Length; i++) { coeffsBufferPtr[i] = coeffs[i]; } }
public void Dispose() { VolkApi.libsdr_filter_complex_free(ctx); }
public int Process(Complex *input, Complex *output, int count, int channels = 1) { return(VolkApi.libsdr_filter_complex_process(ctx, input, output, channels, count)); }
public void Dispose() { VolkApi.libsdr_filter_real_free(ctx); }
public int Process(float *input, float *output, int count, int channels = 1) { return(VolkApi.libsdr_filter_real_process(ctx, input, output, channels, count)); }