Пример #1
0
 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;
     }
 }
Пример #2
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];
     }
 }
Пример #3
0
 public void Dispose()
 {
     VolkApi.libsdr_filter_complex_free(ctx);
 }
Пример #4
0
 public int Process(Complex *input, Complex *output, int count, int channels = 1)
 {
     return(VolkApi.libsdr_filter_complex_process(ctx, input, output, channels, count));
 }
Пример #5
0
 public void Dispose()
 {
     VolkApi.libsdr_filter_real_free(ctx);
 }
Пример #6
0
 public int Process(float *input, float *output, int count, int channels = 1)
 {
     return(VolkApi.libsdr_filter_real_process(ctx, input, output, channels, count));
 }