Commit Graph

584 Commits

Author SHA1 Message Date
James Almer 6fdd35a312 Merge commit '92db5083077a8b0f8e1050507671b456fd155125'
* commit '92db5083077a8b0f8e1050507671b456fd155125':
  build: Generate pkg-config files from Make and not from configure
  build: Store library version numbers in .version files

Includes cherry-picked commits 8a34f36593 and
ee164727dd to fix issues.

Changes were also made to retain support for raise_major and build_suffix.

Reviewed-by: ubitux
Merged-by: James Almer <jamrial@gmail.com>
2017-05-04 19:59:30 -03:00
Clément Bœsch 3f17751eeb Merge commit '11a9320de54759340531177c9f2b1e31e6112cc2'
* commit '11a9320de54759340531177c9f2b1e31e6112cc2':
  build: Move build-system-related helper files to a separate subdirectory

"ffbuild" directory name is used instead of "avbuild".

Merged-by: Clément Bœsch <u@pkh.me>
2017-05-03 16:49:12 +02:00
Michael Niedermayer 22b0daa1b3 Bump versions for master after 3.3
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-04-02 19:54:12 +02:00
Michael Niedermayer e1cc7f83df Bump minor for 3.3
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-04-02 19:49:45 +02:00
Michael Niedermayer 58b867a7cf Bump minor versions for master after release/3.3 branchpoint
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-03-31 13:21:06 +02:00
Michael Niedermayer fc332f3e29 Bump minor versions for staring release/3.3 branch
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-03-31 13:21:06 +02:00
James Almer db7a05dab0 swresample/resample: free existing ResampleContext on reinit
Fixes memleak.

Reviewed-by: wm4 <nfxjfg@googlemail.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
2017-03-21 12:03:44 -03:00
James Almer 2a8a8a2e98 swresample/resample: move resample_free() higher in the file
Also make it more readable while at it.

Signed-off-by: James Almer <jamrial@gmail.com>
2017-03-21 12:02:52 -03:00
Muhammad Faiz de1308429a swresample/x86/resample: extend resample_double to support avx and fma3
benchmark:
sse2 10.670s
avx   8.763s
fma3  8.380s

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-19 12:24:41 +07:00
Muhammad Faiz c52638cca2 swresample/swresample: do not use s32p internally by default when resampling
use fltp when doing s32 -> s32 resampling
because s32p has no simd optimization

benchmark:
old 17.913s
new  7.584s (use fma3)

Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-18 13:57:03 +07:00
Muhammad Faiz 3ba7b47d5c swresample/resample: do not assert compensation_distance on rebuild_filter
when set_compensation is called with zero sample_delta,
compensation does not happen (because dst_incr == ideal_dst_incr)
but compensation_distance is set

regression since 01ebb57c03

Found-by: wm4 <nfxjfg@googlemail.com>
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-17 09:59:44 +07:00
Muhammad Faiz 1f7eb216b0 swresample/options: enable linear_interp and exact_rational by default
better quality without speedloss

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-17 00:08:03 +07:00
Muhammad Faiz 6c7a0876fe swresample/swresample: do not reset tsf on swr_alloc_set_opts
so tsf option in aresample will have effect
previously tsf/internal_sample_format had no effect

fate is updated
s32p previously used fltp internally
dblp previously used fltp/dblp internally

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-13 02:45:36 +07:00
Muhammad Faiz 53a5cea478 swresample/resample: do not allow odd filter_length
except filter_length == 1

odd filter_length gives worse frequency response,
even when compared with shorter filter_length

also makes build_filter simpler

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-09 13:09:14 +07:00
Muhammad Faiz 61926b6c3e swresample/resample: use uniform normalization
this gives better frequency response

update swresample fate and other fates
that depend on resampling

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-08 16:09:38 +07:00
Carl Eugen Hoyos 353f509ee3 lswr/rematrix: Remove an aggressive loop optimization.
Fixes undefined behaviour and a gcc warning:
libswresample/rematrix.c:376:47: warning: iteration 64 invokes undefined behavior
2017-02-25 18:53:34 +01:00
Matthieu Bouron 5ef2f4f394 swr/aarch64: add missing ret to ff_resample_common_apply_filter_x8_float_neon 2017-02-16 11:52:32 +01:00
Matthieu Bouron e109c54a69 swresample/arm: cosmetic fixes 2017-01-13 21:24:25 +01:00
Matthieu Bouron 0265aec565 swresample/aarch64: add ff_resample_common_apply_filter_{x4,x8}_{float,s16}_neon 2017-01-13 21:24:19 +01:00
Muhammad Faiz 2b0112d42d swresample/resample: remove swri_resample function
integrate it inside multiple_resample
allow some calculations to be performed outside loop

Suggested-by: Michael Niedermayer <michael@niedermayer.cc>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-12-14 06:48:34 +07:00
Muhammad Faiz 6a8c0d8357 swresample/resample: do not allow negative dst_size return value
This should fix Ticket6012

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-12-14 00:43:44 +07:00
Michael Niedermayer 65e33d8e23 swresample/resample_template: Add filter values in parallel
This is faster 2871 -> 2189  cycles for int16 matrixbench -> 23456hz
Fixes a integer overflow in a artificial corner case
Fixes part of 668007-media

Found-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-12-10 02:44:21 +01:00
Michael Niedermayer 34db650784 swresample/resample_template: Reorder operations to avoid one addition
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-12-10 02:05:17 +01:00
Michael Niedermayer b3928a1cc6 swresample/swresample: Check count before memcpy()
Fixes undefined operation
Fixes part of 668007-media

