GNOME Bugzilla – Bug 674316
rtspsrc can't handle EOS correctly
Last modified: 2012-04-18 10:44:38 UTC
if we've an rtsp server (not a live source) eg. Wim'm gstreamer-rtsp-server eg: ------------------------------- ./test-uri file:///tmp/a.mkv stream ready at rtsp://127.0.0.1:8554/test ------------------------------- then connect to it with gstreamer, BUT press ctrl-c at the very begining ie. right after the you press the enter eg: ------------------------------- gst-launch -e rtspsrc location=rtsp://192.168.209.201:8554/test ! rtph264depay ! ffdec_h264 ! xvimagesink Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... New clock: GstSystemClock handling interrupt.-- buffering... 38% Interrupt: Stopping pipeline ... EOS on shutdown enabled -- Forcing EOS on the pipeline Waiting for EOS... buffering... 100% ------------------------------- then this client never exit and the whole client goes into a deadlock. of course the same situation can be happened in program when a user do something similar ie start to view something a video and very quickly stop it. imho it's a serious error/bug since it cause the program to become unusable.
This is not a bug, you cancel the source so that the it does not create the srcpad that links to the sink. EOS can then never travel to the sink and you keep on waiting forever. This is the same situation as: gst-launch-1.0 -e fakesrc is-live=1 ! fakesink fakesink the problem is that gst-launch is not so smart, it should wait for preroll before attempting to send the EOS.