diff --git a/config/hyperion.config.json.commented b/config/hyperion.config.json.commented index 8c1a88d7..6342c0db 100644 --- a/config/hyperion.config.json.commented +++ b/config/hyperion.config.json.commented @@ -58,6 +58,7 @@ /// Next to the list with color transforms there is also a smoothing option. /// * 'smoothing' : Smoothing of the colors in the time-domain with the following tuning /// parameters: + /// - 'enable' Enable or disable the smoothing (true/false) /// - 'type' The type of smoothing algorithm ('linear' or 'none') /// - 'time_ms' The time constant for smoothing algorithm in milliseconds /// - 'updateFrequency' The update frequency of the leds in Hz @@ -137,7 +138,7 @@ "enable" : true, "type" : "linear", "time_ms" : 200, - "updateFrequency" : 20.0000, + "updateFrequency" : 25.0000, "updateDelay" : 0, "continuousOutput" : true } @@ -183,6 +184,7 @@ }, /// The configuration for the frame-grabber, contains the following items: + /// * enable : true if the framegrabber (platform grabber) should be activated /// * width : The width of the grabbed frames [pixels] /// * height : The height of the grabbed frames [pixels] /// * frequency_Hz : The frequency of the frame grab [Hz] @@ -190,8 +192,9 @@ /// * ATTENTION : Power-of-Two resolution is not supported and leads to unexpected behaviour! "framegrabber" : { - "width" : 64, - "height" : 64, + "enable" : true, + "width" : 96, + "height" : 96, "frequency_Hz" : 10.0, "priority" : 890 }, diff --git a/config/hyperion.config.json.default b/config/hyperion.config.json.default index 509ae981..0ed43929 100644 --- a/config/hyperion.config.json.default +++ b/config/hyperion.config.json.default @@ -86,7 +86,7 @@ "enable" : true, "type" : "linear", "time_ms" : 200, - "updateFrequency" : 20.0000, + "updateFrequency" : 25.0000, "updateDelay" : 0, "continuousOutput" : false } @@ -115,8 +115,9 @@ "framegrabber" : { - "width" : 128, - "height" : 128, + "enable" : true, + "width" : 96, + "height" : 96, "frequency_Hz" : 10.0, "priority" : 890 }, @@ -130,7 +131,7 @@ "kodiVideoChecker" : { - "enable" : true, + "enable" : false, "kodiAddress" : "localhost", "kodiTcpPort" : 9090, "grabVideo" : true, diff --git a/src/hyperiond/hyperiond.cpp b/src/hyperiond/hyperiond.cpp index c4875e1e..82e2fb67 100644 --- a/src/hyperiond/hyperiond.cpp +++ b/src/hyperiond/hyperiond.cpp @@ -322,27 +322,30 @@ void HyperionDaemon::startNetworkServices() void HyperionDaemon::createGrabberDispmanx() { #ifdef ENABLE_DISPMANX - // Construct and start the frame-grabber if the configuration is present + // Construct and start the dispmanx grabber if the configuration is present if (_config.isMember("framegrabber")) { const Json::Value & frameGrabberConfig = _config["framegrabber"]; - _dispmanx = new DispmanxWrapper( - frameGrabberConfig["width"].asUInt(), - frameGrabberConfig["height"].asUInt(), - frameGrabberConfig["frequency_Hz"].asUInt(), - frameGrabberConfig.get("priority",900).asInt()); - _dispmanx->setCropping( - frameGrabberConfig.get("cropLeft", 0).asInt(), - frameGrabberConfig.get("cropRight", 0).asInt(), - frameGrabberConfig.get("cropTop", 0).asInt(), - frameGrabberConfig.get("cropBottom", 0).asInt()); + if (frameGrabberConfig.get("enable", true).asBool()) + { + _dispmanx = new DispmanxWrapper( + frameGrabberConfig["width"].asUInt(), + frameGrabberConfig["height"].asUInt(), + frameGrabberConfig["frequency_Hz"].asUInt(), + frameGrabberConfig.get("priority",900).asInt()); + _dispmanx->setCropping( + frameGrabberConfig.get("cropLeft", 0).asInt(), + frameGrabberConfig.get("cropRight", 0).asInt(), + frameGrabberConfig.get("cropTop", 0).asInt(), + frameGrabberConfig.get("cropBottom", 0).asInt()); - QObject::connect(_kodiVideoChecker, SIGNAL(grabbingMode(GrabbingMode)), _dispmanx, SLOT(setGrabbingMode(GrabbingMode))); - QObject::connect(_kodiVideoChecker, SIGNAL(videoMode(VideoMode)), _dispmanx, SLOT(setVideoMode(VideoMode))); - QObject::connect(_dispmanx, SIGNAL(emitImage(int, const Image&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image&, const int)) ); + QObject::connect(_kodiVideoChecker, SIGNAL(grabbingMode(GrabbingMode)), _dispmanx, SLOT(setGrabbingMode(GrabbingMode))); + QObject::connect(_kodiVideoChecker, SIGNAL(videoMode(VideoMode)), _dispmanx, SLOT(setVideoMode(VideoMode))); + QObject::connect(_dispmanx, SIGNAL(emitImage(int, const Image&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image&, const int)) ); - _dispmanx->start(); - Info(_log, "Frame grabber created and started"); + _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"); @@ -393,22 +396,25 @@ void HyperionDaemon::createGrabberV4L2() void HyperionDaemon::createGrabberAmlogic() { #ifdef ENABLE_AMLOGIC - // Construct and start the framebuffer grabber if the configuration is present + // Construct and start the amlogic grabber if the configuration is present if (_config.isMember("amlgrabber")) { const Json::Value & grabberConfig = _config["amlgrabber"]; - _amlGrabber = new AmlogicWrapper( - grabberConfig["width"].asUInt(), - grabberConfig["height"].asUInt(), - grabberConfig["frequency_Hz"].asUInt(), - grabberConfig.get("priority",900).asInt()); + if (grabberConfig.get("enable", true).asBool()) + { + _amlGrabber = new AmlogicWrapper( + grabberConfig["width"].asUInt(), + grabberConfig["height"].asUInt(), + grabberConfig["frequency_Hz"].asUInt(), + grabberConfig.get("priority",900).asInt()); - QObject::connect(_kodiVideoChecker, SIGNAL(grabbingMode(GrabbingMode)), _amlGrabber, SLOT(setGrabbingMode(GrabbingMode))); - QObject::connect(_kodiVideoChecker, SIGNAL(videoMode(VideoMode)), _amlGrabber, SLOT(setVideoMode(VideoMode))); - QObject::connect(_amlGrabber, SIGNAL(emitImage(int, const Image&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image&, const int)) ); + QObject::connect(_kodiVideoChecker, SIGNAL(grabbingMode(GrabbingMode)), _amlGrabber, SLOT(setGrabbingMode(GrabbingMode))); + QObject::connect(_kodiVideoChecker, SIGNAL(videoMode(VideoMode)), _amlGrabber, SLOT(setVideoMode(VideoMode))); + QObject::connect(_amlGrabber, SIGNAL(emitImage(int, const Image&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image&, const int)) ); - _amlGrabber->start(); - Info(_log, "AMLOGIC grabber created and started"); + _amlGrabber->start(); + Info(_log, "AMLOGIC grabber created and started"); + } } #else ErrorIf(_config.isMember("amlgrabber"), _log, "The AMLOGIC grabber can not be instantiated, because it has been left out from the build"); @@ -420,22 +426,25 @@ void HyperionDaemon::createGrabberFramebuffer() { #ifdef ENABLE_FB // Construct and start the framebuffer grabber if the configuration is present - if (_config.isMember("framebuffergrabber") || _config.isMember("framegrabber")) + if (_config.isMember("framebuffergrabber")) { - const Json::Value & grabberConfig = _config.isMember("framebuffergrabber")? _config["framebuffergrabber"] : _config["framegrabber"]; - _fbGrabber = new FramebufferWrapper( - grabberConfig.get("device", "/dev/fb0").asString(), - grabberConfig["width"].asUInt(), - grabberConfig["height"].asUInt(), - grabberConfig["frequency_Hz"].asUInt(), - grabberConfig.get("priority",900).asInt()); + const Json::Value & grabberConfig = _config["framebuffergrabber"]; + if (grabberConfig.get("enable", true).asBool()) + { + _fbGrabber = new FramebufferWrapper( + grabberConfig.get("device", "/dev/fb0").asString(), + grabberConfig["width"].asUInt(), + grabberConfig["height"].asUInt(), + grabberConfig["frequency_Hz"].asUInt(), + grabberConfig.get("priority",900).asInt()); - QObject::connect(_kodiVideoChecker, SIGNAL(grabbingMode(GrabbingMode)), _fbGrabber, SLOT(setGrabbingMode(GrabbingMode))); - QObject::connect(_kodiVideoChecker, SIGNAL(videoMode(VideoMode)), _fbGrabber, SLOT(setVideoMode(VideoMode))); - QObject::connect(_fbGrabber, SIGNAL(emitImage(int, const Image&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image&, const int)) ); + QObject::connect(_kodiVideoChecker, SIGNAL(grabbingMode(GrabbingMode)), _fbGrabber, SLOT(setGrabbingMode(GrabbingMode))); + QObject::connect(_kodiVideoChecker, SIGNAL(videoMode(VideoMode)), _fbGrabber, SLOT(setVideoMode(VideoMode))); + QObject::connect(_fbGrabber, SIGNAL(emitImage(int, const Image&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image&, const int)) ); - _fbGrabber->start(); - Info(_log, "Framebuffer grabber created and started"); + _fbGrabber->start(); + Info(_log, "Framebuffer grabber created and started"); + } } #else ErrorIf(_config.isMember("framebuffergrabber"), _log, "The framebuffer grabber can not be instantiated, because it has been left out from the build"); @@ -447,22 +456,25 @@ void HyperionDaemon::createGrabberOsx() { #ifdef ENABLE_OSX // Construct and start the osx grabber if the configuration is present - if (_config.isMember("framegrabber")) + if (_config.isMember("osxgrabber")) { - const Json::Value & grabberConfig = _config.isMember("osxgrabber")? _config["osxgrabber"] : _config["framegrabber"]; - _osxGrabber = new OsxWrapper( - grabberConfig.get("display", 0).asUInt(), - grabberConfig["width"].asUInt(), - grabberConfig["height"].asUInt(), - grabberConfig["frequency_Hz"].asUInt(), - grabberConfig.get("priority",900).asInt()); + const Json::Value & grabberConfig = _config["osxgrabber"]; + if (grabberConfig.get("enable", true).asBool()) + { + _osxGrabber = new OsxWrapper( + grabberConfig.get("display", 0).asUInt(), + grabberConfig["width"].asUInt(), + grabberConfig["height"].asUInt(), + grabberConfig["frequency_Hz"].asUInt(), + grabberConfig.get("priority",900).asInt()); - QObject::connect(_kodiVideoChecker, SIGNAL(grabbingMode(GrabbingMode)), _osxGrabber, SLOT(setGrabbingMode(GrabbingMode))); - QObject::connect(_kodiVideoChecker, SIGNAL(videoMode(VideoMode)), _osxGrabber, SLOT(setVideoMode(VideoMode))); - QObject::connect(_osxGrabber, SIGNAL(emitImage(int, const Image&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image&, const int)) ); + QObject::connect(_kodiVideoChecker, SIGNAL(grabbingMode(GrabbingMode)), _osxGrabber, SLOT(setGrabbingMode(GrabbingMode))); + QObject::connect(_kodiVideoChecker, SIGNAL(videoMode(VideoMode)), _osxGrabber, SLOT(setVideoMode(VideoMode))); + QObject::connect(_osxGrabber, SIGNAL(emitImage(int, const Image&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image&, const int)) ); - _osxGrabber->start(); - Info(_log, "OSX grabber created and started"); + _osxGrabber->start(); + Info(_log, "OSX grabber created and started"); + } } #else ErrorIf(_config.isMember("osxgrabber"), _log, "The osx grabber can not be instantiated, because it has been left out from the build");