opus/libcelt
Timothy B. Terriberry c1c40a76c2 Rework coarse energy coding.
This changes how the PDF used to code coarse energy.
New features:
1) The probability of 0 (p0) is now indepedent of the decay rate
 of the remaining values; this additional flexibility will allow
 us to model the actual distribution better, though that
 improvement is not part of this patch.
2) There is a guaranteed minimum number of encodable energy
    deltas.
   This ensures that even the most extreme sudden volume changes
    can be accurately represented.
3) The tail end of the distribution has an adjustable (through a
    constant in the code) minimum probability.
   This allows us to lower the worst-case bit cost of a single
    delta.
4) The codebook is interleaved as 0, -1, +1, -2, +2, ... instead
    of the 0, +1, -1, +2, -2, ... order used before (see 5).
5) There is no restriction that p0 be even.
   Any remaining, unused part of the code is assigned to an
    additional negative value (collected inter data suggests that
    very large negative deltas are more common than very large
    positive ones).
   If the minimum probability is greater than 1, then an
    additional positive delta with a smaller probablity may also
    be added.
6) Once the tail of the distribution is reached, the energy delta
    is computed directly, instead of continuing to loop through
    the codebook.
   This reduces the worst-case computational cost.
2010-08-11 20:38:45 -04:00
..
_kiss_fft_guts.h DOUBLE_PRECISION and MIXED_PRECISION no longer need to be defined 2010-08-03 15:47:54 -04:00
arch.h Converted a few double-precision constants to single precision 2010-04-16 20:57:56 -04:00
bands.c Implemented variable spreading amount in the decoder 2010-08-07 09:21:32 -04:00
bands.h Removing pitch prediction code 2010-08-05 15:28:27 -04:00
c64_fft.c Changed all the celt*int*_t types to remove the _t suffix, which is reserved 2009-10-17 14:35:13 -04:00
c64_fft.h Changed all the celt*int*_t types to remove the _t suffix, which is reserved 2009-10-17 14:35:13 -04:00
celt.c Moving intra decision to quant_coarse_energy() 2010-08-08 09:48:22 -04:00
celt.h Support for adjusting the end band 2010-07-13 18:18:23 -04:00
celt_header.h Updated copyright notices 2009-10-17 21:40:10 -04:00
celt_types.h Changed all the celt*int*_t types to remove the _t suffix, which is reserved 2009-10-17 14:35:13 -04:00
cwrs.c Eliminate the loop when decoding the split angle. 2010-07-28 00:20:16 +02:00
cwrs.h Removing the rest of the >32-bit PVQ code 2010-05-24 09:05:36 -04:00
dump_modes.c Fix dump_modes when requesting multiple modes. 2010-08-05 20:11:26 -04:00
ecintrin.h Some C90-ication 2010-06-27 21:55:08 -04:00
entcode.c Updated copyright notices 2009-10-17 21:40:10 -04:00
entcode.h Remove useless use of "long", remove useless prototypes 2010-08-02 09:01:28 -04:00
entdec.c Remove useless use of "long", remove useless prototypes 2010-08-02 09:01:28 -04:00
entdec.h Remove useless use of "long", remove useless prototypes 2010-08-02 09:01:28 -04:00
entenc.c Remove useless use of "long", remove useless prototypes 2010-08-02 09:01:28 -04:00
entenc.h Remove useless use of "long", remove useless prototypes 2010-08-02 09:01:28 -04:00
fixed_c5x.h Removed the _t from all the celt*_t types to avoid clashing with POSIX 2009-10-17 22:12:42 -04:00
fixed_c6x.h Removed the _t from all the celt*_t types to avoid clashing with POSIX 2009-10-17 22:12:42 -04:00
fixed_debug.h Removed the _t from all the celt*_t types to avoid clashing with POSIX 2009-10-17 22:12:42 -04:00
fixed_generic.h Removed the _t from all the celt*_t types to avoid clashing with POSIX 2009-10-17 22:12:42 -04:00
float_cast.h Preparing for 0.5.0 2008-10-09 07:29:39 -04:00
header.c Mode cleanup (removed redundant mdctSize field) 2010-06-27 13:49:38 -04:00
kiss_fft.c DOUBLE_PRECISION and MIXED_PRECISION no longer need to be defined 2010-08-03 15:47:54 -04:00
kiss_fft.h More FFT cleanup 2010-08-03 16:49:22 -04:00
laplace.c Rework coarse energy coding. 2010-08-11 20:38:45 -04:00
laplace.h Updated copyright notices 2009-10-17 21:40:10 -04:00
Makefile.am More FFT cleanup 2010-08-03 16:49:22 -04:00
match-test.sh Simplified the folding normalisation by creating renormalise_vector(). 2008-07-20 23:14:31 -04:00
mathops.c Eliminate the loop when decoding the split angle. 2010-07-28 00:20:16 +02:00
mathops.h Eliminate the loop when decoding the split angle. 2010-07-28 00:20:16 +02:00
mdct.c More FFT cleanup 2010-08-03 16:49:22 -04:00
mdct.h Sharing twiddle factors across all MDCTs 2010-07-07 21:26:38 -04:00
mfrngcod.h Updated copyright notices 2009-10-17 21:40:10 -04:00
modes.c Removing pitch prediction code 2010-08-05 15:28:27 -04:00
modes.h Removing pitch prediction code 2010-08-05 15:28:27 -04:00
os_support.h Fix accidental change of celt_alloc() to non-inline 2010-07-08 14:35:29 -04:00
pitch.c Changing some constants to float 2010-08-03 21:43:41 -04:00
pitch.h More work on variable frame size (getting rid of FRAMESIZE() ) 2010-05-07 21:20:22 -04:00
plc.c Removing old PCL, added plc.h 2010-06-20 23:01:33 -04:00
plc.h Removing old PCL, added plc.h 2010-06-20 23:01:33 -04:00
quant_bands.c Fixes a stereo bug introduced in the previous commit 2010-08-11 20:38:19 -04:00
quant_bands.h Moving intra decision to quant_coarse_energy() 2010-08-08 09:48:22 -04:00
rangedec.c Remove useless use of "long", remove useless prototypes 2010-08-02 09:01:28 -04:00
rangeenc.c Remove useless use of "long", remove useless prototypes 2010-08-02 09:01:28 -04:00
rate.c Adaptive fine offset value 2010-08-06 14:42:43 -04:00
rate.h Adaptive fine offset value 2010-08-06 14:42:43 -04:00
stack_alloc.h Updated copyright notices 2009-10-17 21:40:10 -04:00
testcelt.c Error checking on the decoder side 2010-07-18 21:20:35 -04:00
vq.c Implemented variable spreading amount in the decoder 2010-08-07 09:21:32 -04:00
vq.h More cleanup 2010-07-24 22:06:29 -04:00