Commit graph

28 commits

Author SHA1 Message Date
Jean-Marc Valin
1a37d4e15c Saturate MDCT output post-TDAC rather than pre-
Gives us a tighter bound on the pitch postfilter input to avoid overflows
2016-07-24 21:35:24 -04:00
Jean-Marc Valin
382ab797cf saturate MDCT output 2016-07-22 15:57:01 -04:00
Jean-Marc Valin
273906404c silencing overflows in MDCT and FFT 2016-07-22 15:30:19 -04:00
Viswanath Puttagunta
19c5406cde armv7(float): Optimize decode usecase using NE10 library
Optimize opus decode (float only) use case using ARM NE10.
Mainly effects opus_ifft and ctl_mdct_backward and related
functions.

Work based on previous Encode optimization using ARM NE10
library. See previous commit for details on how to enable
this.

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
2015-10-07 18:09:20 -04:00
Viswanath Puttagunta
f48abe8308 armv7(float): Optimize encode usecase using NE10 library
Optimize opus encode (float only) usecase using ARM NE10
library. Mainly effects opus_fft and ctl_mdct_forward
and related functions.

This optimization can be used for ARM CPUs that have NEON
VFP unit. This patch only enables optimizations for ARMv7.

Official ARM NE10 library page available at
http://projectne10.github.io/Ne10/

To enable this optimization, use
--enable-intrinsics --with-NE10=<install_prefix>
or
--enable-intrinsics --with-NE10-libraries=<NE10_lib_dir> --with-NE10-includes=<NE10_includes_dir>

Compile time checks made during configure process to make sure
optimization option available only when compiler supports NEON
instrinsics.

Runtime checks made to make sure optimized functions only called
on appropriate hardware.

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
2015-10-07 18:09:20 -04:00
Rhishikesh Agashe
f133bac6f9 MIPS optimizations
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
2014-06-19 04:04:51 -04:00
Marcello Caramma (mcaramma)
f17623f2f9 Fixes an aliasing bug in the MDCT when the frame size isn't a multiple of 4.
In that case, the yp0 and yp1 ended up aliasing for the last element,
despite being marked as restrict.

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
2014-02-24 15:06:46 -05:00
Jean-Marc Valin
e1dc1e2238 Unifying scaling of fixed-point and float FFT 2013-12-29 13:34:17 -05:00
Jean-Marc Valin
dbb96ab5cc Fixes C89 issue 2013-12-29 00:09:06 -05:00
Jean-Marc Valin
4c1a90a847 Getting rid of some negations
Since we're doing two rotations, we can invert the sign on both.
Also adding a few comments for optimizing the FFT.
2013-12-28 23:14:26 -05:00
Jean-Marc Valin
cc344fb8ff Slightly improving the accuracy of the fixed-point MDCT downscale
Also simplifying the code
2013-12-28 19:10:44 -05:00
Jean-Marc Valin
e0c00e27d8 Commit 99968ab was causing us to allocate too much stack in the MDCT 2013-12-27 03:16:34 -05:00
Jean-Marc Valin
e43a0abe0a Removes the separate 1/8N rotation in the (I)MDCT and unmerges the MDCT sizes
Undoes commits f7547a4e and 72513f3c
2013-12-27 00:10:54 -05:00
Jean-Marc Valin
a5e3c8a6a6 Inverse MDCT no longer requires any scratch space 2013-12-23 02:26:03 -05:00
Jean-Marc Valin
c8f4e1608a Merges the FFT scaling with the MDCT pre-rotate 2013-12-21 16:30:49 -05:00
Jean-Marc Valin
153def2884 Getting rid of the inverse FFT entirely
IMDCT now uses the forward FFT.
2013-12-21 15:45:17 -05:00
Jean-Marc Valin
99968abba8 Moving bitrev step to forward MDCT too 2013-12-21 14:29:41 -05:00
Jean-Marc Valin
2e26b82ec2 Moves the bitrev step to the IMDCT pre-rotation 2013-12-20 23:13:29 -05:00
Nils Wallménius
c093829c17 Do imdct post-rotate and deshuffle in-place.
Gets rid of one stack buffer.

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
2012-12-03 16:13:51 -05:00
Jean-Marc Valin
aa3a599caa Fixes forward MDCT for overlaps that aren't a multiple of 4
Adds more sizes to test_unit_mdct.c
2012-12-03 15:40:01 -05:00
Nils Wallménius
cacb5661b3 Place output of imdct post-rotate and deshuffle in out buffer to avoid copying and simplify the code.
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
2012-12-01 15:54:04 -05:00
Nils Wallménius
e0884feb36 Window both sides of overlap when adding them.
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
2012-12-01 15:54:04 -05:00
Nils Wallménius
2572c1e788 Merge inverse mdct post-rotate and de-shuffle loops
Saves some memory access and gives a tiny speedup

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
2012-10-21 05:42:56 -07:00
Jean-Marc Valin
7315b35e13 Merge branch 'exp_analysis7'
Conflicts:
	celt/celt.c
	celt/mdct.c
	include/opus_defines.h
	src/opus_encoder.c
2012-10-09 03:07:06 -04:00
Gregory Maxwell
de0b5324b6 Replace C99 restrict keyword with OPUS_RESTRICT.
We had previously advised people to -Drestrict on
non-C99 compilers, but this creates problems for
some of the MSVC headers. Instead this just
uses a macro and defines it sanely.
2012-07-18 12:12:35 -04:00
Jean-Marc Valin
0869829f34 Adds a 3 Hz high-pass filter and boost allocation on leakage
Fixes two leakage problems on the wood blocks sample
- Removes DC which causes leakage with no masking
- Detect leakage by comparing short-MDCT energy to long-MDCT energy
  and boost allocation for bands with leakage
2012-07-13 14:50:35 -04:00
Jean-Marc Valin
cb05e7cd96 s/FOUNDATION/COPYRIGHT OWNER/ in CELT code and "glue code"
Also added 3rd clause to "master" COPYING file
2012-04-20 16:41:42 -04:00
Jean-Marc Valin
c37499090b renames the libcelt/ directory to celt/ 2011-09-13 18:21:18 -07:00
Renamed from libcelt/mdct.c (Browse further)