opus.git
9 years agoMoves the bit-side gain application to the quantizer
Jean-Marc Valin [Mon, 13 Sep 2010 15:05:08 +0000 (11:05 -0400)]
Moves the bit-side gain application to the quantizer

9 years agoUsing 6 steps in allocation interpolation
Jean-Marc Valin [Mon, 13 Sep 2010 13:46:54 +0000 (09:46 -0400)]
Using 6 steps in allocation interpolation

9 years agoSimplifies vector renormalisation (and using it less)
Jean-Marc Valin [Mon, 13 Sep 2010 00:11:32 +0000 (20:11 -0400)]
Simplifies vector renormalisation (and using it less)

9 years agoFix a minor, but bitstream-affecting bug
Jean-Marc Valin [Sat, 11 Sep 2010 12:57:59 +0000 (08:57 -0400)]
Fix a minor, but bitstream-affecting bug

9 years agoFixes a divide-by-zero in narrowband mode with small frame size
Jean-Marc Valin [Fri, 10 Sep 2010 21:40:31 +0000 (17:40 -0400)]
Fixes a divide-by-zero in narrowband mode with small frame size

9 years agoSimplifies convoluted raw bits calls.
Jean-Marc Valin [Sat, 11 Sep 2010 00:20:04 +0000 (20:20 -0400)]
Simplifies convoluted raw bits calls.

9 years agoDon't allow transients for 2.5 ms frames.
Jean-Marc Valin [Mon, 6 Sep 2010 01:02:38 +0000 (21:02 -0400)]
Don't allow transients for 2.5 ms frames.

It never made sense anyway.

9 years agoFixes an index bug in dump_modes
Jean-Marc Valin [Fri, 3 Sep 2010 19:12:35 +0000 (15:12 -0400)]
Fixes an index bug in dump_modes

9 years agoMore sharing across different static modes
Jean-Marc Valin [Fri, 3 Sep 2010 18:27:52 +0000 (14:27 -0400)]
More sharing across different static modes

9 years agostatic modes simplifications for std mode
Jean-Marc Valin [Fri, 3 Sep 2010 15:52:38 +0000 (11:52 -0400)]
static modes simplifications for std mode

9 years agominor tuning in the mid-high rates
Jean-Marc Valin [Thu, 2 Sep 2010 14:50:21 +0000 (10:50 -0400)]
minor tuning in the mid-high rates

9 years agoRaw bit init for for architectures with chars larger than 8 bits
Jean-Marc Valin [Thu, 2 Sep 2010 14:16:56 +0000 (10:16 -0400)]
Raw bit init for for architectures with chars larger than 8 bits

9 years agoSmoothing out some curves
Jean-Marc Valin [Thu, 2 Sep 2010 02:04:53 +0000 (22:04 -0400)]
Smoothing out some curves

9 years agoTuning around 30 kb/s
Jean-Marc Valin [Wed, 1 Sep 2010 20:21:38 +0000 (16:21 -0400)]
Tuning around 30 kb/s

9 years agoTuning in the 24 kb/s area
Jean-Marc Valin [Wed, 1 Sep 2010 20:09:30 +0000 (16:09 -0400)]
Tuning in the 24 kb/s area

9 years agoTuning at very low bit-rate (around 14 kb/s)
Jean-Marc Valin [Wed, 1 Sep 2010 19:43:06 +0000 (15:43 -0400)]
Tuning at very low bit-rate (around 14 kb/s)

9 years agoTuning at very low rate
Jean-Marc Valin [Wed, 1 Sep 2010 15:11:37 +0000 (11:11 -0400)]
Tuning at very low rate

9 years agoMaking the allocation matrix a bit smoother
Jean-Marc Valin [Wed, 1 Sep 2010 15:00:48 +0000 (11:00 -0400)]
Making the allocation matrix a bit smoother

9 years agoConverting allocation table to 1/32 bit/sample resolution.
Jean-Marc Valin [Wed, 1 Sep 2010 14:07:12 +0000 (10:07 -0400)]
Converting allocation table to 1/32 bit/sample resolution.

9 years agoComplexity setting now controls two-pass coarse energy quantization
Jean-Marc Valin [Tue, 31 Aug 2010 21:21:52 +0000 (17:21 -0400)]
Complexity setting now controls two-pass coarse energy quantization

