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 499178 - unexpected not negotiated and other weird beharviours
unexpected not negotiated and other weird beharviours
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal critical
: 0.10.7
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2007-11-23 13:42 UTC by Edgard Lima
Modified: 2007-11-29 10:35 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Edgard Lima 2007-11-23 13:42:17 UTC
1 - pngdec should negotiate with ximagesink (see first output bellow)

2 - if I dont put additional thread (fakesrc ! fakesink)
  it just get EOS without any message or screen (see second output bellow)

3 - if I put the additional thread (fakesrc ! fakesink) I get the message "not-negotiated" which is unexpected

4 - filesrc ! only_chain_func_element ! pngdec ! ximagesink (I think I got GST_FLOW_RESEND for gst_pad_push) and it just finish without do nothing (no msg, no screen)

5- filesrc ! only_chain_func_element ! pngdec ! ximagesink fakesrc ! fakesink (I think I got GST_FLOW_RESEND for gst_pad_push) and it just finish without do nothing (no msg, no screen)

6- by just putting ffmpegcolorspace between pngdec and ximagesink everything works fine. BUT ffmpegcolorspace shouldn't not be need in this case.


edlima@feisty-laptop:~/Projects/TestFiles$ gst-launch-0.10 filesrc location=gen.png ! pngdec ! ximagesink 
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 281000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
FREEING pipeline ...



edlima@feisty-laptop:~/Projects/TestFiles$ gst-launch-0.10 filesrc location=gen.png ! pngdec ! ximagesink  fakesrc ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /pipeline0/pngdec0: Internal data stream error.
Additional debug info:
gstpngdec.c(520): gst_pngdec_task (): /pipeline0/pngdec0:
stream stopped, reason not-negotiated
Execution ended after 720000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
FREEING pipeline ...
Comment 1 René Stadler 2007-11-26 13:12:48 UTC
Also try this:

gst-launch-0.10 -v filesrc location=test.png ! pngdec ! ximagesink

Use a PNG file that differs from your X display in bpp to get this proper failure (with gst 0.10.14 from Ubuntu Gutsy):

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/pipeline0/pngdec0.src: caps = video/x-raw-rgb, width=(int)320, height=(int)240, bpp=(int)32, framerate=(fraction)0/1, depth=(int)32, endianness=(int)4321, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, alpha_mask=(int)255
ERROR: from element /pipeline0/pngdec0: Internal data stream error.
Additional debug info:
gstpngdec.c(515): gst_pngdec_task (): /pipeline0/pngdec0:
stream stopped, reason not-negotiated
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
/pipeline0/pngdec0.src: caps = NULL
FREEING pipeline ...


With CVS gst I get this instead:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/pipeline0/pngdec0.src: caps = video/x-raw-rgb, width=(int)320, height=(int)240, bpp=(int)32, framerate=(fraction)0/1, depth=(int)32, endianness=(int)4321, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, alpha_mask=(int)255
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 179000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/pipeline0/pngdec0.src: caps = NULL
Setting pipeline to NULL ...
FREEING pipeline ...


Note how data seems to flow up to proper EOS, however the caps on ximagesink:sink are never set.  The debug log shows some more weirdness, for example the EOS message gets out _before_ pngdec errors out with not-negotiated.  Even more strange: I can't reproduce this with jpegdec at all...
Comment 2 Wim Taymans 2007-11-29 10:35:30 UTC
I suspect that with older core, there was more overhead in handling the EOS message, enough to let the ERROR message go through. This change to pngdec should fix it.

        * ext/libpng/gstpngdec.c: (gst_pngdec_task):
        Post error before sending EOS. Fixes #499178.