MediaPlayer VideoOutput SIGSEGV gst_v4l2_object_fill_format_list
-
With QML MediaPlayer and VideoOutput
and
player.source = "gstreamer-pipeline: v4l2src device=/dev/video2 ! capsfilter caps=video/x-raw,width=720,height=480,framerate=25/1"We are getting an intermittent SIGSEGV in
gst_v4l2_object_fill_format_list
in /usr/src/debug/gstreamer1.0-plugins-good/1.24.0.imx/sys/v4l2/gstv4l2object.cIt either fails early, or works and keeps working.
By comparison, the following always works:
player.source = "gstreamer-pipeline: videotestsrc ! capsfilter caps=video/x-raw,width=720,height=480,framerate=25/1"This is on a custom board/custom Yocto
NXP i.MX 8X
ADV7280A-M -
try from command line:
gst-launch-1.0 v4l2src device=/dev/video2 ! capsfilter caps=video/x-raw,width=720,height=480,framerate=25/1 | autovideosink
or
gst-launch-1.0 v4l2src device=/dev/video2 ! capsfilter caps=video/x-raw,width=720,height=480,framerate=25/1 | waylandsink
to see if your pipeline works or not at first.If not, show the output here.
gst-launch-1.0 -v v4l2src device=/dev/video2 ! capsfilter caps=video/x-raw,width=720,height=480,framerate=25/1 | autovideosink -
try from command line:
gst-launch-1.0 v4l2src device=/dev/video2 ! capsfilter caps=video/x-raw,width=720,height=480,framerate=25/1 | autovideosink
or
gst-launch-1.0 v4l2src device=/dev/video2 ! capsfilter caps=video/x-raw,width=720,height=480,framerate=25/1 | waylandsink
to see if your pipeline works or not at first.If not, show the output here.
gst-launch-1.0 -v v4l2src device=/dev/video2 ! capsfilter caps=video/x-raw,width=720,height=480,framerate=25/1 | autovideosink -
Hi @JoeCFD thank you for replying. Yes pipeline works from the command line each time:
gst-launch-1.0 v4l2src device=/dev/video2 ! capsfilter caps=video/x-raw,width=720,height=480,framerate=25/1 ! autovideosink
-
@petero3 I guess Qt6 might have removed this feature of running a gstreamer pipeline. This feature is only available in Qt5.
-
@petero3 I guess Qt6 might have removed this feature of running a gstreamer pipeline. This feature is only available in Qt5.
IIRC gstreamer pipelines were removed in the first Qt 6 versions, but are present in later ones.
The following works fine with Qt 6.8.3:
player.source = "gstreamer-pipeline: videotestsrc ! capsfilter caps=video/x-raw,width=720,height=480,framerate=25/1"
As long as source is set dynamically onCompleted as per:
https://bugreports.qt.io/browse/QTBUG-134554and:
player.source = "gstreamer-pipeline: v4l2src device=/dev/video2 ! capsfilter caps=video/x-raw,width=720,height=480,framerate=25/1"
does not always fail. If gst_v4l2_object_fill_format_list is going to segfault, it does so early. If it doesn't segfault, then it works.
So present, but flaky for some reason.
We are also trying qml6glsink, but so far that just gives a white screen on our device.
-
IIRC gstreamer pipelines were removed in the first Qt 6 versions, but are present in later ones.
The following works fine with Qt 6.8.3:
player.source = "gstreamer-pipeline: videotestsrc ! capsfilter caps=video/x-raw,width=720,height=480,framerate=25/1"
As long as source is set dynamically onCompleted as per:
https://bugreports.qt.io/browse/QTBUG-134554and:
player.source = "gstreamer-pipeline: v4l2src device=/dev/video2 ! capsfilter caps=video/x-raw,width=720,height=480,framerate=25/1"
does not always fail. If gst_v4l2_object_fill_format_list is going to segfault, it does so early. If it doesn't segfault, then it works.
So present, but flaky for some reason.
We are also trying qml6glsink, but so far that just gives a white screen on our device.