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.
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); ^
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?
Created attachment 235270 [details] Patch
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?
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.
*** Bug 134924 has been marked as a duplicate of this bug. ***
(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.
(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.
Created attachment 235272 [details] Patch
Created attachment 235273 [details] Patch
Comment on attachment 235273 [details] Patch Perfect! Thanks :)
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
Created attachment 235275 [details] Patch
Comment on attachment 235275 [details] Patch Clearing flags on attachment: 235275 Committed r171339: <http://trac.webkit.org/changeset/171339>
All reviewed patches have been landed. Closing bug.