mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
Various Cleanups (#1075)
* LedDevice - Address clang findings * Fix Windows Warnings * Ensure newInput is initialised * Clean-up unused elements for Plaform Capture * Fix initialization problem and spellings * Address clang findings and spelling corrections * LedDevice clean-ups * Cleanups * Align that getLedCount is int * Have "display" as default for Grabbers * Fix config during start-up for missing elements * Framegrabber Clean-up - Remove non supported grabbers from selection, filter valid options * Typo * Framegrabber.json - Fix property numbering * Preselect active Grabbertype * Sort Grabbernames * Align options with selected element * Fix deletion of pointer to incomplete type 'BonjourBrowserWrapper' * Address macOS compile warnings * Have default layout = 1 LED only to avoid errors as in #673 * Address lgtm findings * Address finding that params passed to LedDevice discovery were not considered * Cleanups after merging with latest master * Update Changelog * Address lgtm findings * Fix comment * Test Fix * Fix Python Warning * Handle Dummy Device assignment correctly * Address delete called on non-final 'commandline::Option' that has virtual functions but non-virtual destructor * Correct that QTimer.start accepts only int * Have Release Python GIL & reset threat state chnage downward compatible * Correct format specifier * LedDevice - add assertions * Readonly DB - Fix merge issue * Smoothing - Fix wrong defaults * LedDevice - correct assertion * Show smoothing config set# in debug and related values. * Suppress error on windows, if default file is "/dev/null" * CMAKE - Allow to define QT_BASE_DIR dynamically via environment-variable * Ignore Visual Studio specific files Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
This commit is contained in:
@@ -61,30 +61,30 @@
|
||||
|
||||
HyperionDaemon *HyperionDaemon::daemon = nullptr;
|
||||
|
||||
HyperionDaemon::HyperionDaemon(const QString rootPath, QObject *parent, bool logLvlOverwrite, bool readonlyMode)
|
||||
: QObject(parent), _log(Logger::getInstance("DAEMON"))
|
||||
, _instanceManager(new HyperionIManager(rootPath, this, readonlyMode))
|
||||
, _authManager(new AuthManager(this, readonlyMode))
|
||||
HyperionDaemon::HyperionDaemon(const QString& rootPath, QObject* parent, bool logLvlOverwrite, bool readonlyMode)
|
||||
: QObject(parent), _log(Logger::getInstance("DAEMON"))
|
||||
, _instanceManager(new HyperionIManager(rootPath, this, readonlyMode))
|
||||
, _authManager(new AuthManager(this, readonlyMode))
|
||||
#ifdef ENABLE_AVAHI
|
||||
, _bonjourBrowserWrapper(new BonjourBrowserWrapper())
|
||||
, _bonjourBrowserWrapper(new BonjourBrowserWrapper())
|
||||
#endif
|
||||
, _netOrigin(new NetOrigin(this))
|
||||
, _pyInit(new PythonInit())
|
||||
, _webserver(nullptr)
|
||||
, _sslWebserver(nullptr)
|
||||
, _jsonServer(nullptr)
|
||||
, _v4l2Grabber(nullptr)
|
||||
, _dispmanx(nullptr)
|
||||
, _x11Grabber(nullptr)
|
||||
, _xcbGrabber(nullptr)
|
||||
, _amlGrabber(nullptr)
|
||||
, _fbGrabber(nullptr)
|
||||
, _osxGrabber(nullptr)
|
||||
, _qtGrabber(nullptr)
|
||||
, _dxGrabber(nullptr)
|
||||
, _ssdp(nullptr)
|
||||
, _cecHandler(nullptr)
|
||||
, _currVideoMode(VideoMode::VIDEO_2D)
|
||||
, _netOrigin(new NetOrigin(this))
|
||||
, _pyInit(new PythonInit())
|
||||
, _webserver(nullptr)
|
||||
, _sslWebserver(nullptr)
|
||||
, _jsonServer(nullptr)
|
||||
, _v4l2Grabber(nullptr)
|
||||
, _dispmanx(nullptr)
|
||||
, _x11Grabber(nullptr)
|
||||
, _xcbGrabber(nullptr)
|
||||
, _amlGrabber(nullptr)
|
||||
, _fbGrabber(nullptr)
|
||||
, _osxGrabber(nullptr)
|
||||
, _qtGrabber(nullptr)
|
||||
, _dxGrabber(nullptr)
|
||||
, _ssdp(nullptr)
|
||||
, _cecHandler(nullptr)
|
||||
, _currVideoMode(VideoMode::VIDEO_2D)
|
||||
{
|
||||
HyperionDaemon::daemon = this;
|
||||
|
||||
@@ -101,12 +101,14 @@ HyperionDaemon::HyperionDaemon(const QString rootPath, QObject *parent, bool log
|
||||
|
||||
// set inital log lvl if the loglvl wasn't overwritten by arg
|
||||
if (!logLvlOverwrite)
|
||||
{
|
||||
handleSettingsUpdate(settings::LOGGER, getSetting(settings::LOGGER));
|
||||
}
|
||||
|
||||
createCecHandler();
|
||||
|
||||
// init EffectFileHandler
|
||||
EffectFileHandler *efh = new EffectFileHandler(rootPath, getSetting(settings::EFFECTS), this);
|
||||
EffectFileHandler* efh = new EffectFileHandler(rootPath, getSetting(settings::EFFECTS), this);
|
||||
connect(this, &HyperionDaemon::settingsChanged, efh, &EffectFileHandler::handleSettingsUpdate);
|
||||
|
||||
// connect and apply settings for AuthManager
|
||||
@@ -135,7 +137,7 @@ HyperionDaemon::HyperionDaemon(const QString rootPath, QObject *parent, bool log
|
||||
// return videoMode changes from Daemon to HyperionIManager
|
||||
connect(this, &HyperionDaemon::videoMode, _instanceManager, &HyperionIManager::newVideoMode);
|
||||
|
||||
// ---- grabber -----
|
||||
// ---- grabber -----
|
||||
#if !defined(ENABLE_DISPMANX) && !defined(ENABLE_OSX) && !defined(ENABLE_FB) && !defined(ENABLE_X11) && !defined(ENABLE_XCB) && !defined(ENABLE_AMLOGIC) && !defined(ENABLE_QT) && !defined(ENABLE_DX)
|
||||
Info(_log, "No platform capture supported on this platform");
|
||||
#endif
|
||||
@@ -178,7 +180,7 @@ void HyperionDaemon::freeObjects()
|
||||
delete _jsonServer;
|
||||
_jsonServer = nullptr;
|
||||
|
||||
if (_flatBufferServer)
|
||||
if (_flatBufferServer != nullptr)
|
||||
{
|
||||
auto flatBufferServerThread = _flatBufferServer->thread();
|
||||
flatBufferServerThread->quit();
|
||||
@@ -187,7 +189,7 @@ void HyperionDaemon::freeObjects()
|
||||
_flatBufferServer = nullptr;
|
||||
}
|
||||
|
||||
if (_protoServer)
|
||||
if (_protoServer != nullptr)
|
||||
{
|
||||
auto protoServerThread = _protoServer->thread();
|
||||
protoServerThread->quit();
|
||||
@@ -197,7 +199,7 @@ void HyperionDaemon::freeObjects()
|
||||
}
|
||||
|
||||
//ssdp before webserver
|
||||
if (_ssdp)
|
||||
if (_ssdp != nullptr)
|
||||
{
|
||||
auto ssdpThread = _ssdp->thread();
|
||||
ssdpThread->quit();
|
||||
@@ -206,18 +208,18 @@ void HyperionDaemon::freeObjects()
|
||||
_ssdp = nullptr;
|
||||
}
|
||||
|
||||
if(_webserver)
|
||||
if (_webserver != nullptr)
|
||||
{
|
||||
auto webserverThread =_webserver->thread();
|
||||
auto webserverThread = _webserver->thread();
|
||||
webserverThread->quit();
|
||||
webserverThread->wait();
|
||||
delete webserverThread;
|
||||
_webserver = nullptr;
|
||||
}
|
||||
|
||||
if (_sslWebserver)
|
||||
if (_sslWebserver != nullptr)
|
||||
{
|
||||
auto sslWebserverThread =_sslWebserver->thread();
|
||||
auto sslWebserverThread = _sslWebserver->thread();
|
||||
sslWebserverThread->quit();
|
||||
sslWebserverThread->wait();
|
||||
delete sslWebserverThread;
|
||||
@@ -225,7 +227,7 @@ void HyperionDaemon::freeObjects()
|
||||
}
|
||||
|
||||
#ifdef ENABLE_CEC
|
||||
if (_cecHandler)
|
||||
if (_cecHandler != nullptr)
|
||||
{
|
||||
auto cecHandlerThread = _cecHandler->thread();
|
||||
cecHandlerThread->quit();
|
||||
@@ -239,7 +241,11 @@ void HyperionDaemon::freeObjects()
|
||||
// stop Hyperions (non blocking)
|
||||
_instanceManager->stopAll();
|
||||
|
||||
#ifdef ENABLE_AVAHI
|
||||
delete _bonjourBrowserWrapper;
|
||||
_bonjourBrowserWrapper = nullptr;
|
||||
#endif
|
||||
|
||||
delete _amlGrabber;
|
||||
delete _dispmanx;
|
||||
delete _fbGrabber;
|
||||
@@ -249,7 +255,7 @@ void HyperionDaemon::freeObjects()
|
||||
delete _v4l2Grabber;
|
||||
|
||||
_v4l2Grabber = nullptr;
|
||||
_bonjourBrowserWrapper = nullptr;
|
||||
|
||||
_amlGrabber = nullptr;
|
||||
_dispmanx = nullptr;
|
||||
_fbGrabber = nullptr;
|
||||
@@ -266,7 +272,7 @@ void HyperionDaemon::startNetworkServices()
|
||||
|
||||
// Create FlatBuffer server in thread
|
||||
_flatBufferServer = new FlatBufferServer(getSetting(settings::FLATBUFSERVER));
|
||||
QThread *fbThread = new QThread(this);
|
||||
QThread* fbThread = new QThread(this);
|
||||
fbThread->setObjectName("FlatBufferServerThread");
|
||||
_flatBufferServer->moveToThread(fbThread);
|
||||
connect(fbThread, &QThread::started, _flatBufferServer, &FlatBufferServer::initServer);
|
||||
@@ -276,7 +282,7 @@ void HyperionDaemon::startNetworkServices()
|
||||
|
||||
// Create Proto server in thread
|
||||
_protoServer = new ProtoServer(getSetting(settings::PROTOSERVER));
|
||||
QThread *pThread = new QThread(this);
|
||||
QThread* pThread = new QThread(this);
|
||||
pThread->setObjectName("ProtoServerThread");
|
||||
_protoServer->moveToThread(pThread);
|
||||
connect(pThread, &QThread::started, _protoServer, &ProtoServer::initServer);
|
||||
@@ -286,7 +292,7 @@ void HyperionDaemon::startNetworkServices()
|
||||
|
||||
// Create Webserver in thread
|
||||
_webserver = new WebServer(getSetting(settings::WEBSERVER), false);
|
||||
QThread *wsThread = new QThread(this);
|
||||
QThread* wsThread = new QThread(this);
|
||||
wsThread->setObjectName("WebServerThread");
|
||||
_webserver->moveToThread(wsThread);
|
||||
connect(wsThread, &QThread::started, _webserver, &WebServer::initServer);
|
||||
@@ -296,7 +302,7 @@ void HyperionDaemon::startNetworkServices()
|
||||
|
||||
// Create SSL Webserver in thread
|
||||
_sslWebserver = new WebServer(getSetting(settings::WEBSERVER), true);
|
||||
QThread *sslWsThread = new QThread(this);
|
||||
QThread* sslWsThread = new QThread(this);
|
||||
sslWsThread->setObjectName("SSLWebServerThread");
|
||||
_sslWebserver->moveToThread(sslWsThread);
|
||||
connect(sslWsThread, &QThread::started, _sslWebserver, &WebServer::initServer);
|
||||
@@ -306,12 +312,12 @@ void HyperionDaemon::startNetworkServices()
|
||||
|
||||
// Create SSDP server in thread
|
||||
_ssdp = new SSDPHandler(_webserver,
|
||||
getSetting(settings::FLATBUFSERVER).object()["port"].toInt(),
|
||||
getSetting(settings::PROTOSERVER).object()["port"].toInt(),
|
||||
getSetting(settings::JSONSERVER).object()["port"].toInt(),
|
||||
getSetting(settings::WEBSERVER).object()["sslPort"].toInt(),
|
||||
getSetting(settings::GENERAL).object()["name"].toString());
|
||||
QThread *ssdpThread = new QThread(this);
|
||||
getSetting(settings::FLATBUFSERVER).object()["port"].toInt(),
|
||||
getSetting(settings::PROTOSERVER).object()["port"].toInt(),
|
||||
getSetting(settings::JSONSERVER).object()["port"].toInt(),
|
||||
getSetting(settings::WEBSERVER).object()["sslPort"].toInt(),
|
||||
getSetting(settings::GENERAL).object()["name"].toString());
|
||||
QThread* ssdpThread = new QThread(this);
|
||||
ssdpThread->setObjectName("SSDPThread");
|
||||
_ssdp->moveToThread(ssdpThread);
|
||||
connect(ssdpThread, &QThread::started, _ssdp, &SSDPHandler::initServer);
|
||||
@@ -321,26 +327,34 @@ void HyperionDaemon::startNetworkServices()
|
||||
ssdpThread->start();
|
||||
}
|
||||
|
||||
void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJsonDocument &config)
|
||||
void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJsonDocument& config)
|
||||
{
|
||||
if (settingsType == settings::LOGGER)
|
||||
{
|
||||
const QJsonObject &logConfig = config.object();
|
||||
const QJsonObject& logConfig = config.object();
|
||||
|
||||
std::string level = logConfig["level"].toString("warn").toStdString(); // silent warn verbose debug
|
||||
if (level == "silent")
|
||||
{
|
||||
Logger::setLogLevel(Logger::OFF);
|
||||
}
|
||||
else if (level == "warn")
|
||||
{
|
||||
Logger::setLogLevel(Logger::LogLevel::WARNING);
|
||||
}
|
||||
else if (level == "verbose")
|
||||
{
|
||||
Logger::setLogLevel(Logger::INFO);
|
||||
}
|
||||
else if (level == "debug")
|
||||
{
|
||||
Logger::setLogLevel(Logger::DEBUG);
|
||||
}
|
||||
}
|
||||
|
||||
if (settingsType == settings::SYSTEMCAPTURE)
|
||||
{
|
||||
const QJsonObject &grabberConfig = config.object();
|
||||
const QJsonObject& grabberConfig = config.object();
|
||||
|
||||
_grabber_width = grabberConfig["width"].toInt(96);
|
||||
_grabber_height = grabberConfig["height"].toInt(96);
|
||||
@@ -354,11 +368,11 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
_grabber_ge2d_mode = grabberConfig["ge2d_mode"].toInt(0);
|
||||
_grabber_device = grabberConfig["amlogic_grabber"].toString("amvideocap0");
|
||||
|
||||
#ifdef ENABLE_OSX
|
||||
#ifdef ENABLE_OSX
|
||||
QString type = "osx";
|
||||
#else
|
||||
#else
|
||||
QString type = grabberConfig["type"].toString("auto");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// auto eval of type
|
||||
if (type == "auto")
|
||||
@@ -369,33 +383,36 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
type = "dispmanx";
|
||||
}
|
||||
// amlogic -> /dev/amvideo exists
|
||||
else if (QFile::exists("/dev/amvideo"))
|
||||
{
|
||||
type = "amlogic";
|
||||
|
||||
if (!QFile::exists("/dev/" + _grabber_device))
|
||||
{
|
||||
Error(_log, "grabber device '%s' for type amlogic not found!", QSTRING_CSTR(_grabber_device));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// x11 -> if DISPLAY is set
|
||||
QByteArray envDisplay = qgetenv("DISPLAY");
|
||||
if ( !envDisplay.isEmpty() )
|
||||
if (QFile::exists("/dev/amvideo"))
|
||||
{
|
||||
#if defined(ENABLE_X11)
|
||||
type = "x11";
|
||||
#elif defined(ENABLE_XCB)
|
||||
type = "xcb";
|
||||
#else
|
||||
type = "qt";
|
||||
#endif
|
||||
type = "amlogic";
|
||||
|
||||
if (!QFile::exists("/dev/" + _grabber_device))
|
||||
{
|
||||
Error(_log, "grabber device '%s' for type amlogic not found!", QSTRING_CSTR(_grabber_device));
|
||||
}
|
||||
}
|
||||
// qt -> if nothing other applies
|
||||
else
|
||||
{
|
||||
type = "qt";
|
||||
// x11 -> if DISPLAY is set
|
||||
QByteArray envDisplay = qgetenv("DISPLAY");
|
||||
if (!envDisplay.isEmpty())
|
||||
{
|
||||
#if defined(ENABLE_X11)
|
||||
type = "x11";
|
||||
#elif defined(ENABLE_XCB)
|
||||
type = "xcb";
|
||||
#else
|
||||
type = "qt";
|
||||
#endif
|
||||
}
|
||||
// qt -> if nothing other applies
|
||||
else
|
||||
{
|
||||
type = "qt";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -406,7 +423,7 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
|
||||
// stop all capture interfaces
|
||||
#ifdef ENABLE_FB
|
||||
if(_fbGrabber != nullptr)
|
||||
if (_fbGrabber != nullptr)
|
||||
{
|
||||
_fbGrabber->stop();
|
||||
delete _fbGrabber;
|
||||
@@ -414,7 +431,7 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_DISPMANX
|
||||
if(_dispmanx != nullptr)
|
||||
if (_dispmanx != nullptr)
|
||||
{
|
||||
_dispmanx->stop();
|
||||
delete _dispmanx;
|
||||
@@ -422,7 +439,7 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_AMLOGIC
|
||||
if(_amlGrabber != nullptr)
|
||||
if (_amlGrabber != nullptr)
|
||||
{
|
||||
_amlGrabber->stop();
|
||||
delete _amlGrabber;
|
||||
@@ -430,7 +447,7 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_OSX
|
||||
if(_osxGrabber != nullptr)
|
||||
if (_osxGrabber != nullptr)
|
||||
{
|
||||
_osxGrabber->stop();
|
||||
delete _osxGrabber;
|
||||
@@ -438,23 +455,23 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_X11
|
||||
if(_x11Grabber != nullptr)
|
||||
if (_x11Grabber != nullptr)
|
||||
{
|
||||
_x11Grabber->stop();
|
||||
delete _x11Grabber;
|
||||
_x11Grabber = nullptr;
|
||||
_x11Grabber->stop();
|
||||
delete _x11Grabber;
|
||||
_x11Grabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_XCB
|
||||
if(_xcbGrabber != nullptr)
|
||||
if (_xcbGrabber != nullptr)
|
||||
{
|
||||
_xcbGrabber->stop();
|
||||
delete _xcbGrabber;
|
||||
_xcbGrabber = nullptr;
|
||||
_xcbGrabber->stop();
|
||||
delete _xcbGrabber;
|
||||
_xcbGrabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_QT
|
||||
if(_qtGrabber != nullptr)
|
||||
if (_qtGrabber != nullptr)
|
||||
{
|
||||
_qtGrabber->stop();
|
||||
delete _qtGrabber;
|
||||
@@ -462,7 +479,7 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_DX
|
||||
if(_dxGrabber != nullptr)
|
||||
if (_dxGrabber != nullptr)
|
||||
{
|
||||
_dxGrabber->stop();
|
||||
delete _dxGrabber;
|
||||
@@ -474,7 +491,9 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
if (type == "framebuffer")
|
||||
{
|
||||
if (_fbGrabber == nullptr)
|
||||
{
|
||||
createGrabberFramebuffer(grabberConfig);
|
||||
}
|
||||
#ifdef ENABLE_FB
|
||||
_fbGrabber->tryStart();
|
||||
#endif
|
||||
@@ -482,7 +501,9 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
else if (type == "dispmanx")
|
||||
{
|
||||
if (_dispmanx == nullptr)
|
||||
{
|
||||
createGrabberDispmanx();
|
||||
}
|
||||
#ifdef ENABLE_DISPMANX
|
||||
_dispmanx->tryStart();
|
||||
#endif
|
||||
@@ -490,7 +511,9 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
else if (type == "amlogic")
|
||||
{
|
||||
if (_amlGrabber == nullptr)
|
||||
{
|
||||
createGrabberAmlogic();
|
||||
}
|
||||
#ifdef ENABLE_AMLOGIC
|
||||
_amlGrabber->tryStart();
|
||||
#endif
|
||||
@@ -498,7 +521,9 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
else if (type == "osx")
|
||||
{
|
||||
if (_osxGrabber == nullptr)
|
||||
{
|
||||
createGrabberOsx(grabberConfig);
|
||||
}
|
||||
#ifdef ENABLE_OSX
|
||||
_osxGrabber->tryStart();
|
||||
#endif
|
||||
@@ -506,7 +531,9 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
else if (type == "x11")
|
||||
{
|
||||
if (_x11Grabber == nullptr)
|
||||
{
|
||||
createGrabberX11(grabberConfig);
|
||||
}
|
||||
#ifdef ENABLE_X11
|
||||
_x11Grabber->tryStart();
|
||||
#endif
|
||||
@@ -514,7 +541,9 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
else if (type == "xcb")
|
||||
{
|
||||
if (_xcbGrabber == nullptr)
|
||||
{
|
||||
createGrabberXcb(grabberConfig);
|
||||
}
|
||||
#ifdef ENABLE_XCB
|
||||
_xcbGrabber->tryStart();
|
||||
#endif
|
||||
@@ -522,7 +551,9 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
else if (type == "qt")
|
||||
{
|
||||
if (_qtGrabber == nullptr)
|
||||
{
|
||||
createGrabberQt(grabberConfig);
|
||||
}
|
||||
#ifdef ENABLE_QT
|
||||
_qtGrabber->tryStart();
|
||||
#endif
|
||||
@@ -530,7 +561,9 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
else if (type == "dx")
|
||||
{
|
||||
if (_dxGrabber == nullptr)
|
||||
{
|
||||
createGrabberDx(grabberConfig);
|
||||
}
|
||||
#ifdef ENABLE_DX
|
||||
_dxGrabber->tryStart();
|
||||
#endif
|
||||
@@ -545,10 +578,13 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
}
|
||||
else if (settingsType == settings::V4L2)
|
||||
{
|
||||
const QJsonObject &grabberConfig = config.object();
|
||||
|
||||
#if defined(ENABLE_CEC) || defined(ENABLE_V4L2)
|
||||
const QJsonObject& grabberConfig = config.object();
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_CEC
|
||||
QString operation;
|
||||
if (_cecHandler && grabberConfig["cecDetection"].toBool(false))
|
||||
if (_cecHandler != nullptr && grabberConfig["cecDetection"].toBool(false))
|
||||
{
|
||||
QMetaObject::invokeMethod(_cecHandler, "start", Qt::QueuedConnection);
|
||||
}
|
||||
@@ -559,36 +595,38 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
#endif
|
||||
|
||||
if (_v4l2Grabber != nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef ENABLE_V4L2
|
||||
_v4l2Grabber = new V4L2Wrapper(
|
||||
grabberConfig["device"].toString("auto"),
|
||||
grabberConfig["width"].toInt(0),
|
||||
grabberConfig["height"].toInt(0),
|
||||
grabberConfig["fps"].toInt(15),
|
||||
grabberConfig["input"].toInt(-1),
|
||||
parseVideoStandard(grabberConfig["standard"].toString("no-change")),
|
||||
parsePixelFormat(grabberConfig["pixelFormat"].toString("no-change")),
|
||||
grabberConfig["sizeDecimation"].toInt(8));
|
||||
grabberConfig["device"].toString("auto"),
|
||||
grabberConfig["width"].toInt(0),
|
||||
grabberConfig["height"].toInt(0),
|
||||
grabberConfig["fps"].toInt(15),
|
||||
grabberConfig["input"].toInt(-1),
|
||||
parseVideoStandard(grabberConfig["standard"].toString("no-change")),
|
||||
parsePixelFormat(grabberConfig["pixelFormat"].toString("no-change")),
|
||||
grabberConfig["sizeDecimation"].toInt(8));
|
||||
|
||||
_v4l2Grabber->setSignalThreshold(
|
||||
grabberConfig["redSignalThreshold"].toDouble(0.0) / 100.0,
|
||||
grabberConfig["greenSignalThreshold"].toDouble(0.0) / 100.0,
|
||||
grabberConfig["blueSignalThreshold"].toDouble(0.0) / 100.0);
|
||||
grabberConfig["redSignalThreshold"].toDouble(0.0) / 100.0,
|
||||
grabberConfig["greenSignalThreshold"].toDouble(0.0) / 100.0,
|
||||
grabberConfig["blueSignalThreshold"].toDouble(0.0) / 100.0);
|
||||
_v4l2Grabber->setCropping(
|
||||
grabberConfig["cropLeft"].toInt(0),
|
||||
grabberConfig["cropRight"].toInt(0),
|
||||
grabberConfig["cropTop"].toInt(0),
|
||||
grabberConfig["cropBottom"].toInt(0));
|
||||
grabberConfig["cropLeft"].toInt(0),
|
||||
grabberConfig["cropRight"].toInt(0),
|
||||
grabberConfig["cropTop"].toInt(0),
|
||||
grabberConfig["cropBottom"].toInt(0));
|
||||
|
||||
_v4l2Grabber->setCecDetectionEnable(grabberConfig["cecDetection"].toBool(true));
|
||||
_v4l2Grabber->setSignalDetectionEnable(grabberConfig["signalDetection"].toBool(true));
|
||||
_v4l2Grabber->setSignalDetectionOffset(
|
||||
grabberConfig["sDHOffsetMin"].toDouble(0.25),
|
||||
grabberConfig["sDVOffsetMin"].toDouble(0.25),
|
||||
grabberConfig["sDHOffsetMax"].toDouble(0.75),
|
||||
grabberConfig["sDVOffsetMax"].toDouble(0.75));
|
||||
grabberConfig["sDHOffsetMin"].toDouble(0.25),
|
||||
grabberConfig["sDVOffsetMin"].toDouble(0.25),
|
||||
grabberConfig["sDHOffsetMax"].toDouble(0.75),
|
||||
grabberConfig["sDVOffsetMax"].toDouble(0.75));
|
||||
Debug(_log, "V4L2 grabber created");
|
||||
|
||||
// connect to HyperionDaemon signal
|
||||
@@ -632,13 +670,13 @@ void HyperionDaemon::createGrabberAmlogic()
|
||||
#endif
|
||||
}
|
||||
|
||||
void HyperionDaemon::createGrabberX11(const QJsonObject &grabberConfig)
|
||||
void HyperionDaemon::createGrabberX11(const QJsonObject& grabberConfig)
|
||||
{
|
||||
#ifdef ENABLE_X11
|
||||
_x11Grabber = new X11Wrapper(
|
||||
_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom,
|
||||
grabberConfig["pixelDecimation"].toInt(8),
|
||||
_grabber_frequency);
|
||||
_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom,
|
||||
grabberConfig["pixelDecimation"].toInt(8),
|
||||
_grabber_frequency);
|
||||
_x11Grabber->setCropping(_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom);
|
||||
|
||||
// connect to HyperionDaemon signal
|
||||
@@ -651,13 +689,13 @@ void HyperionDaemon::createGrabberX11(const QJsonObject &grabberConfig)
|
||||
#endif
|
||||
}
|
||||
|
||||
void HyperionDaemon::createGrabberXcb(const QJsonObject &grabberConfig)
|
||||
void HyperionDaemon::createGrabberXcb(const QJsonObject& grabberConfig)
|
||||
{
|
||||
#ifdef ENABLE_XCB
|
||||
_xcbGrabber = new XcbWrapper(
|
||||
_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom,
|
||||
grabberConfig["pixelDecimation"].toInt(8),
|
||||
_grabber_frequency);
|
||||
_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom,
|
||||
grabberConfig["pixelDecimation"].toInt(8),
|
||||
_grabber_frequency);
|
||||
_xcbGrabber->setCropping(_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom);
|
||||
|
||||
// connect to HyperionDaemon signal
|
||||
@@ -670,14 +708,14 @@ void HyperionDaemon::createGrabberXcb(const QJsonObject &grabberConfig)
|
||||
#endif
|
||||
}
|
||||
|
||||
void HyperionDaemon::createGrabberQt(const QJsonObject &grabberConfig)
|
||||
void HyperionDaemon::createGrabberQt(const QJsonObject& grabberConfig)
|
||||
{
|
||||
#ifdef ENABLE_QT
|
||||
_qtGrabber = new QtWrapper(
|
||||
_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom,
|
||||
grabberConfig["pixelDecimation"].toInt(8),
|
||||
grabberConfig["display"].toInt(0),
|
||||
_grabber_frequency);
|
||||
_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom,
|
||||
grabberConfig["pixelDecimation"].toInt(8),
|
||||
grabberConfig["display"].toInt(0),
|
||||
_grabber_frequency);
|
||||
|
||||
// connect to HyperionDaemon signal
|
||||
connect(this, &HyperionDaemon::videoMode, _qtGrabber, &QtWrapper::setVideoMode);
|
||||
@@ -689,14 +727,14 @@ void HyperionDaemon::createGrabberQt(const QJsonObject &grabberConfig)
|
||||
#endif
|
||||
}
|
||||
|
||||
void HyperionDaemon::createGrabberDx(const QJsonObject &grabberConfig)
|
||||
void HyperionDaemon::createGrabberDx(const QJsonObject& grabberConfig)
|
||||
{
|
||||
#ifdef ENABLE_DX
|
||||
_dxGrabber = new DirectXWrapper(
|
||||
_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom,
|
||||
grabberConfig["pixelDecimation"].toInt(8),
|
||||
grabberConfig["display"].toInt(0),
|
||||
_grabber_frequency);
|
||||
_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom,
|
||||
grabberConfig["pixelDecimation"].toInt(8),
|
||||
grabberConfig["display"].toInt(0),
|
||||
_grabber_frequency);
|
||||
|
||||
// connect to HyperionDaemon signal
|
||||
connect(this, &HyperionDaemon::videoMode, _dxGrabber, &DirectXWrapper::setVideoMode);
|
||||
@@ -708,13 +746,13 @@ void HyperionDaemon::createGrabberDx(const QJsonObject &grabberConfig)
|
||||
#endif
|
||||
}
|
||||
|
||||
void HyperionDaemon::createGrabberFramebuffer(const QJsonObject &grabberConfig)
|
||||
void HyperionDaemon::createGrabberFramebuffer(const QJsonObject& grabberConfig)
|
||||
{
|
||||
#ifdef ENABLE_FB
|
||||
// Construct and start the framebuffer grabber if the configuration is present
|
||||
_fbGrabber = new FramebufferWrapper(
|
||||
grabberConfig["device"].toString("/dev/fb0"),
|
||||
_grabber_width, _grabber_height, _grabber_frequency);
|
||||
grabberConfig["device"].toString("/dev/fb0"),
|
||||
_grabber_width, _grabber_height, _grabber_frequency);
|
||||
_fbGrabber->setCropping(_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom);
|
||||
// connect to HyperionDaemon signal
|
||||
connect(this, &HyperionDaemon::videoMode, _fbGrabber, &FramebufferWrapper::setVideoMode);
|
||||
@@ -726,13 +764,13 @@ void HyperionDaemon::createGrabberFramebuffer(const QJsonObject &grabberConfig)
|
||||
#endif
|
||||
}
|
||||
|
||||
void HyperionDaemon::createGrabberOsx(const QJsonObject &grabberConfig)
|
||||
void HyperionDaemon::createGrabberOsx(const QJsonObject& grabberConfig)
|
||||
{
|
||||
#ifdef ENABLE_OSX
|
||||
// Construct and start the osx grabber if the configuration is present
|
||||
_osxGrabber = new OsxWrapper(
|
||||
grabberConfig["display"].toInt(0),
|
||||
_grabber_width, _grabber_height, _grabber_frequency);
|
||||
grabberConfig["display"].toInt(0),
|
||||
_grabber_width, _grabber_height, _grabber_frequency);
|
||||
|
||||
// connect to HyperionDaemon signal
|
||||
connect(this, &HyperionDaemon::videoMode, _osxGrabber, &OsxWrapper::setVideoMode);
|
||||
@@ -749,14 +787,16 @@ void HyperionDaemon::createCecHandler()
|
||||
#if defined(ENABLE_V4L2) && defined(ENABLE_CEC)
|
||||
_cecHandler = new CECHandler;
|
||||
|
||||
QThread * thread = new QThread(this);
|
||||
QThread* thread = new QThread(this);
|
||||
thread->setObjectName("CECThread");
|
||||
_cecHandler->moveToThread(thread);
|
||||
thread->start();
|
||||
|
||||
connect(_cecHandler, &CECHandler::cecEvent, [&] (CECEvent event) {
|
||||
if (_v4l2Grabber)
|
||||
connect(_cecHandler, &CECHandler::cecEvent, [&](CECEvent event) {
|
||||
if (_v4l2Grabber != nullptr)
|
||||
{
|
||||
_v4l2Grabber->handleCecEvent(event);
|
||||
}
|
||||
});
|
||||
|
||||
Info(_log, "CEC handler created");
|
||||
|
Reference in New Issue
Block a user