opus.git
9 years agoTuning the bias for the L1 tf metric
Jean-Marc Valin [Fri, 15 Oct 2010 15:26:32 +0000 (11:26 -0400)]
Tuning the bias for the L1 tf metric

9 years agoUnb0rked the VBR code: several units issues that made VBR completely useless
Jean-Marc Valin [Fri, 15 Oct 2010 14:24:53 +0000 (10:24 -0400)]
Unb0rked the VBR code: several units issues that made VBR completely useless

9 years agoModifying the L1 metric for tf analysis by merging together all frequencies.
Jean-Marc Valin [Fri, 15 Oct 2010 06:18:47 +0000 (02:18 -0400)]
Modifying the L1 metric for tf analysis by merging together all frequencies.

Still need to make it use the right channel in stereo.

9 years agoMaking it possible to have two transients in a row for longer frames
Jean-Marc Valin [Wed, 13 Oct 2010 22:03:50 +0000 (18:03 -0400)]
Making it possible to have two transients in a row for longer frames

9 years agoAdding a high-pass filter in front of the transient analysis code
Jean-Marc Valin [Wed, 13 Oct 2010 21:32:57 +0000 (17:32 -0400)]
Adding a high-pass filter in front of the transient analysis code

9 years agoNo longer filling the stereo side with noise.
Jean-Marc Valin [Wed, 13 Oct 2010 15:48:17 +0000 (11:48 -0400)]
No longer filling the stereo side with noise.

9 years agoTaking into account TF decisions for VBR
Jean-Marc Valin [Wed, 13 Oct 2010 05:11:55 +0000 (01:11 -0400)]
Taking into account TF decisions for VBR

9 years agoNew TF decision code based on L1-norm. Needs more work.
Jean-Marc Valin [Wed, 13 Oct 2010 03:25:58 +0000 (23:25 -0400)]
New TF decision code based on L1-norm. Needs more work.

9 years agoDon't take into account silence for the coarse energy means
Jean-Marc Valin [Wed, 13 Oct 2010 02:18:09 +0000 (22:18 -0400)]
Don't take into account silence for the coarse energy means

9 years agoRemove lower bound on bit-rate for tf signalling
Jean-Marc Valin [Tue, 12 Oct 2010 18:55:16 +0000 (14:55 -0400)]
Remove lower bound on bit-rate for tf signalling

9 years agoDynamic allocation before VBR
Jean-Marc Valin [Sun, 10 Oct 2010 02:58:52 +0000 (22:58 -0400)]
Dynamic allocation before VBR

9 years agoRetrained coarse energy mean and beta coefficients
Jean-Marc Valin [Sun, 10 Oct 2010 01:07:51 +0000 (21:07 -0400)]
Retrained coarse energy mean and beta coefficients

9 years agoMaking the allocation slightly less insane at very high rate
Jean-Marc Valin [Mon, 4 Oct 2010 22:01:45 +0000 (18:01 -0400)]
Making the allocation slightly less insane at very high rate

9 years agoUsing high-band noise less aggressively
Jean-Marc Valin [Mon, 4 Oct 2010 18:45:59 +0000 (14:45 -0400)]
Using high-band noise less aggressively

9 years agoAllowing to change the allocation dynamically.
Jean-Marc Valin [Thu, 30 Sep 2010 14:16:22 +0000 (10:16 -0400)]
Allowing to change the allocation dynamically.

Uses a scaling factor that gets applied to the allocation matrix.

Conflicts:

libcelt/celt.c
libcelt/rate.c
libcelt/rate.h

9 years agoUpdates tandem-test for more robust error reporting and additional frame sizes and...
Gregory Maxwell [Wed, 29 Sep 2010 22:56:32 +0000 (18:56 -0400)]
Updates tandem-test for more robust error reporting and additional frame sizes and sample rates.

9 years agoFixes a ibudget bust and a divide-by-zero at very low bit-rate
Jean-Marc Valin [Thu, 30 Sep 2010 00:05:36 +0000 (20:05 -0400)]
Fixes a ibudget bust and a divide-by-zero at very low bit-rate

9 years agoFixes a fixed-point overflow on 16-bit architectures
Jean-Marc Valin [Wed, 29 Sep 2010 22:05:20 +0000 (18:05 -0400)]
Fixes a fixed-point overflow on 16-bit architectures

