Title: [269099] trunk/Source/WebCore
Revision
269099
Author
[email protected]
Date
2020-10-28 05:47:36 -0700 (Wed, 28 Oct 2020)

Log Message

[GStreamer] Using audio files for the <img> tag triggers warnings
https://bugs.webkit.org/show_bug.cgi?id=218245

Reviewed by Xabier Rodriguez-Calvar.

Plug non-video pads to a fake sink in order to maintain a valid pipeline. Later we should
switch to decodebin3 and rely on the stream selection facilities.

* platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:
(WebCore::ImageDecoderGStreamer::InnerDecoder::connectDecoderPad):
(WebCore::ImageDecoderGStreamer::InnerDecoder::preparePipeline):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (269098 => 269099)


--- trunk/Source/WebCore/ChangeLog	2020-10-28 11:41:41 UTC (rev 269098)
+++ trunk/Source/WebCore/ChangeLog	2020-10-28 12:47:36 UTC (rev 269099)
@@ -1,3 +1,17 @@
+2020-10-28  Philippe Normand  <[email protected]>
+
+        [GStreamer] Using audio files for the <img> tag triggers warnings
+        https://bugs.webkit.org/show_bug.cgi?id=218245
+
+        Reviewed by Xabier Rodriguez-Calvar.
+
+        Plug non-video pads to a fake sink in order to maintain a valid pipeline. Later we should
+        switch to decodebin3 and rely on the stream selection facilities.
+
+        * platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:
+        (WebCore::ImageDecoderGStreamer::InnerDecoder::connectDecoderPad):
+        (WebCore::ImageDecoderGStreamer::InnerDecoder::preparePipeline):
+
 2020-10-28  Xabier Rodriguez Calvar  <[email protected]>
 
         Unreviewed, reverting r269033.

Modified: trunk/Source/WebCore/platform/graphics/gstreamer/ImageDecoderGStreamer.cpp (269098 => 269099)


--- trunk/Source/WebCore/platform/graphics/gstreamer/ImageDecoderGStreamer.cpp	2020-10-28 11:41:41 UTC (rev 269098)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/ImageDecoderGStreamer.cpp	2020-10-28 12:47:36 UTC (rev 269099)
@@ -232,8 +232,17 @@
 {
     auto padCaps = adoptGRef(gst_pad_get_current_caps(pad));
     GST_DEBUG_OBJECT(m_pipeline.get(), "New decodebin pad %" GST_PTR_FORMAT " caps: %" GST_PTR_FORMAT, pad, padCaps.get());
-    RELEASE_ASSERT(doCapsHaveType(padCaps.get(), "video"));
 
+    if (!doCapsHaveType(padCaps.get(), "video")) {
+        GST_DEBUG_OBJECT(m_pipeline.get(), "Non-video pad, plugging to a fakesink");
+        auto* sink = gst_element_factory_make("fakesink", nullptr);
+        gst_bin_add(GST_BIN_CAST(m_pipeline.get()), sink);
+        auto sinkPad = adoptGRef(gst_element_get_static_pad(sink, "sink"));
+        gst_pad_link(pad, sinkPad.get());
+        gst_element_sync_state_with_parent(sink);
+        return;
+    }
+
     GstElement* sink = gst_element_factory_make("appsink", nullptr);
     static GstAppSinkCallbacks callbacks = {
         nullptr,
@@ -344,8 +353,6 @@
     g_object_set(source, "stream", m_memoryStream.get(), nullptr);
 
     GstElement* decoder = gst_element_factory_make("decodebin", nullptr);
-    auto allowedCaps = adoptGRef(gst_caps_new_empty_simple("video/x-raw"));
-    g_object_set(decoder, "caps", allowedCaps.get(), "expose-all-streams", false, nullptr);
     g_signal_connect_swapped(decoder, "pad-added", G_CALLBACK(decodebinPadAddedCallback), this);
 
     gst_bin_add_many(GST_BIN_CAST(m_pipeline.get()), source, decoder, nullptr);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to