Commit graph

169 commits

Author SHA1 Message Date
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
Jean-Marc Valin
a536f77202 Added a few "restrict" keywords and changed some divisions to shifts 2008-03-22 09:01:50 +11:00
Jean-Marc Valin
f5b0587bd2 s/ROUND/ROUND16/ 2008-03-21 10:46:17 +11:00
Jean-Marc Valin
4ff068e670 Some work on assertions. 2008-03-15 23:34:39 +11:00
Jean-Marc Valin
71a84590e7 Removed unnecessary header inclusions 2008-03-14 11:09:50 +11:00
Jean-Marc Valin
a82dfdd240 Adjusting/fixing warnings 2008-03-13 23:01:55 +11:00
Jean-Marc Valin
9d5b4a6f56 fixed-point: simplification of the gain in mix_pitch_and_residual() 2008-03-13 11:36:45 +11:00
Jean-Marc Valin
19ae9fc944 fixed-point: simplifying the arithmetic in alg_quant() 2008-03-13 11:18:15 +11:00
Jean-Marc Valin
31b79d1993 Changed definition of VARDECL to make it more flexible. No actual code change. 2008-03-12 17:17:23 +11:00