Title: [106537] trunk
Revision
106537
Author
[email protected]
Date
2012-02-02 00:04:02 -0800 (Thu, 02 Feb 2012)

Log Message

[GStreamer] FFTFrame implementation
https://bugs.webkit.org/show_bug.cgi?id=73545

Reviewed by Chris Rogers.

.:

* configure.ac: Enable the WebAudio option again and remove
libfftw checks.

Source/WebCore:

FFTFrame implementation based on GStreamer's FFT processing
library.

No new tests, existing WebAudio tests cover this.

* GNUmakefile.am:
* GNUmakefile.list.am:
* platform/audio/FFTFrame.h:
* platform/audio/FFTFrameStub.cpp:
* platform/audio/gstreamer/FFTFrameGStreamer.cpp: Added.
(WebCore::FFTFrame::FFTFrame):
(WebCore::FFTFrame::initialize):
(WebCore::FFTFrame::cleanup):
(WebCore::FFTFrame::~FFTFrame):
(WebCore::FFTFrame::multiply):
(WebCore::FFTFrame::doFFT):
(WebCore::FFTFrame::doInverseFFT):
(WebCore::FFTFrame::realData):
(WebCore::FFTFrame::imagData):

Source/WebKit/gtk:

* GNUmakefile.am: Remove libfftw compilation flags.

Source/WebKit2:

* GNUmakefile.am: Remove libfftw compilation flags.

LayoutTests:

* webaudio/resources/convolution-testing.js:
(checkTail1): Adapt convolution threshold for GStreamerFFTFrame
implementation, as advised by Chris Rogers.

Modified Paths

Diff

Modified: trunk/ChangeLog (106536 => 106537)


--- trunk/ChangeLog	2012-02-02 08:00:20 UTC (rev 106536)
+++ trunk/ChangeLog	2012-02-02 08:04:02 UTC (rev 106537)
@@ -1,3 +1,13 @@
+2012-02-01  Philippe Normand  <[email protected]>
+
+        [GStreamer] FFTFrame implementation
+        https://bugs.webkit.org/show_bug.cgi?id=73545
+
+        Reviewed by Chris Rogers.
+
+        * configure.ac: Enable the WebAudio option again and remove
+        libfftw checks.
+
 2012-01-31  Ryosuke Niwa  <[email protected]>
 
         webkit-perf.appspot.com should accept test results without medians

Modified: trunk/LayoutTests/ChangeLog (106536 => 106537)


--- trunk/LayoutTests/ChangeLog	2012-02-02 08:00:20 UTC (rev 106536)
+++ trunk/LayoutTests/ChangeLog	2012-02-02 08:04:02 UTC (rev 106537)
@@ -1,3 +1,14 @@
+2012-02-01  Philippe Normand  <[email protected]>
+
+        [GStreamer] FFTFrame implementation
+        https://bugs.webkit.org/show_bug.cgi?id=73545
+
+        Reviewed by Chris Rogers.
+
+        * webaudio/resources/convolution-testing.js:
+        (checkTail1): Adapt convolution threshold for GStreamerFFTFrame
+        implementation, as advised by Chris Rogers.
+
 2012-02-01  Eric Carlson  <[email protected]>
 
         Consider user's preferred language when choosing text tracks

Modified: trunk/LayoutTests/webaudio/resources/convolution-testing.js (106536 => 106537)


--- trunk/LayoutTests/webaudio/resources/convolution-testing.js	2012-02-02 08:00:20 UTC (rev 106536)
+++ trunk/LayoutTests/webaudio/resources/convolution-testing.js	2012-02-02 08:04:02 UTC (rev 106537)
@@ -127,13 +127,13 @@
 
     // This threshold is experimentally determined by examining the
     // value of tail1MaxDecibels.
-    var threshold1 = -146.7;
+    var threshold1 = -129.7;
 
     var tail1MaxDecibels = linearToDecibel(tail1Max/refMax);
     if (tail1MaxDecibels <= threshold1) {
         testPassed("First part of tail of convolution is sufficiently small.");
     } else {
-        testFailed("First part of tail of convolution is not sufficiently small: " + tail1Max + " dB");
+        testFailed("First part of tail of convolution is not sufficiently small: " + tail1MaxDecibels + " dB");
         isZero = false;
     }
 

