Commit Graph

90 Commits

Author SHA1 Message Date
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
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
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
Timothy Gu 180f9a0958 all: Make header guard names consistent 2016-01-31 15:44:11 -08:00
Ganesh Ajjanagadde 1bed09a30e swresample: allow double precision beta value for the Kaiser window
Kaiser windows inherently don't require beta to be an integer. This was
an arbitrary restriction. Moreover, soxr does not require it, and in
fact often estimates beta to a non-integral value.

Thus, this patch allows greater flexibility for swresample clients.
Micro version is updated.

Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
2015-11-08 21:11:07 -05:00
Ganesh Ajjanagadde ef62f573ca swresample/swresample_internal: add av_warn_unused_result
This will trigger a few warnings that need to be fixed.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
2015-10-15 22:27:23 -04:00
Carl Eugen Hoyos a77401e1f7 lswr: Allow 64 channels internally. 2015-07-17 00:17:08 +02:00
Michael Niedermayer d4325b2fea swr: Remember previously set int_sample_format from user
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-22 18:34:39 +02:00
Rob Sykes c70c6be225 swresample: soxr implementation for swr_get_out_samples()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-21 23:38:44 +02:00
Michael Niedermayer cc17b43d8d swresample: Add swr_get_out_samples()
Previous version reviewed-by: Pavel Koshevoy <pkoshevoy@gmail.com>
Previous version reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-04 05:37:32 +02:00
Ganesh Ajjanagadde 196b885a5f swresample/dither: check memory allocation
check memory allocation in swri_get_dither()

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-03 11:46:37 +02:00
Michael Niedermayer 80a28c7509 swresample: Allow reinitialization without ever setting channel layouts 2015-04-12 22:21:34 +02:00
Michael Niedermayer d7b9cb2f7a swresample: Allow reinitialization without ever setting channel counts
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-12 22:21:34 +02:00
Michael Niedermayer 4d00860ac7 swresample: Add prefix to soxr_resampler
also move declaration to header

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-27 19:20:43 +01:00
Michael Niedermayer b74ecb82fa swresample/x86/rematrix_init: Check av_malloc* return codes, forward errors
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-09 10:15:56 +01:00
Michael Niedermayer 9d7ae72725 swresample: Use int instead of enum for fields which are accessed through AVOptions as int
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-02 23:27:26 +01:00
Reimar Döffinger 6efd0ba977 swresample_internal.h: Move struct declaration before first use.
It seems more logical and works with more restricted C compilers
like tinycc.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2015-01-27 21:29:51 +01:00
Michael Niedermayer 7c51f5bd39 swr: aarch64 audio_convert and neon clobber test
Ported from avresample
Code by:  Mans Rullgard, Janne Grunau, Martin Storsjo

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-27 20:06:37 +02:00
Michael Niedermayer 97f8c7a03e bump libpostproc and libswresample
this is needed / avoids some headaches  as one of their dependancies
(libavutil) was bumped

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-10 01:17:02 +02:00
Andreas Cadhalpun 39a6e02fd4 fix spelling errors
Reviewed-by: Timothy Gu <timothygu99@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-12 22:33:27 +02:00
James Almer 42a92a240d swr: remove obsolete resample prototypes
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-02 03:14:45 +02:00
Ronald S. Bultje b785c62681 swr: handle initial negative sample index outside DSP function.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-14 14:36:18 +02:00
Michael Niedermayer e2b718464e swresample: Make rematrix maxvalue user settable
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-22 03:23:54 +02:00
Michael Niedermayer 4cfc92081d swr: add native_simd_one
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-04 23:50:45 +02:00
Michael Niedermayer 8b3affda87 swr: support a seperate output sample bits.
This avoids user apps having to mangle dither scale. for pcm24

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-02-24 20:31:56 +01:00
Michael Niedermayer 00cae86754 swr: support first_pts
Trolled-by: Daemon404
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-21 00:52:14 +01:00
Michael Niedermayer db4e0ecaf0 swr: move silence buffer to context to avoid per use malloc/free
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-13 15:28:00 +01:00
Michael Niedermayer dc6588421e swr: move buffer used to discard sample to context
This avoids the need to allocate & free to repeatly

Fixes Ticket2122

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-13 15:28:00 +01:00
Michael Niedermayer e5a736261b swr: Use a temporary buffer for dither/Noise shaping when the input is read only
This avoids copying the input

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-10 18:51:30 +01:00
Michael Niedermayer 2eec98125e swr: mark noise data for noise shaping as const
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-10 18:07:32 +01:00
Michael Niedermayer 558aa6cab7 swr: add seperate in/out pointers to the noise shaping code
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-10 18:06:19 +01:00
Michael Niedermayer fca51256d4 swr: rename dither_pos to noise_pos
THis more closely matches what the field represents

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-10 18:01:26 +01:00
Michael Niedermayer ead3a2a37e swr: add noise_scale field to seperate it from the noise shaping scales
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-10 00:25:09 +01:00
Michael Niedermayer 6908ded20e swr: fix the noise sample type for noise shaping
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-09 23:28:09 +01:00
Michael Niedermayer 3ef06f3415 swr: split swri_dither_init() out
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-09 23:28:08 +01:00
Michael Niedermayer 3ab1970612 swr: move dither related fields to their own context
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-09 18:41:12 +01:00
Michael Niedermayer ba1314c2ef swr: update copyright years of a few files iam working on
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-09 18:30:01 +01:00
Michael Niedermayer 82742294b7 swr: Implement Noise shaping dither
The following variants are implemented:
lipshitz noise shaping dither
shibata noise shaping dither
low shibata noise shaping dither
high shibata noise shaping dither
f-weighted noise shaping dither
modified-e-weighted noise shaping dither
improved-e-weighted noise shaping dither

Data tables taken from SOX

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-09 18:25:06 +01:00
Rob Sykes 8d9a503313 docs: add soxr documentation
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-27 12:13:17 +01:00
Michael Niedermayer f9e55c0fed swr: support -async X as a simple way to do what ffmpeg -async X did
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-25 17:21:09 +01:00
Rob Sykes 801b315729 swr: Add SOX resampler support
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-11 22:04:00 +01:00
Michael Niedermayer ae5a55e77a swr: move flush into Resampler
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-11 22:04:00 +01:00
Michael Niedermayer 431dcc49d2 swr: make realloc_audio() available outside swresample.c
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-11 22:04:00 +01:00
Rob Sykes 5a5d70748c swr: Add API to make resample engine selectable.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-11 22:04:00 +01:00
Paul B Mahol 1acd2f6ba7 Replace rest of libavutil/audioconvert.h with libavutil/channel_layout.h
Also remove it in once case when it is not needed.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2012-11-13 13:21:21 +00:00
Michael Niedermayer d23e8f53ad swr: use 64bit index/len for x86_64 mix
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-10-28 02:09:08 +02:00
Mans Rullgard 0eebde07a9 ARM: libswresample: NEON optimised flat float to s16 conversion
Adapted to swr by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-09-24 23:16:14 +02:00
Michael Niedermayer c5278cb84f Add Dolby/DPLII downmix support to libswresample
Based on code by John Stebbins <jstebbins.hb@gmail.com>

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-09-07 00:41:49 +02:00
Michael Niedermayer 323d912010 swr: update copyright years
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-09-07 00:29:06 +02:00
Justin Ruggles 7e15df7551 swr: resampling: add filter type and Kaiser window beta to AVOptions 2012-07-23 19:23:39 +02:00