mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-09-02 13:17:48 -04:00
ATV Modulator: implement SSB filter
This commit is contained in:
parent
abd463d374
commit
fe66703954
@ -39,6 +39,7 @@ const float ATVMod::m_spanLevel = 0.7f;
|
|||||||
const int ATVMod::m_levelNbSamples = 10000; // every 10ms
|
const int ATVMod::m_levelNbSamples = 10000; // every 10ms
|
||||||
const int ATVMod::m_nbBars = 6;
|
const int ATVMod::m_nbBars = 6;
|
||||||
const int ATVMod::m_cameraFPSTestNbFrames = 100;
|
const int ATVMod::m_cameraFPSTestNbFrames = 100;
|
||||||
|
const int ATVMod::m_ssbFftLen = 1024;
|
||||||
|
|
||||||
ATVMod::ATVMod() :
|
ATVMod::ATVMod() :
|
||||||
m_modPhasor(0.0f),
|
m_modPhasor(0.0f),
|
||||||
@ -54,7 +55,9 @@ ATVMod::ATVMod() :
|
|||||||
m_videoEOF(false),
|
m_videoEOF(false),
|
||||||
m_videoOK(false),
|
m_videoOK(false),
|
||||||
m_cameraIndex(-1),
|
m_cameraIndex(-1),
|
||||||
m_showOverlayText(false)
|
m_showOverlayText(false),
|
||||||
|
m_SSBFilter(0),
|
||||||
|
m_SSBFilterBuffer(0)
|
||||||
{
|
{
|
||||||
setObjectName("ATVMod");
|
setObjectName("ATVMod");
|
||||||
scanCameras();
|
scanCameras();
|
||||||
@ -65,6 +68,10 @@ ATVMod::ATVMod() :
|
|||||||
m_config.m_atvModInput = ATVModInputHBars;
|
m_config.m_atvModInput = ATVModInputHBars;
|
||||||
m_config.m_atvStd = ATVStdPAL625;
|
m_config.m_atvStd = ATVStdPAL625;
|
||||||
|
|
||||||
|
m_SSBFilter = new fftfilt(0, m_config.m_rfBandwidth / m_config.m_outputSampleRate, m_ssbFftLen);
|
||||||
|
m_SSBFilterBuffer = new Complex[m_ssbFftLen>>1]; // filter returns data exactly half of its size
|
||||||
|
memset(m_SSBFilterBuffer, 0, sizeof(Complex)*(m_ssbFftLen>>1));
|
||||||
|
|
||||||
applyStandard();
|
applyStandard();
|
||||||
|
|
||||||
m_interpolatorDistanceRemain = 0.0f;
|
m_interpolatorDistanceRemain = 0.0f;
|
||||||
@ -583,6 +590,10 @@ void ATVMod::apply(bool force)
|
|||||||
m_tvSampleRate = m_config.m_outputSampleRate;
|
m_tvSampleRate = m_config.m_outputSampleRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_SSBFilter->create_filter(0, m_config.m_rfBandwidth / m_config.m_outputSampleRate);
|
||||||
|
memset(m_SSBFilterBuffer, 0, sizeof(Complex)*(m_ssbFftLen>>1));
|
||||||
|
m_SSBFilterBufferIndex = 0;
|
||||||
|
|
||||||
applyStandard(); // set all timings
|
applyStandard(); // set all timings
|
||||||
m_settingsMutex.unlock();
|
m_settingsMutex.unlock();
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "dsp/nco.h"
|
#include "dsp/nco.h"
|
||||||
#include "dsp/interpolator.h"
|
#include "dsp/interpolator.h"
|
||||||
#include "dsp/movingaverage.h"
|
#include "dsp/movingaverage.h"
|
||||||
|
#include "dsp/fftfilt.h"
|
||||||
#include "util/message.h"
|
#include "util/message.h"
|
||||||
|
|
||||||
class ATVMod : public BasebandSampleSource {
|
class ATVMod : public BasebandSampleSource {
|
||||||
@ -530,6 +531,11 @@ private:
|
|||||||
std::string m_overlayText;
|
std::string m_overlayText;
|
||||||
bool m_showOverlayText;
|
bool m_showOverlayText;
|
||||||
|
|
||||||
|
fftfilt* m_SSBFilter;
|
||||||
|
Complex* m_SSBFilterBuffer;
|
||||||
|
int m_SSBFilterBufferIndex;
|
||||||
|
static const int m_ssbFftLen;
|
||||||
|
|
||||||
static const float m_blackLevel;
|
static const float m_blackLevel;
|
||||||
static const float m_spanLevel;
|
static const float m_spanLevel;
|
||||||
static const int m_levelNbSamples;
|
static const int m_levelNbSamples;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user