Modified: trunk/Source/WebCore/ChangeLog (106536 => 106537)


--- trunk/Source/WebCore/ChangeLog	2012-02-02 08:00:20 UTC (rev 106536)
+++ trunk/Source/WebCore/ChangeLog	2012-02-02 08:04:02 UTC (rev 106537)
@@ -1,3 +1,30 @@
+2012-02-01  Philippe Normand  <[email protected]>
+
+        [GStreamer] FFTFrame implementation
+        https://bugs.webkit.org/show_bug.cgi?id=73545
+
+        Reviewed by Chris Rogers.
+
+        FFTFrame implementation based on GStreamer's FFT processing
+        library.
+
+        No new tests, existing WebAudio tests cover this.
+
+        * GNUmakefile.am:
+        * GNUmakefile.list.am:
+        * platform/audio/FFTFrame.h:
+        * platform/audio/FFTFrameStub.cpp:
+        * platform/audio/gstreamer/FFTFrameGStreamer.cpp: Added.
+        (WebCore::FFTFrame::FFTFrame):
+        (WebCore::FFTFrame::initialize):
+        (WebCore::FFTFrame::cleanup):
+        (WebCore::FFTFrame::~FFTFrame):
+        (WebCore::FFTFrame::multiply):
+        (WebCore::FFTFrame::doFFT):
+        (WebCore::FFTFrame::doInverseFFT):
+        (WebCore::FFTFrame::realData):
+        (WebCore::FFTFrame::imagData):
+
 2012-02-02  Kentaro Hara  <[email protected]>
 
         Rename [CheckFrameSecurity] and [SVGCheckSecurity] to [CheckAccessToNode]

Modified: trunk/Source/WebCore/GNUmakefile.am (106536 => 106537)


--- trunk/Source/WebCore/GNUmakefile.am	2012-02-02 08:00:20 UTC (rev 106536)
+++ trunk/Source/WebCore/GNUmakefile.am	2012-02-02 08:04:02 UTC (rev 106537)
@@ -512,6 +512,10 @@
 webcore_cppflags += -DENABLE_WEB_AUDIO=1
 endif
 
+if USE_WEBAUDIO_GSTREAMER
+webcore_cppflags += -DWTF_USE_WEBAUDIO_GSTREAMER=1
+endif
+
 # ----
 # Web Sockets Support
 # ----
@@ -871,7 +875,6 @@
 	$(GSTREAMER_CFLAGS) \
 	$(GTK_CFLAGS) \
 	$(HILDON_CFLAGS) \
-	$(LIBFFTW_CFLAGS) \
 	$(LIBSOUP_CFLAGS) \
 	$(LIBXML_CFLAGS) \
 	$(LIBXSLT_CFLAGS) \

Modified: trunk/Source/WebCore/GNUmakefile.list.am (106536 => 106537)


--- trunk/Source/WebCore/GNUmakefile.list.am	2012-02-02 08:00:20 UTC (rev 106536)
+++ trunk/Source/WebCore/GNUmakefile.list.am	2012-02-02 08:04:02 UTC (rev 106537)
@@ -5414,6 +5414,7 @@
 	Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp \
 	Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.h \
 	Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp \
+	Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp \
 	Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp \
 	Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.h \
 	Source/WebCore/platform/audio/gtk/AudioBusGtk.cpp

Modified: trunk/Source/WebCore/platform/audio/FFTFrame.h (106536 => 106537)


--- trunk/Source/WebCore/platform/audio/FFTFrame.h	2012-02-02 08:00:20 UTC (rev 106536)
+++ trunk/Source/WebCore/platform/audio/FFTFrame.h	2012-02-02 08:04:02 UTC (rev 106537)
@@ -47,6 +47,13 @@
 #include "mkl_dfti.h"
 #endif // USE(WEBAUDIO_MKL)
 
