Commit graph

1088 commits

Author SHA1 Message Date
Jean-Marc Valin
a57e924f2e Removing some warnings 2010-06-27 00:53:51 -04:00
Jean-Marc Valin
a01106587c Improved quality of small frame sizes at low bitrate.
Adding a temporal energy floor to prevent extremely small values when there's
only one bin in the band.
2010-06-23 15:22:54 -04:00
Jean-Marc Valin
281c8b7e99 Preventing ridiculous bit depths > 16 bit/sample 2010-06-22 21:26:16 -04:00
Jean-Marc Valin
6b95d8fdb8 Improved code for reusing ec structures
Using the number of unallocated bytes for coarse quantization and VBR
instead the total number of bytes.
2010-06-21 21:39:44 -04:00
Jean-Marc Valin
30d5125bff No need to memset() the byte buffer 2010-06-21 17:55:28 -04:00
Benjamin Jemlich
bb4f63f4a0 Compile fix for MSVC 2010-06-21 09:07:40 -04:00
Jean-Marc Valin
2b59d4fad9 Bumping LT_CURRENT 2010-06-21 07:15:47 -04:00
Jean-Marc Valin
c239bd64dc removing some warnings 2010-06-21 01:01:17 -04:00
Jean-Marc Valin
79e6743498 Fixed testcase 2010-06-21 00:13:35 -04:00
Jean-Marc Valin
6c3788cb53 Removing old PCL, added plc.h 2010-06-20 23:01:33 -04:00
Jean-Marc Valin
dc68eb231f Comments, code cleanup 2010-06-19 10:27:28 -04:00
Jean-Marc Valin
feca095e96 fixed-point: New PLC now enabled by default 2010-06-17 20:25:51 -04:00
Jean-Marc Valin
7b7f07120e fixed-point: More work on the PLC 2010-06-17 20:10:02 -04:00
Jean-Marc Valin
0da0d91ba7 fixed-point: PLC auto-correlation converted 2010-06-17 07:32:20 -04:00
Jean-Marc Valin
3a9699ee94 minor tweaks to frac_div32() 2010-06-17 00:35:26 -04:00
Jean-Marc Valin
bd82ca80f7 Fixed-point version of frac_div32() 2010-06-17 00:11:54 -04:00
Jean-Marc Valin
456eab2e4f More work on fixed-point Levinson-Durbin 2010-06-16 22:38:57 -04:00
Jean-Marc Valin
890a9c05e0 Implementing two choices for the tf resolution 2010-06-13 08:06:28 -04:00
Jean-Marc Valin
9a33c5c346 Remove unnecessary free of global stack on error 2010-06-08 21:01:41 -04:00
Jean-Marc Valin
e2d5b33780 Completely disabling the tf code at low bitrate 2010-06-06 23:16:40 -04:00
Jean-Marc Valin
0a571ef92a Encoding the tf parameters after coarse energy
Also a minor cleanup to the recombining/division
2010-06-05 23:12:19 -04:00
Jean-Marc Valin
47ad4a0938 Doing the log2Amp() just in one place 2010-06-05 01:18:40 -04:00
Jean-Marc Valin
ffe5061a75 nothing to see here 2010-06-04 00:13:19 -04:00
Jean-Marc Valin
01b54b9964 Completely removed the old allocation table.
Also made the new table an unsigned char array.
2010-06-03 23:29:35 -04:00
Jean-Marc Valin
c51e98ba1b Base everything on the "standard allocation table" 2010-06-03 22:11:41 -04:00
Jean-Marc Valin
12e851dad7 Using allocation table for "standard" frame sizes 2010-06-03 08:12:11 -04:00
Jean-Marc Valin
bb8fa1fca2 Allocation table now in bits/sample 2010-06-03 00:33:42 -04:00
Jean-Marc Valin
6c37fb150c Changing the allocator resolution to 1/8 bit
Should eventually allow using 8-bit values for the pulse->bits table.
2010-06-02 21:25:19 -04:00
Jean-Marc Valin
6202c746cf Fix for PLC crash when using large frames 2010-06-01 00:30:37 -04:00
Jean-Marc Valin
32589cd33e Trying not to crash on bit errors
When the pitch flag gets corrupted, make sure that pitch is actually
allowed instead of generating a bogus pitch index and crashing.
2010-05-31 21:56:12 -04:00
Jean-Marc Valin
816f893569 removed stupid code in transient_analysis() 2010-05-31 21:36:46 -04:00
Jean-Marc Valin
4f0de0ba6a Fixed stupid bug for single-sample bands 2010-05-31 09:51:36 -04:00
Timothy B. Terriberry
43e9406201 Change ec_{enc|dec}_bit_prob to take probabilities in units of 1/65536 instead of 1/256. This allows them to use a single 16x16->32 multiply instead of a 24x8->32 multiply. Also change the time-frequency resolution flag coding to ensure that "0" is always the most-probable symbol (i.e., that prob("1")<50%), as that's where all the rounding error accumulates. 2010-05-29 23:45:28 -04:00
Timothy B. Terriberry
299747ee24 Provide direct implementations ec_{enc|dec}_bit_prob() that do not require a division instead of using the normal entropy coder path. This should be exactly equivalent to the existing code. 2010-05-29 23:45:18 -04:00
Jean-Marc Valin
8cc945c53a Cleaning up VBR to be frame-size independent 2010-05-29 08:07:18 -04:00
Jean-Marc Valin
524623899c Folding tuning
Trying to fold only from regions where we have at least 2 bits of depth
2010-05-29 00:28:06 -04:00
Jean-Marc Valin
7331977c29 RD optimisation now takes bitrate into account 2010-05-28 21:12:39 -04:00
Jean-Marc Valin
bdb5871bc4 Simplification to the transient detection code
Discarding the amplitude of the overlap for "frame_max"
2010-05-28 18:58:42 -04:00
Jean-Marc Valin
8823261738 More simplifications to the Viterbi code 2010-05-28 18:01:02 -04:00
Jean-Marc Valin
0ef39c9cc4 Simplifications to the tf_res RD code 2010-05-28 17:50:34 -04:00
Jean-Marc Valin
9d420c58e9 Viterbi-based RD optimization of the tf_res decisions 2010-05-28 17:26:27 -04:00
Jean-Marc Valin
581fdba936 changing probability of first tf resolution symbol 2010-05-28 06:56:23 -04:00
Jean-Marc Valin
163b76e8c4 Adaptive time-frequency resolution
Encoding the optimal tf-tradeoff for each band and then
applying it during quantization.
2010-05-27 23:56:53 -04:00
Jean-Marc Valin
8035b6589d Adds a range coder call to encode a single bit with arbitrary probability 2010-05-27 16:25:07 -04:00
Jean-Marc Valin
c4ac57023c Fixed a long-standing rare mismatch
In cases where the coarse energy quantizer wasn't able to
go down fast enough, we could have a negative error that didn't
get clamped.
2010-05-26 15:04:41 -04:00
Jean-Marc Valin
40e993c029 Re-organised the special case for N==1 2010-05-26 15:04:29 -04:00
Jean-Marc Valin
c5d00a066e Bunch of fixes for frames of 2.5 ms. 2010-05-26 11:27:32 -04:00
Jean-Marc Valin
9d069846ee More recombining "infrastructure" 2010-05-25 23:54:56 -04:00
Jean-Marc Valin
cee66b512e Code for recombining bands (not enabled yet) 2010-05-25 23:15:14 -04:00
Jean-Marc Valin
2fcb239736 Removing the rest of the >32-bit PVQ code 2010-05-24 09:05:36 -04:00