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 674316 - rtspsrc can't handle EOS correctly
rtspsrc can't handle EOS correctly
Status: RESOLVED NOTABUG
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-04-18 10:35 UTC by Levente Farkas
Modified: 2012-04-18 10:44 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Levente Farkas 2012-04-18 10:35:16 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.
Comment 1 Wim Taymans 2012-04-18 10:44:38 UTC
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.