File webkit2gtk3-gstreamer1.8.patch of Package webkit2gtk3.31628
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/cmake/GStreamerChecks.cmake webkitgtk-2.41.91.gstreamer1.8/Source/cmake/GStreamerChecks.cmake
--- webkitgtk-2.41.91.gstreamer1.12/Source/cmake/GStreamerChecks.cmake 2023-09-07 21:41:25.205945130 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/cmake/GStreamerChecks.cmake 2023-09-07 21:41:39.276019831 -0500
@@ -36,7 +36,7 @@ if (ENABLE_VIDEO OR ENABLE_WEB_AUDIO)
list(APPEND GSTREAMER_COMPONENTS webrtc)
endif ()
- find_package(GStreamer 1.10.0 REQUIRED COMPONENTS ${GSTREAMER_COMPONENTS})
+ find_package(GStreamer 1.8.3 REQUIRED COMPONENTS ${GSTREAMER_COMPONENTS})
if (ENABLE_WEB_AUDIO)
if (NOT PC_GSTREAMER_AUDIO_FOUND OR NOT PC_GSTREAMER_FFT_FOUND)
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/cmake/OptionsGTK.cmake webkitgtk-2.41.91.gstreamer1.8/Source/cmake/OptionsGTK.cmake
--- webkitgtk-2.41.91.gstreamer1.12/Source/cmake/OptionsGTK.cmake 2023-09-07 21:41:03.282495401 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/cmake/OptionsGTK.cmake 2023-09-08 14:03:58.698913489 -0500
@@ -362,8 +362,6 @@ if (USE_OPENGL_OR_ES)
if (NOT LIBDRM_FOUND)
message(FATAL_ERROR "libdrm is required for USE_GBM")
endif ()
-
- SET_AND_EXPOSE_TO_BUILD(USE_TEXTURE_MAPPER_DMABUF ON)
endif ()
endif ()
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp 2023-08-09 03:49:45.424310700 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp 2023-09-07 21:41:39.276019831 -0500
@@ -212,7 +212,7 @@ static inline std::optional<int> channel
GstFlowReturn AudioFileReader::handleSample(GstAppSink* sink)
{
- auto sample = adoptGRef(gst_app_sink_try_pull_sample(sink, 0));
+ auto sample = adoptGRef(gst_app_sink_pull_sample(sink));
if (!sample)
return gst_app_sink_is_eos(sink) ? GST_FLOW_EOS : GST_FLOW_ERROR;
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp 2023-09-07 21:41:22.569264465 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp 2023-09-07 21:41:39.276019831 -0500
@@ -242,7 +242,7 @@ void AudioSourceProviderGStreamer::provi
GstFlowReturn AudioSourceProviderGStreamer::handleSample(GstAppSink* sink, bool isPreroll)
{
GST_TRACE("Pulling audio sample from the sink");
- auto sample = adoptGRef(isPreroll ? gst_app_sink_try_pull_preroll(sink, 0) : gst_app_sink_try_pull_sample(sink, 0));
+ auto sample = adoptGRef(isPreroll ? gst_app_sink_pull_preroll(sink) : gst_app_sink_pull_sample(sink));
if (!sample)
return gst_app_sink_is_eos(sink) ? GST_FLOW_EOS : GST_FLOW_ERROR;
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp 2023-09-07 21:41:25.205945130 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp 2023-09-07 21:41:39.276019831 -0500
@@ -225,7 +225,6 @@ static void webKitWebAudioSrcConstructed
ASSERT(priv->sampleRate);
GST_OBJECT_FLAG_SET(GST_OBJECT_CAST(src), GST_ELEMENT_FLAG_SOURCE);
- gst_bin_set_suppressed_flags(GST_BIN_CAST(src), static_cast<GstElementFlags>(GST_ELEMENT_FLAG_SOURCE | GST_ELEMENT_FLAG_SINK));
gst_element_add_pad(GST_ELEMENT(src), priv->sourcePad);
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp 2023-08-09 03:49:45.772321700 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp 2023-09-08 13:44:28.099365862 -0500
@@ -53,6 +53,7 @@ AudioTrackPrivateGStreamer::AudioTrackPr
ensureDebugCategoryInitialized();
}
+#if GST_CHECK_VERSION(1, 10, 0)
AudioTrackPrivateGStreamer::AudioTrackPrivateGStreamer(WeakPtr<MediaPlayerPrivateGStreamer> player, unsigned index, GstStream* stream)
: TrackPrivateBaseGStreamer(TrackPrivateBaseGStreamer::TrackType::Audio, this, index, stream)
, m_player(player)
@@ -81,7 +82,9 @@ AudioTrackPrivateGStreamer::AudioTrackPr
void AudioTrackPrivateGStreamer::capsChanged(const String& streamId, const GRefPtr<GstCaps>& caps)
{
ASSERT(isMainThread());
+#if GST_CHECK_VERSION(1, 10, 0)
updateConfigurationFromCaps(caps);
+#endif
if (!m_player)
return;
@@ -141,11 +144,14 @@ void AudioTrackPrivateGStreamer::updateC
configuration.numberOfChannels = GST_AUDIO_INFO_CHANNELS(&info);
}
}
+#endif
AudioTrackPrivate::Kind AudioTrackPrivateGStreamer::kind() const
{
+#if GST_CHECK_VERSION(1, 10, 0)
if (m_stream && gst_stream_get_stream_flags(m_stream.get()) & GST_STREAM_FLAG_SELECT)
return AudioTrackPrivate::Kind::Main;
+#endif
return AudioTrackPrivate::kind();
}
@@ -154,8 +160,10 @@ void AudioTrackPrivateGStreamer::disconn
{
m_taskQueue.startAborting();
+#if GST_CHECK_VERSION(1, 10, 0)
if (m_stream)
g_signal_handlers_disconnect_matched(m_stream.get(), G_SIGNAL_MATCH_DATA, 0, 0, nullptr, nullptr, this);
+#endif
m_player = nullptr;
TrackPrivateBaseGStreamer::disconnect();
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h 2023-08-09 03:49:45.772321700 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h 2023-09-08 13:36:02.156679975 -0500
@@ -42,10 +42,12 @@ public:
return adoptRef(*new AudioTrackPrivateGStreamer(player, index, WTFMove(pad), shouldHandleStreamStartEvent));
}
+#if GST_CHECK_VERSION(1, 10, 0)
static Ref<AudioTrackPrivateGStreamer> create(WeakPtr<MediaPlayerPrivateGStreamer> player, unsigned index, GstStream* stream)
{
return adoptRef(*new AudioTrackPrivateGStreamer(player, index, stream));
}
+#endif
Kind kind() const final;
@@ -61,15 +63,19 @@ public:
AtomString language() const final { return m_language; }
protected:
+#if GST_CHECK_VERSION(1, 10, 0)
void updateConfigurationFromCaps(const GRefPtr<GstCaps>&);
void updateConfigurationFromTags(const GRefPtr<GstTagList>&);
void tagsChanged(const GRefPtr<GstTagList>& tags) final { updateConfigurationFromTags(tags); }
void capsChanged(const String& streamId, const GRefPtr<GstCaps>&) final;
+#endif
private:
AudioTrackPrivateGStreamer(WeakPtr<MediaPlayerPrivateGStreamer>, unsigned index, GRefPtr<GstPad>&&, bool shouldHandleStreamStartEvent);
+#if GST_CHECK_VERSION(1, 10, 0)
AudioTrackPrivateGStreamer(WeakPtr<MediaPlayerPrivateGStreamer>, unsigned index, GstStream*);
+#endif
WeakPtr<MediaPlayerPrivateGStreamer> m_player;
};
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp 2023-08-09 03:49:45.772321700 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp 2023-09-07 21:41:39.276019831 -0500
@@ -404,6 +404,7 @@ template <> void derefGPtr<GstQuery>(Gst
gst_query_unref(ptr);
}
+#if GST_CHECK_VERSION(1, 10, 0)
template <> GRefPtr<GstStream> adoptGRef(GstStream* ptr)
{
return GRefPtr<GstStream>(ptr, GRefPtrAdopt);
@@ -441,6 +442,7 @@ template <> void derefGPtr<GstStreamColl
if (ptr)
gst_object_unref(ptr);
}
+#endif
template <>
GRefPtr<GstClock> adoptGRef(GstClock* ptr)
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h 2023-08-09 03:49:45.772321700 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h 2023-09-07 21:41:39.276019831 -0500
@@ -140,6 +140,7 @@ GRefPtr<WebKitWebSrc> ensureGRef(WebKitW
template<> WebKitWebSrc* refGPtr<WebKitWebSrc>(WebKitWebSrc* ptr);
template<> void derefGPtr<WebKitWebSrc>(WebKitWebSrc* ptr);
+#if GST_CHECK_VERSION(1, 10, 0)
template<> GRefPtr<GstStream> adoptGRef(GstStream*);
template<> GstStream* refGPtr<GstStream>(GstStream*);
template<> void derefGPtr<GstStream>(GstStream*);
@@ -147,6 +148,7 @@ template<> void derefGPtr<GstStream>(Gst
template<> GRefPtr<GstStreamCollection> adoptGRef(GstStreamCollection*);
template<> GstStreamCollection* refGPtr<GstStreamCollection>(GstStreamCollection*);
template<> void derefGPtr<GstStreamCollection>(GstStreamCollection*);
+#endif
template<> GRefPtr<GstClock> adoptGRef(GstClock*);
template<> GstClock* refGPtr<GstClock>(GstClock*);
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp 2023-09-07 21:41:25.209278481 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp 2023-09-07 21:41:39.276019831 -0500
@@ -375,7 +375,6 @@ void registerWebKitGStreamerElements()
#if ENABLE(VIDEO)
gst_element_register(0, "webkitwebsrc", GST_RANK_PRIMARY + 100, WEBKIT_TYPE_WEB_SRC);
- gst_element_register(0, "webkitdmabufvideosink", GST_RANK_NONE, WEBKIT_TYPE_DMABUF_VIDEO_SINK);
#if USE(GSTREAMER_GL)
gst_element_register(0, "webkitglvideosink", GST_RANK_NONE, WEBKIT_TYPE_GL_VIDEO_SINK);
#endif
@@ -814,7 +813,7 @@ PlatformVideoColorSpace videoColorSpaceF
PlatformVideoColorSpace videoColorSpaceFromInfo(const GstVideoInfo& info)
{
ensureGStreamerInitialized();
-#ifndef GST_DISABLE_GST_DEBUG
+#if 0
GUniquePtr<char> colorimetry(gst_video_colorimetry_to_string(&GST_VIDEO_INFO_COLORIMETRY(&info)));
#endif
PlatformVideoColorSpace colorSpace;
@@ -841,7 +840,7 @@ PlatformVideoColorSpace videoColorSpaceF
colorSpace.matrix = PlatformVideoMatrixCoefficients::Unspecified;
break;
default:
-#ifndef GST_DISABLE_GST_DEBUG
+#if 0
GST_WARNING("Unhandled colorspace matrix from %s", colorimetry.get());
#endif
break;
@@ -893,7 +892,7 @@ PlatformVideoColorSpace videoColorSpaceF
colorSpace.transfer = PlatformVideoTransferCharacteristics::Unspecified;
break;
default:
-#ifndef GST_DISABLE_GST_DEBUG
+#if 0
GST_WARNING("Unhandled colorspace transfer from %s", colorimetry.get());
#endif
break;
@@ -938,7 +937,7 @@ PlatformVideoColorSpace videoColorSpaceF
colorSpace.primaries = PlatformVideoColorPrimaries::Unspecified;
break;
default:
-#ifndef GST_DISABLE_GST_DEBUG
+#if 0
GST_WARNING("Unhandled colorspace primaries from %s", colorimetry.get());
#endif
break;
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp 2023-09-07 21:41:22.572597816 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp 2023-09-07 21:41:39.276019831 -0500
@@ -307,9 +307,11 @@ GStreamerRegistryScanner::RegistryLookup
gst_plugin_feature_list_free(candidates);
// Valid `selectedFactory` ends up stored in the scanner singleton.
+#if GST_CHECK_VERSION(1, 10, 0)
if (isSupported)
GST_OBJECT_FLAG_SET(selectedFactory.get(), GST_OBJECT_FLAG_MAY_BE_LEAKED);
else
+#endif
selectedFactory.clear();
GST_LOG("Lookup result for %s matching caps %" GST_PTR_FORMAT " : isSupported=%s, isUsingHardware=%s", elementFactoryTypeToString(factoryType), caps.get(), boolForPrinting(isSupported), boolForPrinting(isUsingHardware));
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp 2023-08-09 03:49:45.784322000 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp 2023-09-07 21:41:39.276019831 -0500
@@ -43,6 +43,7 @@ InbandTextTrackPrivateGStreamer::InbandT
{
}
+#if GST_CHECK_VERSION(1, 10, 0)
InbandTextTrackPrivateGStreamer::InbandTextTrackPrivateGStreamer(unsigned index, GstStream* stream)
: InbandTextTrackPrivate(CueFormat::WebVTT)
, TrackPrivateBaseGStreamer(TrackPrivateBaseGStreamer::TrackType::Text, this, index, stream)
@@ -55,6 +56,7 @@ InbandTextTrackPrivateGStreamer::InbandT
const char* mediaType = capsMediaType(caps.get());
m_kind = g_str_has_prefix(mediaType, "closedcaption/") ? Kind::Captions : Kind::Subtitles;
}
+#endif
void InbandTextTrackPrivateGStreamer::handleSample(GRefPtr<GstSample> sample)
{
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h 2023-08-09 03:49:45.784322000 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h 2023-09-07 21:41:39.276019831 -0500
@@ -47,10 +47,12 @@ public:
return create(index, WTFMove(pad));
}
+#if GST_CHECK_VERSION(1, 10, 0)
static Ref<InbandTextTrackPrivateGStreamer> create(WeakPtr<MediaPlayerPrivateGStreamer>, unsigned index, GstStream* stream)
{
return adoptRef(*new InbandTextTrackPrivateGStreamer(index, stream));
}
+#endif
Kind kind() const final { return m_kind; }
AtomString id() const final { return m_id; }
@@ -62,7 +64,9 @@ public:
private:
InbandTextTrackPrivateGStreamer(unsigned index, GRefPtr<GstPad>&&, bool shouldHandleStreamStartEvent);
+#if GST_CHECK_VERSION(1, 10, 0)
InbandTextTrackPrivateGStreamer(unsigned index, GstStream*);
+#endif
void notifyTrackOfSample();
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2023-09-07 21:41:25.209278481 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2023-09-08 14:02:16.255036362 -0500
@@ -1440,6 +1440,7 @@ void MediaPlayerPrivateGStreamer::update
void MediaPlayerPrivateGStreamer::playbin3SendSelectStreamsIfAppropriate()
{
+#if GST_CHECK_VERSION(1, 10, 0)
ASSERT(!m_isLegacyPlaybin);
bool haveDifferentStreamIds = (m_wantedAudioStreamId != m_currentAudioStreamId || m_wantedVideoStreamId != m_currentVideoStreamId);
@@ -1469,8 +1470,10 @@ void MediaPlayerPrivateGStreamer::playbi
m_waitingForStreamsSelectedEvent = true;
gst_element_send_event(m_pipeline.get(), gst_event_new_select_streams(streams));
g_list_free_full(streams, reinterpret_cast<GDestroyNotify>(g_free));
+#endif
}
+#if GST_CHECK_VERSION(1, 10, 0)
void MediaPlayerPrivateGStreamer::updateTracks(const GRefPtr<GstObject>& collectionOwner)
{
ASSERT(!m_isLegacyPlaybin);
@@ -1569,6 +1572,7 @@ void MediaPlayerPrivateGStreamer::update
}
#undef CREATE_OR_SELECT_TRACK
}
+#endif // GST_CHECK_VERSION(1, 10, 0)
void MediaPlayerPrivateGStreamer::videoChangedCallback(MediaPlayerPrivateGStreamer* player)
{
@@ -1577,6 +1581,7 @@ void MediaPlayerPrivateGStreamer::videoC
});
}
+#if GST_CHECK_VERSION(1, 10, 0)
void MediaPlayerPrivateGStreamer::handleStreamCollectionMessage(GstMessage* message)
{
if (m_isLegacyPlaybin)
@@ -1603,6 +1608,7 @@ void MediaPlayerPrivateGStreamer::handle
callOnMainThreadAndWait(WTFMove(callback));
GST_DEBUG_OBJECT(pipeline(), "Updating tracks DONE");
}
+#endif
bool MediaPlayerPrivateGStreamer::handleNeedContextMessage(GstMessage* message)
{
@@ -2051,6 +2057,7 @@ void MediaPlayerPrivateGStreamer::handle
case GST_MESSAGE_TOC:
processTableOfContents(message);
break;
+#if GST_CHECK_VERSION(1, 10, 0)
case GST_MESSAGE_STREAMS_SELECTED: {
if (m_isLegacyPlaybin)
break;
@@ -2079,6 +2086,7 @@ void MediaPlayerPrivateGStreamer::handle
playbin3SendSelectStreamsIfAppropriate();
break;
}
+#endif
default:
GST_DEBUG_OBJECT(pipeline(), "Unhandled GStreamer message type: %s", GST_MESSAGE_TYPE_NAME(message));
break;
@@ -2937,8 +2945,10 @@ void MediaPlayerPrivateGStreamer::create
// WEBKIT_GST_USE_PLAYBIN3 environment variable.
const char* usePlaybin3 = g_getenv("WEBKIT_GST_USE_PLAYBIN3");
bool isMediaStream = url.protocolIs("mediastream"_s);
+#if GST_CHECK_VERSION(1, 10, 0)
if (isMediaSource() || isMediaStream || (usePlaybin3 && !strcmp(usePlaybin3, "1")))
playbinName = "playbin3";
+#endif
ASSERT(!m_pipeline);
@@ -2992,9 +3002,11 @@ void MediaPlayerPrivateGStreamer::create
// initilization segment is parsed and "updateend" is fired. We need therefore to handle these
// synchronously in the same main thread tick to make the tracks information available to JS no
// later than "updateend".
+#if GST_CHECK_VERSION(1, 10, 0)
g_signal_connect_swapped(bus.get(), "sync-message::stream-collection", G_CALLBACK(+[](MediaPlayerPrivateGStreamer* player, GstMessage* message) {
player->handleStreamCollectionMessage(message);
}), this);
+#endif
g_object_set(m_pipeline.get(), "mute", static_cast<gboolean>(player->muted()), nullptr);
@@ -3341,9 +3353,11 @@ static uint32_t fourccValue(GstVideoForm
return uint32_t(DMABufFormat::FourCC::BGRA8888);
case GST_VIDEO_FORMAT_ABGR:
return uint32_t(DMABufFormat::FourCC::RGBA8888);
+#if GST_CHECK_VERSION(1, 10, 0)
case GST_VIDEO_FORMAT_P010_10LE:
case GST_VIDEO_FORMAT_P010_10BE:
return uint32_t(DMABufFormat::FourCC::P010);
+#endif
#if GST_CHECK_VERSION(1, 18, 0)
case GST_VIDEO_FORMAT_P016_LE:
case GST_VIDEO_FORMAT_P016_BE:
@@ -3356,7 +3370,7 @@ static uint32_t fourccValue(GstVideoForm
return gst_video_format_to_fourcc(format);
}
-static DMABufColorSpace colorSpaceForColorimetry(const GstVideoColorimetry* cinfo)
+static DMABufColorSpace colorSpaceForColorimetry(GstVideoColorimetry* cinfo)
{
if (gst_video_colorimetry_matches(cinfo, GST_VIDEO_COLORIMETRY_SRGB))
return DMABufColorSpace::SRGB;
@@ -3412,8 +3426,12 @@ void MediaPlayerPrivateGStreamer::pushDM
// the memory:DMABuf feature on the GstCaps object. All sensible decoders yielding DMABufs specify this.
// For all other decoders, another option is peeking the zero-index GstMemory and testing whether it's
// a DMABuf memory, i.e. allocated by a DMABuf-capable allocator. If it is, we can proceed the same way.
+#if GST_CHECK_VERSION(1, 10, 0)
bool isDMABufMemory = gst_caps_features_contains(gst_caps_get_features(caps, 0), GST_CAPS_FEATURE_MEMORY_DMABUF)
|| gst_is_dmabuf_memory(gst_buffer_peek_memory(buffer, 0));
+#else
+ bool isDMABufMemory = false;
+#endif
if (isDMABufMemory) {
// In case of a hardware decoder that's yielding dmabuf memory, we can take the relevant data and
// push it into the composition process.
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h 2023-09-07 21:41:25.212611833 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h 2023-09-07 21:41:39.279353182 -0500
@@ -253,8 +253,12 @@ protected:
AudioChanged = 1 << 2,
VolumeChanged = 1 << 3,
MuteChanged = 1 << 4,
+#if GST_CHECK_VERSION (1, 10, 0)
TextChanged = 1 << 5,
StreamCollectionChanged = 1 << 7
+#else
+ TextChanged = 1 << 5
+#endif
};
static bool isAvailable();
@@ -490,7 +494,9 @@ private:
void setPlaybinURL(const URL& urlString);
+#if GST_CHECK_VERSION(1, 10, 0)
void updateTracks(const GRefPtr<GstObject>& collectionOwner);
+#endif
void videoSinkCapsChanged(GstPad*);
void updateVideoSizeAndOrientationFromCaps(const GstCaps*);
bool hasFirstVideoSampleReachedSink() const;
@@ -599,7 +605,9 @@ private:
RefPtr<GBMBufferSwapchain> m_swapchain;
#endif
+#if GST_CHECK_VERSION (1, 10, 0)
GRefPtr<GstStreamCollection> m_streamCollection;
+#endif
AbortableTaskQueue m_sinkTaskQueue;
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp 2023-09-07 21:41:25.212611833 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp 2023-09-07 21:41:39.279353182 -0500
@@ -35,6 +35,7 @@ GST_DEBUG_CATEGORY_EXTERN(webkit_media_p
namespace WebCore {
+#if ENABLE(VIDEO) && USE(GSTREAMER_GL)
GstGLDisplay* PlatformDisplay::gstGLDisplay() const
{
#if USE(EGL)
@@ -71,5 +72,6 @@ GstGLContext* PlatformDisplay::gstGLCont
#endif
return m_gstGLContext.get();
}
+#endif
} // namespace WebCore
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp 2023-08-09 03:49:45.796322600 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp 2023-09-07 21:41:39.279353182 -0500
@@ -85,6 +85,7 @@ TrackPrivateBaseGStreamer::TrackPrivateB
tagsChanged();
}
+#if GST_CHECK_VERSION(1, 10, 0)
TrackPrivateBaseGStreamer::TrackPrivateBaseGStreamer(TrackType type, TrackPrivateBase* owner, unsigned index, GstStream* stream)
: m_notifier(MainThreadNotifier<MainThreadNotification>::create())
, m_index(index)
@@ -102,6 +103,7 @@ TrackPrivateBaseGStreamer::TrackPrivateB
// We can't call notifyTrackOfTagsChanged() directly, because we need tagsChanged() to setup m_tags.
tagsChanged();
}
+#endif
void TrackPrivateBaseGStreamer::setPad(GRefPtr<GstPad>&& pad)
{
@@ -152,8 +154,10 @@ TrackPrivateBaseGStreamer::~TrackPrivate
GstObject* TrackPrivateBaseGStreamer::objectForLogging() const
{
+#if GST_CHECK_VERSION(1, 10, 0)
if (m_stream)
return GST_OBJECT_CAST(m_stream.get());
+#endif
ASSERT(m_pad);
return GST_OBJECT_CAST(m_pad.get());
@@ -161,8 +165,10 @@ GstObject* TrackPrivateBaseGStreamer::ob
void TrackPrivateBaseGStreamer::disconnect()
{
+#if GST_CHECK_VERSION(1, 10, 0)
if (m_stream)
g_signal_handlers_disconnect_matched(m_stream.get(), G_SIGNAL_MATCH_DATA, 0, 0, nullptr, nullptr, this);
+#endif
m_tags.clear();
@@ -197,8 +203,11 @@ void TrackPrivateBaseGStreamer::tagsChan
}
i++;
} while (tagEvent);
- } else if (m_stream)
+ }
+#if GST_CHECK_VERSION(1, 10, 0)
+ else if (m_stream)
tags = adoptGRef(gst_stream_get_tags(m_stream.get()));
+#endif
if (!tags)
tags = adoptGRef(gst_tag_list_new_empty());
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h 2023-08-09 03:49:45.796322600 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h 2023-09-07 21:41:39.279353182 -0500
@@ -60,7 +60,9 @@ public:
void setIndex(unsigned index) { m_index = index; }
+#if GST_CHECK_VERSION(1, 10, 0)
GstStream* stream() const { return m_stream.get(); }
+#endif
// Used for MSE, where the initial caps of the pad are relevant for initializing the matching pad in the
// playback pipeline.
@@ -69,7 +71,9 @@ public:
protected:
TrackPrivateBaseGStreamer(TrackType, TrackPrivateBase*, unsigned index, GRefPtr<GstPad>&&, bool shouldHandleStreamStartEvent);
+#if GST_CHECK_VERSION(1, 10, 0)
TrackPrivateBaseGStreamer(TrackType, TrackPrivateBase*, unsigned index, GstStream*);
+#endif
void notifyTrackOfTagsChanged();
void notifyTrackOfStreamChanged();
@@ -92,7 +96,9 @@ protected:
AtomString m_id;
GRefPtr<GstPad> m_pad;
GRefPtr<GstPad> m_bestUpstreamPad;
+#if GST_CHECK_VERSION(1, 10, 0)
GRefPtr<GstStream> m_stream;
+#endif
unsigned long m_eventProbe { 0 };
GRefPtr<GstCaps> m_initialCaps;
AbortableTaskQueue m_taskQueue;
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp 2023-08-09 03:49:45.804322700 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp 2023-09-07 21:41:39.279353182 -0500
@@ -53,6 +53,7 @@ VideoTrackPrivateGStreamer::VideoTrackPr
ensureVideoTrackDebugCategoryInitialized();
}
+#if GST_CHECK_VERSION(1, 10, 0)
VideoTrackPrivateGStreamer::VideoTrackPrivateGStreamer(WeakPtr<MediaPlayerPrivateGStreamer> player, unsigned index, GstStream* stream)
: TrackPrivateBaseGStreamer(TrackPrivateBaseGStreamer::TrackType::Video, this, index, stream)
, m_player(player)
@@ -147,11 +148,14 @@ void VideoTrackPrivateGStreamer::updateC
configuration.colorSpace = videoColorSpaceFromInfo(info);
}
}
+#endif
VideoTrackPrivate::Kind VideoTrackPrivateGStreamer::kind() const
{
+#if GST_CHECK_VERSION(1, 10, 0)
if (m_stream && gst_stream_get_stream_flags(m_stream.get()) & GST_STREAM_FLAG_SELECT)
return VideoTrackPrivate::Kind::Main;
+#endif
return VideoTrackPrivate::kind();
}
@@ -160,8 +164,10 @@ void VideoTrackPrivateGStreamer::disconn
{
m_taskQueue.startAborting();
+#if GST_CHECK_VERSION(1, 10, 0)
if (m_stream)
g_signal_handlers_disconnect_matched(m_stream.get(), G_SIGNAL_MATCH_DATA, 0, 0, nullptr, nullptr, this);
+#endif
m_player = nullptr;
TrackPrivateBaseGStreamer::disconnect();
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h 2023-08-09 03:49:45.804322700 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h 2023-09-08 17:36:43.196779874 -0500
@@ -43,10 +43,12 @@ public:
return adoptRef(*new VideoTrackPrivateGStreamer(player, index, WTFMove(pad), shouldHandleStreamStartEvent));
}
+#if GST_CHECK_VERSION(1, 10, 0)
static Ref<VideoTrackPrivateGStreamer> create(WeakPtr<MediaPlayerPrivateGStreamer> player, unsigned index, GstStream* stream)
{
return adoptRef(*new VideoTrackPrivateGStreamer(player, index, stream));
}
+#endif
Kind kind() const final;
@@ -62,15 +64,19 @@ public:
AtomString language() const final { return m_language; }
protected:
+#if GST_CHECK_VERSION(1, 10, 0)
void updateConfigurationFromCaps(const GRefPtr<GstCaps>&);
void updateConfigurationFromTags(const GRefPtr<GstTagList>&);
void tagsChanged(const GRefPtr<GstTagList>& tags) final { updateConfigurationFromTags(tags); }
void capsChanged(const String&, const GRefPtr<GstCaps>&) final;
+#endif
private:
VideoTrackPrivateGStreamer(WeakPtr<MediaPlayerPrivateGStreamer>, unsigned index, GRefPtr<GstPad>&&, bool shouldHandleStreamStartEvent);
+#if GST_CHECK_VERSION(1, 10, 0)
VideoTrackPrivateGStreamer(WeakPtr<MediaPlayerPrivateGStreamer>, unsigned index, GstStream*);
+#endif
WeakPtr<MediaPlayerPrivateGStreamer> m_player;
};
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp 2023-09-07 21:41:25.212611833 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp 2023-09-07 21:41:39.279353182 -0500
@@ -300,7 +300,6 @@ static void webKitAudioSinkConstructed(G
GST_CALL_PARENT(G_OBJECT_CLASS, constructed, (object));
GST_OBJECT_FLAG_SET(GST_OBJECT_CAST(object), GST_ELEMENT_FLAG_SINK);
- gst_bin_set_suppressed_flags(GST_BIN_CAST(object), static_cast<GstElementFlags>(GST_ELEMENT_FLAG_SOURCE | GST_ELEMENT_FLAG_SINK));
}
static void webkit_audio_sink_class_init(WebKitAudioSinkClass* klass)
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/ImageDecoder.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/ImageDecoder.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/graphics/ImageDecoder.cpp 2023-08-09 03:49:45.572315500 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/graphics/ImageDecoder.cpp 2023-09-07 21:41:39.279353182 -0500
@@ -37,10 +37,6 @@
#include "ImageDecoderAVFObjC.h"
#endif
-#if USE(GSTREAMER) && ENABLE(VIDEO)
-#include "ImageDecoderGStreamer.h"
-#endif
-
namespace WebCore {
#if ENABLE(GPU_PROCESS) && HAVE(AVASSETREADER)
@@ -97,11 +93,6 @@ RefPtr<ImageDecoder> ImageDecoder::creat
}
#endif
-#if USE(GSTREAMER) && ENABLE(VIDEO)
- if (ImageDecoderGStreamer::canDecodeType(mimeType))
- return ImageDecoderGStreamer::create(data, mimeType, alphaOption, gammaAndColorProfileOption);
-#endif
-
#if USE(CG)
// ScalableImageDecoder is used on CG ports for some specific image formats which the platform doesn't support directly.
if (auto imageDecoder = ScalableImageDecoder::create(data, alphaOption, gammaAndColorProfileOption))
@@ -134,11 +125,6 @@ bool ImageDecoder::supportsMediaType(Med
#endif
#endif
-#if USE(GSTREAMER) && ENABLE(VIDEO)
- if (ImageDecoderGStreamer::supportsMediaType(type))
- return true;
-#endif
-
return false;
}
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp 2023-08-18 00:56:15.582821100 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp 2023-09-07 21:41:39.279353182 -0500
@@ -152,12 +152,16 @@ public:
}
auto caps = adoptGRef(gst_caps_from_string(capsString));
+#if GST_CHECK_VERSION(1, 10, 0)
GST_MINI_OBJECT_FLAG_SET(caps.get(), GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED);
+#endif
GRefPtr<GstCaps> encodedFormat;
if (encodedFormatString) {
encodedFormat = adoptGRef(gst_caps_from_string(encodedFormatString));
+#if GST_CHECK_VERSION(1, 10, 0)
GST_MINI_OBJECT_FLAG_SET(encodedFormat.get(), GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED);
+#endif
}
singleton().emplace(std::make_pair(id, EncoderDefinition {
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/MIMETypeRegistry.cpp webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/MIMETypeRegistry.cpp
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/MIMETypeRegistry.cpp 2023-08-09 03:49:45.328307900 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/MIMETypeRegistry.cpp 2023-09-07 21:41:39.279353182 -0500
@@ -59,10 +59,6 @@
#include "PreviewConverter.h"
#endif
-#if USE(GSTREAMER) && ENABLE(VIDEO)
-#include "ImageDecoderGStreamer.h"
-#endif
-
namespace WebCore {
static String normalizedImageMIMEType(const String&);
@@ -442,11 +438,6 @@ bool MIMETypeRegistry::isSupportedImageV
return true;
#endif
-#if USE(GSTREAMER) && ENABLE(VIDEO)
- if (ImageDecoderGStreamer::supportsContainerType(mimeType))
- return true;
-#endif
-
return false;
}
diff -urp webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/SourcesGStreamer.txt webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/SourcesGStreamer.txt
--- webkitgtk-2.41.91.gstreamer1.12/Source/WebCore/platform/SourcesGStreamer.txt 2023-09-07 21:41:25.212611833 -0500
+++ webkitgtk-2.41.91.gstreamer1.8/Source/WebCore/platform/SourcesGStreamer.txt 2023-09-07 21:41:39.279353182 -0500
@@ -45,7 +45,6 @@ platform/audio/gstreamer/FFTFrameGStream
platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp @no-unify
platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp
-platform/graphics/gstreamer/DMABufVideoSinkGStreamer.cpp @no-unify
platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp @no-unify
platform/graphics/gstreamer/GRefPtrGStreamer.cpp
platform/graphics/gstreamer/GStreamerAudioMixer.cpp
@@ -55,7 +54,6 @@ platform/graphics/gstreamer/GStreamerSin
platform/graphics/gstreamer/GStreamerVideoFrameHolder.cpp @no-unify
platform/graphics/gstreamer/GStreamerVideoSinkCommon.cpp
platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp
-platform/graphics/gstreamer/ImageDecoderGStreamer.cpp
platform/graphics/gstreamer/ImageGStreamerCairo.cpp
platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp
platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.cpp