Commit graph

3235 commits

Author SHA1 Message Date
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
e2bcb3fe9b Reverse the ordering of the FFT stage to optimize a degenerate radix-4 case.
This also happens to increase the accuracy since it appears that the new
ordering is optimal (at least for 20 ms frames), whereas the previous ordering
was pessimal.
2013-12-22 02:17:24 -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
bc13bbaad7 Applying the forward FFT gain up-front for fixed-point too
This makes us lose a bit of precision in the first steps, but our gain is more
precise because it's only rounded once. Overall, SNR is slightly improved.
2013-12-21 02:33:22 -05:00
Jean-Marc Valin
2e26b82ec2 Moves the bitrev step to the IMDCT pre-rotation 2013-12-20 23:13:29 -05:00
Jean-Marc Valin
8e02afcfff Fixes a warning about "conversion from '__int64' to 'int'" on MSVC 2013-12-17 13:56:00 -05:00
Peter Korsgaard
253e15f7e8 configure.ac: fix bashism in ARM optimization handling
Breaks configure when /bin/sh isn't bash with:

configure: Trying to force-enable ARMv6 media instructions...
checking if assembler supports ARMv6 media instructions on ARM... yes
configure: Trying to force-enable NEON instructions...
checking if assembler supports NEON instructions on ARM... yes
./configure.lineno: 12799: Bad substitution

Fix it by using the %% expansion to remove everything from the first
space instead.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
2013-12-17 00:22:42 -05:00
Jean-Marc Valin
306d7f5a30 fixed-point: slight (but free) accuracy improvement in compute_band_energies()
Also moves the VSHR32() condition outside the loop just in case some compilers
don't optimize that properly.
2013-12-16 01:08:21 -05:00
Jean-Marc Valin
e0f26246b0 fixed-point: adds rounding to some shifts to eliminate bias
This reduces the peak decoding error by removing small (inaudible) spikes in
the error at the frame boundaries. These were due to the frequency-domain bias
ending up as a small pulse in the middle of the IMDCT overlap. None of this
was ever audible, but fixing it is still cleaner.
2013-12-14 11:07:13 -05:00
Jean-Marc Valin
4a168eb343 Remove useless code in alloc_trim_analysis() 2013-12-11 01:34:06 -05:00
Jean-Marc Valin
5752d659fd Minor fixed-point accuracy improvements that were completely free 2013-12-11 00:21:38 -05:00
Jean-Marc Valin
91f8010108 Removing indirections 2013-12-10 22:09:33 -05:00
Jean-Marc Valin
5607d5d1c8 Annotating pointer arguments with OPUS_RESTRICT and const 2013-12-10 22:09:29 -05:00
Jean-Marc Valin
32ada84b5b Fixes code that was doing arithmetic on a void pointer.
Thanks to Kevin O'Connor for reporting this.
2013-12-10 16:43:14 -05:00
Jean-Marc Valin
122971b8cc More NaN hardening in the analysis code 2013-12-10 13:56:38 -05:00
Timothy B. Terriberry
fa85e3bf28 Add a reminder to bump the version.mk version.
We released 1.1 with 1.1-beta as the hard-coded version.
Hopefully this only affects people doing their own windows builds
 without the git tools available.