+#if USE(WEBAUDIO_GSTREAMER)
+#include <glib.h>
+G_BEGIN_DECLS
+#include <gst/fft/gstfftf32.h>
+G_END_DECLS
+#endif // USE(WEBAUDIO_GSTREAMER)
+
 #if USE(WEBAUDIO_FFMPEG)
 struct RDFTContext;
 #endif // USE(WEBAUDIO_FFMPEG)
@@ -146,6 +153,14 @@
     AudioFloatArray m_imagData;
 #endif // USE(WEBAUDIO_FFMPEG)
 
+#if USE(WEBAUDIO_GSTREAMER)
+    GstFFTF32* m_fft;
+    GstFFTF32* m_inverseFft;
+    GstFFTF32Complex* m_complexData;
+    AudioFloatArray m_realData;
+    AudioFloatArray m_imagData;
+#endif // USE(WEBAUDIO_GSTREAMER)
+
 #endif // !USE_ACCELERATE_FFT
 };
 

Modified: trunk/Source/WebCore/platform/audio/FFTFrameStub.cpp (106536 => 106537)


--- trunk/Source/WebCore/platform/audio/FFTFrameStub.cpp	2012-02-02 08:00:20 UTC (rev 106536)
+++ trunk/Source/WebCore/platform/audio/FFTFrameStub.cpp	2012-02-02 08:04:02 UTC (rev 106537)
@@ -29,7 +29,7 @@
 
 #if ENABLE(WEB_AUDIO)
 
-#if !OS(DARWIN) && !USE(WEBAUDIO_MKL) && !USE(WEBAUDIO_FFMPEG)
+#if !OS(DARWIN) && !USE(WEBAUDIO_MKL) && !USE(WEBAUDIO_FFMPEG) && !USE(WEBAUDIO_GSTREAMER)
 
 #include "FFTFrame.h"
 
@@ -102,6 +102,6 @@
 
 } // namespace WebCore
 
-#endif // !OS(DARWIN) && !USE(WEBAUDIO_MKL)
+#endif // !OS(DARWIN) && !USE(WEBAUDIO_MKL) && !USE(WEBAUDIO_GSTREAMER)
 
 #endif // ENABLE(WEB_AUDIO)

Modified: trunk/Source/WebKit/gtk/ChangeLog (106536 => 106537)


--- trunk/Source/WebKit/gtk/ChangeLog	2012-02-02 08:00:20 UTC (rev 106536)
+++ trunk/Source/WebKit/gtk/ChangeLog	2012-02-02 08:04:02 UTC (rev 106537)
@@ -1,5 +1,14 @@
 2012-02-01  Philippe Normand  <[email protected]>
 
+        [GStreamer] FFTFrame implementation
+        https://bugs.webkit.org/show_bug.cgi?id=73545
+
+        Reviewed by Chris Rogers.
+
+        * GNUmakefile.am: Remove libfftw compilation flags.
+
+2012-02-01  Philippe Normand  <[email protected]>
+
         [GTK] unittests/testloading crashes
         https://bugs.webkit.org/show_bug.cgi?id=77544
 

Modified: trunk/Source/WebKit/gtk/GNUmakefile.am (106536 => 106537)


--- trunk/Source/WebKit/gtk/GNUmakefile.am	2012-02-02 08:00:20 UTC (rev 106536)
+++ trunk/Source/WebKit/gtk/GNUmakefile.am	2012-02-02 08:04:02 UTC (rev 106537)
@@ -68,7 +68,6 @@
 	$(GSTREAMER_CFLAGS) \
 	$(GTK_CFLAGS) \
 	$(HILDON_CFLAGS) \
-	$(LIBFFTW_CFLAGS) \
 	$(LIBSOUP_CFLAGS) \
 	$(LIBXML_CFLAGS) \
 	$(LIBXSLT_CFLAGS) \
@@ -101,7 +100,6 @@
 	$(GTK_LIBS) \
 	$(HILDON_LIBS) \
 	$(JPEG_LIBS) \
-	$(LIBFFTW_LIBS) \
 	$(LIBSOUP_LIBS) \
 	$(LIBXML_LIBS) \
 	$(LIBXSLT_LIBS) \