Found-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-12-10 02:05:17 +01:00
Muhammad Faiz 01ebb57c03 swresample/resample: do not rebuild filter when sample_delta is zero
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-12-04 01:32:26 +07:00
Muhammad Faiz da34e4e132 swresample/soxr: fix invalid use of linear_interp
give very bad quality for soxr resampler.
linear_interp is intended for  using linear interpolation
between filter bank so quality will be better.

i guess this is misunderstood as 'do not use filter bank,
but directly interpolate linearly between samples'.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-11-26 05:52:24 +07:00
Muhammad Faiz 06f94149c6 swresample/resample: optimize exact_rational=on:linear_interp=on case
separate dsp.resample to dsp.resample_common and dsp.resample_linear
and choose to call faster resample_common even when linear_interp=on
when c->frac and c->dst_incr_mod are both zero

speed up resampling when exact_rational and linear_interp are both
enabled because exact_rational force c->frac and c->dst_incr_mod to
be zero when soft compensation does not happen

benchmark on exact_rational=on:linear_interp=on
        old     new
real    8.432s  5.097s
user    7.679s  4.989s
sys     0.125s  0.107s

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-11-25 03:22:04 +07:00
Michael Niedermayer 1609935b6c Bump minor versions after 3.2 branchpoint to seperate release
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-10-26 20:52:42 +02:00
Michael Niedermayer 3f3025205f Bump minor versions for 3.2
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-10-26 20:52:42 +02:00
Vodyannikov Aleksandr 9445e7e6d5 swresample/rematrix: Fix float part of swr_set_matrix()
Fixes Ticket #5897.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-10-26 19:27:22 +02:00
Muhammad Faiz acd74f9200 swresample/resample: fix return value of build_filter
return AVERROR code on error

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-18 22:36:01 +07:00
Michael Niedermayer fd902510ac swr: Update version & APIChanges for swr_build_matrix()
Found-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-09-27 15:26:13 +02:00
Michael Niedermayer 23c0779cda swresample: Add swr_build_matrix()
API and Doxy documentation is taken from avresample_build_matrix()
Fixes: Ticket5780

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-09-27 12:54:00 +02:00
Michael Niedermayer 740f5105d5 swresample: Use double and float for matrixes for best quality and speed
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-09-27 12:53:25 +02:00
Paul B Mahol 9876d8fc6d swresample: add int64 sample format 2016-08-18 15:30:05 +02:00
Michael Niedermayer 30b2611ed3 swresample: Skip over dither steps if dithering scale is 0
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-08-18 11:52:11 +02:00
Michael Niedermayer 946acacdcd swresample: move dither init up
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-08-18 11:50:14 +02:00
Timothy Gu 58c7bf789f doxygen: Standardize root-level modules 2016-08-02 22:15:25 -07:00
Matthieu Bouron 0acc170aad Merge commit '535a742c2695a9e0c586b50d7fa76e318232ff24'
* commit '535a742c2695a9e0c586b50d7fa76e318232ff24':
  build: Change structure of the linker version script templates

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-06-27 17:56:47 +02:00
Clément Bœsch a9eda4b260 swr: fix time.h include 2016-06-22 14:00:08 +02:00
Clément Bœsch 5d48e4eafa Merge commit 'a6a750c7ef240b72ce01e9653343a0ddf247d196'
* commit 'a6a750c7ef240b72ce01e9653343a0ddf247d196':
  tests: Move all test programs to a subdirectory

Merged-by: Clément Bœsch <clement@stupeflix.com>
2016-06-22 13:44:34 +02:00
Muhammad Faiz 6031e5d1af swresample/x86: add support for exact_rational
phase_shift and phase_mask is removed
generally exact_rational=on is faster than exact_rational=off

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-21 05:18:21 +07:00
Muhammad Faiz 7f1b503ec2 swresample/resample: do not increase phase_count on exact_rational
high phase_count is only useful when dst_incr_mod is non zero
in other word, it is only useful on soft compensation

on init, it will build filter with low phase_count
but when soft compensation is enabled, rebuild filter
with high phase_count

this approach saves lots of memory

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-17 16:02:49 +07:00
Muhammad Faiz ee575acb8c swresample/resample: add support for odd phase_count
because exact_rational does not guarantee
that phase_count is even

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-17 16:00:13 +07:00
Muhammad Faiz b8c6e5a661 swresample: add exact_rational option
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: Muhammad Faiz <mfcc64@gmail.com>
2016-06-13 12:36:01 +07:00
Michael Niedermayer feeb3a9261 swresample/resample: Fix division by 0 with tap_count=1
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-05-16 05:10:21 +02:00
Michael Niedermayer 2f76157eb0 swresample/rematrix: Use clipping s16 rematrixing if overflows are possible
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-05-15 22:25:34 +02:00
Michael Niedermayer 7fe81bc4f8 swresample/rematrix: Use error diffusion to avoid error in the DC component of the matrix
This fixes the sum of the integer coefficients ending up summing to a value
larger than the value representing unity.

This issue occurs with qN0.dts when converting to stereo

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-05-15 18:36:53 +02:00
Matthieu Bouron f6265a5cbc swresample/arm: add ff_resample_common_apply_filter_{x4,x8}_{float,s16}_neon 2016-05-13 21:13:46 +02:00
Michael Niedermayer 914ad90edd swresample/swresample: Remove "less than" comparissions of enums
Found-by: wm4
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-03-22 14:20:12 +01:00