Tx ph.2: fixed core dump in AM modulator by properly locking the settings mutex in the pull method

pull/27/head
f4exb 2016-10-30 20:57:27 +01:00
rodzic 91315913b4
commit 34bf0c4c61
1 zmienionych plików z 3 dodań i 19 usunięć

Wyświetl plik

@ -65,25 +65,7 @@ void AMMod::pull(Sample& sample)
{
Complex ci;
// Resampler used for interpolation only
// m_interpolator.resample(&m_interpolatorDistanceRemain, m_modSample, &m_interpolatorConsumed, &ci);
// m_interpolatorDistanceRemain += m_interpolatorDistance;
//
// if (m_interpolatorConsumed)
// {
// Real t = m_toneNco.next();
// m_modSample.real(((t+1.0f) * m_running.m_modFactor * 16384.0f)); // modulate and scale zero frequency carrier
// m_modSample.imag(0.0f);
// m_interpolatorConsumed = false;
// }
// Specialized interpolator
// if (m_interpolator.interpolate(&m_interpolatorDistanceRemain, m_modSample, &ci))
// {
// Real t = m_toneNco.next();
// m_modSample.real(((t+1.0f) * m_running.m_modFactor * 16384.0f)); // modulate and scale zero frequency carrier
// m_modSample.imag(0.0f);
// }
m_settingsMutex.lock();
if (m_interpolatorDistance > 1.0f) // decimate
{
@ -112,6 +94,8 @@ void AMMod::pull(Sample& sample)
ci *= m_carrierNco.nextIQ(); // shift to carrier frequency
m_settingsMutex.unlock();
Real magsq = ci.real() * ci.real() + ci.imag() * ci.imag();
magsq /= (1<<30);
m_movingAverage.feed(magsq);