Modified: trunk/Source/WebKit2/ChangeLog (106536 => 106537)


--- trunk/Source/WebKit2/ChangeLog	2012-02-02 08:00:20 UTC (rev 106536)
+++ trunk/Source/WebKit2/ChangeLog	2012-02-02 08:04:02 UTC (rev 106537)
@@ -1,3 +1,12 @@
+2012-02-01  Philippe Normand  <[email protected]>
+
+        [GStreamer] FFTFrame implementation
+        https://bugs.webkit.org/show_bug.cgi?id=73545
+
+        Reviewed by Chris Rogers.
+
+        * GNUmakefile.am: Remove libfftw compilation flags.
+
 2012-02-01  No'am Rosenthal  <[email protected]>
 
         [Texmap] Use glScissors for clipping in TextureMapperGL when possible

Modified: trunk/Source/WebKit2/GNUmakefile.am (106536 => 106537)


--- trunk/Source/WebKit2/GNUmakefile.am	2012-02-02 08:00:20 UTC (rev 106536)
+++ trunk/Source/WebKit2/GNUmakefile.am	2012-02-02 08:04:02 UTC (rev 106537)
@@ -1479,7 +1479,6 @@
 	$(XRENDER_LIBS) \
 	$(XT_LIBS) \
 	$(WINMM_LIBS) \
-	$(LIBFFTW_LIBS) \
 	$(ZLIB_LIBS)
 
 Programs_WebKitPluginProcess_LDFLAGS = \

Modified: trunk/configure.ac (106536 => 106537)


--- trunk/configure.ac	2012-02-02 08:00:20 UTC (rev 106536)
+++ trunk/configure.ac	2012-02-02 08:04:02 UTC (rev 106537)
@@ -784,7 +784,11 @@
 AC_MSG_RESULT([$enable_web_sockets])
 
 # check whether to enable Web Audio support
-enable_web_audio=no
+AC_MSG_CHECKING([whether to enable Web Audio support])
+AC_ARG_ENABLE(web_audio,
+              AC_HELP_STRING([--enable-web-audio],
+                             [enable support for Web Audio [default=no]]),
+              [],[enable_web_audio="no"])
 AC_MSG_RESULT([$enable_web_audio])
 
 # check whether to enable Web Timing support
@@ -1052,6 +1056,7 @@
                      [gstreamer-$GST_API_VERSION >= $GSTREAMER_REQUIRED_VERSION
                      gstreamer-app-$GST_API_VERSION
                      gstreamer-audio-$GST_API_VERSION
+                     gstreamer-fft-$GST_API_VERSION
                      gstreamer-base-$GST_API_VERSION
                      gstreamer-interfaces-$GST_API_VERSION
                      gstreamer-pbutils-$GST_API_VERSION
@@ -1063,17 +1068,7 @@
    AC_SUBST([GSTREAMER_LIBS])
 fi
 
-# check if libfftw is available
-if test "$enable_web_audio" = "yes"; then
-   PKG_CHECK_MODULES([LIBFFTW],
-                     [fftw3 >= $LIBFFTW_REQUIRED_VERSION
-                     fftw3f >= $LIBFFTW_REQUIRED_VERSION],
-                     [have_fftw=yes])
 
-    AC_SUBST([LIBFFTW_CFLAGS])
-    AC_SUBST([LIBFFTW_LIBS])
-fi
-
 if test "$with_accelerated_compositing" = "clutter"; then
    PKG_CHECK_MODULES(CLUTTER, clutter-1.0 >= $CLUTTER_REQUIRED_VERSION)
    PKG_CHECK_MODULES([CLUTTER_GTK],
@@ -1174,6 +1169,7 @@
 
 # GStreamer feature conditional
 AM_CONDITIONAL([USE_GSTREAMER], [test "$have_gstreamer" = "yes"])
+AM_CONDITIONAL([USE_WEBAUDIO_GSTREAMER], [test "$enable_web_audio" = "yes"])
 
 # ATSPI2 conditional
 AM_CONDITIONAL([HAVE_ATSPI2], [test "$have_atspi2" = "yes"])
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to