GNOME Bugzilla – Bug 577326
tcpclientsrc stops working if set to PLAYING, PAUSED and PLAYING again
Last modified: 2009-12-10 16:55:06 UTC
Reproduce: * terminal 1: gst-launch-0.10 videotestsrc ! video/x-raw-yuv,framerate=1/1 ! tcpserversink port=1000 * terminal 2: python ayt.py You'll see that tcpclientsrc doesn't receive buffers after second PLAYING. I think the problem is that gst_poll_set_flushing(TRUE) is called in gst_tcp_client_src_unlock while going to PAUSED but gst_poll_set_flushing(FALSE) is neved called. Maybe it should be called when needed in _create ? ayt.py is a program that creates a tcpclientsrc port=%d ! fakesink name=f pipeline, set it to PLAYING, wait 3s, set it to PAUSED, wait 3s and set it to PLAYING again.
Created attachment 131710 [details] test program
ping
Yes, calling _set_flushing(TRUE) should probably be done if needed in _create(). Could you prepare a patch?
->unlock is only called when configured as a live source or when seeking or some other operation that needs to flush. I could not really reproduce this here. In any case, this should fix it.. Reopen if something else goes wrong for you. commit dc91454984a93cf9dd9587dbe7ba737d1fa77c56 Author: Wim Taymans <wim.taymans@collabora.co.uk> Date: Thu Dec 10 17:53:01 2009 +0100 tcpclientsrc: unset flushing state too When unlocking, we set the flushing state on the fdset. Implement unlock_stop so that we can use it to unset the flushing state again. Fixes #577326