RESOLVED WONTFIX 113527
Add a FFT implementation using kissfft in FFTFrame
https://bugs.webkit.org/show_bug.cgi?id=113527
Summary Add a FFT implementation using kissfft in FFTFrame
Alex KUOCH
Reported 2013-03-28 12:17:55 PDT
This is the first step to enable WebAudio on Android. Adding an extra FFT implementation using kissfft in FFTFrame. The kissfft patch code could be found under : https://www.codeaurora.org/patches/quic/webtech/1602-kissfft-add-neon-optimized-routines.patch Expected results: This change should be seamless as used specifically for Android OS
Attachments
Patch (19.65 KB, patch)
2013-04-04 13:05 PDT, Alex KUOCH
no flags
Raymond Toy
Comment 1 2013-04-02 11:04:29 PDT
(In reply to comment #0) > This is the first step to enable WebAudio on Android. > Adding an extra FFT implementation using kissfft in FFTFrame. > The kissfft patch code could be found under : > https://www.codeaurora.org/patches/quic/webtech/1602-kissfft-add-neon-optimized-routines.patch > > Expected results: > This change should be seamless as used specifically for Android OS Thanks for the link and patch. I ran some tests using your KissFFT implementation on a Galaxy Nexus phone and compared the results with https://code.google.com/p/webrtc/source/browse#svn%2Fdeps%2Fthird_party%2Fopenmax. My tests show that KissFFT runs about half as the OpenMAX implementation.
Alex KUOCH
Comment 2 2013-04-03 07:09:31 PDT
(In reply to comment #1) Thx for the feedback, could you detail "runs about half as" . Do you mean slower or faster ? Thx Alex > (In reply to comment #0) > > This is the first step to enable WebAudio on Android. > > Adding an extra FFT implementation using kissfft in FFTFrame. > > The kissfft patch code could be found under : > > https://www.codeaurora.org/patches/quic/webtech/1602-kissfft-add-neon-optimized-routines.patch > > > > Expected results: > > This change should be seamless as used specifically for Android OS > > Thanks for the link and patch. I ran some tests using your KissFFT implementation on a Galaxy Nexus phone and compared the results with https://code.google.com/p/webrtc/source/browse#svn%2Fdeps%2Fthird_party%2Fopenmax. > > My tests show that KissFFT runs about half as the OpenMAX implementation.
Raymond Toy
Comment 3 2013-04-03 09:44:35 PDT
(In reply to comment #2) > (In reply to comment #1) > > Thx for the feedback, could you detail "runs about half as" . Do you mean slower or faster ? Sorry, that confuses me too. To be concrete, a 1024-point complex float FFT takes 190 us with KissFFT and 89.8 us with OpenMAX on a Galaxy Nexus phone. The ratio of KissFFT times to OpenMAX times is roughly 2 for all the orders I tried. If the KissFFT times don't make sense to you, please let me know. Perhaps I made a mistake in compiling it. > > Thx > > Alex > > > (In reply to comment #0) > > > This is the first step to enable WebAudio on Android. > > > Adding an extra FFT implementation using kissfft in FFTFrame. > > > The kissfft patch code could be found under : > > > https://www.codeaurora.org/patches/quic/webtech/1602-kissfft-add-neon-optimized-routines.patch > > > > > > Expected results: > > > This change should be seamless as used specifically for Android OS > > > > Thanks for the link and patch. I ran some tests using your KissFFT implementation on a Galaxy Nexus phone and compared the results with https://code.google.com/p/webrtc/source/browse#svn%2Fdeps%2Fthird_party%2Fopenmax. > > > > My tests show that KissFFT runs about half as the OpenMAX implementation.
Alex KUOCH
Comment 4 2013-04-03 14:01:22 PDT
(In reply to comment #3) Could you confirm that those numbers had the NEON flag enabled ? Also, the performance of the FFT was not a concern in this case as I needed the functionality which was not available at the time I started this work. SO I don't have currently accurate numbers as you do. I really appreciate your feedback on the performance. > (In reply to comment #2) > > (In reply to comment #1) > > > > Thx for the feedback, could you detail "runs about half as" . Do you mean slower or faster ? > > Sorry, that confuses me too. To be concrete, a 1024-point complex float FFT takes 190 us with KissFFT and 89.8 us with OpenMAX on a Galaxy Nexus phone. The ratio of KissFFT times to OpenMAX times is roughly 2 for all the orders I tried. If the KissFFT times don't make sense to you, please let me know. Perhaps I made a mistake in compiling it. > > > > > > Thx > > > > Alex > > > > > (In reply to comment #0) > > > > This is the first step to enable WebAudio on Android. > > > > Adding an extra FFT implementation using kissfft in FFTFrame. > > > > The kissfft patch code could be found under : > > > > https://www.codeaurora.org/patches/quic/webtech/1602-kissfft-add-neon-optimized-routines.patch > > > > > > > > Expected results: > > > > This change should be seamless as used specifically for Android OS > > > > > > Thanks for the link and patch. I ran some tests using your KissFFT implementation on a Galaxy Nexus phone and compared the results with https://code.google.com/p/webrtc/source/browse#svn%2Fdeps%2Fthird_party%2Fopenmax. > > > > > > My tests show that KissFFT runs about half as the OpenMAX implementation.
Raymond Toy
Comment 5 2013-04-03 16:04:42 PDT
(In reply to comment #4) > (In reply to comment #3) > > Could you confirm that those numbers had the NEON flag enabled ? The build had -mfpu=neon and -D__ARM_HAVE_NEON. > Also, the performance of the FFT was not a concern in this case as I needed the functionality which was not available at the time I started this work. SO I don't have currently accurate numbers as you do. I really appreciate your feedback on the performance. Thanks for the info. > > > (In reply to comment #2) > > > (In reply to comment #1) > > > > > > Thx for the feedback, could you detail "runs about half as" . Do you mean slower or faster ? > > > > Sorry, that confuses me too. To be concrete, a 1024-point complex float FFT takes 190 us with KissFFT and 89.8 us with OpenMAX on a Galaxy Nexus phone. The ratio of KissFFT times to OpenMAX times is roughly 2 for all the orders I tried. If the KissFFT times don't make sense to you, please let me know. Perhaps I made a mistake in compiling it. > > > > > > > > > > Thx > > > > > > Alex > > > > > > > (In reply to comment #0) > > > > > This is the first step to enable WebAudio on Android. > > > > > Adding an extra FFT implementation using kissfft in FFTFrame. > > > > > The kissfft patch code could be found under : > > > > > https://www.codeaurora.org/patches/quic/webtech/1602-kissfft-add-neon-optimized-routines.patch > > > > > > > > > > Expected results: > > > > > This change should be seamless as used specifically for Android OS > > > > > > > > Thanks for the link and patch. I ran some tests using your KissFFT implementation on a Galaxy Nexus phone and compared the results with https://code.google.com/p/webrtc/source/browse#svn%2Fdeps%2Fthird_party%2Fopenmax. > > > > > > > > My tests show that KissFFT runs about half as the OpenMAX implementation.
Alex KUOCH
Comment 6 2013-04-04 13:05:38 PDT
Raymond Toy
Comment 7 2013-04-05 09:15:58 PDT
(In reply to comment #6) > Created an attachment (id=196509) [details] > Patch Given that https://bugs.webkit.org/show_bug.cgi?id=109755 has landed, will that work for you instead of using KissFFT?
Alex KUOCH
Comment 8 2013-04-05 10:06:11 PDT
Yes definitively, Thx for for the patch. (In reply to comment #7) > (In reply to comment #6) > > Created an attachment (id=196509) [details] [details] > > Patch > > Given that https://bugs.webkit.org/show_bug.cgi?id=109755 has landed, will that work for you instead of using KissFFT?
Raymond Toy
Comment 9 2013-04-05 10:08:38 PDT
(In reply to comment #8) > Yes definitively, Great! Closing this bug, then. > > Thx for for the patch. > > (In reply to comment #7) > > (In reply to comment #6) > > > Created an attachment (id=196509) [details] [details] [details] > > > Patch > > > > Given that https://bugs.webkit.org/show_bug.cgi?id=109755 has landed, will that work for you instead of using KissFFT?
Alexey Proskuryakov
Comment 10 2013-04-05 10:12:33 PDT
Comment on attachment 196509 [details] Patch Clearing review flag in a resolved bug.
Note You need to log in before you can comment on or make changes to this bug.