GNOME Bugzilla – Bug 162626
[videoscale] cannot handle lists of fractions
Last modified: 2005-01-29 13:24:15 UTC
gst-launch crashes with a floating point exception if a fractional property is specified on the command line. This makes it impossible to set pixel-aspect-ratios which can hinder testing. Sample output below. $ gst-launch-0.8 filesrc location=capture001.dv ! dvdec ! videoscale ! 'video/x-raw-rgb,width=64,height=48,pixel-aspect-ratio=(fraction)16/15' ! fakesink RUNNING pipeline ... (process:9867): GStreamer-CRITICAL **: file gstvalue.c: line 2437 (gst_value_get_fraction_numerator): assertion `GST_VALUE_HOLDS_FRACTION (value)' failed (process:9867): GStreamer-CRITICAL **: file gstvalue.c: line 2453 (gst_value_get_fraction_denominator): assertion `GST_VALUE_HOLDS_FRACTION (value)' failed Floating point exception
stack trace?
i reproduced it with a dv file i have and latest CVS : 0xb78b73fa in gst_videoscale_link (pad=0x8271ef8, caps=0x8277e80) at gstvideoscale.c:271 271 gstvideoscale.c: Aucun fichier ou répertoire de ce type. in gstvideoscale.c (gdb) bt
+ Trace 54069
if you want more info, let me know
I suppose serialization (string-to-fraction) conversion is simply missing? Feel free to add.
The problem seems to be rather that the otherpar GstValue in gstvideoscale.c:268-269 holds a GstValueList of PAR fractions instead of a single fraction value. INFO (0x8050938 - 307404:19:00.742419000) GST_CAPS( 697) gstpad.c(1533):gst_pad_try_set_caps:<videoscale0:sink> caps video/x-raw-rgb, depth=(int)24, bpp=(int)32, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)64, height=(int)48, framerate=(double)1, pixel-aspect-ratio=(fraction)16/15 DEBUG (0x8050938 - 307404:19:00.743314000) GST_PADS( 697) gstpad.c(1160):gst_pad_link_intersect: ... srccaps video/x-raw-yuv, format=(fourcc)YUY2, width=(int)720, height=(int){ 480, 576 }, pixel-aspect-ratio=(fraction){ 16/15, 64/45, 80/89, 320/267 }, framerate=(double)[ 1, 60 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)720, height=(int){ 480, 576 }, pixel-aspect-ratio=(fraction){ 16/15, 64/45, 80/89, 320/267 }, framerate=(double)[ 1, 60 ]; video/x-raw-rgb, bpp=(int)24, depth=(int)24, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, width=(int)720, height=(int){ 480, 576 }, pixel-aspect-ratio=(fraction){ 16/15, 64/45, 80/89, 320/267 }, framerate=(double)[ 1, 60 ] DEBUG (0x8050938 - 307404:19:00.811059000) GST_PADS( 697) gstpad.c(1161):gst_pad_link_intersect: ... sinkcaps video/x-raw-rgb, depth=(int)24, bpp=(int)32, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)64, height=(int)48, framerate=(double)1, pixel-aspect-ratio=(fraction)16/15 GStreamer-CRITICAL **: file gstvalue.c: line 2566 (gst_value_get_fraction_numerator): assertion `GST_VALUE_HOLDS_FRACTION (value)' failed Not sure what the right approach to fixing this is. Bug should also be reassigned to gst-plugins, shouldn't it? Cheers -Tim
Yes, nicely pointed out.
Fixed by adding list support to videoscale.