- fractional interpolation working

git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@973 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2022-06-15 06:10:40 +00:00
parent 100e2fe289
commit 115dd77221
+23 -12
View File
@@ -73,20 +73,29 @@ public:
bool process_new(RealScalar dmu)
{
while(true)
{
radio_float_t mu = m_interpolator.getMu();
size_t adv = m_interpolator.getAdv();
if (m_bufferIn.len() < adv)
{
std::cout << "----- SKIP -----" << std::endl;
break;
}
if (adv)
#if 0
while(m_bufferIn.len())
{
ComplexScalar xout;
m_bufferIn.consume(adv);
m_bufferIn.consume(1);
m_bufferIn.read(&xout, 1, false);
m_bufferOut.write(&xout, 1);
std::cout << "xout: " << xout << std::endl;
};
std::cout << "----- SKIP -----" << std::endl;
#else
while(true)
{
size_t adv = m_interpolator.getAdv();
radio_float_t mu = m_interpolator.getMu();
if (adv)
{
if (m_bufferIn.len() < adv)
{
break;
}
ComplexScalar xout = m_bufferIn.readAt(adv-1);
FirComplex::feed(xout);
// Partial filter responses
@@ -95,13 +104,15 @@ public:
m_h[i] = FirComplex::processReal(column(m_coeff, i));
}
}
m_interpolator.process(dmu);
// Combine
ComplexScalar yout = horner(mu);
m_bufferOut.write(&yout, 1);
m_interpolator.process(dmu);
}
#endif
return true;
}