Skip to content

Commit 6a74ded

Browse files
committed
Synchronize interface to FlatBuffers HDR real state when no USB grabbers are present
1 parent eddb2b4 commit 6a74ded

File tree

4 files changed

+42
-12
lines changed

4 files changed

+42
-12
lines changed

Diff for: include/flatbufserver/FlatBufferServer.h

+8-4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class FlatBufferServer : public QObject
3131

3232
signals:
3333
void hdrToneMappingChanged(int mode, uint8_t* lutBuffer);
34+
void HdrChanged(int mode);
3435

3536
public slots:
3637
///
@@ -44,6 +45,8 @@ public slots:
4445

4546
void setHdrToneMappingEnabled(int mode);
4647

48+
int getHdrToneMappingEnabled();
49+
4750
private slots:
4851
///
4952
/// @brief Is called whenever a new socket wants to connect
@@ -94,8 +97,9 @@ private slots:
9497
QVector<FlatBufferClient*> _openConnections;
9598

9699
// tone mapping
97-
int _hdrToneMappingMode;
98-
uint8_t* _lutBuffer;
99-
bool _lutBufferInit;
100-
QString _configurationPath;
100+
int _hdrToneMappingMode;
101+
int _realHdrToneMappingMode;
102+
uint8_t* _lutBuffer;
103+
bool _lutBufferInit;
104+
QString _configurationPath;
101105
};

Diff for: sources/api/JsonAPI.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646
// auth manager
4747
#include <base/AuthManager.h>
4848

49+
#include <flatbufserver/FlatBufferServer.h>
50+
4951
using namespace hyperhdr;
5052

5153
JsonAPI::JsonAPI(QString peerAddress, Logger* log, bool localConnection, QObject* parent, bool noListener)
@@ -562,7 +564,10 @@ void JsonAPI::handleServerInfoCommand(const QJsonObject& message, const QString&
562564
}
563565
else
564566
{
565-
info["videomodehdr"] = 0;
567+
if (FlatBufferServer::getInstance() != nullptr)
568+
info["videomodehdr"] = FlatBufferServer::getInstance()->getHdrToneMappingEnabled();
569+
else
570+
info["videomodehdr"] = 0;
566571
}
567572

568573
// get available components

Diff for: sources/api/JsonCB.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
// Image to led map helper
3333
#include <base/ImageProcessor.h>
3434

35+
#include <flatbufserver/FlatBufferServer.h>
36+
3537
using namespace hyperhdr;
3638

3739
JsonCB::JsonCB(QObject* parent)
@@ -126,6 +128,14 @@ bool JsonCB::subscribeFor(const QString& type, bool unsubscribe)
126128
connect(GrabberWrapper::instance, &GrabberWrapper::HdrChanged, this, &JsonCB::handleVideoModeHdrChange, Qt::UniqueConnection);
127129
}
128130

131+
if (type == "videomodehdr-update" && GrabberWrapper::instance == nullptr && FlatBufferServer::instance != nullptr)
132+
{
133+
if (unsubscribe)
134+
disconnect(FlatBufferServer::instance, &FlatBufferServer::HdrChanged, this, &JsonCB::handleVideoModeHdrChange);
135+
else
136+
connect(FlatBufferServer::instance, &FlatBufferServer::HdrChanged, this, &JsonCB::handleVideoModeHdrChange, Qt::UniqueConnection);
137+
}
138+
129139
if (type == "effects-update")
130140
{
131141
if (unsubscribe)

Diff for: sources/flatbufserver/FlatBufferServer.cpp

+18-7
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ FlatBufferServer::FlatBufferServer(const QJsonDocument& config, const QString& c
3232
, _log(Logger::getInstance("FLATBUFSERVER"))
3333
, _timeout(5000)
3434
, _config(config)
35-
, _hdrToneMappingMode(false)
35+
, _hdrToneMappingMode(0)
36+
, _realHdrToneMappingMode(0)
3637
, _lutBuffer(nullptr)
3738
, _lutBufferInit(false)
3839
, _configurationPath(configurationPath)
@@ -71,13 +72,27 @@ void FlatBufferServer::initServer()
7172

7273
void FlatBufferServer::setHdrToneMappingEnabled(int mode)
7374
{
74-
bool status = _hdrToneMappingMode && mode;
75+
bool status = (_hdrToneMappingMode != 0) && (mode != 0);
7576

7677
if (status)
7778
loadLutFile();
7879

80+
_realHdrToneMappingMode = (_lutBufferInit && status) ? mode : 0;
81+
7982
// inform clients
80-
emit hdrToneMappingChanged((_lutBufferInit && status)?mode :0, _lutBuffer);
83+
emit hdrToneMappingChanged(_realHdrToneMappingMode, _lutBuffer);
84+
85+
86+
#if !defined(ENABLE_MF) && !defined(ENABLE_AVF) && !defined(ENABLE_V4L2)
87+
emit HdrChanged(_realHdrToneMappingMode);
88+
emit HyperHdrIManager::getInstance()->setNewComponentStateToAllInstances(hyperhdr::Components::COMP_HDR, (_realHdrToneMappingMode != 0));
89+
#endif
90+
91+
}
92+
93+
int FlatBufferServer::getHdrToneMappingEnabled()
94+
{
95+
return _realHdrToneMappingMode;
8196
}
8297

8398
void FlatBufferServer::handleSettingsUpdate(settings::type type, const QJsonDocument& config)
@@ -100,10 +115,6 @@ void FlatBufferServer::handleSettingsUpdate(settings::type type, const QJsonDocu
100115

101116
setHdrToneMappingEnabled(_hdrToneMappingMode);
102117

103-
#if !defined(ENABLE_MF) && !defined(ENABLE_AVF) && !defined(ENABLE_V4L2)
104-
emit HyperHdrIManager::getInstance()->setNewComponentStateToAllInstances(hyperhdr::Components::COMP_HDR, (_hdrToneMappingMode != 0));
105-
#endif
106-
107118
// new timeout just for new connections
108119
_timeout = obj["timeout"].toInt(5000);
109120
// enable check

0 commit comments

Comments
 (0)