GNOME Bugzilla – Bug 581333
rtspsrc: request_pt_map in gstrtspsrc.c fails to return correct pt caps under ARM
Last modified: 2010-04-03 17:56:05 UTC
Please describe the problem: My original report of this bug can be found here on the gstreamer-devel mailing list: http://sourceforge.net/mailarchive/message.php?msg_name=212bfead0904301134s647db708s6457040d00625b65%40mail.gmail.com Summary: Under ARM, request_pt_map fails to return the correct pt caps. Steps to reproduce: Attempt to play the following gst-launch pipeline on an ARM-based platform: gst-launch rtspsrc location="rtsp://ewan.rtsp-youtube.l.google.com/CkELENy73wIaOAkNHBGWSDl4oBMYESARFEIJbXYtZ29vZ2xlSARSBXdhdGNoWglDbGlja0xpbmtgqqug0Nj3uroLDA==/0/0/0/video.3gp" name=d d. ! rtpmp4adepay ! fakesink d. ! rtpmp4vdepay ! fakesink Actual results: The pipeline errors out internally and fails to process the incoming RTP data stream. Expected results: The pipeline processes the RTP data stream correctly, and audio/video can be heard/seen. Does this happen every time? Yes. Other information: My original report to gstreamer-devel had an extensive log from GST_DEBUG attached.
Created attachment 133932 [details] [review] Fix for bug 581333 This patch fixes the observed problem on my ARM platform (basically, a beagleboard running openembedded). I have tested it also on a Fedora 10 desktop with gstreamer git (which plays rtsp streams correctly even without this patch), and there was no loss in functionality.
Any idea if this is caused by the fact that the session id passed in the signal callback is always the same or if the GINT_TO_POINTER()/GPOINTER_TO_INT() macros mess things up? My thinking is that we should not use those macros but pass the pointer to the int instead.
Can you see that this fix also solves the problem? If it does not, please reopen this bug. commit 732704c007f6119010fdace995ce246b10ba9f91 Author: Wim Taymans <wim.taymans@collabora.co.uk> Date: Mon May 4 18:55:12 2009 +0200 rtspsrc: Fix find_stream_by_* functions Fix various version of find_stream_by_* by not trying to convert an int to a pointer and vice versa, for portability reasons. Fixes #581333
Unfortunately, your fix does not solve the problem. To answer your question from comment #2, I can see that the session id being passed in is the same for both payload type caps queries. On my Fedora 10 desktop build of gstreamer git, I see different session ids. If you feel that this is more the cause of the problem, and that my original proposed fix is only taking care of a symptom, then I'd be happy to dig around some more to figure out why the session ids are the same. Does gstrtpbin handle all that -- is that where I should start looking?
I would think the root problem is somewhere in gstrtpbin, yes.
a debug log like this could be useful: GST_DEBUG=*rtp*:5 <appname> >debug.log 2>&1 and then compress the resulting debug.log and attach here.
Chris: ping?
Chris, please reopen this bug report if you have any news. Thanks in advance.