9 years agoAdds a simple dynamic allocation scheme
Jean-Marc Valin [Wed, 29 Sep 2010 21:39:54 +0000 (17:39 -0400)]
Adds a simple dynamic allocation scheme

This should help on highly tonal signals by increasing the rate of
bands with a lot more energy than the neighbouring bands.

9 years agoPreventing bands from being coded at a rate below (for now) 3/8 bit/sample
Jean-Marc Valin [Tue, 28 Sep 2010 18:56:20 +0000 (14:56 -0400)]
Preventing bands from being coded at a rate below (for now) 3/8 bit/sample

9 years agoInclude tuning from exp_vorbis_tuning (disabled for now)
Jean-Marc Valin [Fri, 24 Sep 2010 12:27:28 +0000 (08:27 -0400)]
Include tuning from exp_vorbis_tuning (disabled for now)

9 years agoFixes a minor folding bug for N=2 bands in stereo
Jean-Marc Valin [Wed, 15 Sep 2010 10:57:55 +0000 (06:57 -0400)]
Fixes a minor folding bug for N=2 bands in stereo

9 years agoAdd an extra safety bit in intra_decision()
Jean-Marc Valin [Tue, 14 Sep 2010 20:43:35 +0000 (16:43 -0400)]
Add an extra safety bit in intra_decision()

9 years agoFixes rare overflow in intra_decision()
Jean-Marc Valin [Tue, 14 Sep 2010 20:06:22 +0000 (16:06 -0400)]
Fixes rare overflow in intra_decision()

9 years agoFixes fixed-point overflow in stereo_merge()
Jean-Marc Valin [Tue, 14 Sep 2010 20:02:47 +0000 (16:02 -0400)]
Fixes fixed-point overflow in stereo_merge()

9 years agoFixes a fixed-point overflow in haar1()
Jean-Marc Valin [Tue, 14 Sep 2010 16:22:17 +0000 (12:22 -0400)]
Fixes a fixed-point overflow in haar1()

9 years agoSpeed up the bit allocator interpolation
Jean-Marc Valin [Tue, 14 Sep 2010 15:05:40 +0000 (11:05 -0400)]
Speed up the bit allocator interpolation

9 years agoFix stereo for N=2
Jean-Marc Valin [Tue, 14 Sep 2010 14:30:32 +0000 (10:30 -0400)]
Fix stereo for N=2

9 years agoCopy lowband when needed instead of undoing the transforms
Jean-Marc Valin [Tue, 14 Sep 2010 13:48:41 +0000 (09:48 -0400)]
Copy lowband when needed instead of undoing the transforms

9 years agoAllowing a max of 8 bits to qtheta
Jean-Marc Valin [Mon, 13 Sep 2010 21:44:48 +0000 (17:44 -0400)]
Allowing a max of 8 bits to qtheta

9 years agoMore quant_band() reorganisation.
Jean-Marc Valin [Mon, 13 Sep 2010 19:06:35 +0000 (15:06 -0400)]
More quant_band() reorganisation.

9 years agoRestructuring in quant_band()
Jean-Marc Valin [Mon, 13 Sep 2010 18:59:13 +0000 (14:59 -0400)]
Restructuring in quant_band()

9 years agoFixing tests on machines with no __builtin_clz()
Jean-Marc Valin [Mon, 13 Sep 2010 18:53:29 +0000 (14:53 -0400)]
Fixing tests on machines with no __builtin_clz()

9 years agoSeparates stereo_band_mix() into the intensity and MS stereo cases
Jean-Marc Valin [Mon, 13 Sep 2010 17:56:21 +0000 (13:56 -0400)]
Separates stereo_band_mix() into the intensity and MS stereo cases

9 years agoAdded stereo_merge(), which does the renormalisation too
Jean-Marc Valin [Mon, 13 Sep 2010 17:44:11 +0000 (13:44 -0400)]
Added stereo_merge(), which does the renormalisation too

9 years agoMacOS X typedef fix
John Ridges [Mon, 13 Sep 2010 15:23:13 +0000 (11:23 -0400)]
MacOS X typedef fix

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()