Commit graph

135 commits

Author SHA1 Message Date
Gregory Maxwell
61832f162f Miscellaneous compiler warning cleanups. 2008-12-22 18:15:42 -05:00
Jean-Marc Valin
8256ed4cf7 New VQ search is now enabled by default after fixing the last remaining issues:
1) the case of the null vector and 2) getting rid of the 32-bit division
2008-12-12 20:50:56 -05:00
Jean-Marc Valin
137241d089 Fix a case where the new search can leave us with no pulse left 2008-12-06 23:44:55 -05:00
Jean-Marc Valin
09dc5a18c5 New VQ search nearly fixed-point ready 2008-12-05 00:28:28 -05:00
Jean-Marc Valin
c7635b45f4 New VQ search works in fixed-point even though there's still some float ops left 2008-12-04 23:26:32 -05:00
Jean-Marc Valin
a733f08eb5 Experimental code to improve both the speed and accuracy of the VQ search 2008-12-04 22:52:26 -05:00
Jean-Marc Valin
6cde5dd24c alg_quant() now handles the sign of X[] separately from the quantisation
process
2008-12-04 21:21:41 -05:00
Jean-Marc Valin
896471dc3d Disabling the folding sign bit 2008-11-06 21:55:41 -05:00
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