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 612411 - [rtspsrc] lock/performance problem
[rtspsrc] lock/performance problem
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal normal
: 0.10.22
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2010-03-10 11:45 UTC by Luca Ognibene
Modified: 2010-03-11 11:50 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Luca Ognibene 2010-03-10 11:45:32 UTC
I'm using rtspsrc on linux to connect to a gst-rtsp-server on the same box. I'm using tcp as transport and jpeg as codec. My problem is that sometime there is a very big gap between connection and first buffer received (30 seconds or so) and sometime it works fine. 
I think i've finally found the problem in this log:

start connection:
...
0:00:02.041919644 23840  0x8ae1600 DEBUG                rtspsrc gstrtspsrc.c:1917:new_session_pad:<rtspsrc0> got new session pad <rtpbin0:recv_rtp_src_0_3434053479_96>
0:00:02.291178937 23840  0x8ac6ca8 DEBUG                rtspsrc gstrtspsrc.c:2981:gst_rtspsrc_loop_interleaved:<rtspsrc0> we received a server message
0:00:02.291209639 23840  0x8ac6ca8 DEBUG                rtspsrc gstrtspsrc.c:3012:gst_rtspsrc_loop_interleaved:<rtspsrc0> got data message
0:00:02.291228053 23840  0x8ac6ca8 DEBUG                rtspsrc gstrtspsrc.c:3070:gst_rtspsrc_loop_interleaved:<rtspsrc0> pushing data of size 1452 on channel 0
...
0:00:30.765196937 23840  0x8ac6ca8 DEBUG                rtspsrc gstrtspsrc.c:2961:gst_rtspsrc_loop_interleaved:<rtspsrc0> doing receive
0:00:30.764755486 23840  0x8ae1600 DEBUG                rtspsrc gstrtspsrc.c:1925:new_session_pad:<rtspsrc0> stream: 0, SSRC 2147483647, PT 96
....

Looking at the code it seems that new_session_pad hangs in GST_RTSP_STATE_LOCK.. maybe because there is a lot to read in the _interleaved loop? I know that the _loop_interleaved function is releasing the lock but sometime it seems that linux/glib is not awakening the other thread.. any idea on how to fix this?

Gstreamer: today git
Linux: 2.6.28-14-server #47-Ubuntu SMP
Glib: 2.20.1 (ubuntu deb)
Comment 1 Luca Ognibene 2010-03-11 10:45:47 UTC
i think Wim fixed it yesterday with this commit: http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=38f2b4735d07554c6243e8bf568ba2cbf7db5803

testing right now..
Comment 2 Luca Ognibene 2010-03-11 11:39:21 UTC
yes, it seems fixed!