Commit graph

1205 commits

Author SHA1 Message Date
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
2cc1fcbda0 Nothing to see here 2010-08-26 08:17:49 -04:00
Jean-Marc Valin
5d937c0223 Disabling mdct and fft init code with static modes 2010-08-26 02:04:03 -04:00
Jean-Marc Valin
40603b2f03 No longer making copies of static modes 2010-08-25 23:02:49 -04:00
Jean-Marc Valin
ae035a540b Fixes an off-by-one bug in the static mode's MDCT twiddles 2010-08-25 22:41:00 -04:00
Jean-Marc Valin
0ff9be6aec Fixed an old issue where the fixed-point MDCT twiddles were stored as 32-bit values 2010-08-25 22:20:35 -04:00
Jean-Marc Valin
bb5288174d coarse probability model in static modes too 2010-08-25 22:12:18 -04:00
Jean-Marc Valin
31b189b419 static modes update for MDCT 2010-08-25 21:21:43 -04:00
Jean-Marc Valin
24eef1493e Updating dump_modes to include the MDCT and FFT. More work needed. 2010-08-25 18:01:50 -04:00
Jean-Marc Valin
3fc0aada01 FFT cleanup 2010-08-25 17:15:05 -04:00
Jean-Marc Valin
732ea38810 Updated static modes for new pulse cache.
Fixed a few minor bugs in the process.
2010-08-25 13:52:27 -04:00
Jean-Marc Valin
3ad8db49c5 New pulse cache 2010-08-25 13:11:09 -04:00
Jean-Marc Valin
ba3a28921a MSE measurement details (no codec changes) 2010-08-23 11:14:35 -04:00
Jean-Marc Valin
3f9857b99e Making the fine energy allocation code less ugly.
No change to behaviour except that for stereo we now only force a minimum
of one energy bit per channel (previously two because of an error).
2010-08-13 21:20:37 -04:00
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
Jean-Marc Valin
6ac26ecf2d Fixes a stereo bug introduced in the previous commit 2010-08-11 20:38:19 -04:00
Jean-Marc Valin
bb338a9317 Choosing intra frame energy when it's cheaper than inter 2010-08-10 13:20:21 -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
Timothy B. Terriberry
828da91d66 Minor simplification to exp_rotation(). 2010-08-06 21:43:49 -04:00
Jean-Marc Valin
f412a99e2a comments 2010-08-06 17:04:13 -04:00
Jean-Marc Valin
0777135275 eMeans[] quantized to 8 bits 2010-08-06 16:34:58 -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
360342824f Adaptive fine offset value 2010-08-06 14:42:43 -04:00
Jean-Marc Valin
39ffbeec9a Comments 2010-08-06 07:40:11 -04:00
Jean-Marc Valin
1f589ef143 More simplifications to N=2 stereo 2010-08-05 21:14:49 -04:00
Jean-Marc Valin
960505f074 More N=2 stereo simplifications 2010-08-05 20:35:53 -04:00
Timothy B. Terriberry
e4d271dcfb Simplifications to the N=2 stereo split.
This saves almost 200 bytes of code size.
2010-08-05 20:11:33 -04:00
Timothy B. Terriberry
245c9af59d Fix dump_modes when requesting multiple modes.
dump_modes() was re-using a loop index for a loop nested inside
 the main one, so it would only output the struct for the first
 one.
2010-08-05 20:11:26 -04:00
Jean-Marc Valin
08b88c8d3d This patch makes Tim happy 2010-08-05 18:15:56 -04:00
Jean-Marc Valin
aa995ddde3 Making qn code 16-bit clean while simplifying it 2010-08-05 17:39:13 -04:00
Jean-Marc Valin
88c59a534b QTHETA_OFFSET* tuning 2010-08-05 16:15:46 -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
30e2493efa Allowing fractional bits for splitting angle (theta) 2010-08-05 09:16:52 -04:00
Jean-Marc Valin
0b9e9ce465 cleanup in qb-related code 2010-08-05 00:09:23 -04:00
Jean-Marc Valin
5d774e075e Fixed "forced intensity stereo" 2010-08-04 17:17:18 -04:00