zita-convolver: remove unused API

This commit is contained in:
Robin Gareus 2021-03-29 15:49:57 +02:00
parent 1b1ef165d3
commit 915ce04a44
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
3 changed files with 57 additions and 181 deletions

View File

@ -209,7 +209,7 @@ Convolution::run (BufferSet& bufs, ChanMapping const& in_map, ChanMapping const&
remain -= ns;
if (_offset == _n_samples) {
_convproc.process (/*sync, freewheeling*/ true);
_convproc.process ();
_offset = 0;
}
}
@ -327,7 +327,7 @@ Convolver::run_mono (float* buf, uint32_t n_samples)
remain -= ns;
if (_offset == _n_samples) {
_convproc.process (/*sync, freewheeling*/ true);
_convproc.process ();
_offset = 0;
}
}
@ -357,7 +357,7 @@ Convolver::run_stereo (float* left, float* right, uint32_t n_samples)
remain -= ns;
if (_offset == _n_samples) {
_convproc.process (true);
_convproc.process ();
_offset = 0;
}
}

View File

@ -58,7 +58,6 @@ calloc_complex (uint32_t k)
Convproc::Convproc (void)
: _state (ST_IDLE)
, _options (0)
, _skipcnt (0)
, _ninp (0)
, _nout (0)
, _quantum (0)
@ -84,14 +83,6 @@ Convproc::set_options (uint32_t options)
_options = options;
}
void
Convproc::set_skipcnt (uint32_t skipcnt)
{
if ((_quantum == _minpart) && (_quantum == _maxpart)) {
_skipcnt = skipcnt;
}
}
int
Convproc::configure (uint32_t ninp,
uint32_t nout,
@ -238,59 +229,6 @@ Convproc::impdata_clear (uint32_t inp, uint32_t out)
return 0;
}
int
Convproc::impdata_update (uint32_t inp,
uint32_t out,
int32_t step,
float* data,
int32_t ind0,
int32_t ind1)
{
uint32_t j;
if (_state < ST_STOP) {
return Converror::BAD_STATE;
}
if ((inp >= _ninp) || (out >= _nout)) {
return Converror::BAD_PARAM;
}
for (j = 0; j < _nlevels; j++) {
_convlev[j]->impdata_write (inp, out, step, data, ind0, ind1, false);
}
return 0;
}
int
Convproc::impdata_link (uint32_t inp1,
uint32_t out1,
uint32_t inp2,
uint32_t out2)
{
uint32_t j;
if ((inp1 >= _ninp) || (out1 >= _nout)) {
return Converror::BAD_PARAM;
}
if ((inp2 >= _ninp) || (out2 >= _nout)) {
return Converror::BAD_PARAM;
}
if ((inp1 == inp2) && (out1 == out2)) {
return Converror::BAD_PARAM;
}
if (_state != ST_STOP) {
return Converror::BAD_STATE;
}
try {
for (j = 0; j < _nlevels; j++) {
_convlev[j]->impdata_link (inp1, out1, inp2, out2);
}
} catch (...) {
cleanup ();
return Converror::MEM_ALLOC;
}
return 0;
}
int
Convproc::reset (void)
{
@ -332,7 +270,7 @@ Convproc::start_process (int abspri, int policy)
}
int
Convproc::process (bool sync)
Convproc::process ()
{
uint32_t k;
int f = 0;
@ -340,10 +278,12 @@ Convproc::process (bool sync)
if (_state != ST_PROC) {
return 0;
}
_inpoffs += _quantum;
if (_inpoffs == _inpsize) {
_inpoffs = 0;
}
_outoffs += _quantum;
if (_outoffs == _minpart) {
_outoffs = 0;
@ -351,12 +291,7 @@ Convproc::process (bool sync)
memset (_outbuff[k], 0, _minpart * sizeof (float));
}
for (k = 0; k < _nlevels; k++) {
f |= _convlev[k]->readout (sync, _skipcnt);
}
if (_skipcnt < _minpart) {
_skipcnt = 0;
} else {
_skipcnt -= _minpart;
f |= _convlev[k]->readout ();
}
if (f) {
if (++_latecnt >= 5) {
@ -414,7 +349,6 @@ Convproc::cleanup (void)
_state = ST_IDLE;
_options = 0;
_skipcnt = 0;
_ninp = 0;
_nout = 0;
_quantum = 0;
@ -588,24 +522,6 @@ Convlevel::impdata_clear (uint32_t inp, uint32_t out)
}
}
void
Convlevel::impdata_link (uint32_t inp1,
uint32_t out1,
uint32_t inp2,
uint32_t out2)
{
Macnode* M1;
Macnode* M2;
M1 = findmacnode (inp1, out1, false);
if (!M1) {
return;
}
M2 = findmacnode (inp2, out2, true);
M2->free_fftb ();
M2->_link = M1;
}
void
Convlevel::reset (uint32_t inpsize,
uint32_t outsize,
@ -749,13 +665,13 @@ Convlevel::main (void)
#endif
return;
}
process (false);
process ();
_done.post ();
}
}
void
Convlevel::process (bool skip)
Convlevel::process ()
{
uint32_t i, i1, j, k, n1, n2, opi1, opi2;
Inpnode const* X;
@ -796,64 +712,57 @@ Convlevel::process (bool skip)
#endif
}
if (skip) {
for (Y = _out_list; Y; Y = Y->_next) {
outd = Y->_buff[opi2];
memset (outd, 0, _parsize * sizeof (float));
}
} else {
for (Y = _out_list; Y; Y = Y->_next) {
memset (_freq_data, 0, (_parsize + 1) * sizeof (fftwf_complex));
for (M = Y->_list; M; M = M->_next) {
X = M->_inpn;
i = _ptind;
for (j = 0; j < _npar; j++) {
ffta = X->_ffta[i];
fftb = M->_link ? M->_link->_fftb[j] : M->_fftb[j];
if (fftb) {
for (Y = _out_list; Y; Y = Y->_next) {
memset (_freq_data, 0, (_parsize + 1) * sizeof (fftwf_complex));
for (M = Y->_list; M; M = M->_next) {
X = M->_inpn;
i = _ptind;
for (j = 0; j < _npar; j++) {
ffta = X->_ffta[i];
fftb = M->_link ? M->_link->_fftb[j] : M->_fftb[j];
if (fftb) {
#ifdef ENABLE_VECTOR_MODE
if (_options & OPT_VECTOR_MODE) {
FV4* A = (FV4*)ffta;
FV4* B = (FV4*)fftb;
FV4* D = (FV4*)_freq_data;
for (k = 0; k < _parsize; k += 4) {
D[0] += A[0] * B[0] - A[1] * B[1];
D[1] += A[0] * B[1] + A[1] * B[0];
A += 2;
B += 2;
D += 2;
}
_freq_data[_parsize][0] += ffta[_parsize][0] * fftb[_parsize][0];
_freq_data[_parsize][1] = 0;
} else
if (_options & OPT_VECTOR_MODE) {
FV4* A = (FV4*)ffta;
FV4* B = (FV4*)fftb;
FV4* D = (FV4*)_freq_data;
for (k = 0; k < _parsize; k += 4) {
D[0] += A[0] * B[0] - A[1] * B[1];
D[1] += A[0] * B[1] + A[1] * B[0];
A += 2;
B += 2;
D += 2;
}
_freq_data[_parsize][0] += ffta[_parsize][0] * fftb[_parsize][0];
_freq_data[_parsize][1] = 0;
} else
#endif
{
for (k = 0; k <= _parsize; k++) {
_freq_data[k][0] += ffta[k][0] * fftb[k][0] - ffta[k][1] * fftb[k][1];
_freq_data[k][1] += ffta[k][0] * fftb[k][1] + ffta[k][1] * fftb[k][0];
}
{
for (k = 0; k <= _parsize; k++) {
_freq_data[k][0] += ffta[k][0] * fftb[k][0] - ffta[k][1] * fftb[k][1];
_freq_data[k][1] += ffta[k][0] * fftb[k][1] + ffta[k][1] * fftb[k][0];
}
}
if (i == 0) {
i = _npar;
}
i--;
}
if (i == 0) {
i = _npar;
}
i--;
}
}
#ifdef ENABLE_VECTOR_MODE
if (_options & OPT_VECTOR_MODE) {
fftswap (_freq_data);
}
#endif
fftwf_execute_dft_c2r (_plan_c2r, _freq_data, _time_data);
outd = Y->_buff[opi1];
for (k = 0; k < _parsize; k++) {
outd[k] += _time_data[k];
}
outd = Y->_buff[opi2];
memcpy (outd, _time_data + _parsize, _parsize * sizeof (float));
if (_options & OPT_VECTOR_MODE) {
fftswap (_freq_data);
}
#endif
fftwf_execute_dft_c2r (_plan_c2r, _freq_data, _time_data);
outd = Y->_buff[opi1];
for (k = 0; k < _parsize; k++) {
outd[k] += _time_data[k];
}
outd = Y->_buff[opi2];
memcpy (outd, _time_data + _parsize, _parsize * sizeof (float));
}
_ptind++;
@ -863,7 +772,7 @@ Convlevel::process (bool skip)
}
int
Convlevel::readout (bool sync, uint32_t skipcnt)
Convlevel::readout ()
{
uint32_t i;
float * p, *q;
@ -874,11 +783,7 @@ Convlevel::readout (bool sync, uint32_t skipcnt)
_outoffs = 0;
if (_stat == ST_PROC) {
while (_wait) {
if (sync) {
_done.wait ();
} else if (_done.trywait ()) {
break;
}
_done.wait ();
_wait--;
}
if (++_opind == 3) {
@ -887,7 +792,7 @@ Convlevel::readout (bool sync, uint32_t skipcnt)
_trig.post ();
_wait++;
} else {
process (skipcnt >= 2 * _parsize);
process ();
if (++_opind == 3) {
_opind = 0;
}

View File

@ -262,11 +262,6 @@ private:
void impdata_clear (uint32_t inp,
uint32_t out);
void impdata_link (uint32_t inp1,
uint32_t out1,
uint32_t inp2,
uint32_t out2);
void reset (uint32_t inpsize,
uint32_t outsize,
float** inpbuff,
@ -274,9 +269,9 @@ private:
void start (int absprio, int policy);
void process (bool sync);
void process ();
int readout (bool sync, uint32_t skipcnt);
int readout ();
void stop (void);
@ -390,36 +385,13 @@ public:
int impdata_clear (uint32_t inp,
uint32_t out);
int impdata_update (uint32_t inp,
uint32_t out,
int32_t step,
float* data,
int32_t ind0,
int32_t ind1);
int impdata_link (uint32_t inp1,
uint32_t out1,
uint32_t inp2,
uint32_t out2);
// Deprecated, use impdata_link() instead.
int impdata_copy (uint32_t inp1,
uint32_t out1,
uint32_t inp2,
uint32_t out2)
{
return impdata_link (inp1, out1, inp2, out2);
}
void set_options (uint32_t options);
void set_skipcnt (uint32_t skipcnt);
int reset (void);
int start_process (int abspri, int policy);
int process (bool sync = false);
int process ();
int stop_process (void);
@ -436,7 +408,6 @@ private:
uint32_t _inpoffs; // current offset in input buffers
uint32_t _outoffs; // current offset in output buffers
uint32_t _options; // option bits
uint32_t _skipcnt; // number of frames to skip
uint32_t _ninp; // number of inputs
uint32_t _nout; // number of outputs
uint32_t _quantum; // processing block size