SSB demod: experimental clipping limiter

This commit is contained in:
f4exb 2018-05-21 14:43:11 +02:00
parent aaeec634fe
commit c71f1fdc3a
1 changed files with 14 additions and 2 deletions

View File

@ -105,12 +105,24 @@ double MagAGC::feedAndGetValue(const Complex& ci)
if (m_squared)
{
double u0 = m_R / m_moving_average.average();
m_u0 = (u0 * m_magsq > m_clampMax) ? m_clampMax / m_magsq : u0;
double du = (u0*m_magsq) - (m_clampMax/2.0);
if (du > 0) {
m_u0 = (m_clampMax/2.0)*(1.0 + (log10(1+du)/4.0)); // experimental clipping limiter
} else {
m_u0 = u0;
}
//m_u0 = (u0 * m_magsq > m_clampMax) ? m_clampMax / m_magsq : u0;
}
else
{
double u02 = m_R2 / m_moving_average.average();
m_u0 = (u02 * m_magsq > m_clampMax) ? sqrt(m_clampMax / m_magsq) : sqrt(u02);
double du = (u02*m_magsq) - (m_clampMax/2.0);
if (du > 0) {
m_u0 = (m_clampMax/2.0)*(1.0 + (log10(1+du)/4.0)); // experimental clipping limiter
} else {
m_u0 = sqrt(u02);
}
//m_u0 = (u02 * m_magsq > m_clampMax) ? sqrt(m_clampMax / m_magsq) : sqrt(u02);
}
}
else