Diff
Modified: trunk/Source/WebCore/ChangeLog (288883 => 288884)
--- trunk/Source/WebCore/ChangeLog 2022-02-01 17:17:04 UTC (rev 288883)
+++ trunk/Source/WebCore/ChangeLog 2022-02-01 17:18:59 UTC (rev 288884)
@@ -1,5 +1,25 @@
2022-02-01 Philippe Normand <[email protected]>
+ [GStreamer] Update flags in internal GStreamer source and sink elements
+ https://bugs.webkit.org/show_bug.cgi?id=235871
+
+ Reviewed by Xabier Rodriguez-Calvar.
+
+ For custom source and sinks subclassing GstBin it's good practice to suppress SOURCE and
+ SINK flags and to keep the subclass flags as matching the element type.
+
+ * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
+ (webKitWebAudioSrcConstructed):
+ * platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:
+ (webKitGLVideoSinkConstructed):
+ * platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:
+ (webKitAudioSinkConstructed):
+ (webkit_audio_sink_class_init):
+ * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
+ (webkitMediaStreamSrcConstructed):
+
+2022-02-01 Philippe Normand <[email protected]>
+
[GStreamer] Support for vpx in webrtc encoder
https://bugs.webkit.org/show_bug.cgi?id=235870
Modified: trunk/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp (288883 => 288884)
--- trunk/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp 2022-02-01 17:17:04 UTC (rev 288883)
+++ trunk/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp 2022-02-01 17:18:59 UTC (rev 288884)
@@ -203,6 +203,9 @@
ASSERT(priv->destination);
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);
priv->task = adoptGRef(gst_task_new(reinterpret_cast<GstTaskFunction>(webKitWebAudioSrcRenderIteration), src, nullptr));
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp (288883 => 288884)
--- trunk/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp 2022-02-01 17:17:04 UTC (rev 288883)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp 2022-02-01 17:18:59 UTC (rev 288884)
@@ -64,6 +64,9 @@
WebKitGLVideoSink* sink = WEBKIT_GL_VIDEO_SINK(object);
+ GST_OBJECT_FLAG_SET(GST_OBJECT_CAST(sink), GST_ELEMENT_FLAG_SINK);
+ gst_bin_set_suppressed_flags(GST_BIN_CAST(sink), static_cast<GstElementFlags>(GST_ELEMENT_FLAG_SOURCE | GST_ELEMENT_FLAG_SINK));
+
sink->priv->appSink = makeGStreamerElement("appsink", "webkit-gl-video-appsink");
ASSERT(sink->priv->appSink);
g_object_set(sink->priv->appSink.get(), "enable-last-sample", FALSE, "emit-signals", TRUE, "max-buffers", 1, nullptr);
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp (288883 => 288884)
--- trunk/Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp 2022-02-01 17:17:04 UTC (rev 288883)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp 2022-02-01 17:18:59 UTC (rev 288884)
@@ -293,11 +293,20 @@
return result;
}
+static void webKitAudioSinkConstructed(GObject* object)
+{
+ 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)
{
GObjectClass* oklass = G_OBJECT_CLASS(klass);
oklass->set_property = webKitAudioSinkSetProperty;
oklass->get_property = webKitAudioSinkGetProperty;
+ oklass->constructed = webKitAudioSinkConstructed;
g_object_class_install_property(oklass, PROP_VOLUME,
g_param_spec_double("volume", "Volume", "The audio volume, 1.0=100%", 0, 10, 1,
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp (288883 => 288884)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp 2022-02-01 17:17:04 UTC (rev 288883)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp 2022-02-01 17:18:59 UTC (rev 288884)
@@ -485,6 +485,9 @@
WebKitMediaStreamSrc* self = WEBKIT_MEDIA_STREAM_SRC_CAST(object);
auto* priv = self->priv;
+ GST_OBJECT_FLAG_SET(GST_OBJECT_CAST(self), static_cast<GstElementFlags>(GST_ELEMENT_FLAG_SOURCE | static_cast<GstElementFlags>(GST_BIN_FLAG_STREAMS_AWARE)));
+ gst_bin_set_suppressed_flags(GST_BIN_CAST(self), static_cast<GstElementFlags>(GST_ELEMENT_FLAG_SOURCE | GST_ELEMENT_FLAG_SINK));
+
priv->mediaStreamObserver = makeUnique<WebKitMediaStreamObserver>(GST_ELEMENT_CAST(self));
priv->flowCombiner = GUniquePtr<GstFlowCombiner>(gst_flow_combiner_new());