Jean-Marc Valin
0ec7c14e0b
Unb0rked a fixed-point regression caused in 7bb339d
2008-09-22 10:25:46 -04:00
Jean-Marc Valin
7bb339d9f9
Split the last pulse out of the alg_quant() main loop.
2008-09-21 21:11:39 -04:00
Jean-Marc Valin
1dab60cc91
Better use of the arithmetic operators
2008-09-16 13:29:37 -04:00
Jean-Marc Valin
5eef264f3e
Solved an encoder/decoder mismatch happening when there's no pulse in the first
...
band
2008-08-06 23:06:31 -04:00
Jean-Marc Valin
6361ad8d41
Simplified the folding normalisation by creating renormalise_vector().
2008-07-20 23:14:31 -04:00
Jean-Marc Valin
df38f2bf01
Re-enabling folding/intra for transients
2008-07-20 20:36:54 -04:00
Jean-Marc Valin
2c73306750
isolated the folding part of the code that's common in vq.c
2008-07-17 16:22:23 -04:00
Jean-Marc Valin
bf2d648bbd
Implemented intensity stereo, which required changes all over the place
...
to make sure that stereo coupling is done at the band level. Previously
the stereo coupling was done all at once, but there were all kinds of
interactions with the prediction and folding.
2008-05-23 16:57:34 +10:00
Jean-Marc Valin
2dc4b2d93f
Slightly less arbitrary gains for intra prediction.
2008-05-05 15:43:57 +10:00
Jean-Marc Valin
9a8bac019c
Using only a sign for the intra prediction instead of using up to 5 bits for
...
an offset.
2008-05-05 12:02:14 +10:00
Jean-Marc Valin
ba11d78372
Passing the mode to the intra prediction functions so the single-channel case
...
can be optimised
2008-04-21 21:59:37 +10:00
Jean-Marc Valin
945d0df7de
s/B/C/ in the intra stuff to have the same notation as everywhere else
2008-04-21 13:41:09 +10:00
Jean-Marc Valin
8c4877bd52
Bit better indexing in intra_prediction()
2008-04-21 12:15:16 +10:00
Jean-Marc Valin
dff9b7eb65
Another bunch of do-while() loops
2008-04-21 11:43:51 +10:00
Jean-Marc Valin
0bc5f7fcdc
This both reverts 3fe0db172c
that caused
...
accuracy-related issues at high bit-rate, and fixed an overflow caused by large
Rxy values.
2008-04-20 17:16:18 +10:00
Jean-Marc Valin
3fe0db172c
removed unneeded variable shifts from alg_quant()
2008-04-18 21:00:06 +10:00
Jean-Marc Valin
eb1f75d198
minor simplification in alg_quant()
2008-04-17 07:50:12 +10:00
Jean-Marc Valin
b2b71a58e5
Fixed incorrect energy calculation in stereo intra prediction
2008-04-16 10:45:52 +10:00
Jean-Marc Valin
a66c320871
optimisation: reworked intra_prediction() so that yy is computed fully only
...
once and then updated for each iteration
2008-04-16 10:43:32 +10:00
Jean-Marc Valin
0a864645f9
optimisation: intra_prediction() uses a 16-bit numerator for the search
2008-04-16 10:29:01 +10:00
Jean-Marc Valin
96069fd013
optimisation: managed to avoid dividing in the "full gain" case of alg_quant()
2008-04-15 21:14:18 +10:00
Jean-Marc Valin
684fb28eba
oops, forgot to make the gain a 16-bit var
2008-04-15 18:06:59 +10:00
Jean-Marc Valin
d568303134
optimisation: simplified the "full gain" case of alg_quant() to remove some
...
32-bit muls.
2008-04-15 18:04:33 +10:00
Jean-Marc Valin
ed317c94c3
optimisation: another bunch of simplifications to the "simple case" of the
...
alg_quant() search.
2008-04-15 17:31:23 +10:00
Jean-Marc Valin
6ea8baed2d
a few loop optimisations.
2008-04-15 08:01:33 +10:00
Jean-Marc Valin
3d152a5de4
optimisation: merged the init loop of vq_quant().
2008-04-15 07:46:48 +10:00
Jean-Marc Valin
3956de98eb
fix minor compilation error/warning
2008-04-12 06:55:39 +10:00
Jean-Marc Valin
6d3289c718
Added a missing RESTORE_STACK in intra_prediction()
2008-04-10 14:43:59 +10:00
Jean-Marc Valin
c8e3b67869
Simplified indexing in intra_prediction()
2008-04-10 12:21:26 +10:00
Jean-Marc Valin
381b29c2d2
fixed ordering of the channels in the intra prediction.
2008-04-10 11:00:51 +10:00
Jean-Marc Valin
15588ad667
Fixed a stereo regression introduced in e28f25f0d1
2008-04-10 09:00:12 +10:00
Jean-Marc Valin
124d1cdde5
Making the pulsesAtOnce code 16-bit safe.
2008-03-28 00:33:04 +11:00
Jean-Marc Valin
e28f25f0d1
Removed a few int divisions from the intra prediction code.
2008-03-27 14:18:28 +11:00
Jean-Marc Valin
f958477a54
removed some int div
2008-03-27 12:22:44 +11:00
Jean-Marc Valin
98c86c7885
Trying to clean up celt_ilog2() vs. EC_ILOG a bit.
2008-03-27 08:40:45 +11:00
Jean-Marc Valin
fed97d58b5
optimisation: changed some for() loops to do-while() to give the compiler
...
a hint that there has to be at least one iteration.
2008-03-26 21:31:56 +11:00
Jean-Marc Valin
df7ab43087
Making it obvious to the compiler how to generate a dual-MAC in
...
mix_pitch_and_residual()
2008-03-26 18:03:22 +11:00
Jean-Marc Valin
95088d4505
mix_pitch_and_residual() no longer computing Ryp twice
2008-03-26 17:57:49 +11:00
Jean-Marc Valin
233e317202
optimisation: shaving a few cycles off prev_cwrs* by not computed the values
...
we're not going to use.
2008-03-26 15:46:51 +11:00
Jean-Marc Valin
89c5fd161b
optimisation: intra_prediction() no longer needs to divide inside the search
2008-03-26 12:16:00 +11:00
Jean-Marc Valin
35a1f88e81
optimisation: The "simple" Rxy/sqrt(Ryy) case in alg_quant no longer requires
...
a division
2008-03-26 10:34:23 +11:00
Jean-Marc Valin
bd2828f64b
Decision on whether to use pitch is now taken only based on energy in the
...
first three bands (instead of total MDCT window energy)
2008-03-26 08:10:27 +11:00
Jean-Marc Valin
5de868c6d3
A bunch of pointers marked as "restrict" to ease the job of the compiler
2008-03-25 22:38:58 +11:00
Jean-Marc Valin
ac72c2821a
oops. find_max32() now uses VERY_LARGE32 (instead of VERY_LARGE16)
2008-03-25 21:31:12 +11:00
Jean-Marc Valin
44c63350d1
optimisations: Another bunch of simplifications to alg_quant(), mainly to
...
remove unnecessary copying and some conditional branches.
2008-03-25 21:28:40 +11:00
Jean-Marc Valin
49134381d0
optimisations: caching sign of x in alg_quant(), changed celt_div()/celt_rcp()
...
to assume denominator is positive.
2008-03-25 16:07:05 +11:00
Jean-Marc Valin
208ae6e33d
Optimised intra prediction a bit -- removed a conditional branch and replaced
...
some calls to ec_enc_uint() by calls to ec_enc_bits() (saves divisions)
2008-03-25 15:25:08 +11:00
Jean-Marc Valin
bd718ba577
Removed the "pitch compression" in the residual quantisation. Also, removed
...
the more complex "n-best search" and replaced it with a greedy search
2008-03-25 14:15:41 +11:00
Jean-Marc Valin
23e82b26dd
replaced divisions by recoprocals in intra prediction and folding
2008-03-24 08:15:40 +11:00
Jean-Marc Valin
2282383434
fixed-point: added cheap celt_div() division using a reciprocal
2008-03-22 21:17:45 +11:00