After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 631774 - [xvimagesink] sets non-simple caps on pad_alloced buffer
[xvimagesink] sets non-simple caps on pad_alloced buffer
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal blocker
: 0.10.31
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2010-10-09 19:32 UTC by Tim-Philipp Müller
Modified: 2010-10-10 21:22 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Tim-Philipp Müller 2010-10-09 19:32:33 UTC
Haven't looked what's happening yet, but when running gst-plugins-bad/tests/icled/output-selector-test, it fails with:

GStreamer-CRITICAL **: gst_pad_set_caps: assertion `caps == NULL || gst_caps_is_fixed (caps)' failed

which seems to come from videotestsrc:

  • #3 g_log
    at /glib2.0-2.26.0/glib/gmessages.c line 577
  • #4 gst_pad_set_caps
    at gstpad.c line 2649
  • #5 gst_pad_alloc_buffer_full
    at gstpad.c line 3057
  • #6 gst_video_test_src_create
    at gstvideotestsrc.c line 855
  • #7 gst_base_src_get_range
    at gstbasesrc.c line 2128
  • #8 gst_base_src_loop
    at gstbasesrc.c line 2385
  • #9 gst_task_func
    at gsttask.c line 271
  • #10 g_thread_pool_thread_proxy
    at /glib2.0-2.26.0/glib/gthreadpool.c line 319
  • #11 g_thread_create_proxy
    at /glib2.0-2.26.0/glib/gthread.c line 1897
  • #12 start_thread
    at pthread_create.c line 300
  • #13 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 112
  • #14 ??
  • #5 gst_pad_alloc_buffer_full
    at gstpad.c line 3057
(gdb) call gst_caps_to_string(newcaps)
$3 = ( gchar *) 0x7fffec001370 "video/x-raw-yuv, format=(fourcc)YV12, width=(int)320, height=(int)240, framerate=(fraction)30/1, color-matrix=(string)sdtv, chroma-site=(string)mpeg2; video/x-raw-yuv, format=(fourcc)I420, width=(int)320, height=(int)240, framerate=(fraction)30/1, color-matrix=(string)sdtv, chroma-site=(string)mpeg2; video/x-raw-yuv, format=(fourcc)YUY2, width=(int)320, height=(int)240, framerate=(fraction)30/1, color-matrix=(string)sdtv, chroma-site=(string)mpeg2"
Comment 1 Tim-Philipp Müller 2010-10-09 22:38:54 UTC
Culprit seems to be xvimagesink:

xvimagesink xvimagesink.c:2671:gst_xvimagesink_buffer_alloc: intersection: video/x-raw-yuv, format=(fourcc)YV12, width=(int)320, height=(int)240, framerate=(fraction)30/1, color-matrix=(string)sdtv, chroma-site=(string)mpeg2; video/x-raw-yuv, format=(fourcc)I420, width=(int)320, height=(int)240, framerate=(fraction)30/1, color-matrix=(string)sdtv, chroma-site=(string)mpeg2; video/x-raw-yuv, format=(fourcc)YUY2, width=(int)320, height=(int)240, framerate=(fraction)30/1, color-matrix=(string)sdtv, chroma-site=(string)mpeg2

Not strictly a regression, but might be worth fixing before the release. Setting as blocker for the time being.

Even with that fixed, the test errors out with not-negotiated, so something else might be going on too.
Comment 2 Sebastian Dröge (slomo) 2010-10-10 16:36:32 UTC
commit 96006aded8a6bd8790c5f4b7ab1661dd847b54bd
Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
Date:   Sun Oct 10 18:35:54 2010 +0200

    xvimagesink: Make sure that the caps for upstream negotiation are simple cap
    
    Fixes bug #631774.
Comment 3 Stefan Sauer (gstreamer, gtkdoc dev) 2010-10-10 21:22:50 UTC
Wonder if that is the right fix? Just just moved the truncate a bit down. But Imho that should not be needed. The intersection at the start of gst_xvimagesink_buffer_alloc() should return simple caps, given that the passed caps are simple and we can create a proper set of caps in the xcontext.