- Nov 06, 2015
-
-
Ganesh Ajjanagadde authored
This uses the trigonometric double and triple angle formulae to avoid repeated (expensive) evaluation of libc's cos(). Sample benchmark (x86-64, Haswell, GNU/Linux) test: fate-swr-resample-dblp-44100-2626 old: 1104466600 decicycles in build_filter(loop 1000), 256 runs, 0 skips 1096765286 decicycles in build_filter(loop 1000), 512 runs, 0 skips 1070479590 decicycles in build_filter(loop 1000), 1024 runs, 0 skips new: 588861423 decicycles in build_filter(loop 1000), 256 runs, 0 skips 591262754 decicycles in build_filter(loop 1000), 512 runs, 0 skips 577355145 decicycles in build_filter(loop 1000), 1024 runs, 0 skips This results in small differences with the old expression: difference (worst case on [0, 2*M_PI]), argmax 0.008: max diff (relative): 0.000000000000157289807188 blackman_old(0.008): 0.000363951585488813192382 blackman_new(0.008): 0.000363951585488755946507 These are judged to be insignificant for the performance gain. PSNR to reference file is unchanged up to second decimal point for instance. Reviewed-by:
Michael Niedermayer <michael@niedermayer.cc> Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com>
-
- Nov 04, 2015
-
-
Ganesh Ajjanagadde authored
This speeds up build_filter by ~ 50%. This gain should be pretty consistent across all architectures and platforms. Essentially, this relies on a observation that the filters have some even/odd symmetry that may be exploited during the construction of the polyphase filter bank. In particular, phases (scaled to [0, 1]) in [0.5, 1] are easily derived from [0, 0.5] and expensive reevaluation of function points are unnecessary. This requires some rather annoying even/odd bookkeeping as can be seen from the patch. I vaguely recall from signal processing theory more general symmetries allowing even greater optimization of the construction. At a high level, "even functions" correspond to 2, and one can imagine variations. Nevertheless, for the sake of some generality and because of existing filters, this is all that is being exploited. Currently, this patch relies on phase_count being even or (trivially) 1, though this is not an inherent limitation to the approach. This assumption is safe as phase_count is 1 << phase_bits, and is hence a power of two. There is no way for user API to set it to a nontrivial odd number. This assumption has been placed as an assert in the code. To repeat, this assumes even symmetry of the filters, which is the most common way to get generalized linear phase anyway and is true of all currently supported filters. As a side note, accuracy should be identical or perhaps slightly better due to this "forcing" filter symmetries leading to a better phase characteristic. As before, I can't test this claim easily, though it may be of interest. Patch tested with FATE. Sample benchmark (x86-64, Haswell, GNU/Linux): test: swr-resample-dblp-44100-2626 new: 527376779 decicycles in build_filter(loop 1000), 256 runs, 0 skips 524361765 decicycles in build_filter(loop 1000), 512 runs, 0 skips 516552574 decicycles in build_filter(loop 1000), 1024 runs, 0 skips old: 974178658 decicycles in build_filter(loop 1000), 256 runs, 0 skips 972794408 decicycles in build_filter(loop 1000), 512 runs, 0 skips 954350046 decicycles in build_filter(loop 1000), 1024 runs, 0 skips Note that lower level optimizations are entirely possible, I focussed on getting the high level semantics correct. In any case, this should provide a good foundation. Reviewed-by:
Michael Niedermayer <michael@niedermayer.cc> Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com>
-
- Oct 28, 2015
-
-
wm4 authored
Channel layouts are essentially uint64_t, and every value is valid.
-
- Oct 25, 2015
-
-
Ganesh Ajjanagadde authored
This adds const-correctness when needed for the comparators. Reviewed-by:
Ronald S. Bultje <rsbultje@gmail.com> Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com>
-
- Oct 22, 2015
-
-
Ganesh Ajjanagadde authored
It is well known that fabs and fabsf are at least as fast and sometimes faster than the FFABS macro, at least on the gcc+glibc combination. For instance, see the reference: http://patchwork.sourceware.org/patch/6735/ . This was a patch to glibc in order to remove their usages of a macro. The reason essentially boils down to fabs using the __builtin_fabs of the compiler, while FFABS needs to infer to not use a branch and to simply change the sign bit. Usually the inference works, but sometimes it does not. This may be easily checked by looking at the asm. This also has the added benefit of reducing macro usage, which has problems with side-effects. Note that avcodec is not handled here, as it is huge and most things there are integer arithmetic anyway. Tested with FATE. Reviewed-by:
Clément Bœsch <u@pkh.me> Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com>
-
- Oct 16, 2015
-
-
Ganesh Ajjanagadde authored
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>
-
- Oct 15, 2015
-
-
wm4 authored
This is the matrix that will be used for up/downmixing.
-
- Oct 10, 2015
-
-
Ganesh Ajjanagadde authored
Proper names should be capitalized in all user facing API as far as possible. The option names themselves have not been changed since: 1. We consistently keep option names in lower case. 2. Changing them would break existing scripts. 3. I suspect that we want to be similar to Sox and its relevant options. The converse is also true: improper names should not be capitalized generally. Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com> Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
- Oct 07, 2015
-
-
Michael Niedermayer authored
About 10% faster Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
Michael Niedermayer authored
speedup of about 1% Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
- Oct 02, 2015
-
-
James Almer authored
Reviewed-by:
Michael Niedermayer <michaelni@gmx.at> Signed-off-by:
James Almer <jamrial@gmail.com>
-
- Sep 27, 2015
-
-
Michael Niedermayer authored
Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
- Sep 03, 2015
-
-
Michael Niedermayer authored
Fixes CID1322333 Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
- Aug 30, 2015
-
-
Michael Niedermayer authored
Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
- Aug 23, 2015
-
-
Ganesh Ajjanagadde authored
This fixes a -Wabsolute-value reported by clang 3.5+ complaining about misuse of fabs() for integer absolute value. An additional benefit is the removal of floating point calculations. Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com> Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
- Aug 03, 2015
-
-
James Almer authored
Only two functions that use xop multiply-accumulate instructions where the first operand is the same as the fourth actually took advantage of the macros. This further reduces differences with x264's x86inc. Reviewed-by:
Ronald S. Bultje <rsbultje@gmail.com> Signed-off-by:
James Almer <jamrial@gmail.com>
-
- Jul 26, 2015
-
-
James Almer authored
Silences warnings with Nasm Signed-off-by:
James Almer <jamrial@gmail.com>
-
- Jul 16, 2015
-
-
Carl Eugen Hoyos authored
-
- Jun 22, 2015
-
-
Michael Niedermayer authored
Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
Michael Niedermayer authored
This probably makes no difference but its more proper Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- Jun 21, 2015
-
-
Rob Sykes authored
Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
Michael Niedermayer authored
Suggested-by: wm4 Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
Michael Niedermayer authored
or if no rematrix and no resampling is performed and the input is 16bit note reampling and rematrix itself always use more than 16bit internally the "internal" sampling format is the format between these steps Its unlikely the difference from this commit is audible in any case unless there is some bug either before or after the change. but multiple people prefer this and it slightly improves the precission of computations. Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- Jun 08, 2015
-
-
Michael Niedermayer authored
Found-by: cehoyos Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- Jun 06, 2015
-
-
Clément Bœsch authored
-
- Jun 04, 2015
-
-
Michael Niedermayer authored
Found-by:
wm4 <nfxjfg@googlemail.com> Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
Michael Niedermayer authored
This avoids leaks if the user doest call swr_close() after a failed init Found-by:
James Almer <jamrial@gmail.com> Reviewed-by:
James Almer <jamrial@gmail.com> Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
Michael Niedermayer authored
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>
-
Michael Niedermayer authored
Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- Jun 03, 2015
-
-
Ganesh Ajjanagadde authored
check memory allocation in swri_get_dither() Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- Jun 02, 2015
-
-
Michael Niedermayer authored
Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- May 31, 2015
-
-
James Almer authored
Signed-off-by:
James Almer <jamrial@gmail.com> Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- May 13, 2015
-
-
Rainer Hochecker authored
Fix crash when doing 8 ch conversion from apps compiled with MSVS Thanks to Ronald for giving this hint: https://ffmpeg.org/pipermail/ffmpeg-devel/2015-May/173049.html Reviewed-by:
"Ronald S. Bultje" <rsbultje@gmail.com> Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- May 06, 2015
-
-
Michael Niedermayer authored
This avoids potential warnings Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- Apr 12, 2015
-
-
Michael Niedermayer authored
Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
Michael Niedermayer authored
swresample: Check channel layouts and channels against each other and print human readable error messages Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
Michael Niedermayer authored
-
Michael Niedermayer authored
Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- Apr 05, 2015
-
-
James Almer authored
Signed-off-by:
James Almer <jamrial@gmail.com> Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- Mar 30, 2015
-
-
Michael Niedermayer authored
Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-