Thanks to Ron Lee for the report.
2013-12-10 08:16:51 -08:00
Jean-Marc Valin
d5553e8aca Using OPUS_COPY()/OPUS_CLEAR() in the decoder too 2013-12-10 02:32:26 -05:00
Jean-Marc Valin
15edb78b3e Making NaN detection more robust to -ffast-math. 2013-12-09 21:56:21 -05:00
Jean-Marc Valin
4fda6b0142 Using celt_inner_prod() in compute_band_energies() 2013-12-09 18:06:34 -05:00
Jean-Marc Valin
3039c9bde5 Makes silk_inner_prod_aligned() use celt_inner_prod() in fixed-point.
Should make it easier when writing assembly.
2013-12-09 16:31:07 -05:00
Pedro Becerra
a9b7def9f5 s/MAX16/MAX32/ in transient_analysis()
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
2013-12-09 16:08:29 -05:00
Jean-Marc Valin
66b7fe0a5c Using celt_inner_prod() for input sanity check. 2013-12-09 15:27:13 -05:00
Jean-Marc Valin
57cd849cf7 Defining celt_inner_prod() and using it instead of explicit loops.
Also adds an SSE-optimized celt_inner_prod().
2013-12-09 15:26:58 -05:00
Jean-Marc Valin
ff072009fe Replaces inline copies and initialization with OPUS_*() macros.
This is a bit faster at -O2 because memcpy()/memmove()/memset() are
vectorized. The code is also cleaner.
2013-12-09 15:26:52 -05:00
Jean-Marc Valin
0f869cba0f Changes ABS16() and ABS32() to use fabs() in the float build
gcc is better at optimizing it than the ?: version
2013-12-09 15:26:43 -05:00
Jean-Marc Valin
c94e4bb103 Optimizes encoder NaN detection and clipping by only running them when needed
NaN detection should now be able to catch values that would create NaNs
further down.
2013-12-09 15:26:03 -05:00
Jean-Marc Valin
5626908ec3 Fixed-point fast-path for normal 48 kHz encoding in celt_preemphasis() 2013-12-05 16:40:59 -05:00
Jean-Marc Valin
aed1009df9 Turns a 16x32 multiply into a 16x16 one in celt_preemphasis(). 2013-12-05 13:36:48 -05:00
Jean-Marc Valin
65471dd567 Bump soname 2013-12-04 18:26:45 -05:00
Ralph Giles
6fb9855158 Mention updating the website examples. 2013-12-04 15:18:41 -08:00
Ralph Giles
6dc50f48e7 Start a release checklist. 2013-12-04 15:16:46 -08:00
Jean-Marc Valin
17dcb27026 Revert "Disables assembly optimizations by default because of several problems reported"
This reverts commit 2446445b15.
2013-12-03 13:31:24 -05:00
Jean-Marc Valin
2446445b15 Disables assembly optimizations by default because of several problems reported 2013-12-02 22:17:58 -05:00
Jean-Marc Valin
96408b6295 Fixes Opus-custom preemphasis
Also adds denorm avoidance for non-48 kHz rates
2013-12-02 20:02:37 -05:00
Jean-Marc Valin
086ea7c7e5 Whoa! This fixes a pretty bad fixed-point stereo regression 2013-11-29 16:47:52 -05:00
Jean-Marc Valin
35a44c6100 Fixes OPUS_SET_GAIN (was a bug in MULT16_32_P16()) 2013-11-29 12:21:34 -05:00
Timothy B. Terriberry
c16a96b458 Minor speedups to celt_pitch_xcorr_edsp().
This moves some stuff out of the main loop for the unaligned case.
2013-11-27 11:08:33 -08:00
Ron
a1740d9ad1 Drop the use of --always to git-describe
This is a partial revert of c435f06b30,
since it didn't actually fix the original problem with shallow clones.
It returns just a hash, not something we (currently) can extract as a
version string in the form things are expecting.
2013-11-28 04:18:45 +10:30
Timothy B. Terriberry
a8fa0cb629 Remove the celt_pitch_xcorr() test code.
Revision control will remember it for us forever.
2013-11-26 23:47:25 -08:00
Timothy B. Terriberry
e98816e9c1 Actually use my NEON code.
I'd commented out mine and stuck azanelli's code in for testing,
 and then accidentally committed it like that.
2013-11-26 23:47:10 -08:00
Timothy B. Terriberry
5c02c5ffb5 Make celt_pitch_xcorr_edsp() work on ARMv5TE.
We were assuming that LDR, LDRD, and STRD could be used on
 unaligned addresses, but this turns out not to be true on really
 old hardware.
2013-11-26 21:58:35 -08:00
Timothy B. Terriberry
aa8ff201b5 Clean up celt_pitch_xcorr() test code.
This will be removed shortly, but at least it should be correct
 before it goes.
Makes the code get used unconditionally (when uncommented), and
 actually frees the buffer it allocates (now using the libopus
 allocation functions).
2013-11-26 21:58:32 -08:00
Jean-Marc Valin
d6eb9c468f Silences a warning in fixed-point 2013-11-25 22:33:43 -05:00
Jean-Marc Valin
2924af4db0 Merges surround and stereo intensity stereo thresholds again.
The different results for surround were mostly due to a bug in squishyball.
2013-11-25 21:24:30 -05:00
Jean-Marc Valin
93e1096093 Makes SILK surround masking a bit more aggressive in both directions
This also splits the rate adjustment between SILK and CELT (previous
code only changed SILK)
2013-11-25 01:52:08 -05:00
Jean-Marc Valin
a47d6f308f Intensity stereo update, partially based on Monty's listening
Intensity stereo is now based on equiv_rate and should no longer oscillate
in hybrid mode. Also, there is now a separate set of thresholds for
surround tuned by Monty. The non-surround thresholds were also updated at
low bitrate to be closer to what Monty found for surround.
2013-11-25 00:03:31 -05:00
Gregory Maxwell
f4d2c034a6 Put custom_encoder_init decl behind CUSTOM_MODES. More softclip tests.
This removes an unused definition warning when compiling without
 custom modes.
2013-11-24 06:49:01 -08:00