GNOME Bugzilla – Bug 544293
rtspsrc / gstpoll regression
Last modified: 2008-11-03 10:50:24 UTC
In version 0.10.20 gstpoll has a new, windows specific, gstpoll implementation instead of relying on winsock's select(). rtsp does not work any more with this and times out in the rtsp code (waiting for the socket to be ready for writing). I've instrumented the gstpoll code to show the API called by the rtsp/rtcp/udp code and I attach this log as first comment. I've somehow managed to "fix" the problem by calling gst_poll_fd_ignored() before actually writing in the rtsp socket but it's clearly not the intended use of the function. The patch "solving" the problem is attached as second comment To reproduce the issue, you can setup a rtsp server with vlc for instance: $ vlc --ttl 10 -vvv -I telnet --telnet-password gst --rtsp-host 0.0.0.0:5554 $ telnet 127.0.0.1 4212 (passord gst) > new test vod enabled > setup test input /home/damien/samples/xxxxxxxx.mpeg gst-launch-0.10.exe --gst-debug-no-color --gst-plugin-path=c:\xxxxxxxx\lib\gstreamer-0.10 rtspsrc location="rtsp://10.250.154.29:5554/test" ! decodebin ! ffmpegcolorspace ! directdrawsink I think it would be usefull to Cc. Ole André but I don't want to be gross, so let's hope he'll discover this bug report quickly :p
Created attachment 115079 [details] log with rtspsrc:5 and instrumented gstpoll
Created attachment 115080 [details] [review] dirty-fix-that-works-for-me and that can help someont actually understanding the new windows' gstpoll code
I'll commit this but I'm unsure what the problem is. I think the right thing to do is to make sure we forget all previous results from poll before going into this (and other) functions. Patch by: Damien Lespiau <damien.lespiau gmail com> * gst-libs/gst/rtsp/gstrtspconnection.c: (gst_rtsp_connection_write): Make the next call to poll not depend on previous calls to poll with or without reading from the active descriptor. Fixes #544293.