Jean-Marc Valin
3c0aa8fc25
Adds "temporal VBR", which should be mostly useful at low bitrate.
...
The idea is to allow more noise than the default in quiet segments.
Right now, this hurts for high bitrates , so it's gradually reduced
as the rate goes up, until it's completely disabled above 68 kb/s.
2013-06-25 14:10:27 -04:00
Jean-Marc Valin
ee2506b2c7
Moves log2Amp inside denormalise_bands() and get rid of bandE[]
...
Also get rid of the MSE measurement code which is outdated and no longer useful
2013-06-16 20:24:52 -04:00
Jean-Marc Valin
3afc6ffff0
Don't call denormalise_bands() on silence
2013-06-16 15:40:10 -04:00
Jean-Marc Valin
39cbc45828
Fixes stupid tf calibration bugs introduced/exposed in f77410d
2013-06-13 16:13:51 -04:00
Jean-Marc Valin
28733d1281
Moves VBR calculations to a separate function.
...
Does not change the behaviour of the VBR code in most cases. The only
exception is that the VBR offset is now taken into accound in the base_rate,
which will have a (very minor) impact on CVBR at low rate.
2013-06-10 03:32:12 -04:00
Aurélien Zanelli
cd4c8249bc
Add run-time CPU detection and support for ARM architecture
...
Run-time CPU detection (RTCD) is enabled by default if target platform support
it.
It can be disable at compile time with --disable-rtcd option.
Add RTCD support for ARM architecture.
Thanks to Timothy B. Terriberry for help and code review
Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
2013-06-04 16:23:22 -07:00
Jean-Marc Valin
b7bd4c20ac
celt_maxabs16() now returns an opus_val32 to avoid problems with -32768
2013-05-18 23:52:18 -04:00
Jean-Marc Valin
bd477ce2bc
Merge branch 'surround'
2013-05-17 14:31:36 -04:00
Jean-Marc Valin
6e277c6291
Conservative use of bandwidth detection in CELT
...
Takes into account the bitrate.
2013-05-17 14:15:31 -04:00
Jean-Marc Valin
d2c484b5e7
Adds spreading to the surround masking computation
...
This avoids a single low-energy band from changing the masking results.
2013-05-06 16:02:31 -04:00
Jean-Marc Valin
a4dccd3f65
Implements basic surround masking
...
The idea is that the rate of each stream is adjusted based on its
contribution to the total energy of a stereo downmix.
2013-05-05 02:44:54 -04:00
Jean-Marc Valin
172f66a3ac
More forced decisions in CELT LFE encoding
2013-05-05 02:32:00 -04:00
Jean-Marc Valin
b08c4ca3f5
Surround: Better LFE handling
...
Forces CELT-only mode for LFE (despite the rate) and "locks" most of the
CELT analysis:
- No transient or TF
- Band boost on first band
- Only first two bands get PVQ bits
- Forced energy decay after the first two bands
2013-05-05 02:31:38 -04:00
Jean-Marc Valin
f77410deb6
VBR bitrate calibration for variable duration.
...
Also fixes uninitialized value in previous commit.
2013-04-19 22:44:03 -04:00
Jean-Marc Valin
3252bf2a68
Variable framesize improvements
...
- Properly apply the transient boost by counting all the bits in the cost
- Disable the post-filter for non-20-ms frames that follow a transient (applies
only to variable framesize)
2013-04-19 03:20:40 -04:00
Jean-Marc Valin
f96fc8cc83
Merge branch 'exp_analysis'
...
Conflicts:
celt/celt_encoder.c
2013-03-08 12:29:53 -05:00
Jean-Marc Valin
69c3dcd105
Fixes a bug introduced in 851f803
2013-02-19 03:42:18 -05:00
Jean-Marc Valin
851f8033f6
Moves mono downmixing and upsampling to the compute_mdcts()
2013-02-18 01:43:43 -05:00
Jean-Marc Valin
541a472ff6
Adds code to revise the transient decision using the band energy
...
Detects a transient when the average band energy jumps by more than 6 dB
between two consecutive frames. This fixes some undetected transients on
Gainless' Muse_Breaks_Rmx sample.
2013-02-17 21:21:30 -05:00
Jean-Marc Valin
2a5f0565b8
Running transient_analysis() even for 2.5 ms frames
...
This means 2.5 ms frames can now use a higher bitrate for transients.
2013-02-10 00:15:49 -05:00
Jean-Marc Valin
48ac122141
Makes analysis usable for all frame sizes
2013-02-10 00:15:49 -05:00
Jean-Marc Valin
ebdfbfb743
Fixes stupid preprocessor-related bug introduced in e368e6209
.
...
Would cause the preemphasis and deemphasis to fail, but only with
custom modes enabled.
2013-01-09 11:13:00 -05:00
Jean-Marc Valin
e368e62092
Remove condition in pre/de-emphasis when not building with custom modes
...
Should slightly improve coverage and reduce code size
2013-01-03 14:28:28 -05:00
Jean-Marc Valin
d683c76b88
Fixes MSVC warnings for double->float and float->int conversion
2012-12-21 16:17:38 -05:00
Jean-Marc Valin
5fb50adb7a
skip bands with no energy
2012-12-21 11:52:03 -05:00
Jean-Marc Valin
90bac9d148
Minor tuining of complexity thresholds
2012-12-14 14:01:06 -05:00
Jean-Marc Valin
28ef277db4
VBR code simplification
2012-12-14 13:21:09 -05:00
Jean-Marc Valin
dae16fb94b
Cleanup: tf_estimate now ranges from 0 to 1
2012-12-13 21:40:58 -05:00
Jean-Marc Valin
f8809dda4b
Dynalloc rate calibration
2012-12-12 15:30:26 -05:00
Jean-Marc Valin
1122d299ab
Makes "stereo savings" less aggressive on mono or near-mono.
...
The max reduction now depends on intensity threshold too.
2012-12-12 15:30:23 -05:00
Jean-Marc Valin
b33db8f318
Makes tonality boost less aggressive
...
Some tests like Kamedo's HA test suggested that our tonal boost was a bit
too extreme.
2012-12-12 15:30:14 -05:00
Jean-Marc Valin
41fd7a12b5
Disables the new spread+tapset estimator
2012-12-12 14:41:29 -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
Jean-Marc Valin
413caa00c5
Tweaks to the new transient detector
...
Instead of using the average energy over the frame, we use a half-way
point between the average energy and the max energy.
2012-11-19 16:41:14 -05:00
Jean-Marc Valin
144b6e6ede
Oops, fixes transient_analysis() for the right channel
2012-11-11 17:30:57 -05:00
Jean-Marc Valin
10b30e74ab
Fixes a VBR bug caused by maxDepth not to be computed without dynalloc
...
Also, moves the dynalloc code to a separate function
2012-11-11 17:30:53 -05:00
Jean-Marc Valin
1fd1d7dd49
Fixes a bug where transient frames would use previous spreading
...
Also forces SPREAD_NORMAL in hybrid mode
2012-11-08 17:22:07 -05:00
Jean-Marc Valin
a6d663c6ae
Disables tf_analysis() for hybrid mode
...
This prevents issues on speech where tf would undo what transient_analysis()
found
2012-11-08 13:26:49 -05:00
Jean-Marc Valin
1ecb7eaeaf
Fixes issues with multiple files defining CELT_C
2012-11-08 11:25:20 -05:00
Jean-Marc Valin
6906210cb0
Splits out the CELT encoder and decoder
2012-11-08 09:42:27 -05:00