Title: [288884] trunk/Source/WebCore
Revision
288884
Author
[email protected]
Date
2022-02-01 09:18:59 -0800 (Tue, 01 Feb 2022)

Log Message

[GStreamer] Update flags in internal GStreamer source and sink elements
https://bugs.webkit.org/show_bug.cgi?id=235871

Patch by Philippe Normand <[email protected]> on 2022-02-01
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):

Modified Paths

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());
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to