コード例 #1
0
ファイル: wdelay.c プロジェクト: Sangstbk/liquid-dsp
WDELAY() WDELAY(_create)(unsigned int _k)
{
    WDELAY() w = (WDELAY()) malloc(sizeof(struct WDELAY(_s)));
    w->k = _k;

    // allocte memory
    w->v = (T*) malloc((w->k)*sizeof(T));
    w->read_index = 0;

    // clear window
    WDELAY(_clear)(w);

    return w;
}
コード例 #2
0
ファイル: wdelay.c プロジェクト: 0xLeo/liquid-dsp
// create delay buffer object with '_delay' samples
WDELAY() WDELAY(_create)(unsigned int _delay)
{
    // create main object
    WDELAY() q = (WDELAY()) malloc(sizeof(struct WDELAY(_s)));

    // set internal values
    q->delay = _delay;

    // allocte memory
    q->v = (T*) malloc((q->delay)*sizeof(T));
    q->read_index = 0;

    // clear window
    WDELAY(_clear)(q);

    return q;
}
コード例 #3
0
ファイル: wdelay.c プロジェクト: 0xLeo/liquid-dsp
    q->delay = _delay;

    // allocte memory
    q->v = (T*) malloc((q->delay)*sizeof(T));
    q->read_index = 0;

    // clear window
    WDELAY(_clear)(q);

    return q;
}

// re-create delay buffer object with '_delay' samples
//  _q      :   old delay buffer object
//  _delay  :   delay for new object
WDELAY() WDELAY(_recreate)(WDELAY()     _q,
                           unsigned int _delay)
{
    // copy internal buffer, re-aligned
    unsigned int ktmp = _q->delay;
    T * vtmp = (T*) malloc(_q->delay * sizeof(T));
    unsigned int i;
    for (i=0; i<_q->delay; i++)
        vtmp[i] = _q->v[ (i + _q->read_index) % _q->delay ];
    
    // destroy object and re-create it
    WDELAY(_destroy)(_q);
    _q = WDELAY(_create)(_delay);

    // push old values
    for (i=0; i<ktmp; i++)