GNOME Bugzilla – Bug 612411
[rtspsrc] lock/performance problem
Last modified: 2010-03-11 11:50:29 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)
i think Wim fixed it yesterday with this commit: http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=38f2b4735d07554c6243e8bf568ba2cbf7db5803 testing right now..
yes, it seems fixed!