9 years agoIgnoring lower bands in folding_decision()
Jean-Marc Valin [Tue, 31 Aug 2010 21:08:45 +0000 (17:08 -0400)]
Ignoring lower bands in folding_decision()

9 years agoComplexity setting now does something again
Jean-Marc Valin [Tue, 31 Aug 2010 21:03:13 +0000 (17:03 -0400)]
Complexity setting now does something again

9 years agoMinor simplification to interp_bits2pulses()
Jean-Marc Valin [Tue, 31 Aug 2010 20:46:40 +0000 (16:46 -0400)]
Minor simplification to interp_bits2pulses()

9 years agoNew implementation of folding_decision()
Jean-Marc Valin [Tue, 31 Aug 2010 18:51:58 +0000 (14:51 -0400)]
New implementation of folding_decision()

9 years ago_alloca() for Win32
Jean-Marc Valin [Tue, 31 Aug 2010 15:56:09 +0000 (11:56 -0400)]
_alloca() for Win32

9 years agoFixes some MSVC warnings
Jean-Marc Valin [Tue, 31 Aug 2010 15:52:45 +0000 (11:52 -0400)]
Fixes some MSVC warnings

9 years agoFine energy allocation cleanup
Jean-Marc Valin [Tue, 31 Aug 2010 14:11:11 +0000 (10:11 -0400)]
Fine energy allocation cleanup

9 years agoqoffset tuning
Jean-Marc Valin [Tue, 31 Aug 2010 10:45:32 +0000 (06:45 -0400)]
qoffset tuning

9 years agoMore fine energy tuning, compensation for N=2
Jean-Marc Valin [Tue, 31 Aug 2010 03:35:02 +0000 (23:35 -0400)]
More fine energy tuning, compensation for N=2

9 years agoNew fine energy allocation tuning.
Jean-Marc Valin [Tue, 31 Aug 2010 01:34:11 +0000 (21:34 -0400)]
New fine energy allocation tuning.

Based on 1/2*log2(N)-19/8, but with the 2-bit and 3-bit thresholds
shifted by 2*log2(N)/8 bit and log2(N)/8 bit, respectively.

9 years agoCELT no longer prints to stderr (unless assertions are enabled)
Jean-Marc Valin [Fri, 27 Aug 2010 21:52:38 +0000 (17:52 -0400)]
CELT no longer prints to stderr (unless assertions are enabled)

9 years agoSimplifies the implementation of RESET by placing all the data that needs
Jean-Marc Valin [Fri, 27 Aug 2010 21:17:50 +0000 (17:17 -0400)]
Simplifies the implementation of RESET by placing all the data that needs
to be cleared at the end of the state structs.

9 years agoAdds _init() functions that do not allocate the states themselves
Jean-Marc Valin [Fri, 27 Aug 2010 20:54:33 +0000 (16:54 -0400)]
Adds _init() functions that do not allocate the states themselves

9 years agoComments on encoder and decoder struct contents
Jean-Marc Valin [Fri, 27 Aug 2010 20:23:03 +0000 (16:23 -0400)]
Comments on encoder and decoder struct contents

9 years agoRemove model markers
Jean-Marc Valin [Fri, 27 Aug 2010 20:15:20 +0000 (16:15 -0400)]
Remove model markers

9 years agoRemove check_mode()
Jean-Marc Valin [Fri, 27 Aug 2010 20:10:39 +0000 (16:10 -0400)]
Remove check_mode()

9 years agoUnb0rk fixed-point build
Jean-Marc Valin [Fri, 27 Aug 2010 20:05:01 +0000 (16:05 -0400)]
Unb0rk fixed-point build

9 years agoRemoving check_decoder()
Jean-Marc Valin [Fri, 27 Aug 2010 20:02:30 +0000 (16:02 -0400)]
Removing check_decoder()

9 years agoDecoder state stored in a single allocated object.
Jean-Marc Valin [Fri, 27 Aug 2010 20:00:01 +0000 (16:00 -0400)]
Decoder state stored in a single allocated object.

