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
Jean-Marc Valin
69921c4cde
Considering the end band in more places in the code
2010-07-16 15:25:30 -04:00
Jean-Marc Valin
0be05b0335
Encoding transient_time independently of the sampling rate
2010-07-16 14:23:03 -04:00
Jean-Marc Valin
223b69db02
Better support for non-48 kHz sampling rates
2010-07-16 11:47:50 -04:00
Jean-Marc Valin
af1fce93b1
Pre-emphasis coefficients now part of the mode and has a numerator as well
...
as a denominator
2010-07-16 11:05:06 -04:00
Jean-Marc Valin
e34c85a0cc
Using short blocks a bit more often now that we have variable tf resolution
2010-07-15 17:57:50 -04:00
Jean-Marc Valin
2ed5e67a2e
Handling the start band and end band in tf encoding
2010-07-13 18:18:23 -04:00
Jean-Marc Valin
525d7cfdc4
Support for adjusting the end band
2010-07-13 18:18:23 -04:00
Jean-Marc Valin
72513f3cc7
Sharing twiddle factors across all MDCTs
2010-07-07 21:26:38 -04:00
Jean-Marc Valin
4424b5a803
Updating DISABLE_FLOAT_API use
2010-07-06 19:37:23 -04:00
Jean-Marc Valin
b6a5f9d38f
fixed point bug fix in tf_analysis()
2010-07-06 17:57:14 -04:00
Jean-Marc Valin
c7bcf389da
Another coarse budget fix for _ec() calls
2010-07-05 14:33:49 -04:00
Jean-Marc Valin
bdcaaf73c6
Fixed a few more issues with the _ec() calls.
2010-07-05 13:52:41 -04:00
Jean-Marc Valin
71ae6d4714
Some C90-ication
2010-06-27 21:55:08 -04:00
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
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
Jean-Marc Valin
6c3788cb53
Removing old PCL, added plc.h
2010-06-20 23:01:33 -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
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
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
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
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
Jean-Marc Valin
8cc945c53a
Cleaning up VBR to be frame-size independent
2010-05-29 08:07:18 -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
9f89cab6ec
Improving the transient detection
...
When a transient occurs in the overlap between two frames, we
now make sure that both these frames are coded as transients
2010-05-21 14:18:38 -04:00
Jean-Marc Valin
cae30df09a
Getting rid of PVQ-level split
...
Adding one more level of band splitting so that splitting at the
PVQ encoding level is no longer necessary.
2010-05-21 00:26:03 -04:00
Jean-Marc Valin
5f96146a85
Implemented CELT_SET_START_BAND
2010-05-19 13:38:36 -04:00
Jean-Marc Valin
f5e2e32d15
Support for passing your own ec state to the decoder
2010-05-19 12:05:02 -04:00