mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2025-07-04 18:55:16 -04:00
Disable stereo @ <100khz to prevent invalid filters
This commit is contained in:
parent
25dc28d350
commit
95ff1e9c36
@ -57,9 +57,13 @@ void DemodulatorPreThread::initialize() {
|
|||||||
firStereoRight = firfilt_rrrf_create(h, h_len);
|
firStereoRight = firfilt_rrrf_create(h, h_len);
|
||||||
|
|
||||||
// stereo pilot filter
|
// stereo pilot filter
|
||||||
|
float bw = params.bandwidth;
|
||||||
|
if (bw < 100000.0) {
|
||||||
|
bw = 100000.0;
|
||||||
|
}
|
||||||
unsigned int order = 5; // filter order
|
unsigned int order = 5; // filter order
|
||||||
float f0 = ((double) 19000 / (double) params.bandwidth);
|
float f0 = ((double) 19000 / bw);
|
||||||
float fc = ((double) 19500 / (double) params.bandwidth);
|
float fc = ((double) 19500 / bw);
|
||||||
float Ap = 1.0f;
|
float Ap = 1.0f;
|
||||||
As = 60.0f;
|
As = 60.0f;
|
||||||
iirStereoPilot = iirfilt_crcf_create_prototype(LIQUID_IIRDES_CHEBY2, LIQUID_IIRDES_BANDPASS, LIQUID_IIRDES_SOS, order, fc, f0, Ap, As);
|
iirStereoPilot = iirfilt_crcf_create_prototype(LIQUID_IIRDES_CHEBY2, LIQUID_IIRDES_BANDPASS, LIQUID_IIRDES_SOS, order, fc, f0, Ap, As);
|
||||||
|
@ -117,6 +117,7 @@ void DemodulatorThread::threadMain() {
|
|||||||
ampmodem_reset(demodAM);
|
ampmodem_reset(demodAM);
|
||||||
}
|
}
|
||||||
freqdem_reset(demodFM);
|
freqdem_reset(demodFM);
|
||||||
|
nco_crcf_reset(stereoPilot);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (firStereoLeft != inp->firStereoLeft) {
|
if (firStereoLeft != inp->firStereoLeft) {
|
||||||
@ -223,7 +224,7 @@ void DemodulatorThread::threadMain() {
|
|||||||
unsigned int numAudioWritten;
|
unsigned int numAudioWritten;
|
||||||
msresamp_rrrf_execute(audioResampler, &demodOutputData[0], bufSize, &resampledOutputData[0], &numAudioWritten);
|
msresamp_rrrf_execute(audioResampler, &demodOutputData[0], bufSize, &resampledOutputData[0], &numAudioWritten);
|
||||||
|
|
||||||
if (stereo) {
|
if (stereo && inp->sampleRate >= 100000) {
|
||||||
if (demodStereoData.size() != bufSize) {
|
if (demodStereoData.size() != bufSize) {
|
||||||
if (demodStereoData.capacity() < bufSize) {
|
if (demodStereoData.capacity() < bufSize) {
|
||||||
demodStereoData.reserve(bufSize);
|
demodStereoData.reserve(bufSize);
|
||||||
@ -302,7 +303,7 @@ void DemodulatorThread::threadMain() {
|
|||||||
ati->sampleRate = audioSampleRate;
|
ati->sampleRate = audioSampleRate;
|
||||||
ati->setRefCount(1);
|
ati->setRefCount(1);
|
||||||
|
|
||||||
if (stereo) {
|
if (stereo && inp->sampleRate >= 100000) {
|
||||||
ati->channels = 2;
|
ati->channels = 2;
|
||||||
if (ati->data.capacity() < (numAudioWritten * 2)) {
|
if (ati->data.capacity() < (numAudioWritten * 2)) {
|
||||||
ati->data.reserve(numAudioWritten * 2);
|
ati->data.reserve(numAudioWritten * 2);
|
||||||
@ -343,7 +344,7 @@ void DemodulatorThread::threadMain() {
|
|||||||
ati_vis->busy_update.lock();
|
ati_vis->busy_update.lock();
|
||||||
|
|
||||||
int num_vis = DEMOD_VIS_SIZE;
|
int num_vis = DEMOD_VIS_SIZE;
|
||||||
if (stereo) {
|
if (stereo && inp->sampleRate >= 100000) {
|
||||||
ati_vis->channels = 2;
|
ati_vis->channels = 2;
|
||||||
int stereoSize = ati->data.size();
|
int stereoSize = ati->data.size();
|
||||||
if (stereoSize > DEMOD_VIS_SIZE) {
|
if (stereoSize > DEMOD_VIS_SIZE) {
|
||||||
|
@ -70,10 +70,14 @@ void DemodulatorWorkerThread::threadMain() {
|
|||||||
result.firStereoLeft = firfilt_rrrf_create(h, h_len);
|
result.firStereoLeft = firfilt_rrrf_create(h, h_len);
|
||||||
result.firStereoRight = firfilt_rrrf_create(h, h_len);
|
result.firStereoRight = firfilt_rrrf_create(h, h_len);
|
||||||
|
|
||||||
|
float bw = filterCommand.bandwidth;
|
||||||
|
if (bw < 100000.0) {
|
||||||
|
bw = 100000.0;
|
||||||
|
}
|
||||||
// stereo pilot filter
|
// stereo pilot filter
|
||||||
unsigned int order = 5; // filter order
|
unsigned int order = 5; // filter order
|
||||||
float f0 = ((double) 19000 / (double) filterCommand.bandwidth);
|
float f0 = ((double) 19000 / bw);
|
||||||
float fc = ((double) 19500 / (double) filterCommand.bandwidth);
|
float fc = ((double) 19500 / bw);
|
||||||
float Ap = 1.0f;
|
float Ap = 1.0f;
|
||||||
As = 60.0f;
|
As = 60.0f;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user