9 years agoDecoder cleanup
Jean-Marc Valin [Fri, 27 Aug 2010 19:15:32 +0000 (15:15 -0400)]
Decoder cleanup

9 years agoRemoving check_encoder()
Jean-Marc Valin [Fri, 27 Aug 2010 19:03:20 +0000 (15:03 -0400)]
Removing check_encoder()

9 years agoEncoder state now stored in a single allocated object
Jean-Marc Valin [Fri, 27 Aug 2010 18:57:37 +0000 (14:57 -0400)]
Encoder state now stored in a single allocated object

9 years agoSimplifies convoluted/idiotic indexing.
Jean-Marc Valin [Fri, 27 Aug 2010 15:33:18 +0000 (11:33 -0400)]
Simplifies convoluted/idiotic indexing.

9 years agoMore IMDCT de-uglification
Jean-Marc Valin [Fri, 27 Aug 2010 05:32:40 +0000 (01:32 -0400)]
More IMDCT de-uglification

9 years agoRemoving out_mem from the encoder state.
Jean-Marc Valin [Fri, 27 Aug 2010 03:58:08 +0000 (23:58 -0400)]
Removing out_mem from the encoder state.

9 years agoInverse MDCT no longer keeps channels interleaved.
Jean-Marc Valin [Fri, 27 Aug 2010 00:06:49 +0000 (20:06 -0400)]
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).

9 years agoSmall suckage reduction in compute_inv_mdcts(). More to come.
Jean-Marc Valin [Thu, 26 Aug 2010 22:08:44 +0000 (18:08 -0400)]
Small suckage reduction in compute_inv_mdcts(). More to come.

9 years agoNothing to see here
Jean-Marc Valin [Thu, 26 Aug 2010 12:17:49 +0000 (08:17 -0400)]
Nothing to see here

9 years agoDisabling mdct and fft init code with static modes
Jean-Marc Valin [Thu, 26 Aug 2010 06:04:03 +0000 (02:04 -0400)]
Disabling mdct and fft init code with static modes

9 years agoNo longer making copies of static modes
Jean-Marc Valin [Thu, 26 Aug 2010 03:02:49 +0000 (23:02 -0400)]
No longer making copies of static modes

9 years agoFixes an off-by-one bug in the static mode's MDCT twiddles
Jean-Marc Valin [Thu, 26 Aug 2010 02:41:00 +0000 (22:41 -0400)]
Fixes an off-by-one bug in the static mode's MDCT twiddles

9 years agoFixed an old issue where the fixed-point MDCT twiddles were stored as 32-bit values
Jean-Marc Valin [Thu, 26 Aug 2010 02:20:35 +0000 (22:20 -0400)]
Fixed an old issue where the fixed-point MDCT twiddles were stored as 32-bit values

9 years agocoarse probability model in static modes too
Jean-Marc Valin [Thu, 26 Aug 2010 02:12:18 +0000 (22:12 -0400)]
coarse probability model in static modes too

9 years agostatic modes update for MDCT
Jean-Marc Valin [Thu, 26 Aug 2010 01:21:43 +0000 (21:21 -0400)]
static modes update for MDCT

9 years agoUpdating dump_modes to include the MDCT and FFT. More work needed.
Jean-Marc Valin [Wed, 25 Aug 2010 22:01:50 +0000 (18:01 -0400)]
Updating dump_modes to include the MDCT and FFT. More work needed.

9 years agoFFT cleanup
Jean-Marc Valin [Wed, 25 Aug 2010 21:15:05 +0000 (17:15 -0400)]
FFT cleanup

9 years agoUpdated static modes for new pulse cache.
Jean-Marc Valin [Wed, 25 Aug 2010 17:52:27 +0000 (13:52 -0400)]
Updated static modes for new pulse cache.

Fixed a few minor bugs in the process.

9 years agoNew pulse cache
Jean-Marc Valin [Wed, 25 Aug 2010 17:11:09 +0000 (13:11 -0400)]
New pulse cache

9 years agoMSE measurement details (no codec changes)
Jean-Marc Valin [Mon, 23 Aug 2010 15:14:35 +0000 (11:14 -0400)]
MSE measurement details (no codec changes)

