Bug 135114

Summary: [GStreamer] [GTK] WebKit does not build with GStreamer 1.4
Product: WebKit Reporter: Adrian Perez <aperez>
Component: WebKitGTKAssignee: Adrian Perez <aperez>
Status: RESOLVED FIXED    
Severity: Normal CC: cgarcia, commit-queue, mrobinson, pnormand, scampa.giovanni, vjaquez
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Patch
none
Patch
none
Patch none

Adrian Perez
Reported 2014-07-21 02:04:52 PDT
Ideally, we should try to keep supporting GStreamer 1.x (where x<4) to make it make it possible for downstreams to keep using previous versions. For example distributions may want to update WebKitGTK without having to update GStreamer.
Attachments
Patch (1.97 KB, patch)
2014-07-21 22:51 PDT, Adrian Perez
no flags
Patch (1.95 KB, patch)
2014-07-22 00:24 PDT, Adrian Perez
no flags
Patch (6.45 KB, patch)
2014-07-22 00:56 PDT, Adrian Perez
no flags
Patch (6.49 KB, patch)
2014-07-22 01:10 PDT, Adrian Perez
no flags
Adrian Perez
Comment 1 2014-07-21 02:12:54 PDT
Relevant part of the build log: ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1005:31: error: cannot initialize a variable of type 'GstMpegTsSection *' (aka '_GstMpegTsSection *') with an rvalue of type 'GstMpegtsSection *' (aka '_GstMp egtsSection *') GstMpegTsSection* section = gst_message_parse_mpegts_section(message); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1051:16: error: member access into incomplete type 'GstMpegTsSection' (aka '_GstMpegTsSection') if (section->section_type == GST_MPEGTS_SECTION_PMT) { ^ ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:49:16: note: forward declaration of '_GstMpegTsSection' typedef struct _GstMpegTsSection GstMpegTsSection; ^ ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1052:15: error: unknown type name 'GstMpegTsPMT'; did you mean 'GstMpegtsPMT'? const GstMpegTsPMT* pmt = gst_mpegts_section_get_pmt(section); ^~~~~~~~~~~~ GstMpegtsPMT /usr/include/gstreamer-1.0/gst/mpegts/gstmpegtssection.h:212:30: note: 'GstMpegtsPMT' declared here typedef struct _GstMpegtsPMT GstMpegtsPMT; ^ ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1052:35: error: no matching function for call to 'gst_mpegts_section_get_pmt' const GstMpegTsPMT* pmt = gst_mpegts_section_get_pmt(section); ^~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/gstreamer-1.0/gst/mpegts/gstmpegtssection.h:374:21: note: candidate function not viable: cannot convert argument of incomplete type 'GstMpegTsSection *' (aka '_GstMpegTsSection *') to 'GstMpegtsSection *' (aka '_GstMpegtsSecti on *') const GstMpegtsPMT *gst_mpegts_section_get_pmt (GstMpegtsSection *section); ^ ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1055:19: error: unknown type name 'GstMpegTsPMTStream'; did you mean 'GstMpegtsPMTStream'? const GstMpegTsPMTStream* stream = static_cast<const GstMpegTsPMTStream*>(((pmt->streams)->pdata)[i]); ^~~~~~~~~~~~~~~~~~ GstMpegtsPMTStream /usr/include/gstreamer-1.0/gst/mpegts/gstmpegtssection.h:211:36: note: 'GstMpegtsPMTStream' declared here typedef struct _GstMpegtsPMTStream GstMpegtsPMTStream; ^ ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1055:66: error: unknown type name 'GstMpegTsPMTStream'; did you mean 'GstMpegtsPMTStream'? const GstMpegTsPMTStream* stream = static_cast<const GstMpegTsPMTStream*>(((pmt->streams)->pdata)[i]); ^~~~~~~~~~~~~~~~~~ GstMpegtsPMTStream /usr/include/gstreamer-1.0/gst/mpegts/gstmpegtssection.h:211:36: note: 'GstMpegtsPMTStream' declared here typedef struct _GstMpegtsPMTStream GstMpegtsPMTStream; ^ ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1074:27: error: unknown type name 'GstMpegTsDescriptor'; did you mean 'GstMpegtsDescriptor'? const GstMpegTsDescriptor* descriptor = static_cast<const GstMpegTsDescriptor*>(((stream->descriptors)->pdata)[j]); ^~~~~~~~~~~~~~~~~~~ GstMpegtsDescriptor /usr/include/gstreamer-1.0/gst/mpegts/gstmpegtsdescriptor.h:237:37: note: 'GstMpegtsDescriptor' declared here typedef struct _GstMpegtsDescriptor GstMpegtsDescriptor; ^ ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1074:79: error: unknown type name 'GstMpegTsDescriptor'; did you mean 'GstMpegtsDescriptor'? const GstMpegTsDescriptor* descriptor = static_cast<const GstMpegTsDescriptor*>(((stream->descriptors)->pdata)[j]); ^~~~~~~~~~~~~~~~~~~ GstMpegtsDescriptor /usr/include/gstreamer-1.0/gst/mpegts/gstmpegtsdescriptor.h:237:37: note: 'GstMpegtsDescriptor' declared here typedef struct _GstMpegtsDescriptor GstMpegtsDescriptor; ^ ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1085:50: error: member access into incomplete type 'GstMpegTsSection' (aka '_GstMpegTsSection') AtomicString pid = String::number(section->pid); ^ ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:49:16: note: forward declaration of '_GstMpegTsSection' typedef struct _GstMpegTsSection GstMpegTsSection; ^ ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1090:32: error: no matching function for call to 'gst_mpegts_section_get_data' GRefPtr<GBytes> data = gst_mpegts_section_get_data(section); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/gstreamer-1.0/gst/mpegts/gstmpegtssection.h:179:9: note: candidate function not viable: cannot convert argument of incomplete type 'GstMpegTsSection *' (aka '_GstMpegTsSection *') to 'GstMpegtsSection *' (aka '_GstMpegtsSectio n *') GBytes *gst_mpegts_section_get_data (GstMpegtsSection *section); ^
Víctor M. Jáquez L.
Comment 2 2014-07-21 02:20:37 PDT
The reason of this is http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=22dfd9aef361c6e630fe32d6b7f6c07588a2dff9 Shouldn't we have a policy for GStreamer not stable API and/or gst-plugins-bad API?
Adrian Perez
Comment 3 2014-07-21 22:51:44 PDT
Carlos Garcia Campos
Comment 4 2014-07-21 23:57:08 PDT
Comment on attachment 235270 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=235270&action=review > Source/WebCore/ChangeLog:10 > + No new tests needed. This line can be omitted. > Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:46 > +#if GST_CHECK_VERSION(1, 3, 90) > +typedef struct _GstMpegtsDescriptor GstMpegTsDescriptor; > +typedef struct _GstMpegtsPMTStream GstMpegTsPMTStream; > +typedef struct _GstMpegtsSection GstMpegTsSection; > +typedef struct _GstMpegtsPMT GstMpegTsPMT; > +#endif > +typedef struct _GstMpegtsSection GstMpegtsSection; I'm not sure I understand this. The current code uses GstMpegTsSection, but with gst < 1.3.90 we define GstMpegtsSection, but still using GstMpegTsSection?
Philippe Normand
Comment 5 2014-07-22 00:03:06 PDT
Comment on attachment 235270 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=235270&action=review >> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:46 >> +typedef struct _GstMpegtsSection GstMpegtsSection; > > I'm not sure I understand this. The current code uses GstMpegTsSection, but with gst < 1.3.90 we define GstMpegtsSection, but still using GstMpegTsSection? Like I said in the other bug, let's just forget about 1.3.90, make sure gstreamer-mpegts >= 1.4 is checked and only support it. 1.3.x had unstable API that we don't want to support.
Philippe Normand
Comment 6 2014-07-22 00:10:06 PDT
*** Bug 134924 has been marked as a duplicate of this bug. ***
Adrian Perez
Comment 7 2014-07-22 00:23:03 PDT
(In reply to comment #4) > (From update of attachment 235270 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=235270&action=review > > > Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:46 > > +#if GST_CHECK_VERSION(1, 3, 90) > > +typedef struct _GstMpegtsDescriptor GstMpegTsDescriptor; > > +typedef struct _GstMpegtsPMTStream GstMpegTsPMTStream; > > +typedef struct _GstMpegtsSection GstMpegTsSection; > > +typedef struct _GstMpegtsPMT GstMpegTsPMT; > > +#endif > > +typedef struct _GstMpegtsSection GstMpegtsSection; > > I'm not sure I understand this. The current code uses GstMpegTsSection, but with gst < 1.3.90 we define GstMpegtsSection, but still using GstMpegTsSection? Ah, typing mistake. I meant to add an #else which keeps the existing declaration of the typedef for GStreamer <1.4.0.
Adrian Perez
Comment 8 2014-07-22 00:23:44 PDT
(In reply to comment #5) > (From update of attachment 235270 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=235270&action=review > > >> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:46 > >> +typedef struct _GstMpegtsSection GstMpegtsSection; > > > > I'm not sure I understand this. The current code uses GstMpegTsSection, but with gst < 1.3.90 we define GstMpegtsSection, but still using GstMpegTsSection? > > Like I said in the other bug, let's just forget about 1.3.90, make sure gstreamer-mpegts >= 1.4 is checked and only support it. 1.3.x had unstable API that we don't want to support. Sure, I will change the check to use the different typedefs on 1.4.0 and above.
Adrian Perez
Comment 9 2014-07-22 00:24:56 PDT
Adrian Perez
Comment 10 2014-07-22 00:56:09 PDT
Philippe Normand
Comment 11 2014-07-22 00:58:44 PDT
Comment on attachment 235273 [details] Patch Perfect! Thanks :)
WebKit Commit Bot
Comment 12 2014-07-22 01:03:23 PDT
Comment on attachment 235273 [details] Patch Rejecting attachment 235273 [details] from commit-queue. Failed to run "['/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch', '--status-host=webkit-queues.appspot.com', '--bot-id=webkit-cq-02', 'validate-changelog', '--check-oops', '--non-interactive', 235273, '--port=mac']" exit_code: 1 cwd: /Volumes/Data/EWS/WebKit /Volumes/Data/EWS/WebKit/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string "Unreviewed" or "Rubber stamp" (case insensitive). Full output: http://webkit-queues.appspot.com/results/5237468114714624
Adrian Perez
Comment 13 2014-07-22 01:10:24 PDT
WebKit Commit Bot
Comment 14 2014-07-22 01:51:16 PDT
Comment on attachment 235275 [details] Patch Clearing flags on attachment: 235275 Committed r171339: <http://trac.webkit.org/changeset/171339>
WebKit Commit Bot
Comment 15 2014-07-22 01:51:21 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.