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 603138 - [udpsrc/udpsink] blocks when building a pipeline with two streams
[udpsrc/udpsink] blocks when building a pipeline with two streams
Status: RESOLVED NOTABUG
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
0.10.25
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2009-11-27 12:28 UTC by tiagokatcipis
Modified: 2009-12-01 13:20 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description tiagokatcipis 2009-11-27 12:28:10 UTC
The following pipe simply sends audio using udpsink and on another stream on the same pipe receives that audio, i need to use both streams on the same pipeline because of some features on the application I'm developing, but i noticed that when the streams are on the same pipe the pipe simply blocks (but if i build the same test on two different pipelines it works fine), but on older gstreamer versions it works just fine the two streams on the same pipe.

gst-launch -v audiotestsrc ! audioconvert ! audiorate ! "audio/x-raw-int,rate=8000,
channels=1,endianness=1234,width=16,depth=16,signed=true" ! udpsink host=127.0.0.1 port=5000 udpsrc port=5000 caps="audio/x-raw-int,rate=8000,channels=1,endianness=1234,width=16,depth=16,signed=true" ! fakesink

i have tested this pipe on two systems:

Ubuntu 9.04 (Works fine)
gstreamer 0.10.22
gst-plugins-base 0.10.22
gst-plugins-good 0.10.14
gst-plugins-bad 0.10.11
gst-plugins-ugly 0.10.10


Ubuntu 9.10 (Pipe blocks)
gstreamer 0.10.25
gst-plugins-base 0.10.25
gst-plugins-good 0.10.16
gst-plugins-bad 0.10.14
gst-plugins-ugly 0.10.12

A better description can be founded on the mail list, i was completely ignored there so i cant tell if I'm dealing with something stupid or if it is a bug, but since it works on older gstreamer and don't works on new 0.10.25 i supposed it is a bug:

http://sourceforge.net/mailarchive/forum.php?thread_name=60a9403b0911111515t2607a21as645014c3ab51fea5%40mail.gmail.com&forum_name=gstreamer-devel

i have made similar tests on source code, that blocks when it is two streams on the same pipe but works fine when it is two separated pipes:

The working test:
https://svn.inf.ufsc.br/katcipis/c/gstreamer/pipe_voip_ok/

The blocking one:
https://svn.inf.ufsc.br/katcipis/c/gstreamer/pipe_voip_error/


best regards,
Katcipis
Comment 1 Wim Taymans 2009-12-01 12:53:02 UTC
This is normal, The pipeline cannot preroll. For proper synchronisation the udpsink needs to wait for the fakesink to preroll but that can never happen because the fakesink depends on udpsink being prerolled.

Setting one of the sinks to async=false might work. You would also typically separate the sending and receiving elements into two pipelines.
Comment 2 tiagokatcipis 2009-12-01 13:01:58 UTC
But why does it work on a older version of gstreamer? i tought that was something wrong that i was doing but when it worked on a older version of gstreamer i got confused.
Comment 3 Wim Taymans 2009-12-01 13:13:41 UTC
Older versions of gstreamer did not correctly compensate for pipeline latency (no synchronisation possible for live sources). Newer versions do but require all sinks to preroll before it can calculate latency and compensate for it.
Comment 4 tiagokatcipis 2009-12-01 13:20:44 UTC
Thanks for the help Wim and sorry for taking your time with no bug at all.