Skip to content
Snippets Groups Projects
  1. Feb 25, 2017
  2. Feb 16, 2017
  3. Jan 13, 2017
  4. Dec 13, 2016
  5. Dec 10, 2016
  6. Dec 03, 2016
  7. Nov 25, 2016
  8. Nov 24, 2016
  9. Oct 26, 2016
  10. Oct 18, 2016
  11. Sep 27, 2016
  12. Aug 18, 2016
  13. Aug 03, 2016
  14. Jun 22, 2016
  15. Jun 20, 2016
  16. Jun 17, 2016
  17. Jun 13, 2016
    • Muhammad Faiz's avatar
      swresample: add exact_rational option · b8c6e5a6
      Muhammad Faiz authored
      
      give high quality resampling
      as good as with linear_interp=on
      as fast as without linear_interp=on
      tested visually with ffplay
      ffplay -f lavfi "aevalsrc='sin(10000*t*t)', aresample=osr=48000, showcqt=gamma=5"
      ffplay -f lavfi "aevalsrc='sin(10000*t*t)', aresample=osr=48000:linear_interp=on, showcqt=gamma=5"
      ffplay -f lavfi "aevalsrc='sin(10000*t*t)', aresample=osr=48000:exact_rational=on, showcqt=gamma=5"
      
      slightly speed improvement
      for fair comparison with -cpuflags 0
      audio.wav is ~ 1 hour 44100 stereo 16bit wav file
      ffmpeg -i audio.wav -af aresample=osr=48000 -f null -
              old         new
      real    13.498s     13.121s
      user    13.364s     12.987s
      sys      0.131s      0.129s
      
      linear_interp=on
              old         new
      real    23.035s     23.050s
      user    22.907s     22.917s
      sys      0.119s     0.125s
      
      exact_rational=on
      real    12.418s
      user    12.298s
      sys      0.114s
      
      possibility to decrease memory usage if soft compensation is ignored
      
      Signed-off-by: default avatarMuhammad Faiz <mfcc64@gmail.com>
      b8c6e5a6
  18. May 16, 2016
  19. May 15, 2016
  20. May 13, 2016
  21. Mar 22, 2016
  22. Feb 14, 2016
  23. Jan 31, 2016
  24. Dec 24, 2015
  25. Dec 04, 2015
  26. Nov 15, 2015
  27. Nov 11, 2015
  28. Nov 09, 2015
    • Ganesh Ajjanagadde's avatar
      swresample/resample: speed up Blackman Nuttall filter · cf491a92
      Ganesh Ajjanagadde authored
      
      This may be a slightly surprising optimization, but is actually based on
      an understanding of how math libraries compute trigonometric functions.
      Explanation is given here so that future development uses libm more effectively
      across the codebase.
      
      All libm's essentially compute transcendental functions via some kind of
      polynomial approximation, be it Taylor-Maclaurin or Chebyshev.
      Correction terms are added via polynomial correction factors when needed
      to squeeze out the last bits of accuracy. Lookup tables are also
      inserted strategically.
      
      In the case of trigonometric functions, periodicity is exploited via
      first doing a range reduction to an interval around zero, and then using
      some polynomial approximation.
      
      This range reduction is the most natural way of doing things - else one
      would need polynomials for ranges in different periods which makes no
      sense whatsoever.
      
      To avoid the need for the range reduction, it is helpful to feed in
      arguments as close to the origin as possible for the trigonometric
      functions. In fact, this also makes sense from an accuracy point of view:
      IEEE floating point has far more resolution for small numbers than big ones.
      
      This patch does this for the Blackman-Nuttall filter, and yields a
      non-negligible speedup.
      
      Sample benchmark (x86-64, Haswell, GNU/Linux)
      test: fate-swr-resample-dblp-2626-44100
      old:
      18893514 decicycles in build_filter (loop 1000),     256 runs,      0 skips
      18599863 decicycles in build_filter (loop 1000),     512 runs,      0 skips
      18445574 decicycles in build_filter (loop 1000),    1000 runs,     24 skips
      
      new:
      16290697 decicycles in build_filter (loop 1000),     256 runs,      0 skips
      16267172 decicycles in build_filter (loop 1000),     512 runs,      0 skips
      16251105 decicycles in build_filter (loop 1000),    1000 runs,     24 skips
      
      Reviewed-by: default avatarMichael Niedermayer <michael@niedermayer.cc>
      Signed-off-by: default avatarGanesh Ajjanagadde <gajjanagadde@gmail.com>
      cf491a92
Loading