JsonCpp to QTJson (Part 2) (#147)

* Replace std::string with QString

* Replace std::string with QString

* Replace std::string with QString

* Replace std::string with QString

* Convert JsonCPP Code to QTJson

Not all JsonCPP Code is converted to QTJson Code. See Pull Request for Details.

* Convert JsonCPP Code to QTJson

Not all JsonCPP Code is converted to QTJson Code. See Pull Request for Details.
This commit is contained in:
Paulchen-Panther 2016-08-04 10:53:26 +02:00 committed by brindosch
parent 0e2f0127fd
commit f183032270
6 changed files with 171 additions and 106 deletions

View File

@ -30,11 +30,11 @@ class KODIVideoChecker : public QObject
Q_OBJECT
public:
static KODIVideoChecker* initInstance(const std::string & address, uint16_t port, bool grabVideo, bool grabPhoto, bool grabAudio, bool grabMenu, bool grabPause, bool grabScreensaver, bool enable3DDetection);
static KODIVideoChecker* initInstance(const QString & address, uint16_t port, bool grabVideo, bool grabPhoto, bool grabAudio, bool grabMenu, bool grabPause, bool grabScreensaver, bool enable3DDetection);
static KODIVideoChecker* getInstance();
~KODIVideoChecker();
void setConfig(const std::string & address, uint16_t port, bool grabVideo, bool grabPhoto, bool grabAudio, bool grabMenu, bool grabPause, bool grabScreensaver, bool enable3DDetection);
void setConfig(const QString & address, uint16_t port, bool grabVideo, bool grabPhoto, bool grabAudio, bool grabMenu, bool grabPause, bool grabScreensaver, bool enable3DDetection);
public slots:
///
@ -83,7 +83,7 @@ private:
/// @param grabScreensaver Whether or not to grab when the KODI screensaver is activated
/// @param enable3DDetection Wheter or not to enable the detection of 3D movies playing
///
KODIVideoChecker(const std::string & address, uint16_t port, bool grabVideo, bool grabPhoto, bool grabAudio, bool grabMenu, bool grabPause, bool grabScreensaver, bool enable3DDetection);
KODIVideoChecker(const QString & address, uint16_t port, bool grabVideo, bool grabPhoto, bool grabAudio, bool grabMenu, bool grabPause, bool grabScreensaver, bool enable3DDetection);
/// Set the grabbing mode
void setGrabbingMode(GrabbingMode grabbingMode);

View File

@ -27,7 +27,7 @@ public:
/// @param hyperion Hyperion instance
/// @param port port number on which to start listening for connections
///
UDPListener(const int priority, const int timeout, const std::string& address, quint16 listenPort, bool shared);
UDPListener(const int priority, const int timeout, const QString& address, quint16 listenPort, bool shared);
~UDPListener();
///

View File

@ -8,7 +8,7 @@
KODIVideoChecker* KODIVideoChecker::_kodichecker = nullptr;
KODIVideoChecker* KODIVideoChecker::initInstance(const std::string & address, uint16_t port, bool grabVideo, bool grabPhoto, bool grabAudio, bool grabMenu, bool grabPause, bool grabScreensaver, bool enable3DDetection)
KODIVideoChecker* KODIVideoChecker::initInstance(const QString & address, uint16_t port, bool grabVideo, bool grabPhoto, bool grabAudio, bool grabMenu, bool grabPause, bool grabScreensaver, bool enable3DDetection)
{
if ( KODIVideoChecker::_kodichecker != nullptr )
throw std::runtime_error("KODIVideoChecker::initInstance can be called only one time");
@ -39,9 +39,9 @@ KODIVideoChecker* KODIVideoChecker::getInstance()
// {"jsonrpc":"2.0","method":"GUI.GetProperties","params":{"properties":["stereoscopicmode"]},"id":669}
// {"id":669,"jsonrpc":"2.0","result":{"stereoscopicmode":{"label":"Nebeneinander","mode":"split_vertical"}}}
KODIVideoChecker::KODIVideoChecker(const std::string & address, uint16_t port, bool grabVideo, bool grabPhoto, bool grabAudio, bool grabMenu, bool grabPause, bool grabScreensaver, bool enable3DDetection)
KODIVideoChecker::KODIVideoChecker(const QString & address, uint16_t port, bool grabVideo, bool grabPhoto, bool grabAudio, bool grabMenu, bool grabPause, bool grabScreensaver, bool enable3DDetection)
: QObject()
, _address(QString::fromStdString(address))
, _address(address)
, _port(port)
, _activePlayerRequest(R"({"jsonrpc":"2.0","method":"Player.GetActivePlayers", "id":666})")
, _currentPlayingItemRequest(R"({"id":667,"jsonrpc":"2.0","method":"Player.GetItem","params":{"playerid":%1,"properties":["file"]}})")
@ -78,9 +78,9 @@ KODIVideoChecker::~KODIVideoChecker()
}
void KODIVideoChecker::setConfig(const std::string & address, uint16_t port, bool grabVideo, bool grabPhoto, bool grabAudio, bool grabMenu, bool grabPause, bool grabScreensaver, bool enable3DDetection)
void KODIVideoChecker::setConfig(const QString & address, uint16_t port, bool grabVideo, bool grabPhoto, bool grabAudio, bool grabMenu, bool grabPause, bool grabScreensaver, bool enable3DDetection)
{
_address = QString::fromStdString(address);
_address = address;
_port = port;
_grabVideo = grabVideo;
_grabPhoto = grabPhoto;

View File

@ -10,7 +10,7 @@
#include "utils/ColorRgb.h"
#include "HyperionConfig.h"
UDPListener::UDPListener(const int priority, const int timeout, const std::string& address, quint16 listenPort, bool shared) :
UDPListener::UDPListener(const int priority, const int timeout, const QString& address, quint16 listenPort, bool shared) :
QObject(),
_hyperion(Hyperion::getInstance()),
_server(),
@ -23,9 +23,9 @@ UDPListener::UDPListener(const int priority, const int timeout, const std::strin
_bondage(shared ? QAbstractSocket::ShareAddress : QAbstractSocket::DefaultForPlatform)
{
_server = new QUdpSocket(this);
_listenAddress = address.empty()
_listenAddress = address.isEmpty()
? QHostAddress::AnyIPv4
: QHostAddress( QString::fromStdString(address) );
: QHostAddress(address);
// Set trigger for incoming connections
connect(_server, SIGNAL(readyRead()), this, SLOT(readPendingDatagrams()));

View File

@ -8,12 +8,17 @@
#include <QFile>
#include <QHostInfo>
#include <QHostAddress>
#include <QString>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <cstdint>
#include <limits>
#include "HyperionConfig.h"
#include <utils/jsonschema/JsonFactory.h>
#include <utils/jsonschema/JsonFactory.h> // DEPRECATED | Remove this only when the conversion have been completed from JsonCpp to QTJson
#include <utils/jsonschema/QJsonFactory.h>
#include <hyperion/Hyperion.h>
#include <effectengine/EffectEngine.h>
@ -43,15 +48,17 @@ HyperionDaemon::HyperionDaemon(std::string configFile, QObject *parent)
, _osxGrabber(nullptr)
, _hyperion(nullptr)
{
loadConfig(configFile);
loadConfig(configFile); // DEPRECATED | Remove this only when the conversion have been completed from JsonCpp to QTJson
loadConfig(QString::fromStdString(configFile));
_hyperion = Hyperion::initInstance(_config, configFile);
if (Logger::getLogLevel() == Logger::WARNING)
{
if (_config.isMember("logger"))
if (_qconfig.contains("logger"))
{
const Json::Value & logConfig = _config["logger"];
std::string level = logConfig.get("level", "warn").asString(); // silent warn verbose debug
const QJsonObject & logConfig = _qconfig["logger"].toObject();
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::WARNING);
else if (level == "verbose") Logger::setLogLevel(Logger::INFO);
@ -62,7 +69,7 @@ HyperionDaemon::HyperionDaemon(std::string configFile, QObject *parent)
}
else
{
WarningIf(_config.isMember("logger"), Logger::getInstance("LOGGER"), "Logger settings overriden by command line argument");
WarningIf(_qconfig.contains("logger"), Logger::getInstance("LOGGER"), "Logger settings overriden by command line argument");
}
Info(_log, "Hyperion started and initialised");
@ -97,12 +104,12 @@ void HyperionDaemon::run()
createSystemFrameGrabber();
#if !defined(ENABLE_DISPMANX) && !defined(ENABLE_OSX) && !defined(ENABLE_FB) && !defined(ENABLE_X11) && !defined(ENABLE_AMLOGIC)
WarningIf(_config.isMember("framegrabber"), _log, "No grabber can be instantiated, because all grabbers have been left out from the build");
WarningIf(_qconfig.contains("framegrabber"), _log, "No grabber can be instantiated, because all grabbers have been left out from the build");
#endif
}
void HyperionDaemon::loadConfig(const std::string & configFile)
void HyperionDaemon::loadConfig(const std::string & configFile) // DEPRECATED | Remove this only when the conversion have been completed from JsonCpp to QTJson
{
Info(_log, "Selected configuration file: %s", configFile.c_str() );
// make sure the resources are loaded (they may be left out after static linking)
@ -125,6 +132,61 @@ void HyperionDaemon::loadConfig(const std::string & configFile)
schemaChecker.validate(_config);
}
void HyperionDaemon::loadConfig(const QString & configFile)
{
// Info(_log, "Selected configuration file: %s", configFile.toStdString().c_str()); // uncommend this line only if JsonCpp is removed. Otherwise appears this line twice in the debug output
// make sure the resources are loaded (they may be left out after static linking)
Q_INIT_RESOURCE(resource);
QJsonParseError error;
// read the json schema from the resource
QFile schemaData(":/hyperion-schema");
if (!schemaData.open(QIODevice::ReadOnly))
{
std::stringstream error;
error << "Schema not found: " << schemaData.errorString().toStdString();
throw std::runtime_error(error.str());
}
QByteArray schema = schemaData.readAll();
QJsonDocument schemaJson = QJsonDocument::fromJson(schema, &error);
if (error.error != QJsonParseError::NoError)
{
// report to the user the failure and their locations in the document.
int errorLine(0), errorColumn(0);
for( int i=0, count=qMin( error.offset,schema.size()); i<count; ++i )
{
++errorColumn;
if(schema.at(i) == '\n' )
{
errorColumn = 0;
++errorLine;
}
}
std::stringstream sstream;
sstream << "ERROR: Json schema wrong: " << error.errorString().toStdString() << " at Line: " << errorLine << ", Column: " << errorColumn;
throw std::runtime_error(sstream.str());
}
QJsonSchemaChecker schemaChecker;
schemaChecker.setSchema(schemaJson.object());
_qconfig = QJsonFactory::readJson(configFile);
if (!schemaChecker.validate(_qconfig))
{
for (std::list<std::string>::const_iterator i = schemaChecker.getMessages().begin(); i != schemaChecker.getMessages().end(); ++i)
{
std::cout << *i << std::endl;
}
throw std::runtime_error("ERROR: Json validation failed");
}
}
void HyperionDaemon::startInitialEffect()
{
@ -196,22 +258,22 @@ void HyperionDaemon::startInitialEffect()
// create KODI video checker if the _configuration is present
void HyperionDaemon::createKODIVideoChecker()
{
bool kodiCheckerConfigured = _config.isMember("kodiVideoChecker");
bool kodiCheckerConfigured = _qconfig.contains("kodiVideoChecker");
const Json::Value & videoCheckerConfig = _config["kodiVideoChecker"];
const QJsonObject & videoCheckerConfig = _qconfig["kodiVideoChecker"].toObject();
_kodiVideoChecker = KODIVideoChecker::initInstance(
videoCheckerConfig.get("kodiAddress","127.0.0.1").asString(),
videoCheckerConfig.get("kodiTcpPort",9090).asUInt(),
videoCheckerConfig.get("grabVideo",true).asBool(),
videoCheckerConfig.get("grabPictures",true).asBool(),
videoCheckerConfig.get("grabAudio",true).asBool(),
videoCheckerConfig.get("grabMenu",false).asBool(),
videoCheckerConfig.get("grabPause", true).asBool(),
videoCheckerConfig.get("grabScreensaver", false).asBool(),
videoCheckerConfig.get("enable3DDetection", true).asBool());
videoCheckerConfig["kodiAddress"].toString("127.0.0.1"),
videoCheckerConfig["kodiTcpPort"].toInt(9090),
videoCheckerConfig["grabVideo"].toBool(true),
videoCheckerConfig["grabPictures"].toBool(true),
videoCheckerConfig["grabAudio"].toBool(true),
videoCheckerConfig["grabMenu"].toBool(false),
videoCheckerConfig["grabPause"].toBool(true),
videoCheckerConfig["grabScreensaver"].toBool(false),
videoCheckerConfig["enable3DDetection"].toBool(true));
Debug(_log, "KODI checker created ");
if( kodiCheckerConfigured && videoCheckerConfig.get("enable", true).asBool() )
if( kodiCheckerConfigured && videoCheckerConfig["enable"].toBool(true))
{
_kodiVideoChecker->start();
}
@ -223,26 +285,26 @@ void HyperionDaemon::startNetworkServices()
// Create Json server if configuration is present
unsigned int jsonPort = 19444;
if (_config.isMember("jsonServer"))
if (_qconfig.contains("jsonServer"))
{
const Json::Value & jsonServerConfig = _config["jsonServer"];
const QJsonObject & jsonServerConfig = _qconfig["jsonServer"].toObject();
//jsonEnable = jsonServerConfig.get("enable", true).asBool();
jsonPort = jsonServerConfig.get("port", jsonPort).asUInt();
jsonPort = jsonServerConfig["port"].toInt(jsonPort);
}
_jsonServer = new JsonServer(jsonPort );
_jsonServer = new JsonServer(jsonPort);
Info(_log, "Json server created and started on port %d", _jsonServer->getPort());
// Create Proto server if configuration is present
unsigned int protoPort = 19445;
if (_config.isMember("protoServer"))
if (_qconfig.contains("protoServer"))
{
const Json::Value & protoServerConfig = _config["protoServer"];
const QJsonObject & protoServerConfig = _qconfig["protoServer"].toObject();
//protoEnable = protoServerConfig.get("enable", true).asBool();
protoPort = protoServerConfig.get("port", protoPort).asUInt();
protoPort = protoServerConfig["port"].toInt(protoPort);
}
_protoServer = new ProtoServer(protoPort );
_protoServer = new ProtoServer(protoPort);
if (kodiVideoChecker != nullptr)
{
QObject::connect(kodiVideoChecker, SIGNAL(grabbingMode(GrabbingMode)), _protoServer, SIGNAL(grabbingMode(GrabbingMode)));
@ -251,43 +313,43 @@ void HyperionDaemon::startNetworkServices()
Info(_log, "Proto server created and started on port %d", _protoServer->getPort());
// Create Boblight server if configuration is present
if (_config.isMember("boblightServer"))
if (_qconfig.contains("boblightServer"))
{
const Json::Value & boblightServerConfig = _config["boblightServer"];
const QJsonObject & boblightServerConfig = _qconfig["boblightServer"].toObject();
_boblightServer = new BoblightServer(
boblightServerConfig.get("priority",710).asInt(),
boblightServerConfig["port"].asUInt()
boblightServerConfig["priority"].toInt(710),
boblightServerConfig["port"].toInt()
);
Debug(_log, "Boblight server created");
if ( boblightServerConfig.get("enable", true).asBool() )
if ( boblightServerConfig["enable"].toBool(true))
{
_boblightServer->start();
}
}
// Create UDP listener if configuration is present
if (_config.isMember("udpListener"))
if (_qconfig.contains("udpListener"))
{
const Json::Value & udpListenerConfig = _config["udpListener"];
const QJsonObject & udpListenerConfig = _qconfig["udpListener"].toObject();
_udpListener = new UDPListener(
udpListenerConfig.get("priority",700).asInt(),
udpListenerConfig.get("timeout",10000).asInt(),
udpListenerConfig.get("address", "").asString(),
udpListenerConfig.get("port", 2801).asUInt(),
udpListenerConfig.get("shared", false).asBool()
);
udpListenerConfig["priority"].toInt(700),
udpListenerConfig["timeout"].toInt(10000),
udpListenerConfig["address"].toString(""),
udpListenerConfig["port"].toInt(2801),
udpListenerConfig["shared"].toBool(false));
Debug(_log, "UDP listener created");
if ( udpListenerConfig.get("enable", true).asBool() )
if ( udpListenerConfig["enable"].toBool(true))
{
_udpListener->start();
}
}
// zeroconf description - $leddevicename@$hostname
const Json::Value & deviceConfig = _config["device"];
const std::string mDNSDescr = ( deviceConfig.get("name", "").asString()
const QJsonObject & deviceConfig = _qconfig["device"].toObject();
const std::string mDNSDescr = ( deviceConfig["name"].toString("").toStdString()
+ "@" +
QHostInfo::localHostName().toStdString()
);
@ -322,25 +384,25 @@ void HyperionDaemon::startNetworkServices()
void HyperionDaemon::createSystemFrameGrabber()
{
if (_config.isMember("framegrabber"))
if (_qconfig.contains("framegrabber"))
{
const Json::Value & grabberConfig = _config["framegrabber"];
if (grabberConfig.get("enable", true).asBool())
const QJsonObject & grabberConfig = _qconfig["framegrabber"].toObject();
if (grabberConfig["enable"].toBool(true))
{
_grabber_width = grabberConfig.get("width", 96).asUInt();
_grabber_height = grabberConfig.get("height", 96).asUInt();
_grabber_frequency = grabberConfig.get("frequency_Hz",10).asUInt();
_grabber_priority = grabberConfig.get("priority",900).asInt();
_grabber_width = grabberConfig["width"].toInt(96);
_grabber_height = grabberConfig["height"].toInt(96);
_grabber_frequency = grabberConfig["frequency_Hz"].toInt(10);
_grabber_priority = grabberConfig["priority"].toInt(900);
_grabber_cropLeft = grabberConfig.get("cropLeft", 0).asUInt();
_grabber_cropRight = grabberConfig.get("cropRight", 0).asUInt();
_grabber_cropTop = grabberConfig.get("cropTop", 0).asUInt();
_grabber_cropBottom = grabberConfig.get("cropBottom", 0).asUInt();
_grabber_cropLeft = grabberConfig["cropLeft"].toInt(0);
_grabber_cropRight = grabberConfig["cropRight"].toInt(0);
_grabber_cropTop = grabberConfig["cropTop"].toInt(0);
_grabber_cropBottom = grabberConfig["cropBottom"].toInt(0);
#ifdef ENABLE_OSX
std::string type = "osx";
QString type = "osx";
#else
std::string type = grabberConfig.get("type", "auto").asString();
QString type = grabberConfig["type"].toString("auto");
#endif
QFile amvideo("/dev/amvideo");
@ -372,7 +434,7 @@ void HyperionDaemon::createSystemFrameGrabber()
{
type == "framebuffer";
}
Info( _log, "set screen capture device to '%s'", type.c_str());
Info( _log, "set screen capture device to '%s'", type.constData());
}
if (type == "framebuffer") createGrabberFramebuffer(grabberConfig);
@ -380,7 +442,7 @@ void HyperionDaemon::createSystemFrameGrabber()
else if (type == "amlogic") { createGrabberAmlogic(); createGrabberFramebuffer(grabberConfig); }
else if (type == "osx") createGrabberOsx(grabberConfig);
else if (type == "x11") createGrabberX11(grabberConfig);
else WarningIf( type != "", _log, "unknown framegrabber type '%s'", type.c_str());
else WarningIf( type != "", _log, "unknown framegrabber type '%s'", type.constData());
InfoIf( type == "", _log, "screen capture device disabled");
}
}
@ -400,7 +462,7 @@ void HyperionDaemon::createGrabberDispmanx()
_dispmanx->start();
Info(_log, "DISPMANX frame grabber created and started");
#else
ErrorIf(_config.isMember("framegrabber"), _log, "The dispmanx framegrabber can not be instantiated, because it has been left out from the build");
ErrorIf(_qconfig.contains("framegrabber"), _log, "The dispmanx framegrabber can not be instantiated, because it has been left out from the build");
#endif
}
@ -421,14 +483,14 @@ void HyperionDaemon::createGrabberAmlogic()
#endif
}
void HyperionDaemon::createGrabberX11(const Json::Value & grabberConfig)
void HyperionDaemon::createGrabberX11(const QJsonObject & grabberConfig)
{
#ifdef ENABLE_X11
_x11Grabber = new X11Wrapper(
grabberConfig.get("useXGetImage",false).asBool(),
grabberConfig["useXGetImage"].toBool(false),
_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom,
grabberConfig.get("horizontalPixelDecimation", 8).asInt(),
grabberConfig.get("verticalPixelDecimation", 8).asInt(),
grabberConfig["horizontalPixelDecimation"].toInt(8),
grabberConfig["verticalPixelDecimation"].toInt(8),
_grabber_frequency, _grabber_priority );
QObject::connect(_kodiVideoChecker, SIGNAL(grabbingMode(GrabbingMode)), _x11Grabber, SLOT(setGrabbingMode(GrabbingMode)));
@ -443,12 +505,12 @@ void HyperionDaemon::createGrabberX11(const Json::Value & grabberConfig)
}
void HyperionDaemon::createGrabberFramebuffer(const Json::Value & 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.get("device", "/dev/fb0").asString(),
grabberConfig["device"].toString("/dev/fb0").toStdString(),
_grabber_width, _grabber_height, _grabber_frequency, _grabber_priority);
QObject::connect(_kodiVideoChecker, SIGNAL(grabbingMode(GrabbingMode)), _fbGrabber, SLOT(setGrabbingMode(GrabbingMode)));
@ -463,12 +525,12 @@ void HyperionDaemon::createGrabberFramebuffer(const Json::Value & grabberConfig)
}
void HyperionDaemon::createGrabberOsx(const Json::Value & 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.get("display", 0).asUInt(),
grabberConfig["display"].toInt(0),
_grabber_width, _grabber_height, _grabber_frequency, _grabber_priority);
QObject::connect(_kodiVideoChecker, SIGNAL(grabbingMode(GrabbingMode)), _osxGrabber, SLOT(setGrabbingMode(GrabbingMode)));
@ -487,37 +549,37 @@ void HyperionDaemon::createGrabberV4L2()
{
// construct and start the v4l2 grabber if the configuration is present
#ifdef ENABLE_V4L2
if (_config.isMember("grabber-v4l2"))
if (_qconfig.contains("grabber-v4l2"))
{
const Json::Value & grabberConfig = _config["grabber-v4l2"];
const QJsonObject & grabberConfig = _qconfig["grabber-v4l2"].toObject();
_v4l2Grabber = new V4L2Wrapper(
grabberConfig.get("device", "/dev/video0").asString(),
grabberConfig.get("input", 0).asInt(),
parseVideoStandard(grabberConfig.get("standard", "no-change").asString()),
parsePixelFormat(grabberConfig.get("pixelFormat", "no-change").asString()),
grabberConfig.get("width", -1).asInt(),
grabberConfig.get("height", -1).asInt(),
grabberConfig.get("frameDecimation", 2).asInt(),
grabberConfig.get("sizeDecimation", 8).asInt(),
grabberConfig.get("redSignalThreshold", 0.0).asDouble(),
grabberConfig.get("greenSignalThreshold", 0.0).asDouble(),
grabberConfig.get("blueSignalThreshold", 0.0).asDouble(),
grabberConfig.get("priority", 890).asInt());
_v4l2Grabber->set3D(parse3DMode(grabberConfig.get("mode", "2D").asString()));
grabberConfig["device"].toString("/dev/video0").toStdString(),
grabberConfig["input"].toInt(0),
parseVideoStandard(grabberConfig["standard"].toString("no-change").toStdString()),
parsePixelFormat(grabberConfig["pixelFormat"].toString("no-change").toStdString()),
grabberConfig["width"].toInt(-1),
grabberConfig["height"].toInt(-1),
grabberConfig["frameDecimation"].toInt(2),
grabberConfig["sizeDecimation"].toInt(8),
grabberConfig["redSignalThreshold"].toDouble(0.0),
grabberConfig["greenSignalThreshold"].toDouble(0.0),
grabberConfig["blueSignalThreshold"].toDouble(0.0),
grabberConfig["priority"].toInt(890));
_v4l2Grabber->set3D(parse3DMode(grabberConfig["mode"].toString("2D").toStdString()));
_v4l2Grabber->setCropping(
grabberConfig.get("cropLeft", 0).asInt(),
grabberConfig.get("cropRight", 0).asInt(),
grabberConfig.get("cropTop", 0).asInt(),
grabberConfig.get("cropBottom", 0).asInt());
grabberConfig["cropLeft"].toInt(0),
grabberConfig["cropRight"].toInt(0),
grabberConfig["cropTop"].toInt(0),
grabberConfig["cropBottom"].toInt(0));
Debug(_log, "V4L2 grabber created");
QObject::connect(_v4l2Grabber, SIGNAL(emitImage(int, const Image<ColorRgb>&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image<ColorRgb>&, const int)) );
if (grabberConfig.get("enable", true).asBool() && _v4l2Grabber->start())
if (grabberConfig["enable"].toBool(true) && _v4l2Grabber->start())
{
Info(_log, "V4L2 grabber started");
}
}
#else
ErrorIf(_config.isMember("grabber-v4l2"), _log, "The v4l2 grabber can not be instantiated, because it has been left out from the build");
ErrorIf(_qconfig.contains("grabber-v4l2"), _log, "The v4l2 grabber can not be instantiated, because it has been left out from the build");
#endif
}

View File

@ -46,6 +46,7 @@
#include <boblightserver/BoblightServer.h>
#include <webconfig/WebConfig.h>
#include <udplistener/UDPListener.h>
#include <QJsonObject>
class HyperionDaemon : public QObject
{
@ -53,7 +54,8 @@ public:
HyperionDaemon(std::string configFile, QObject *parent=nullptr);
~HyperionDaemon();
void loadConfig(const std::string & configFile);
void loadConfig(const std::string & configFile); // DEPRECATED | Remove this only when the conversion have been completed from JsonCpp to QTJson
void loadConfig(const QString & configFile);
void run();
void startInitialEffect();
@ -67,12 +69,13 @@ public:
private:
void createGrabberDispmanx();
void createGrabberAmlogic();
void createGrabberFramebuffer(const Json::Value & grabberConfig);
void createGrabberOsx(const Json::Value & grabberConfig);
void createGrabberX11(const Json::Value & grabberConfig);
void createGrabberFramebuffer(const QJsonObject & grabberConfig);
void createGrabberOsx(const QJsonObject & grabberConfig);
void createGrabberX11(const QJsonObject & grabberConfig);
Logger* _log;
Json::Value _config;
Json::Value _config; // DEPRECATED | Remove this only when the conversion have been completed from JsonCpp to QTJson
QJsonObject _qconfig;
KODIVideoChecker* _kodiVideoChecker;
JsonServer* _jsonServer;
ProtoServer* _protoServer;