1. 17 Jul, 2014 1 commit
    • Ben Avison's avatar
      armv6: Accelerate ff_fft_calc for general case (nbits != 4) · 87552d54
      Ben Avison authored
      The previous implementation targeted DTS Coherent Acoustics, which only
      requires nbits == 4 (fft16()). This case was (and still is) linked directly
      rather than being indirected through ff_fft_calc_vfp(), but now the full
      range from radix-4 up to radix-65536 is available. This benefits other codecs
      such as AAC and AC3.
      
      The implementaion is based upon the C version, with each routine larger than
      radix-16 calling a hierarchy of smaller FFT functions, then performing a
      post-processing pass. This pass benefits a lot from loop unrolling to
      counter the long pipelines in the VFP. A relaxed calling standard also
      reduces the overhead of the call hierarchy, and avoiding the excessive
      inlining performed by GCC probably helps with I-cache utilisation too.
      
      I benchmarked the result by measuring the number of gperftools samples that
      hit anywhere in the AAC decoder (starting from aac_decode_frame()) or
      specifically in the FFT routines (fft4() to fft512() and pass()) for the
      same sample AAC stream:
      
                    Before          After
                    Mean   StdDev   Mean   StdDev  Confidence  Change
      Audio decode  2245.5 53.1     1599.6 43.8    100.0%      +40.4%
      FFT routines  940.6  22.0     348.1  20.8    100.0%      +170.2%
      Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
      87552d54
  2. 29 Aug, 2013 1 commit
  3. 22 Jul, 2013 2 commits
  4. 17 Feb, 2013 1 commit
  5. 22 Apr, 2012 1 commit
  6. 20 Jan, 2012 1 commit
  7. 20 Mar, 2011 1 commit
  8. 19 Mar, 2011 1 commit
  9. 14 Feb, 2011 1 commit
  10. 13 Feb, 2011 1 commit
  11. 02 Feb, 2011 1 commit
  12. 31 Jan, 2011 1 commit
  13. 10 Apr, 2010 1 commit
  14. 23 Mar, 2010 1 commit
  15. 06 Mar, 2010 1 commit
  16. 21 Sep, 2009 1 commit
  17. 20 Sep, 2009 1 commit
  18. 15 Sep, 2009 1 commit
  19. 01 Apr, 2009 2 commits
  20. 31 Aug, 2008 1 commit
  21. 17 Oct, 2007 1 commit
  22. 16 Jun, 2007 1 commit
  23. 07 Oct, 2006 1 commit
  24. 10 Sep, 2006 1 commit
  25. 02 Jul, 2006 2 commits
  26. 01 Jul, 2006 1 commit