mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
GrabberFix PiCam
This commit is contained in:
@@ -54,6 +54,10 @@ V4L2Grabber::V4L2Grabber(const QString & device
|
||||
, _streamNotifier(nullptr)
|
||||
, _initialized(false)
|
||||
, _deviceAutoDiscoverEnabled(false)
|
||||
, _grabberFixEnabled(true)
|
||||
, _gf_width(0)
|
||||
, _gf_height(0)
|
||||
, _gf_vtype("JPEG")
|
||||
{
|
||||
setPixelDecimation(pixelDecimation);
|
||||
getV4Ldevices();
|
||||
@@ -206,6 +210,14 @@ void V4L2Grabber::setSignalDetectionOffset(double horizontalMin, double vertical
|
||||
|
||||
Info(_log, "Signal detection area set to: %f,%f x %f,%f", _x_frac_min, _y_frac_min, _x_frac_max, _y_frac_max );
|
||||
}
|
||||
void V4L2Grabber::setGrabberFixValues(int width, int height, string vtype)
|
||||
{
|
||||
_gf_width = width;
|
||||
_gf_height = height;
|
||||
_gf_vtype = vtype;
|
||||
|
||||
Warning(_log, "Grabber fix set to: %d x %d, %s", _gf_width, _gf_height, _gf_vtype);
|
||||
}
|
||||
|
||||
bool V4L2Grabber::start()
|
||||
{
|
||||
@@ -615,6 +627,19 @@ void V4L2Grabber::init_device(VideoStandard videoStandard, int input)
|
||||
|
||||
fmtdesc.index++;
|
||||
}
|
||||
// RPi Camera V1.3 & V2.1 workaround resolution and pixelformat
|
||||
Warning(_log, "vor _grabberFixEnabled");
|
||||
if (_grabberFixEnabled) {
|
||||
Warning(_log, "_grabberFixEnabled");
|
||||
//if (max_width == 2592 || max_width == 3280) {
|
||||
max_width = _gf_width;
|
||||
max_height = _gf_height;
|
||||
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_UYVY;
|
||||
Warning(_log, "wxh %d x %d", max_width, max_height);
|
||||
//}
|
||||
} else {
|
||||
Warning(_log, "nicht _grabberFixEnabled");
|
||||
}
|
||||
|
||||
// set the settings
|
||||
if (max_width != 0 || max_height != 0)
|
||||
@@ -1148,6 +1173,14 @@ void V4L2Grabber::setSignalDetectionEnable(bool enable)
|
||||
Info(_log, "Signal detection is now %s", enable ? "enabled" : "disabled");
|
||||
}
|
||||
}
|
||||
void V4L2Grabber::setGrabberFixEnable(bool enable)
|
||||
{
|
||||
if (_grabberFixEnabled != enable)
|
||||
{
|
||||
_grabberFixEnabled = enable;
|
||||
Info(_log, "Grabber fix is now %s", enable ? "enabled" : "disabled");
|
||||
}
|
||||
}
|
||||
|
||||
void V4L2Grabber::setPixelDecimation(int pixelDecimation)
|
||||
{
|
||||
|
@@ -52,6 +52,10 @@ void V4L2Wrapper::setSignalDetectionOffset(double verticalMin, double horizontal
|
||||
{
|
||||
_grabber.setSignalDetectionOffset(verticalMin, horizontalMin, verticalMax, horizontalMax);
|
||||
}
|
||||
void V4L2Wrapper::setGrabberFixValues(int width, int height, string vtype)
|
||||
{
|
||||
_grabber.setGrabberFixValues(width, height, vtype);
|
||||
}
|
||||
|
||||
void V4L2Wrapper::newFrame(const Image<ColorRgb> &image)
|
||||
{
|
||||
@@ -78,6 +82,15 @@ bool V4L2Wrapper::getSignalDetectionEnable()
|
||||
{
|
||||
return _grabber.getSignalDetectionEnabled();
|
||||
}
|
||||
void V4L2Wrapper::setGrabberFixEnable(bool enable)
|
||||
{
|
||||
_grabber.setGrabberFixEnable(enable);
|
||||
}
|
||||
|
||||
bool V4L2Wrapper::getGrabberFixEnable()
|
||||
{
|
||||
return _grabber.getGrabberFixEnabled();
|
||||
}
|
||||
|
||||
void V4L2Wrapper::setDeviceVideoStandard(QString device, VideoStandard videoStandard)
|
||||
{
|
||||
|
@@ -165,6 +165,10 @@ void GrabberWrapper::handleSettingsUpdate(const settings::type& type, const QJso
|
||||
_ggrabber->setDeviceVideoStandard(
|
||||
obj["device"].toString("auto"),
|
||||
parseVideoStandard(obj["standard"].toString("no-change")));
|
||||
_ggrabber->setGrabberFixValues(
|
||||
obj["gFWidth"].toInt(0),
|
||||
obj["gFHeight"].toInt(0),
|
||||
obj["gFVType"].toString("JPEG"));
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -194,6 +194,64 @@
|
||||
},
|
||||
"required" : true,
|
||||
"propertyOrder" : 15
|
||||
},
|
||||
"grabberFix" :
|
||||
{
|
||||
"type" : "boolean",
|
||||
"title" : "edt_conf_v4l2_grabberFix_title",
|
||||
"default" : false,
|
||||
"required" : true,
|
||||
"propertyOrder" : 16
|
||||
},
|
||||
"gFWidth" :
|
||||
{
|
||||
"type" : "integer",
|
||||
"title" : "edt_conf_v4l2_gFWidth_title",
|
||||
"minimum" : 320,
|
||||
"maximum" : 1980,
|
||||
"default" : 1280,
|
||||
"step" : 10,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"grabberFix": true
|
||||
}
|
||||
},
|
||||
"required" : true,
|
||||
"propertyOrder" : 17
|
||||
},
|
||||
"gFHeight" :
|
||||
{
|
||||
"type" : "integer",
|
||||
"title" : "edt_conf_v4l2_gFHeight_title",
|
||||
"minimum" : 240,
|
||||
"maximum" : 1080,
|
||||
"default" : 720,
|
||||
"step" : 10,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"grabberFix": true
|
||||
}
|
||||
},
|
||||
"required" : true,
|
||||
"propertyOrder" : 18
|
||||
},
|
||||
"gFVType" :
|
||||
{
|
||||
"type" : "string",
|
||||
"title" : "edt_conf_v4l2_gFVType_title",
|
||||
"enum" : ["UYVY","YUYV","RGB32"],
|
||||
"options":
|
||||
{
|
||||
"enum_titles": ["UYVY","YUYV","RGB32"]
|
||||
},
|
||||
"default" : "UYVY",
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"grabberFix": true
|
||||
}
|
||||
},
|
||||
"required" : true,
|
||||
"propertyOrder" : 19
|
||||
}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
|
Reference in New Issue
Block a user