9 years agoMaking the fine energy allocation code less ugly.
Jean-Marc Valin [Sat, 14 Aug 2010 01:20:37 +0000 (21:20 -0400)]
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).

9 years agoRework coarse energy coding.
Timothy B. Terriberry [Wed, 11 Aug 2010 15:35:24 +0000 (08:35 -0700)]
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.

9 years agoFixes a stereo bug introduced in the previous commit
Jean-Marc Valin [Thu, 12 Aug 2010 00:38:19 +0000 (20:38 -0400)]
Fixes a stereo bug introduced in the previous commit

9 years agoChoosing intra frame energy when it's cheaper than inter
Jean-Marc Valin [Tue, 10 Aug 2010 17:20:21 +0000 (13:20 -0400)]
Choosing intra frame energy when it's cheaper than inter

9 years agoMoving intra decision to quant_coarse_energy()
Jean-Marc Valin [Sun, 8 Aug 2010 13:48:22 +0000 (09:48 -0400)]
Moving intra decision to quant_coarse_energy()

9 years agoShuffling code around -- no change to the algorithm
Jean-Marc Valin [Sun, 8 Aug 2010 02:15:02 +0000 (22:15 -0400)]
Shuffling code around -- no change to the algorithm

9 years agoBit-stream reordering
Jean-Marc Valin [Sun, 8 Aug 2010 01:50:01 +0000 (21:50 -0400)]
Bit-stream reordering

Coarse first, following by transient info, then spreading

9 years agoReorganizing the VBR code
Jean-Marc Valin [Sun, 8 Aug 2010 01:42:03 +0000 (21:42 -0400)]
Reorganizing the VBR code

9 years agoImplemented variable spreading amount in the decoder
Jean-Marc Valin [Sat, 7 Aug 2010 13:21:32 +0000 (09:21 -0400)]
Implemented variable spreading amount in the decoder

Decision not yet implemented in the encoder

9 years agoMinor simplification to exp_rotation().
Timothy B. Terriberry [Sat, 7 Aug 2010 00:05:53 +0000 (17:05 -0700)]
Minor simplification to exp_rotation().

9 years agocomments
Jean-Marc Valin [Fri, 6 Aug 2010 21:04:13 +0000 (17:04 -0400)]
comments

9 years agoeMeans[] quantized to 8 bits
Jean-Marc Valin [Fri, 6 Aug 2010 20:34:58 +0000 (16:34 -0400)]
eMeans[] quantized to 8 bits

9 years agoUsing the real spectral means instead of the ones
Jean-Marc Valin [Fri, 6 Aug 2010 19:56:22 +0000 (15:56 -0400)]
Using the real spectral means instead of the ones
after inter-band prediction

9 years agoAdaptive fine offset value
Jean-Marc Valin [Fri, 6 Aug 2010 18:42:43 +0000 (14:42 -0400)]
Adaptive fine offset value

9 years agoComments
Jean-Marc Valin [Fri, 6 Aug 2010 11:40:11 +0000 (07:40 -0400)]
Comments

9 years agoMore simplifications to N=2 stereo
Jean-Marc Valin [Fri, 6 Aug 2010 01:14:49 +0000 (21:14 -0400)]
More simplifications to N=2 stereo

9 years agoMore N=2 stereo simplifications
Jean-Marc Valin [Fri, 6 Aug 2010 00:35:53 +0000 (20:35 -0400)]
More N=2 stereo simplifications

9 years agoSimplifications to the N=2 stereo split.
Timothy B. Terriberry [Thu, 5 Aug 2010 23:55:58 +0000 (16:55 -0700)]
Simplifications to the N=2 stereo split.

This saves almost 200 bytes of code size.

9 years agoFix dump_modes when requesting multiple modes.
Timothy B. Terriberry [Thu, 5 Aug 2010 23:30:42 +0000 (16:30 -0700)]
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.

9 years agoThis patch makes Tim happy
Jean-Marc Valin [Thu, 5 Aug 2010 22:15:56 +0000 (18:15 -0400)]
This patch makes Tim happy

9 years agoMaking qn code 16-bit clean while simplifying it
Jean-Marc Valin [Thu, 5 Aug 2010 21:39:13 +0000 (17:39 -0400)]
Making qn code 16-bit clean while simplifying it

