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