mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-05-24 03:02:29 -04:00
APT demod: save image in image worker
This commit is contained in:
parent
aac8f6fe2c
commit
6b106f21ad
@ -651,20 +651,26 @@ int APTDemod::webapiActionsPost(
|
|||||||
{
|
{
|
||||||
SWGSDRangel::SWGAPTDemodActions_los* los = swgAPTDemodActions->getLos();
|
SWGSDRangel::SWGAPTDemodActions_los* los = swgAPTDemodActions->getLos();
|
||||||
QString *satelliteName = los->getSatelliteName();
|
QString *satelliteName = los->getSatelliteName();
|
||||||
|
|
||||||
if (satelliteName != nullptr)
|
if (satelliteName != nullptr)
|
||||||
{
|
{
|
||||||
if (matchSatellite(*satelliteName))
|
if (matchSatellite(*satelliteName))
|
||||||
{
|
{
|
||||||
// Save image
|
// Save image
|
||||||
if (m_settings.m_autoSave)
|
if (m_settings.m_autoSave)
|
||||||
saveImageToDisk();
|
{
|
||||||
|
APTDemodImageWorker::MsgSaveImageToDisk *msg = APTDemodImageWorker::MsgSaveImageToDisk::create();
|
||||||
|
m_imageWorker->getInputMessageQueue()->push(msg);
|
||||||
|
}
|
||||||
// Disable decoder
|
// Disable decoder
|
||||||
APTDemodSettings settings = m_settings;
|
APTDemodSettings settings = m_settings;
|
||||||
settings.m_decodeEnabled = false;
|
settings.m_decodeEnabled = false;
|
||||||
m_inputMessageQueue.push(MsgConfigureAPTDemod::create(settings, false));
|
m_inputMessageQueue.push(MsgConfigureAPTDemod::create(settings, false));
|
||||||
if (m_guiMessageQueue)
|
|
||||||
|
if (m_guiMessageQueue) {
|
||||||
m_guiMessageQueue->push(MsgConfigureAPTDemod::create(settings, false));
|
m_guiMessageQueue->push(MsgConfigureAPTDemod::create(settings, false));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 202;
|
return 202;
|
||||||
}
|
}
|
||||||
|
@ -18,10 +18,14 @@
|
|||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
#include <QTime>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
#include "aptdemod.h"
|
#include "aptdemod.h"
|
||||||
#include "aptdemodimageworker.h"
|
#include "aptdemodimageworker.h"
|
||||||
|
|
||||||
MESSAGE_CLASS_DEFINITION(APTDemodImageWorker::MsgConfigureAPTDemodImageWorker, Message)
|
MESSAGE_CLASS_DEFINITION(APTDemodImageWorker::MsgConfigureAPTDemodImageWorker, Message)
|
||||||
|
MESSAGE_CLASS_DEFINITION(APTDemodImageWorker::MsgSaveImageToDisk, Message)
|
||||||
|
|
||||||
APTDemodImageWorker::APTDemodImageWorker() :
|
APTDemodImageWorker::APTDemodImageWorker() :
|
||||||
m_messageQueueToGUI(nullptr),
|
m_messageQueueToGUI(nullptr),
|
||||||
@ -90,6 +94,11 @@ bool APTDemodImageWorker::handleMessage(const Message& cmd)
|
|||||||
applySettings(cfg.getSettings(), cfg.getForce());
|
applySettings(cfg.getSettings(), cfg.getForce());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else if (MsgSaveImageToDisk::match(cmd))
|
||||||
|
{
|
||||||
|
saveImageToDisk();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
else if (APTDemod::MsgPixels::match(cmd))
|
else if (APTDemod::MsgPixels::match(cmd))
|
||||||
{
|
{
|
||||||
QMutexLocker mutexLocker(&m_mutex);
|
QMutexLocker mutexLocker(&m_mutex);
|
||||||
@ -259,6 +268,32 @@ QImage APTDemodImageWorker::extractImage(QImage image)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void APTDemodImageWorker::saveImageToDisk()
|
||||||
|
{
|
||||||
|
QStringList imageTypes;
|
||||||
|
QImage image = processImage(imageTypes);
|
||||||
|
|
||||||
|
if (image.height() >= m_settings.m_autoSaveMinScanLines)
|
||||||
|
{
|
||||||
|
QString filename;
|
||||||
|
QDateTime datetime = QDateTime::currentDateTime();
|
||||||
|
filename = QString("apt_%1_%2.png").arg(m_satelliteName).arg(datetime.toString("yyyyMMdd_hhmm"));
|
||||||
|
|
||||||
|
if (!m_settings.m_autoSavePath.isEmpty())
|
||||||
|
{
|
||||||
|
if (m_settings.m_autoSavePath.endsWith('/')) {
|
||||||
|
filename = m_settings.m_autoSavePath + filename;
|
||||||
|
} else {
|
||||||
|
filename = m_settings.m_autoSavePath + '/' + filename;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!image.save(filename)) {
|
||||||
|
qCritical() << "Failed to save APT image to: " << filename;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void APTDemodImageWorker::copyImage(apt_image_t *dst, apt_image_t *src)
|
void APTDemodImageWorker::copyImage(apt_image_t *dst, apt_image_t *src)
|
||||||
{
|
{
|
||||||
dst->nrow = src->nrow;
|
dst->nrow = src->nrow;
|
||||||
|
@ -57,6 +57,23 @@ public:
|
|||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MsgSaveImageToDisk : public Message {
|
||||||
|
MESSAGE_CLASS_DECLARATION
|
||||||
|
|
||||||
|
public:
|
||||||
|
static MsgSaveImageToDisk* create()
|
||||||
|
{
|
||||||
|
return new MsgSaveImageToDisk();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
MsgSaveImageToDisk() :
|
||||||
|
Message()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
APTDemodImageWorker();
|
APTDemodImageWorker();
|
||||||
~APTDemodImageWorker();
|
~APTDemodImageWorker();
|
||||||
void reset();
|
void reset();
|
||||||
@ -87,6 +104,7 @@ private:
|
|||||||
void resetDecoder();
|
void resetDecoder();
|
||||||
void processPixels(const float *pixels);
|
void processPixels(const float *pixels);
|
||||||
void sendImageToGUI();
|
void sendImageToGUI();
|
||||||
|
void saveImageToDisk();
|
||||||
QImage processImage(QStringList& imageTypes);
|
QImage processImage(QStringList& imageTypes);
|
||||||
QImage extractImage(QImage image);
|
QImage extractImage(QImage image);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user