File webkit2gtk3-gstreamer-1.16.patch of Package webkit2gtk3.38159
diff -urp webkitgtk-2.47.90.orig/Source/cmake/GStreamerChecks.cmake webkitgtk-2.47.90/Source/cmake/GStreamerChecks.cmake
--- webkitgtk-2.47.90.orig/Source/cmake/GStreamerChecks.cmake 2025-02-25 02:25:42.367415000 -0600
+++ webkitgtk-2.47.90/Source/cmake/GStreamerChecks.cmake 2025-03-11 19:47:11.491678135 -0500
@@ -1,7 +1,7 @@
if (ENABLE_VIDEO OR ENABLE_WEB_AUDIO OR ENABLE_WEB_CODECS)
SET_AND_EXPOSE_TO_BUILD(USE_GSTREAMER TRUE)
if (USE_GSTREAMER_FULL)
- find_package(GStreamer 1.18.4 REQUIRED COMPONENTS full)
+ find_package(GStreamer 1.16.1 REQUIRED COMPONENTS full)
if (NOT PC_GSTREAMER_FULL_FOUND)
message(FATAL_ERROR "GStreamer static library libgstreamer-full-1.0 not found")
else ()
@@ -25,7 +25,7 @@ if (ENABLE_VIDEO OR ENABLE_WEB_AUDIO OR
list(APPEND GSTREAMER_COMPONENTS webrtc)
endif ()
- find_package(GStreamer 1.18.4 REQUIRED COMPONENTS ${GSTREAMER_COMPONENTS})
+ find_package(GStreamer 1.16.1 REQUIRED COMPONENTS ${GSTREAMER_COMPONENTS})
if (ENABLE_WEB_AUDIO)
if (NOT PC_GSTREAMER_AUDIO_FOUND OR NOT PC_GSTREAMER_FFT_FOUND)
diff -urp webkitgtk-2.47.90.orig/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp webkitgtk-2.47.90/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp
--- webkitgtk-2.47.90.orig/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp 2025-02-25 02:25:41.363391000 -0600
+++ webkitgtk-2.47.90/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp 2025-03-11 19:47:11.492678156 -0500
@@ -124,7 +124,8 @@ AudioSourceProviderGStreamer::AudioSourc
g_signal_connect_swapped(decodebin, "pad-added", G_CALLBACK(+[](AudioSourceProviderGStreamer* provider, GstPad* pad) {
auto padCaps = adoptGRef(gst_pad_query_caps(pad, nullptr));
bool isAudio = doCapsHaveType(padCaps.get(), "audio");
- RELEASE_ASSERT(isAudio);
+ if (!isAudio)
+ return;
auto sinkPad = adoptGRef(gst_element_get_static_pad(provider->m_audioSinkBin.get(), "sink"));
gst_pad_link(pad, sinkPad.get());
diff -urp webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp webkitgtk-2.47.90/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp
--- webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp 2025-02-25 02:25:41.459393000 -0600
+++ webkitgtk-2.47.90/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp 2025-03-11 19:52:42.239834794 -0500
@@ -114,7 +114,19 @@ static void webKitGLVideoSinkConstructed
if (!s_isDMABufDisabled)
gst_caps_append(caps.get(), buildDMABufCaps().leakRef());
#endif
- GRefPtr<GstCaps> glCaps = adoptGRef(gst_caps_from_string("video/x-raw, format = (string) " GST_GL_CAPS_FORMAT));
+ // Workaround until we can depend on GStreamer 1.16.2.
+ // https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/commit/8d32de090554cf29fe359f83aa46000ba658a693
+ // Forcing a color conversion to RGBA here allows glupload to internally use
+ // an uploader that adds a VideoMeta, through the TextureUploadMeta caps
+ // feature, without needing the patch above. However this specific caps
+ // feature is going to be removed from GStreamer so it is considered a
+ // short-term workaround. This code path most likely will have a negative
+ // performance impact on embedded platforms as well. Downstream embedders
+ // are highly encouraged to cherry-pick the patch linked above in their BSP
+ // and set the WEBKIT_GST_NO_RGBA_CONVERSION environment variable until
+ // GStreamer 1.16.2 is released.
+ // See also https://bugs.webkit.org/show_bug.cgi?id=201422
+ GRefPtr<GstCaps> glCaps = adoptGRef(gst_caps_from_string("video/x-raw, format = (string) RGBA"));
gst_caps_set_features(glCaps.get(), 0, gst_caps_features_new(GST_CAPS_FEATURE_MEMORY_GL_MEMORY, nullptr));
gst_caps_append(caps.get(), glCaps.leakRef());
@@ -177,12 +189,8 @@ static void webKitGLVideoSinkGetProperty
WebKitGLVideoSink* sink = WEBKIT_GL_VIDEO_SINK(object);
switch (propertyId) {
- case WEBKIT_GL_VIDEO_SINK_PROP_STATS: {
- GUniqueOutPtr<GstStructure> stats;
- g_object_get(sink->priv->appSink.get(), "stats", &stats.outPtr(), nullptr);
- gst_value_set_structure(value, stats.get());
+ case WEBKIT_GL_VIDEO_SINK_PROP_STATS:
break;
- }
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, paramSpec);
RELEASE_ASSERT_NOT_REACHED();
diff -urp webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp webkitgtk-2.47.90/Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp
--- webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp 2025-02-25 02:25:41.459393000 -0600
+++ webkitgtk-2.47.90/Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp 2025-03-11 19:47:11.494315478 -0500
@@ -32,7 +32,7 @@ GST_DEBUG_CATEGORY_STATIC(webkit_media_g
bool GStreamerAudioMixer::isAvailable()
{
- return isGStreamerPluginAvailable("inter") && isGStreamerPluginAvailable("audiomixer");
+ return false;
}
GStreamerAudioMixer& GStreamerAudioMixer::singleton()
diff -urp webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp webkitgtk-2.47.90/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp
--- webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp 2025-02-25 02:25:41.459393000 -0600
+++ webkitgtk-2.47.90/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp 2025-03-11 19:47:11.494678198 -0500
@@ -131,6 +131,24 @@ GstPad* webkitGstGhostPadFromStaticTempl
return pad;
}
+#if !GST_CHECK_VERSION(1, 18, 0)
+void webkitGstVideoFormatInfoComponent(const GstVideoFormatInfo* info, guint plane, gint components[GST_VIDEO_MAX_COMPONENTS])
+{
+ guint c, i = 0;
+
+ /* Reverse mapping of info->plane. */
+ for (c = 0; c < GST_VIDEO_FORMAT_INFO_N_COMPONENTS(info); c++) {
+ if (GST_VIDEO_FORMAT_INFO_PLANE(info, c) == plane) {
+ components[i] = c;
+ i++;
+ }
+ }
+
+ for (c = i; c < GST_VIDEO_MAX_COMPONENTS; c++)
+ components[c] = -1;
+}
+#endif
+
#if ENABLE(VIDEO)
bool getVideoSizeAndFormatFromCaps(const GstCaps* caps, WebCore::IntSize& size, GstVideoFormat& format, int& pixelAspectRatioNumerator, int& pixelAspectRatioDenominator, int& stride)
{
@@ -630,31 +648,6 @@ void deinitializeGStreamer()
teardownVideoEncoderSingleton();
teardownGStreamerImageDecoders();
#endif
-
- bool isLeaksTracerActive = false;
- auto activeTracers = gst_tracing_get_active_tracers();
- while (activeTracers) {
- auto tracer = adoptGRef(GST_TRACER_CAST(activeTracers->data));
- if (!isLeaksTracerActive && !g_strcmp0(G_OBJECT_TYPE_NAME(G_OBJECT(tracer.get())), "GstLeaksTracer"))
- isLeaksTracerActive = true;
- activeTracers = g_list_delete_link(activeTracers, activeTracers);
- }
-
- if (!isLeaksTracerActive)
- return;
-
- // Make sure there is no active pipeline left. Those might trigger deadlocks during gst_deinit().
- {
- Locker locker { s_activePipelinesMapLock };
- for (auto& pipeline : activePipelinesMap().values()) {
- GST_DEBUG("Pipeline %" GST_PTR_FORMAT " was left running. Forcing clean-up.", pipeline.get());
- disconnectSimpleBusMessageCallback(pipeline.get());
- gst_element_set_state(pipeline.get(), GST_STATE_NULL);
- }
- activePipelinesMap().clear();
- }
-
- gst_deinit();
}
unsigned getGstPlayFlag(const char* nick)
@@ -1354,6 +1347,36 @@ String gstStructureToJSONString(const Gs
return value->toJSONString();
}
+#if !GST_CHECK_VERSION(1, 18, 0)
+GstClockTime webkitGstElementGetCurrentRunningTime(GstElement* element)
+{
+ g_return_val_if_fail(GST_IS_ELEMENT(element), GST_CLOCK_TIME_NONE);
+
+ auto baseTime = gst_element_get_base_time(element);
+ if (!GST_CLOCK_TIME_IS_VALID(baseTime)) {
+ GST_DEBUG_OBJECT(element, "Could not determine base time");
+ return GST_CLOCK_TIME_NONE;
+ }
+
+ auto clock = adoptGRef(gst_element_get_clock(element));
+ if (!clock) {
+ GST_DEBUG_OBJECT(element, "Element has no clock");
+ return GST_CLOCK_TIME_NONE;
+ }
+
+ auto clockTime = gst_clock_get_time(clock.get());
+ if (!GST_CLOCK_TIME_IS_VALID(clockTime))
+ return GST_CLOCK_TIME_NONE;
+
+ if (clockTime < baseTime) {
+ GST_DEBUG_OBJECT(element, "Got negative current running time");
+ return GST_CLOCK_TIME_NONE;
+ }
+
+ return clockTime - baseTime;
+}
+#endif
+
GstClockTime webkitGstInitTime()
{
return s_webkitGstInitTime;
@@ -1411,6 +1434,7 @@ PlatformVideoColorSpace videoColorSpaceF
case GST_VIDEO_TRANSFER_BT709:
colorSpace.transfer = PlatformVideoTransferCharacteristics::Bt709;
break;
+#if GST_CHECK_VERSION(1, 18, 0)
case GST_VIDEO_TRANSFER_BT601:
colorSpace.transfer = PlatformVideoTransferCharacteristics::Smpte170m;
break;
@@ -1423,6 +1447,7 @@ PlatformVideoColorSpace videoColorSpaceF
case GST_VIDEO_TRANSFER_BT2020_10:
colorSpace.transfer = PlatformVideoTransferCharacteristics::Bt2020_10bit;
break;
+#endif
case GST_VIDEO_TRANSFER_BT2020_12:
colorSpace.transfer = PlatformVideoTransferCharacteristics::Bt2020_12bit;
break;
@@ -1541,6 +1566,7 @@ void fillVideoInfoColorimetryFromColorSp
case PlatformVideoTransferCharacteristics::Bt709:
GST_VIDEO_INFO_COLORIMETRY(info).transfer = GST_VIDEO_TRANSFER_BT709;
break;
+#if GST_CHECK_VERSION(1, 18, 0)
case PlatformVideoTransferCharacteristics::Smpte170m:
GST_VIDEO_INFO_COLORIMETRY(info).transfer = GST_VIDEO_TRANSFER_BT601;
break;
@@ -1553,6 +1579,7 @@ void fillVideoInfoColorimetryFromColorSp
case PlatformVideoTransferCharacteristics::Bt2020_10bit:
GST_VIDEO_INFO_COLORIMETRY(info).transfer = GST_VIDEO_TRANSFER_BT2020_10;
break;
+#endif
case PlatformVideoTransferCharacteristics::Bt2020_12bit:
GST_VIDEO_INFO_COLORIMETRY(info).transfer = GST_VIDEO_TRANSFER_BT2020_12;
break;
diff -urp webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h webkitgtk-2.47.90/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h
--- webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h 2025-02-25 02:25:41.459393000 -0600
+++ webkitgtk-2.47.90/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h 2025-03-11 19:47:11.495678219 -0500
@@ -64,6 +64,15 @@ inline bool webkitGstCheckVersion(guint
return true;
}
+#if !GST_CHECK_VERSION(1, 18, 0)
+// gst_video_format_info_component() is GStreamer 1.18 API, so for older versions we use a local
+// vendored copy of the function.
+#define GST_VIDEO_MAX_COMPONENTS 4
+void webkitGstVideoFormatInfoComponent(const GstVideoFormatInfo*, guint, gint components[GST_VIDEO_MAX_COMPONENTS]);
+#endif
+
+#define gst_video_format_info_component webkitGstVideoFormatInfoComponent
+
#define GST_VIDEO_CAPS_TYPE_PREFIX "video/"
#define GST_AUDIO_CAPS_TYPE_PREFIX "audio/"
#define GST_TEXT_CAPS_TYPE_PREFIX "text/"
@@ -301,6 +310,13 @@ Vector<T> gstStructureGetArray(const Gst
String gstStructureToJSONString(const GstStructure*);
+#if !GST_CHECK_VERSION(1, 18, 0)
+// gst_element_get_current_running_time() is GStreamer 1.18 API, so for older versions we use a local
+// vendored copy of the function.
+GstClockTime webkitGstElementGetCurrentRunningTime(GstElement*);
+#define gst_element_get_current_running_time webkitGstElementGetCurrentRunningTime
+#endif
+
GstClockTime webkitGstInitTime();
PlatformVideoColorSpace videoColorSpaceFromCaps(const GstCaps*);
diff -urp webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp webkitgtk-2.47.90/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
--- webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2025-03-11 19:44:12.664782231 -0500
+++ webkitgtk-2.47.90/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2025-03-11 19:47:11.496678240 -0500
@@ -582,7 +582,6 @@ bool MediaPlayerPrivateGStreamer::doSeek
auto seekStart = toGstClockTime(startTime);
auto seekStop = toGstClockTime(endTime);
- GST_DEBUG_OBJECT(pipeline(), "[Seek] Performing actual seek to %" GST_TIMEP_FORMAT " (endTime: %" GST_TIMEP_FORMAT ") at rate %f", &seekStart, &seekStop, rate);
return gst_element_seek(m_pipeline.get(), rate, GST_FORMAT_TIME, m_seekFlags, GST_SEEK_TYPE_SET, seekStart, GST_SEEK_TYPE_SET, seekStop);
}
@@ -4112,7 +4111,27 @@ GstElement* MediaPlayerPrivateGStreamer:
}), this);
}
- return m_videoSink.get();
+ GstElement* videoSink = nullptr;
+ m_fpsSink = makeGStreamerElement("fpsdisplaysink", "sink");
+ if (m_fpsSink) {
+ g_object_set(m_fpsSink.get(), "silent", TRUE , nullptr);
+
+ // Turn off text overlay unless tracing is enabled.
+ if (gst_debug_category_get_threshold(webkit_media_player_debug) < GST_LEVEL_TRACE)
+ g_object_set(m_fpsSink.get(), "text-overlay", FALSE , nullptr);
+
+ if (gstObjectHasProperty(m_fpsSink.get(), "video-sink")) {
+ g_object_set(m_fpsSink.get(), "video-sink", m_videoSink.get(), nullptr);
+ videoSink = m_fpsSink.get();
+ } else
+ m_fpsSink = nullptr;
+ }
+
+ if (!m_fpsSink)
+ videoSink = m_videoSink.get();
+
+ ASSERT(videoSink);
+ return videoSink;
}
void MediaPlayerPrivateGStreamer::setStreamVolumeElement(GstStreamVolume* volume)
@@ -4142,25 +4161,18 @@ void MediaPlayerPrivateGStreamer::setStr
bool MediaPlayerPrivateGStreamer::updateVideoSinkStatistics()
{
- if (!m_videoSink)
+ if (!m_videoSink || !m_fpsSink)
return false;
- GUniqueOutPtr<GstStructure> stats;
- g_object_get(m_videoSink.get(), "stats", &stats.outPtr(), nullptr);
- if (!stats)
- return false;
-
- auto totalVideoFrames = gstStructureGet<uint64_t>(stats.get(), "rendered"_s);
- auto droppedVideoFrames = gstStructureGet<uint64_t>(stats.get(), "dropped"_s);
-
- if (!totalVideoFrames || !droppedVideoFrames)
- return false;
+ unsigned totalVideoFrames = 0;
+ unsigned droppedVideoFrames = 0;
+ g_object_get(m_fpsSink.get(), "frames-rendered", &totalVideoFrames, "frames-dropped", &droppedVideoFrames, nullptr);
// Caching is required so that metrics queries performed after EOS still return valid values.
- if (*totalVideoFrames)
- m_totalVideoFrames = *totalVideoFrames;
- if (*droppedVideoFrames)
- m_droppedVideoFrames = *droppedVideoFrames;
+ if (totalVideoFrames)
+ m_totalVideoFrames = totalVideoFrames;
+ if (droppedVideoFrames)
+ m_droppedVideoFrames = droppedVideoFrames;
return true;
}
diff -urp webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h webkitgtk-2.47.90/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
--- webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h 2025-02-25 02:25:41.459393000 -0600
+++ webkitgtk-2.47.90/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h 2025-03-11 19:47:11.498483733 -0500
@@ -614,6 +614,7 @@ private:
uint64_t m_networkReadPosition { 0 };
mutable uint64_t m_readPositionAtLastDidLoadingProgress { 0 };
+ GRefPtr<GstElement> m_fpsSink { nullptr };
uint64_t m_totalVideoFrames { 0 };
uint64_t m_droppedVideoFrames { 0 };
uint64_t m_decodedVideoFrames { 0 };
diff -urp webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferVideo.cpp webkitgtk-2.47.90/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferVideo.cpp
--- webkitgtk-2.47.90.orig/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferVideo.cpp 2025-02-25 02:25:41.483393700 -0600
+++ webkitgtk-2.47.90/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferVideo.cpp 2025-03-11 19:47:11.499125230 -0500
@@ -135,8 +135,6 @@ static uint32_t videoFormatToDRMFourcc(G
return DRM_FORMAT_YUV411;
case GST_VIDEO_FORMAT_Y42B:
return DRM_FORMAT_YUV422;
- case GST_VIDEO_FORMAT_P010_10LE:
- return DRM_FORMAT_P010;
default:
break;
}
diff -urp webkitgtk-2.47.90.orig/Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp webkitgtk-2.47.90/Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp
--- webkitgtk-2.47.90.orig/Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp 2025-02-25 02:25:41.487393900 -0600
+++ webkitgtk-2.47.90/Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp 2025-03-11 19:47:11.500678325 -0500
@@ -257,7 +257,7 @@ static std::pair<GRefPtr<GstCaps>, GRefP
else if (transfer == VPConfigurationTransferCharacteristics::BT_470_7_BG)
GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_GAMMA28;
else if (transfer == VPConfigurationTransferCharacteristics::BT_601_7)
- GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_BT601;
+ GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_UNKNOWN;
else if (transfer == VPConfigurationTransferCharacteristics::SMPTE_ST_240)
GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_SMPTE240M;
else if (transfer == VPConfigurationTransferCharacteristics::Linear)
@@ -272,16 +272,16 @@ static std::pair<GRefPtr<GstCaps>, GRefP
GST_WARNING("VPConfigurationTransferCharacteristics::IEC_61966_2_1 not supported");
GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_UNKNOWN;
} else if (transfer == VPConfigurationTransferCharacteristics::BT_2020_10bit)
- GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_BT2020_10;
+ GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_UNKNOWN;
else if (transfer == VPConfigurationTransferCharacteristics::BT_2020_12bit)
GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_BT2020_12;
else if (transfer == VPConfigurationTransferCharacteristics::SMPTE_ST_2084)
- GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_SMPTE2084;
+ GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_UNKNOWN;
else if (transfer == VPConfigurationTransferCharacteristics::SMPTE_ST_428_1) {
GST_WARNING("VPConfigurationTransferCharacteristics::SMPTE_ST_428_1 not supported");
GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_UNKNOWN;
} else if (transfer == VPConfigurationTransferCharacteristics::BT_2100_HLG)
- GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_ARIB_STD_B67;
+ GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_UNKNOWN;
auto matrix = parameters->matrixCoefficients;
if (matrix == VPConfigurationMatrixCoefficients::Identity)
@@ -422,7 +422,7 @@ static std::pair<GRefPtr<GstCaps>, GRefP
GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_GAMMA28;
break;
case AV1ConfigurationTransferCharacteristics::BT_601_7:
- GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_BT601;
+ GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_UNKNOWN;
break;
case AV1ConfigurationTransferCharacteristics::SMPTE_ST_240:
GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_SMPTE240M;
@@ -446,20 +446,20 @@ static std::pair<GRefPtr<GstCaps>, GRefP
GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_UNKNOWN;
break;
case AV1ConfigurationTransferCharacteristics::BT_2020_10bit:
- GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_BT2020_10;
+ GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_UNKNOWN;
break;
case AV1ConfigurationTransferCharacteristics::BT_2020_12bit:
GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_BT2020_12;
break;
case AV1ConfigurationTransferCharacteristics::SMPTE_ST_2084:
- GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_SMPTE2084;
+ GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_UNKNOWN;
break;
case AV1ConfigurationTransferCharacteristics::SMPTE_ST_428_1:
GST_WARNING("AV1ConfigurationTransferCharacteristics::SMPTE_ST_428_1 not supported");
GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_UNKNOWN;
break;
case AV1ConfigurationTransferCharacteristics::BT_2100_HLG:
- GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_ARIB_STD_B67;
+ GST_VIDEO_INFO_COLORIMETRY(&info).transfer = GST_VIDEO_TRANSFER_UNKNOWN;
break;
};
diff -urp webkitgtk-2.47.90.orig/Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp webkitgtk-2.47.90/Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp
--- webkitgtk-2.47.90.orig/Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp 2025-02-25 02:25:41.491393800 -0600
+++ webkitgtk-2.47.90/Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp 2025-03-11 19:47:11.501678346 -0500
@@ -782,7 +782,9 @@ static void webkit_video_encoder_class_i
gst_util_set_object_arg(G_OBJECT(encoder), "end-usage", "cq");
break;
};
- }, [](GstElement* encoder, const WebKitVideoEncoderBitRateAllocation& bitRateAllocation) {
+ }
+#if 0
+ , [](GstElement* encoder, const WebKitVideoEncoderBitRateAllocation& bitRateAllocation) {
// Allow usage of deprecated GValueArray API.
ALLOW_DEPRECATED_DECLARATIONS_BEGIN;
GUniquePtr<GValueArray> bitrates(g_value_array_new(3));
@@ -915,7 +917,9 @@ static void webkit_video_encoder_class_i
}
ALLOW_DEPRECATED_DECLARATIONS_END;
- });
+ }
+#endif
+ );
Encoders::registerEncoder(Vp9, "vp9enc"_s, nullptr, "video/x-vp9"_s, nullptr,
[&](WebKitVideoEncoder* self) {