mirror of
				https://github.com/hyperion-project/hyperion.ng.git
				synced 2025-03-01 10:33:28 +00:00 
			
		
		
		
	@@ -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
 | 
			
		||||
	},
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
 
 | 
			
		||||
@@ -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<ColorRgb>&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image<ColorRgb>&, 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<ColorRgb>&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image<ColorRgb>&, 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<ColorRgb>&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image<ColorRgb>&, 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<ColorRgb>&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image<ColorRgb>&, 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<ColorRgb>&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image<ColorRgb>&, 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<ColorRgb>&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image<ColorRgb>&, 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<ColorRgb>&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image<ColorRgb>&, 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<ColorRgb>&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image<ColorRgb>&, 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");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user