Playbin3 can’t accept caps from testbinsrc in 1.22.2
Describe your issue
Attempting to use any of the example launch lines from the testsrcbin documentation that uses playbin3 and that also defines caps, fails to play with multiple errors.
Using gst-play-1.0 to play the same testsrcbin URI that includes caps plays without error.
Expected Behavior
Playbin3 should be able to accept caps defined in the testbinsrc URI without leading to an internal data stream error.
Observed Behavior
Pipeline fails to play.
Setup
- Fedora 38
- gstreamner 1.22.2
gst-launch-1.0 playbin3 uri="testbin://video,pattern=green,caps=[video/x-raw,width=1920,height=1080,framerate=30/1]"
Steps to reproduce the bug
- Any pipeline from gst-launch-1.0 that uses playbin3 and the testbin:// uri that includes caps.
How reproducible is the bug?
Always
Screenshots if relevant
Solutions you have tried
No errors using gst-play-1.0.
Same errors when using playbin3 and testsrcbin from Rust.
Related non-duplicate issues
Additional Information
[stemcc@workstation]$ gst-launch-1.0 playbin3 uri="testbin://audio,volume=0.5+video,pattern=white,caps=[video/x-raw,width=1920,height=1080,framerate=30/1]"
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
(gst-launch-1.0:1793304): GStreamer-CRITICAL **: 15:31:30.967: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed
(gst-launch-1.0:1793304): GStreamer-CRITICAL **: 15:31:30.968: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed
(gst-launch-1.0:1793304): GStreamer-CRITICAL **: 15:31:30.968: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
(gst-launch-1.0:1793304): GStreamer-CRITICAL **: 15:31:30.968: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed
(gst-launch-1.0:1793304): GStreamer-CRITICAL **: 15:31:30.968: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed
(gst-launch-1.0:1793304): GStreamer-CRITICAL **: 15:31:30.968: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
WARNING: from element /GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstTestSrcBin:testsrcbin0/GstCapsFilter:capsfilter1: not negotiated
(gst-launch-1.0:1793304): GStreamer-CRITICAL **: 15:31:30.968: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps2)' failed
Additional debug info:
../libs/gst/base/gstbasetransform.c(1432): gst_base_transform_reconfigure_unlocked (): /GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstTestSrcBin:testsrcbin0/GstCapsFilter:capsfilter1:
not negotiated
(gst-launch-1.0:1793304): GStreamer-CRITICAL **: 15:31:30.968: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
(gst-launch-1.0:1793304): GStreamer-CRITICAL **: 15:31:30.968: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed
(gst-launch-1.0:1793304): GStreamer-CRITICAL **: 15:31:30.968: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed
(gst-launch-1.0:1793304): GStreamer-CRITICAL **: 15:31:30.968: gst_mini_object_unref: assertion 'mini_object != NULL' failed
ERROR: from element /GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstTestSrcBin:testsrcbin0/GstVideoTestSrc:videotestsrc0: Internal data stream error.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3132): gst_base_src_loop (): /GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstTestSrcBin:testsrcbin0/GstVideoTestSrc:videotestsrc0:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
(gst-launch-1.0:1793304): GStreamer-CRITICAL **: 15:31:30.971: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
Freeing pipeline ...
[idiolx@dev-10c scripts]$ gst-launch-1.0 playbin3 uri="testbin://video,pattern=green,caps=[video/x-raw,width=1920,height=1080,framerate=30/1]"
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
(gst-launch-1.0:1808799): GStreamer-CRITICAL **: 16:23:19.319: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed
(gst-launch-1.0:1808799): GStreamer-CRITICAL **: 16:23:19.319: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed
(gst-launch-1.0:1808799): GStreamer-CRITICAL **: 16:23:19.319: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
(gst-launch-1.0:1808799): GStreamer-CRITICAL **: 16:23:19.319: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed
(gst-launch-1.0:1808799): GStreamer-CRITICAL **: 16:23:19.319: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed
(gst-launch-1.0:1808799): GStreamer-CRITICAL **: 16:23:19.319: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
(gst-launch-1.0:1808799): GStreamer-CRITICAL **: 16:23:19.319: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps2)' failed
(gst-launch-1.0:1808799): GStreamer-CRITICAL **: 16:23:19.319: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
(gst-launch-1.0:1808799): GStreamer-CRITICAL **: 16:23:19.319: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed
(gst-launch-1.0:1808799): GStreamer-CRITICAL **: 16:23:19.319: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed
(gst-launch-1.0:1808799): GStreamer-CRITICAL **: 16:23:19.319: gst_mini_object_unref: assertion 'mini_objecWARNING: from element /GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstTestSrcBin:testsrcbin0/GstCapsFilter:capsfilter0: not negotiated
t != NULL' failed
Additional debug info:
../libs/gst/base/gstbasetransform.c(1432): gst_base_transform_reconfigure_unlocked (): /GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstTestSrcBin:testsrcbin0/GstCapsFilter:capsfilter0:
not negotiated ERROR: from element /GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstTestSrcBin:testsrcbin0/GstVideoTestSrc:videotestsrc0: Internal data stream error.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3132): gst_base_src_loop (): /GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstTestSrcBin:testsrcbin0/GstVideoTestSrc:videotestsrc0:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Edited by stemcc