Integral 1 mit Y&C grabber funktioniert direkt am Denon soweit alles außer Dolby Vision, sofern es auf default EDID konfiguriert ist. Der EDID von meiner Fernseher hat nur ärger gemacht. Hab btw. auch komplett alles neu gemacht APA102c nun verwendet.
Intergal 1 mit output1 Y&C, output2 TV und input Denon funktioniert allerdings nicht am TV, aber am Grabber, jemand ’n Idee ob‘s mit dem Integral 2/Vertex besser funktionieren könnte?
Die Latenz ist nicht wirklich optimal, der LG Fernseher hat auch wirklich ’ne geringe Latenz, selbst wenn der GameModus aus ist. Ich versuche bisschen am code zu patchen und dinge zu optimieren. Wenn nicht mehr geht, müsste ich die Latenz zum TV erhöhen, allerdings weiß ich noch nicht wie ich das machen soll.
EDIT2: Ich habe jetzt durch die Debug Ausgabe und dem Quellcode (V4L2Grabber.cpp) herausgefunden, dass Hyperion beim start immer die maximal mögliche Auflösung anwendet.
Nachdem ich die Auflösung im Quellcode fest auf 1280x720 eingestellt und alles neu compiliert habe, sind es jetzt gefühlt ein paar ms weniger delay.
@esprit1711 hattest du hyperion auf 720p in etwa so gepatched?
$ git diff HEAD^ HEAD
diff --git a/libsrc/grabber/v4l2/V4L2Grabber.cpp b/libsrc/grabber/v4l2/V4L2Grabber.cpp
index 43db07c3..5bc6b34e 100644
--- a/libsrc/grabber/v4l2/V4L2Grabber.cpp
+++ b/libsrc/grabber/v4l2/V4L2Grabber.cpp
@@ -635,10 +635,10 @@ void V4L2Grabber::init_device(VideoStandard videoStandard, int input)
}
// initialize current width and height
- _width = fmt.fmt.pix.width;
- _height = fmt.fmt.pix.height;
-
- // display the used width and height
+ //_width = fmt.fmt.pix.width;
+ //_height = fmt.fmt.pix.height;
+ _width = 1280;
+ _height = 720;
Debug(_log, "Set resolution to width=%d height=%d", _width, _height );
// Trying to set frame rate
diff --git a/libsrc/grabber/v4l2/V4L2Grabber.cpp b/libsrc/grabber/v4l2/V4L2Grabber.cpp
index 5bc6b34e..1aec4199 100644
--- a/libsrc/grabber/v4l2/V4L2Grabber.cpp
+++ b/libsrc/grabber/v4l2/V4L2Grabber.cpp
@@ -598,15 +598,19 @@ void V4L2Grabber::init_device(VideoStandard videoStandard, int input)
{
case V4L2_FRMSIZE_TYPE_DISCRETE:
{
- max_width = std::max(max_width, frmsizeenum.discrete.width);
- max_height = std::max(max_height, frmsizeenum.discrete.height);
+ //max_width = std::max(max_width, frmsizeenum.discrete.width);
+ //max_height = std::max(max_height, frmsizeenum.discrete.height);
+ max_width = 1280;
+ max_height = 720;
}
break;
case V4L2_FRMSIZE_TYPE_CONTINUOUS:
case V4L2_FRMSIZE_TYPE_STEPWISE:
{
- max_width = std::max(max_width, frmsizeenum.stepwise.max_width);
- max_height = std::max(max_height, frmsizeenum.stepwise.max_height);
+ //max_width = std::max(max_width, frmsizeenum.stepwise.max_width);
+ //max_height = std::max(max_height, frmsizeenum.stepwise.max_height);
+ max_width = 1280;
+ max_height = 720;
}
}
Alles anzeigen
Ich habe außerdem einen Bug gefunden. die Glättung lässt sich nicht deaktivieren. egal ob die Checkbox gesetzt oder nicht gesetzt ist wird immer entsprechend der Eingestellten Werte geglättet.
@esprit1711 ich hab preventiv den boolean mal auf false gesetzt, hast du das an der gleichen stelle auch so gemacht?
--- a/libsrc/hyperion/LinearColorSmoothing.cpp
+++ b/libsrc/hyperion/LinearColorSmoothing.cpp
@@ -23,7 +23,7 @@ LinearColorSmoothing::LinearColorSmoothing(const QJsonDocument& config, Hyperion
, _currentConfigId(0)
{
// set initial state to true, as LedDevice::enabled() is true by default
- _hyperion->getComponentRegister().componentStateChanged(hyperion::COMP_SMOOTHING, true);
+ _hyperion->getComponentRegister().componentStateChanged(hyperion::COMP_SMOOTHING, false);
// init cfg 0 (default)
_cfgList.append({false, 200, 25, 0});
edit:
Verifizierung:
$ v4l2-ctl -d /dev/video0 --get-fmt-video
Format Video Capture:
Width/Height : 1280/720
Pixel Format : 'MJPG' (Motion-JPEG)
Field : None
Bytes per Line : 0
Size Image : 1843200
Colorspace : sRGB
Transfer Function : Default (maps to sRGB)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Full Range)
Flags
Alles anzeigen