9 years agoQTHETA_OFFSET* tuning
Jean-Marc Valin [Thu, 5 Aug 2010 20:15:46 +0000 (16:15 -0400)]
QTHETA_OFFSET* tuning

9 years agoSimplified flags encoding
Jean-Marc Valin [Thu, 5 Aug 2010 19:42:50 +0000 (15:42 -0400)]
Simplified flags encoding

9 years agoRemoving pitch prediction code
Jean-Marc Valin [Thu, 5 Aug 2010 19:22:57 +0000 (15:22 -0400)]
Removing pitch prediction code

9 years agoAllowing fractional bits for splitting angle (theta)
Jean-Marc Valin [Thu, 5 Aug 2010 13:16:52 +0000 (09:16 -0400)]
Allowing fractional bits for splitting angle (theta)

9 years agocleanup in qb-related code
Jean-Marc Valin [Thu, 5 Aug 2010 04:07:33 +0000 (00:07 -0400)]
cleanup in qb-related code

9 years agoFixed "forced intensity stereo"
Jean-Marc Valin [Wed, 4 Aug 2010 21:17:18 +0000 (17:17 -0400)]
Fixed "forced intensity stereo"

9 years agoMore float conversion cleanup
Jean-Marc Valin [Wed, 4 Aug 2010 13:13:24 +0000 (09:13 -0400)]
More float conversion cleanup

9 years agoChanging some constants to float
Jean-Marc Valin [Wed, 4 Aug 2010 01:43:41 +0000 (21:43 -0400)]
Changing some constants to float

9 years agoMore FFT cleanup
Jean-Marc Valin [Tue, 3 Aug 2010 20:49:22 +0000 (16:49 -0400)]
More FFT cleanup

9 years agoRemoving files that are no longer needed
Jean-Marc Valin [Tue, 3 Aug 2010 19:49:20 +0000 (15:49 -0400)]
Removing files that are no longer needed

9 years agoDOUBLE_PRECISION and MIXED_PRECISION no longer need to be defined
Jean-Marc Valin [Tue, 3 Aug 2010 19:47:54 +0000 (15:47 -0400)]
DOUBLE_PRECISION and MIXED_PRECISION no longer need to be defined

9 years agoCode simplifications for log->amplitude conversion
Jean-Marc Valin [Mon, 2 Aug 2010 13:41:31 +0000 (09:41 -0400)]
Code simplifications for log->amplitude conversion

9 years agoRemove useless use of "long", remove useless prototypes
Jean-Marc Valin [Mon, 2 Aug 2010 13:01:28 +0000 (09:01 -0400)]
Remove useless use of "long", remove useless prototypes

9 years agoError measurement for stereo as well
Jean-Marc Valin [Thu, 29 Jul 2010 16:32:54 +0000 (18:32 +0200)]
Error measurement for stereo as well

9 years agoMeasuring the normalized error directly within the encoder
Jean-Marc Valin [Thu, 29 Jul 2010 13:01:24 +0000 (15:01 +0200)]
Measuring the normalized error directly within the encoder

9 years agoSeparate qtheta offset for stereo
Jean-Marc Valin [Thu, 29 Jul 2010 10:51:06 +0000 (12:51 +0200)]
Separate qtheta offset for stereo

9 years agoFixing the qtheta dependency for the delta allocation
Jean-Marc Valin [Wed, 28 Jul 2010 20:12:36 +0000 (22:12 +0200)]
Fixing the qtheta dependency for the delta allocation

Removed useless code in transient_analysis()

9 years agoRemoving uselessly low bitrate allocation entries
Jean-Marc Valin [Wed, 28 Jul 2010 08:39:04 +0000 (10:39 +0200)]
Removing uselessly low bitrate allocation entries

9 years agoOnly using triangular split pdf up to 8 bits
Jean-Marc Valin [Wed, 28 Jul 2010 08:34:07 +0000 (10:34 +0200)]
Only using triangular split pdf up to 8 bits

9 years agoupdated cwrs test for previous commit
Jean-Marc Valin [Wed, 28 Jul 2010 08:14:07 +0000 (10:14 +0200)]
updated cwrs test for previous commit