Bug 56930

Summary: [GStreamer] RTSP playback broken
Product: WebKit Reporter: Philippe Normand <pnormand>
Component: MediaAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: mrobinson, webkit.review.bot
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: OS X 10.5   
Attachments:
Description Flags
proposed patch
none
proposed patch
mrobinson: review+
proposed patch
none
proposed patch mrobinson: review+

Philippe Normand
Reported 2011-03-23 09:30:42 PDT
Source/WebCore/manual-tests/video-rtsp.html loads but no video is displayed and I hear sound-cracks, the rtsp:// link plays fine with gst-launch. Needs some further investigation
Attachments
proposed patch (13.09 KB, patch)
2011-04-06 10:13 PDT, Philippe Normand
no flags
proposed patch (13.03 KB, patch)
2011-04-07 01:38 PDT, Philippe Normand
mrobinson: review+
proposed patch (14.52 KB, patch)
2011-04-11 04:00 PDT, Philippe Normand
no flags
proposed patch (14.49 KB, patch)
2011-04-11 04:03 PDT, Philippe Normand
mrobinson: review+
Philippe Normand
Comment 1 2011-04-06 10:13:35 PDT
Created attachment 88462 [details] proposed patch
WebKit Review Bot
Comment 2 2011-04-06 10:15:57 PDT
Attachment 88462 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style']" exit_code: 1 Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:54: The parameter name "player" adds no information, so it should be removed. [readability/parameter_name] [5] Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:55: The parameter name "player" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 2 in 4 files If any of these errors are false positives, please file a bug against check-webkit-style.
Philippe Normand
Comment 3 2011-04-07 01:38:38 PDT
Created attachment 88592 [details] proposed patch
Martin Robinson
Comment 4 2011-04-07 16:45:14 PDT
Comment on attachment 88592 [details] proposed patch View in context: https://bugs.webkit.org/attachment.cgi?id=88592&action=review Looks good, though please make callback static, unless there is a reason they should be exposed in the header. > Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:215 > +void mediaPlayerPrivateVideoChangedCallback(GObject* element, MediaPlayerPrivateGStreamer* player) You should omit "element" here. Why aren't all of these callbacks defined statically inside this file? Are they shared anywhere? > Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:220 > +void mediaPlayerPrivateAudioChangedCallback(GObject* element, MediaPlayerPrivateGStreamer* player) Ditto. > Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:55 > +void mediaPlayerPrivateVideoChangedCallback(GObject* element, MediaPlayerPrivateGStreamer*); > +void mediaPlayerPrivateAudioChangedCallback(GObject* element, MediaPlayerPrivateGStreamer*); > +gboolean mediaPlayerPrivateAudioChangeTimeoutCallback(MediaPlayerPrivateGStreamer*); > +gboolean mediaPlayerPrivateVideoChangeTimeoutCallback(MediaPlayerPrivateGStreamer*); As above, couldn't these just be defined statically in the C++ file? Why make them public? Also, you should omit the "element" variable.
Philippe Normand
Comment 5 2011-04-11 03:12:23 PDT
(In reply to comment #4) > (From update of attachment 88592 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=88592&action=review > > Looks good, though please make callback static, unless there is a reason they should be exposed in the header. Making the callbacks static leads to: Program received signal SIGSEGV, Segmentation fault. 0x00007ffff23102b7 in g_object_get (_object=<value optimized out>, first_property_name= 0x7ffff606b9a8 "n-video") at gobject.c:1867 1867 g_return_if_fail (G_IS_OBJECT (object)); (gdb) bt #0 0x00007ffff23102b7 in g_object_get (_object=<value optimized out>, first_property_name= 0x7ffff606b9a8 "n-video") at gobject.c:1867 #1 0x00007ffff505e527 in WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo (this=0xcc0000) at ../../../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:635 #2 0x00007ffff505cd74 in WebCore::mediaPlayerPrivateVideoChangeTimeoutCallback (player=0xcc0000) at ../../../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:235 #3 0x00007ffff1a17edb in g_timeout_dispatch (source=0x7fffe00e01a0, callback=<value optimized out>, user_data=<value optimized out>) at gmain.c:3882 #4 0x00007ffff1a165a3 in g_main_dispatch (context=0x6417e0) at gmain.c:2440 #5 g_main_context_dispatch (context=0x6417e0) at gmain.c:3013 #6 0x00007ffff1a16d80 in g_main_context_iterate (context=0x6417e0, block=1, dispatch=1, self=<value optimized out>) at gmain.c:3091 #7 0x00007ffff1a173f2 in g_main_loop_run (loop=0xce5780) at gmain.c:3299 #8 0x00007ffff4199557 in IA__gtk_main () at gtkmain.c:1255 #9 0x0000000000402b09 in main (argc=2, argv=0x7fffffffd6c8) at ../../../../Tools/GtkLauncher/main.c:274 (gdb) f 1 #1 0x00007ffff505e527 in WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo (this=0xcc0000) at ../../../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:635 635 g_object_get(m_playBin, "n-video", &videoTracks, NULL); (gdb) p m_playBin $1 = (GstElement *) 0xe1
Philippe Normand
Comment 6 2011-04-11 03:59:53 PDT
Sorry Martin, my initial patch was wrong in the first place... The notify::caps signal should not reuse mediaPlayerPrivateVideoChangedCallback(). We need a new handler with a different signature.
Philippe Normand
Comment 7 2011-04-11 04:00:53 PDT
Created attachment 88985 [details] proposed patch
Philippe Normand
Comment 8 2011-04-11 04:03:37 PDT
Created attachment 88987 [details] proposed patch
Martin Robinson
Comment 9 2011-04-11 09:13:15 PDT
Comment on attachment 88987 [details] proposed patch View in context: https://bugs.webkit.org/attachment.cgi?id=88987&action=review Thanks for fixing this up! > Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:49 > gboolean mediaPlayerPrivateMessageCallback(GstBus* bus, GstMessage* message, gpointer data); > -void mediaPlayerPrivateVolumeChangedCallback(GObject* element, GParamSpec* pspec, gpointer data); > -void mediaPlayerPrivateMuteChangedCallback(GObject* element, GParamSpec* pspec, gpointer data); > void mediaPlayerPrivateSourceChangedCallback(GObject* element, GParamSpec* pspec, gpointer data); It'd be great to remove to remov the remaining two callback in a followup patch. :)
Philippe Normand
Comment 10 2011-04-12 01:54:08 PDT
Note You need to log in before you can comment on or make changes to this bug.