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 489940 - [gdkpixbufdec] gst_value_set_fraction: assertion 'denominator != 0' failed
[gdkpixbufdec] gst_value_set_fraction: assertion 'denominator != 0' failed
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
0.10.6
Other All
: Normal normal
: 0.10.7
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2007-10-24 21:02 UTC by Olivier Aubert
Modified: 2007-10-25 10:26 UTC
See Also:
GNOME target: ---
GNOME version: 2.17/2.18



Description Olivier Aubert 2007-10-24 21:02:20 UTC
Please describe the problem:
gdkpixbufdec does not seem to be working (on Debian/testing).

Steps to reproduce:
gst-launch filesrc location=/tmp/test.svg ! gdkpixbufdec ! ffmpegcolorspace ! xvimagesink


Actual results:
It outputs the following warning:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
(gst-launch-0.10:29274): GStreamer-CRITICAL **: gst_value_set_fraction: assertion `denominator != 0' failed

then freezes.

Expected results:
It should display the SVG file, the same pipeline with a JPG file and jpegdec instead works fine.

Does this happen every time?
Yes, even with other types of files (png, gif, tiff...).

Other information:
Here is the part of the debug log (pipeline run with GST_DEBUG="*:4", interrupted with Ctrl-C) around the warning (I tried to post the whole log, but bugzilla refuses too long messages).

0:00:00.000248000 28922 0x804e050 INFO              GST_INIT gst.c:594:init_pre: Initializing GStreamer Core Library version 0.10.14
0:00:00.000358000 28922 0x804e050 INFO              GST_INIT gst.c:595:init_pre: Using library installed in /usr/lib
0:00:00.000391000 28922 0x804e050 INFO              GST_INIT gst.c:605:init_pre: Linux pennylane 2.6.22-2-686 #1 SMP Fri Aug 31 00:24:01 UTC 2007 i686
[...]
0:00:00.206062000 28922 0x8135170 DEBUG                 task gsttask.c:154:gst_task_func: Entering task 0x8137800, thread 0x8135170
0:00:00.206108000 28922 0x8135170 DEBUG              basesrc gstbasesrc.c:1462:gst_base_src_update_length:<filesrc0> reading offset 0, length 4096, size 264, segment.stop -1, maxsize 264
0:00:00.206141000 28922 0x8135170 DEBUG              basesrc gstbasesrc.c:1540:gst_base_src_get_range:<filesrc0> calling create offset 0 length 264, time 0
0:00:00.206187000 28922 0x8135170 DEBUG              basesrc gstbasesrc.c:1432:gst_base_src_do_sync:<filesrc0> get_times returned invalid start
0:00:00.206214000 28922 0x8135170 DEBUG              basesrc gstbasesrc.c:1560:gst_base_src_get_range:<filesrc0> buffer ok
0:00:00.206246000 28922 0x8135170 DEBUG            GST_EVENT gstpad.c:4183:gst_pad_send_event:<gdkpixbuf0:sink> have event type newsegment
0:00:00.206283000 28922 0x8135170 INFO              GST_PADS gstpad.c:2913:gst_pad_event_default_dispatch:<gdkpixbuf0:sink> Sending event 0x80622a0 (newsegment) to all internally linked pads
0:00:00.206337000 28922 0x8135170 DEBUG             GST_PADS gstpad.c:2866:gst_pad_get_internal_links_default:<gdkpixbuf0:sink> adding pad gdkpixbuf0:src
0:00:00.206378000 28922 0x8135170 DEBUG            GST_EVENT gstpad.c:4183:gst_pad_send_event:<ffmpegcsp0:sink> have event type newsegment
0:00:00.206419000 28922 0x8135170 DEBUG        basetransform gstbasetransform.c:1292:gst_base_transform_sink_eventfunc:<ffmpegcsp0> received NEW_SEGMENT 0 -- 264, time 0, accum 0
0:00:00.206453000 28922 0x8135170 DEBUG            GST_EVENT gstpad.c:4183:gst_pad_send_event:<xvimagesink0:sink> have event type newsegment
0:00:00.206482000 28922 0x8135170 DEBUG             basesink gstbasesink.c:1951:gst_base_sink_event:<xvimagesink0> event 0x80622a0 (newsegment)
0:00:00.206509000 28922 0x8135170 DEBUG             basesink gstbasesink.c:1974:gst_base_sink_event:<xvimagesink0> newsegment 0x80622a0
0:00:00.206543000 28922 0x8135170 DEBUG             basesink gstbasesink.c:880:gst_base_sink_configure_segment:<xvimagesink0> configured NEWSEGMENT update 0, rate 1.000000, applied rate 1.000000, format 2, 0 -- 264, time 0, accum 0
0:00:00.206583000 28922 0x8135170 DEBUG             basesink gstbasesink.c:1837:gst_base_sink_queue_object_unlocked:<xvimagesink0> now 0 prerolled items
0:00:00.206609000 28922 0x8135170 DEBUG             basesink gstbasesink.c:1894:gst_base_sink_queue_object_unlocked:<xvimagesink0> need more preroll data 0 <= 0
0:00:00.206640000 28922 0x8135170 DEBUG             GST_PADS gstpad.c:4211:gst_pad_send_event:<xvimagesink0:sink> sent event, result 1
0:00:00.206670000 28922 0x8135170 DEBUG             GST_PADS gstpad.c:4211:gst_pad_send_event:<ffmpegcsp0:sink> sent event, result 1
0:00:00.206700000 28922 0x8135170 DEBUG             GST_PADS gstpad.c:4211:gst_pad_send_event:<gdkpixbuf0:sink> sent event, result 1
0:00:00.206828000 28922 0x8135170 DEBUG              basesrc gstbasesrc.c:1462:gst_base_src_update_length:<filesrc0> reading offset 264, length 4096, size 264, segment.stop -1, maxsize 264
0:00:00.206862000 28922 0x8135170 DEBUG              basesrc gstbasesrc.c:1605:gst_base_src_get_range:<filesrc0> unexpected length 4096 (offset=264, size=264)
0:00:00.206891000 28922 0x8135170 INFO               basesrc gstbasesrc.c:1714:gst_base_src_loop:<filesrc0> pausing after gst_base_src_get_range() = unexpected
0:00:00.206918000 28922 0x8135170 DEBUG              basesrc gstbasesrc.c:1797:gst_base_src_loop:<filesrc0> pausing task, reason unexpected
0:00:00.206948000 28922 0x8135170 DEBUG             GST_PADS gstpad.c:4343:gst_pad_pause_task:<filesrc0:src> pause task
0:00:00.206976000 28922 0x8135170 DEBUG                 task gsttask.c:476:gst_task_pause:<task0> Pausing task 0x8137800
0:00:00.207013000 28922 0x8135170 DEBUG            GST_EVENT gstevent.c:286:gst_event_new: creating new event 0x80628a0 eos 86
0:00:00.207045000 28922 0x8135170 DEBUG            GST_EVENT gstpad.c:4183:gst_pad_send_event:<gdkpixbuf0:sink> have event type eos

(gst-launch-0.10:28922): GStreamer-CRITICAL **: gst_value_set_fraction: assertion `denominator != 0' failed
0:00:00.257611000 28922 0x8135170 DEBUG            gdkpixbuf gstgdkpixbuf.c:256:gst_gdk_pixbuf_flush: Set size to 800x600
0:00:00.257702000 28922 0x8135170 DEBUG             GST_CAPS gstpad.c:2373:gst_pad_set_caps:<gdkpixbuf0:src> caps video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, alpha_mask=(int)255, width=(int)800, height=(int)600, framerate=(fraction)0/0
0:00:00.257844000 28922 0x8135170 DEBUG             GST_PADS gstpad.c:2702:gst_pad_alloc_buffer_full:<gdkpixbuf0:src> offset 18446744073709551615, size 1920000
0:00:00.257881000 28922 0x8135170 DEBUG             GST_PADS gstpad.c:2633:gst_pad_buffer_alloc_unchecked:<ffmpegcsp0:sink> calling bufferallocfunc &gst_base_transform_buffer_alloc (@0xb788ddb0) for size 1920000 offset NONE
0:00:00.257920000 28922 0x8135170 DEBUG        basetransform gstbasetransform.c:1067:gst_base_transform_buffer_alloc:<ffmpegcsp0> allocating a buffer of size 1920000 ...
0:00:00.257947000 28922 0x8135170 DEBUG        basetransform gstbasetransform.c:1069:gst_base_transform_buffer_alloc:<ffmpegcsp0> ... and offset NONE
0:00:00.257974000 28922 0x8135170 DEBUG        basetransform gstbasetransform.c:1190:gst_base_transform_buffer_alloc:<ffmpegcsp0> not configured
0:00:00.258004000 28922 0x8135170 DEBUG             GST_PADS gstpad.c:2680:gst_pad_buffer_alloc_unchecked:<ffmpegcsp0:sink> fallback buffer alloc
0:00:00.261139000 28922 0x8135170 DEBUG            gdkpixbuf gstgdkpixbuf.c:282:gst_gdk_pixbuf_flush: pushing... 1920000 bytes
0:00:00.261221000 28922 0x8135170 DEBUG             GST_PADS gstpad.c:3437:gst_pad_chain_unchecked:<ffmpegcsp0:sink> caps changed to 0x815fb80 video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, alpha_mask=(int)255, width=(int)800, height=(int)600, framerate=(fraction)0/0
0:00:00.261588000 28922 0x8135170 DEBUG             GST_CAPS gstpad.c:2257:gst_pad_accept_caps:<ffmpegcsp0:sink> accept caps of 0x815fb80
0:00:00.261619000 28922 0x8135170 DEBUG             GST_PADS gstpad.c:2203:gst_pad_acceptcaps_default:<ffmpegcsp0:sink> caps video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, alpha_mask=(int)255, width=(int)800, height=(int)600, framerate=(fraction)0/0
0:00:00.261715000 28922 0x8135170 DEBUG             GST_CAPS gstpad.c:2049:gst_pad_get_caps:<ffmpegcsp0:sink> get pad caps
0:00:00.261743000 28922 0x8135170 DEBUG             GST_CAPS gstpad.c:1959:gst_pad_get_caps_unlocked:<ffmpegcsp0:sink> get pad caps
0:00:00.261769000 28922 0x8135170 DEBUG             GST_CAPS gstpad.c:1963:gst_pad_get_caps_unlocked:<ffmpegcsp0:sink> dispatching to pad getcaps function
0:00:00.261803000 28922 0x8135170 DEBUG             GST_CAPS gstpad.c:2077:gst_pad_peer_get_caps:<ffmpegcsp0:src> get peer caps
0:00:00.261831000 28922 0x8135170 DEBUG             GST_CAPS gstpad.c:2049:gst_pad_get_caps:<xvimagesink0:sink> get pad caps
0:00:00.261859000 28922 0x8135170 DEBUG             GST_CAPS gstpad.c:1959:gst_pad_get_caps_unlocked:<xvimagesink0:sink> get pad caps
0:00:00.261885000 28922 0x8135170 DEBUG             GST_CAPS gstpad.c:1963:gst_pad_get_caps_unlocked:<xvimagesink0:sink> dispatching to pad getcaps function
0:00:00.261917000 28922 0x8135170 DEBUG             GST_CAPS gstpad.c:1976:gst_pad_get_caps_unlocked:<xvimagesink0:sink> pad getcaps returned video/x-raw-yuv, format=(fourcc)YUY2, width=(int)[ 1, 2046 ], height=(int)[ 1, 2046 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-yuv, format=(fourcc)YV12, width=(int)[ 1, 2046 ], height=(int)[ 1, 2046 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-yuv, format=(fourcc)UYVY, width=(int)[ 1, 2046 ], height=(int)[ 1, 2046 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-yuv, format=(fourcc)I420, width=(int)[ 1, 2046 ], height=(int)[ 1, 2046 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:00.262177000 28922 0x8135170 DEBUG        basetransform gstbasetransform.c:561:gst_base_transform_getcaps:<ffmpegcsp0:sink> peer caps  video/x-raw-yuv, format=(fourcc)YUY2, width=(int)[ 1, 2046 ], height=(int)[ 1, 2046 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-yuv, format=(fourcc)YV12, width=(int)[ 1, 2046 ], height=(int)[ 1, 2046 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-yuv, format=(fourcc)UYVY, width=(int)[ 1, 2046 ], height=(int)[ 1, 2046 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-yuv, format=(fourcc)I420, width=(int)[ 1, 2046 ], height=(int)[ 1, 2046 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:00.262318000 28922 0x8135170 DEBUG        basetransform gstbasetransform.c:565:gst_base_transform_getcaps:<ffmpegcsp0:sink> our template  video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)I420; video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)YV12; video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)YUY2; video/x-raw-rgb, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)24, depth=(int)24, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, endianness=(int)4321; video/x-raw-rgb, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)24, depth=(int)24, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, endianness=(int)4321; video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)Y42B; video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)Y444; video/x-raw-rgb, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)32, depth=(int)32, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, alpha_mask=(int)255, endianness=(int)4321; video/x-raw-rgb, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)32, depth=(int)32, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, alpha_mask=(int)-16777216, endianness=(int)4321; video/x-raw-rgb, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)32, depth=(int)32, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, alpha_mask=(int)-16777216, endianness=(int)4321; video/x-raw-rgb, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)32, depth=(int)32, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, alpha_mask=(int)255, endianness=(int)4321; video/x-raw-rgb, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)32, depth=(int)24, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, endianness=(int)4321; video/x-raw-rgb, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)32, depth=(int)24, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, endianness=(int)4321; video/x-raw-rgb, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)32, depth=(int)24, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, endianness=(int)4321; video/x-raw-rgb, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)32, depth=(int)24, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, endianness=(int)4321; video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)YUV9; video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)YVU9; video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)Y41B; video/x-raw-rgb, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)16, depth=(int)16, red_mask=(int)63488, green_mask=(int)2016, blue_mask=(int)31, endianness=(int)1234; video/x-raw-rgb, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)16, depth=(int)15, red_mask=(int)31744, green_mask=(int)992, blue_mask=(int)31, endianness=(int)1234; video/x-raw-gray, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)8, depth=(int)8; video/x-raw-rgb, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], bpp=(int)8, depth=(int)8, endianness=(int)1234; video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)UYVY; video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)IYU1; video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)AYUV
0:00:00.263487000 28922 0x8135170 DEBUG        basetransform gstbasetransform.c:567:gst_base_transform_getcaps:<ffmpegcsp0:sink> intersected video/x-raw-yuv, format=(fourcc)YV12, width=(int)[ 1, 2046 ], height=(int)[ 1, 2046 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-yuv, format=(fourcc)YUY2, width=(int)[ 1, 2046 ], height=(int)[ 1, 2046 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-yuv, format=(fourcc)I420, width=(int)[ 1, 2046 ], height=(int)[ 1, 2046 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-yuv, format=(fourcc)UYVY, width=(int)[ 1, 2046 ], height=(int)[ 1, 2046 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
[...]
Comment 1 Tim-Philipp Müller 2007-10-25 10:26:59 UTC
This has been fixed in CVS:

 2007-06-28  Tim-Philipp Müller  <tim at centricular dot net>

        * ext/gdk_pixbuf/gstgdkpixbuf.c: (gst_gdk_pixbuf_sink_setcaps),
        (gst_gdk_pixbuf_class_init), (gst_gdk_pixbuf_flush),
        (gst_gdk_pixbuf_sink_event), (gst_gdk_pixbuf_change_state):
          Add state change function where we set 0/1 as default framerate in
          case our setcaps function isn't called, like it might not in a
          filesrc ! gdkpixbufdec scenario. Fixes assertion triggered by
          gdkpixbufdec trying to create caps with a 0/0 framerate.
          Also post an error message on the bus if gst_pad_push() fails when
          called from our sink event handler (+1 for flow returns for event
          functions in 0.11) instead of failing silently.