Commit graph

385 commits

Author SHA1 Message Date
Jean-Marc Valin
83c26fbd7b Fixes a ibudget bust and a divide-by-zero at very low bit-rate 2010-09-29 20:05:36 -04:00
Jean-Marc Valin
d74c851feb Adds a simple dynamic allocation scheme
This should help on highly tonal signals by increasing the rate of
bands with a lot more energy than the neighbouring bands.
2010-09-29 17:39:54 -04:00
Jean-Marc Valin
b801da5e83 Preventing bands from being coded at a rate below (for now) 3/8 bit/sample 2010-09-28 14:56:20 -04:00
Jean-Marc Valin
f9fdbffb72 Don't allow transients for 2.5 ms frames.
It never made sense anyway.
2010-09-05 21:02:38 -04:00
Jean-Marc Valin
1b36d6c8b6 Complexity setting now controls two-pass coarse energy quantization 2010-08-31 17:21:52 -04:00
Jean-Marc Valin
1213ba5e68 Complexity setting now does something again 2010-08-31 17:03:13 -04:00
Jean-Marc Valin
1d17b9ae67 New implementation of folding_decision() 2010-08-31 14:51:58 -04:00
Jean-Marc Valin
736efd6909 Fixes some MSVC warnings 2010-08-31 11:52:45 -04:00
Jean-Marc Valin
5c0c936d8f Fine energy allocation cleanup 2010-08-31 10:11:11 -04:00
Jean-Marc Valin
6d3829f266 CELT no longer prints to stderr (unless assertions are enabled) 2010-08-27 17:52:38 -04:00
Jean-Marc Valin
c09807d3e5 Simplifies the implementation of RESET by placing all the data that needs
to be cleared at the end of the state structs.
2010-08-27 17:22:54 -04:00
Jean-Marc Valin
7cfb7305f4 Adds _init() functions that do not allocate the states themselves 2010-08-27 16:54:33 -04:00
Jean-Marc Valin
ca8b9928c9 Comments on encoder and decoder struct contents 2010-08-27 16:23:41 -04:00
Jean-Marc Valin
bce1dd0d75 Remove check_mode() 2010-08-27 16:10:39 -04:00
Jean-Marc Valin
d13cd1568d Unb0rk fixed-point build 2010-08-27 16:05:01 -04:00
Jean-Marc Valin
0410e9ca81 Removing check_decoder() 2010-08-27 16:02:30 -04:00
Jean-Marc Valin
02a3527aa4 Decoder state stored in a single allocated object. 2010-08-27 16:00:01 -04:00
Jean-Marc Valin
6d131087c9 Decoder cleanup 2010-08-27 15:15:32 -04:00
Jean-Marc Valin
190b782e8c Removing check_encoder() 2010-08-27 15:03:20 -04:00
Jean-Marc Valin
0d8eaa3368 Encoder state now stored in a single allocated object 2010-08-27 14:57:37 -04:00
Jean-Marc Valin
0695a5fbac Simplifies convoluted/idiotic indexing. 2010-08-27 11:33:18 -04:00
Jean-Marc Valin
f67b4476a0 More IMDCT de-uglification 2010-08-27 01:32:40 -04:00
Jean-Marc Valin
e0ce2cf99d Removing out_mem from the encoder state. 2010-08-27 00:06:30 -04:00
Jean-Marc Valin
903dbf7558 Inverse MDCT no longer keeps channels interleaved.
This simplifications also fixes a few bugs in the PLC (hope it didn't create some new ones).
2010-08-26 20:07:27 -04:00
Jean-Marc Valin
ab3784e99f Small suckage reduction in compute_inv_mdcts(). More to come. 2010-08-26 18:10:09 -04:00
Jean-Marc Valin
5e7f02de2c Moving intra decision to quant_coarse_energy() 2010-08-08 09:48:22 -04:00
Jean-Marc Valin
908958cad5 Shuffling code around -- no change to the algorithm 2010-08-07 22:15:19 -04:00
Jean-Marc Valin
9099bc36db Bit-stream reordering
Coarse first, following by transient info, then spreading
2010-08-07 22:07:08 -04:00
Jean-Marc Valin
be04f5af6c Reorganizing the VBR code 2010-08-07 21:42:03 -04:00
Jean-Marc Valin
d38d6b9aa1 Implemented variable spreading amount in the decoder
Decision not yet implemented in the encoder
2010-08-07 09:21:32 -04:00
Jean-Marc Valin
504fb3c189 Using the real spectral means instead of the ones
after inter-band prediction
2010-08-06 15:56:22 -04:00
Jean-Marc Valin
017001a512 Simplified flags encoding 2010-08-05 15:42:50 -04:00
Jean-Marc Valin
8cbea177ba Removing pitch prediction code 2010-08-05 15:28:27 -04:00
Jean-Marc Valin
5d774e075e Fixed "forced intensity stereo" 2010-08-04 17:17:18 -04:00
Jean-Marc Valin
129964098b More float conversion cleanup 2010-08-04 09:13:24 -04:00
Jean-Marc Valin
ae01e119cb Changing some constants to float 2010-08-03 21:43:41 -04:00
Jean-Marc Valin
bc272de74b Code simplifications for log->amplitude conversion 2010-08-02 09:41:31 -04:00
Jean-Marc Valin
4409224845 Error measurement for stereo as well 2010-07-29 18:32:54 +02:00
Jean-Marc Valin
7b5a086b45 Measuring the normalized error directly within the encoder 2010-07-29 15:01:24 +02:00
Jean-Marc Valin
8d18601413 Fixing the qtheta dependency for the delta allocation
Removed useless code in transient_analysis()
2010-07-28 22:12:36 +02:00
Jean-Marc Valin
ac1da4f42b Codec state simplification
Making the preemphasis memory an array of two, removing unused fields
2010-07-24 12:32:37 -04:00
Jean-Marc Valin
802f6eab9b Making a bunch of things static 2010-07-23 17:02:23 -04:00
Jean-Marc Valin
617af25e5c Cleaning up intra_decision() 2010-07-23 16:54:45 -04:00
Jean-Marc Valin
ca6533cd88 Energy quantization tuning.
Prediction coefficient now depends on the frame size. Also, the pdfs and means
have been adjusted and better quantized. This breaks compatibility of course.
2010-07-23 16:10:36 -04:00
Jean-Marc Valin
6bf3b0a7a1 The coarse energy budget is no longer part of the bit-stream.
It is now the encoder's responsability to take care of it to avoid
busting the budget.
2010-07-19 14:32:40 -04:00
Jean-Marc Valin
b1e017f58d Error checking on the decoder side 2010-07-18 21:20:35 -04:00
Jean-Marc Valin
9d785afb67 Encoder now has a way to check whether an error has occurred 2010-07-18 09:42:05 -04:00
Jean-Marc Valin
8952c45ea5 The encoder and decoder can now process audio encoded at a higher rate
than what they're running at.
2010-07-16 21:48:44 -04:00
Jean-Marc Valin
85f41b20df Some work towards being able to encode a 48 kHz stream from 32 kHz audio (incomplete) 2010-07-16 18:12:45 -04:00
Jean-Marc Valin
3b0df0dc2a All modes based on 2.5 ms short blocks now use the same definition 2010-07-16 15:55:30 -04:00