Method: Vdsp::DoubleBiquad#initialize

Defined in:
ext/vdsp/vdsp.c

#initialize(alloc_sections) ⇒ Object

Vdsp::DoubleBiquad



993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
# File 'ext/vdsp/vdsp.c', line 993

VALUE rb_double_biquad_initialize(VALUE self, VALUE alloc_sections)
{
  VdspBiquadNativeResource *p = ALLOC(VdspBiquadNativeResource);
  p->type = 'd';
  p->coefs.ptr = NULL;
  p->delay.ptr = NULL;
  p->setup.ptr = NULL;
  p->sections = 0;
  p->alloc_sections = 0;

  VALUE resource = Data_Wrap_Struct(CLASS_OF(self), 0, vdsp_biquad_native_resource_delete, p);
  rb_iv_set(self, "native_resource", resource);

  long _alloc_sections = NUM2LONG(alloc_sections);
  if (_alloc_sections<1) {
    _alloc_sections = 1;
  }
  p->coefs.ptr = calloc(_alloc_sections*5, sizeof(double));
  p->delay.ptr = calloc(_alloc_sections*2+2, sizeof(double));
  p->alloc_sections = _alloc_sections;

  return self;
}