[GStreamer][WebAudio] No need for version check in each loop iteration
authorphiln@webkit.org <philn@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 8 Feb 2018 10:14:01 +0000 (10:14 +0000)
committerphiln@webkit.org <philn@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 8 Feb 2018 10:14:01 +0000 (10:14 +0000)
https://bugs.webkit.org/show_bug.cgi?id=182577

Reviewed by Xabier Rodriguez Calvar.

* platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
(webkit_web_audio_src_init): Detect version once only, when creating the element.
(webKitWebAudioSrcLoop): Use boolean variable instead of checking the version every time.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@228265 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp

index de05dea..77ffc42 100644 (file)
@@ -1,3 +1,14 @@
+2018-02-08  Philippe Normand  <pnormand@igalia.com>
+
+        [GStreamer][WebAudio] No need for version check in each loop iteration
+        https://bugs.webkit.org/show_bug.cgi?id=182577
+
+        Reviewed by Xabier Rodriguez Calvar.
+
+        * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
+        (webkit_web_audio_src_init): Detect version once only, when creating the element.
+        (webKitWebAudioSrcLoop): Use boolean variable instead of checking the version every time.
+
 2018-02-08  Frederic Wang  <fwang@igalia.com>
 
         Add scrolling node types to distinguish main frames and subframes.
index b183d04..778dbd6 100644 (file)
@@ -69,6 +69,8 @@ struct _WebKitWebAudioSourcePrivate {
     guint64 numberOfSamples;
 
     GRefPtr<GstBufferPool> pool;
+
+    bool enableGapBufferSupport;
 };
 
 enum {
@@ -193,6 +195,11 @@ static void webkit_web_audio_src_init(WebKitWebAudioSrc* src)
     g_rec_mutex_init(&priv->mutex);
     priv->task = adoptGRef(gst_task_new(reinterpret_cast<GstTaskFunction>(webKitWebAudioSrcLoop), src, nullptr));
 
+    // GAP buffer support is enabled only for GStreamer 1.12.5 because of a
+    // memory leak that was fixed in that version.
+    // https://bugzilla.gnome.org/show_bug.cgi?id=793067
+    priv->enableGapBufferSupport = webkitGstCheckVersion(1, 12, 5);
+
     gst_task_set_lock(priv->task.get(), &priv->mutex);
 }
 
@@ -353,12 +360,8 @@ static void webKitWebAudioSrcLoop(WebKitWebAudioSrc* src)
         auto& buffer = channelBufferList[i];
         unmapGstBuffer(buffer.get());
 
-        // This is enabled only for GStreamer 1.12.5 because of a memory leak that was fixed in that version.
-        // https://bugzilla.gnome.org/show_bug.cgi?id=793067
-        if (webkitGstCheckVersion(1, 12, 5)) {
-            if (priv->bus->channel(i)->isSilent())
-                GST_BUFFER_FLAG_SET(buffer.get(), GST_BUFFER_FLAG_GAP);
-        }
+        if (priv->enableGapBufferSupport && priv->bus->channel(i)->isSilent())
+            GST_BUFFER_FLAG_SET(buffer.get(), GST_BUFFER_FLAG_GAP);
 
         if (failed)
             continue;