mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-02-03 09:44:01 -05:00
DSD demod: direct call to AMBE feature handle message method
This commit is contained in:
parent
1d72798d42
commit
713e0299ab
@ -319,13 +319,13 @@ void DSDDemod::applySettings(const DSDDemodSettings& settings, bool force)
|
||||
for (const auto& feature : m_availableAMBEFeatures)
|
||||
{
|
||||
if (feature.m_featureIndex == settings.m_ambeFeatureIndex) {
|
||||
m_basebandSink->setAMBEFeatureMessageQueue(feature.m_feature->getInputMessageQueue());
|
||||
m_basebandSink->setAMBEFeature(feature.m_feature);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_basebandSink->setAMBEFeatureMessageQueue(nullptr);
|
||||
m_basebandSink->setAMBEFeature(nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
@ -880,7 +880,7 @@ void DSDDemod::handleFeatureAdded(int featureSetIndex, Feature *feature)
|
||||
m_availableAMBEFeatures[feature] = DSDDemodSettings::AvailableAMBEFeature{feature->getIndexInFeatureSet(), feature};
|
||||
|
||||
if (m_settings.m_connectAMBE && (m_settings.m_ambeFeatureIndex == feature->getIndexInFeatureSet())) {
|
||||
m_basebandSink->setAMBEFeatureMessageQueue(feature->getInputMessageQueue());
|
||||
m_basebandSink->setAMBEFeature(feature);
|
||||
}
|
||||
|
||||
notifyUpdateAMBEFeatures();
|
||||
@ -898,7 +898,7 @@ void DSDDemod::handleFeatureRemoved(int featureSetIndex, Feature *feature)
|
||||
if (m_settings.m_ambeFeatureIndex == m_availableAMBEFeatures[feature].m_featureIndex)
|
||||
{
|
||||
m_settings.m_connectAMBE = false;
|
||||
m_basebandSink->setAMBEFeatureMessageQueue(nullptr);
|
||||
m_basebandSink->setAMBEFeature(nullptr);
|
||||
}
|
||||
|
||||
m_availableAMBEFeatures.remove(feature);
|
||||
|
@ -29,6 +29,7 @@
|
||||
|
||||
class DownChannelizer;
|
||||
class ChannelAPI;
|
||||
class Feature;
|
||||
|
||||
class DSDDemodBaseband : public QObject
|
||||
{
|
||||
@ -75,7 +76,7 @@ public:
|
||||
void setChannel(ChannelAPI *channel);
|
||||
void setFifoLabel(const QString& label) { m_sampleFifo.setLabel(label); }
|
||||
void setAudioFifoLabel(const QString& label) { m_sink.setAudioFifoLabel(label); }
|
||||
void setAMBEFeatureMessageQueue(MessageQueue *ambeFeatureMessageQueue) { m_sink.setAmbeFeatureMessageQueue(ambeFeatureMessageQueue); }
|
||||
void setAMBEFeature(Feature *ambeFeature) { m_sink.setAmbeFeature(ambeFeature); }
|
||||
|
||||
private:
|
||||
SampleSinkFifo m_sampleFifo;
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include "dsp/basebandsamplesink.h"
|
||||
#include "dsp/datafifo.h"
|
||||
#include "dsp/dspcommands.h"
|
||||
#include "feature/feature.h"
|
||||
#include "audio/audiooutputdevice.h"
|
||||
#include "util/db.h"
|
||||
#include "util/messagequeue.h"
|
||||
@ -45,7 +46,7 @@
|
||||
DSDDemodSink::DSDDemodSink() :
|
||||
m_channelSampleRate(48000),
|
||||
m_channelFrequencyOffset(0),
|
||||
m_ambeFeatureMessageQueue(nullptr),
|
||||
m_ambeFeature(nullptr),
|
||||
m_audioSampleRate(48000),
|
||||
m_interpolatorDistance(0.0f),
|
||||
m_interpolatorDistanceRemain(0.0f),
|
||||
@ -232,31 +233,23 @@ void DSDDemodSink::feed(const SampleVector::const_iterator& begin, const SampleV
|
||||
}
|
||||
|
||||
// if (DSPEngine::instance()->hasDVSerialSupport())
|
||||
if (m_ambeFeatureMessageQueue)
|
||||
if (m_ambeFeature)
|
||||
{
|
||||
if ((m_settings.m_slot1On) && m_dsdDecoder.mbeDVReady1())
|
||||
{
|
||||
if (!m_settings.m_audioMute)
|
||||
{
|
||||
m_ambeFeatureMessageQueue->push(
|
||||
new DSPPushMbeFrame(
|
||||
m_dsdDecoder.getMbeDVFrame1(),
|
||||
m_dsdDecoder.getMbeRateIndex(),
|
||||
m_settings.m_volume * 10.0,
|
||||
m_settings.m_tdmaStereo ? 1 : 3, // left or both channels
|
||||
m_settings.m_highPassFilter,
|
||||
m_audioSampleRate/8000, // upsample from native 8k
|
||||
&m_audioFifo1
|
||||
)
|
||||
DSPPushMbeFrame *msg = new DSPPushMbeFrame(
|
||||
m_dsdDecoder.getMbeDVFrame1(),
|
||||
m_dsdDecoder.getMbeRateIndex(),
|
||||
m_settings.m_volume * 10.0,
|
||||
m_settings.m_tdmaStereo ? 1 : 3, // left or both channels
|
||||
m_settings.m_highPassFilter,
|
||||
m_audioSampleRate/8000, // upsample from native 8k
|
||||
&m_audioFifo1
|
||||
);
|
||||
// DSPEngine::instance()->pushMbeFrame(
|
||||
// m_dsdDecoder.getMbeDVFrame1(),
|
||||
// m_dsdDecoder.getMbeRateIndex(),
|
||||
// m_settings.m_volume * 10.0,
|
||||
// m_settings.m_tdmaStereo ? 1 : 3, // left or both channels
|
||||
// m_settings.m_highPassFilter,
|
||||
// m_audioSampleRate/8000, // upsample from native 8k
|
||||
// &m_audioFifo1);
|
||||
m_ambeFeature->handleMessage(*msg);
|
||||
delete msg;
|
||||
}
|
||||
|
||||
m_dsdDecoder.resetMbeDV1();
|
||||
@ -266,25 +259,17 @@ void DSDDemodSink::feed(const SampleVector::const_iterator& begin, const SampleV
|
||||
{
|
||||
if (!m_settings.m_audioMute)
|
||||
{
|
||||
m_ambeFeatureMessageQueue->push(
|
||||
new DSPPushMbeFrame(
|
||||
m_dsdDecoder.getMbeDVFrame2(),
|
||||
m_dsdDecoder.getMbeRateIndex(),
|
||||
m_settings.m_volume * 10.0,
|
||||
m_settings.m_tdmaStereo ? 2 : 3, // right or both channels
|
||||
m_settings.m_highPassFilter,
|
||||
m_audioSampleRate/8000, // upsample from native 8k
|
||||
&m_audioFifo2
|
||||
)
|
||||
DSPPushMbeFrame *msg = new DSPPushMbeFrame(
|
||||
m_dsdDecoder.getMbeDVFrame2(),
|
||||
m_dsdDecoder.getMbeRateIndex(),
|
||||
m_settings.m_volume * 10.0,
|
||||
m_settings.m_tdmaStereo ? 2 : 3, // right or both channels
|
||||
m_settings.m_highPassFilter,
|
||||
m_audioSampleRate/8000, // upsample from native 8k
|
||||
&m_audioFifo2
|
||||
);
|
||||
// DSPEngine::instance()->pushMbeFrame(
|
||||
// m_dsdDecoder.getMbeDVFrame2(),
|
||||
// m_dsdDecoder.getMbeRateIndex(),
|
||||
// m_settings.m_volume * 10.0,
|
||||
// m_settings.m_tdmaStereo ? 2 : 3, // right or both channels
|
||||
// m_settings.m_highPassFilter,
|
||||
// m_audioSampleRate/8000, // upsample from native 8k
|
||||
// &m_audioFifo2);
|
||||
m_ambeFeature->handleMessage(*msg);
|
||||
delete msg;
|
||||
}
|
||||
|
||||
m_dsdDecoder.resetMbeDV2();
|
||||
@ -295,7 +280,7 @@ void DSDDemodSink::feed(const SampleVector::const_iterator& begin, const SampleV
|
||||
}
|
||||
}
|
||||
|
||||
if (!m_ambeFeatureMessageQueue)
|
||||
if (!m_ambeFeature)
|
||||
// if (!DSPEngine::instance()->hasDVSerialSupport())
|
||||
{
|
||||
if (m_settings.m_slot1On)
|
||||
|
@ -36,6 +36,7 @@
|
||||
|
||||
class BasebandSampleSink;
|
||||
class ChannelAPI;
|
||||
class Feature;
|
||||
|
||||
class DSDDemodSink : public ChannelSampleSink {
|
||||
public:
|
||||
@ -83,7 +84,7 @@ public:
|
||||
}
|
||||
|
||||
const char *updateAndGetStatusText();
|
||||
void setAmbeFeatureMessageQueue(MessageQueue *queue) { m_ambeFeatureMessageQueue = queue; }
|
||||
void setAmbeFeature(Feature *feature) { m_ambeFeature = feature; }
|
||||
|
||||
private:
|
||||
struct MagSqLevelsStore
|
||||
@ -115,7 +116,7 @@ private:
|
||||
int m_channelFrequencyOffset;
|
||||
DSDDemodSettings m_settings;
|
||||
ChannelAPI *m_channel;
|
||||
MessageQueue *m_ambeFeatureMessageQueue;
|
||||
Feature *m_ambeFeature;
|
||||
int m_audioSampleRate;
|
||||
QVector<qint16> m_demodBuffer;
|
||||
int m_demodBufferFill;
|
||||
|
Loading…
Reference in New Issue
Block a user