opus.git
8 years agoReworked the allocation trim to be absolute (in bits/sample) rather relative
Jean-Marc Valin [Fri, 22 Oct 2010 18:57:07 +0000 (14:57 -0400)]
Reworked the allocation trim to be absolute (in bits/sample) rather relative

Also making use of alloc_trim_analysis() again because the effect of
inter-channel correlation on the bitstream is really in terms of absolute
number of bits/samples.

8 years agoPrevents a folding artefact due to "folding the folding"
Jean-Marc Valin [Thu, 21 Oct 2010 21:50:27 +0000 (17:50 -0400)]
Prevents a folding artefact due to "folding the folding"

8 years agoAlternate tuning found using exp_tuning_knobs (disabled by default)
Jean-Marc Valin [Thu, 21 Oct 2010 21:10:24 +0000 (17:10 -0400)]
Alternate tuning found using exp_tuning_knobs (disabled by default)

8 years agoTuning the folding bands.
Jean-Marc Valin [Thu, 21 Oct 2010 19:08:27 +0000 (15:08 -0400)]
Tuning the folding bands.

The idea here is that it's better to fold a higher band -- even if it was
coded less accurately -- than a lower band that may have a different
temporal structure.

8 years agoallocation trim doesn't make sense for stereo after all
Jean-Marc Valin [Tue, 19 Oct 2010 20:40:24 +0000 (16:40 -0400)]
allocation trim doesn't make sense for stereo after all

8 years agoFirst shot at automatically adjusting the "allocation trim" for stereo.
Jean-Marc Valin [Tue, 19 Oct 2010 18:24:50 +0000 (14:24 -0400)]
First shot at automatically adjusting the "allocation trim" for stereo.

Also fixed a fixed-point breakage.

8 years agoSimplifying transient_analysis() now that we don't care about the time window
Jean-Marc Valin [Mon, 18 Oct 2010 21:27:56 +0000 (17:27 -0400)]
Simplifying transient_analysis() now that we don't care about the time window

8 years agoMaking sure we can use up to 128 pulses.
Jean-Marc Valin [Mon, 18 Oct 2010 20:20:00 +0000 (16:20 -0400)]
Making sure we can use up to 128 pulses.

Previous limit was effectively 120.

8 years agoRemoving renormalise_bands()
Jean-Marc Valin [Mon, 18 Oct 2010 19:26:46 +0000 (15:26 -0400)]
Removing renormalise_bands()

8 years agos/const/static const/
Jean-Marc Valin [Mon, 18 Oct 2010 19:10:33 +0000 (15:10 -0400)]
s/const/static const/

8 years agoRemoving both the transient window and the mdct_weight_shift.
Jean-Marc Valin [Mon, 18 Oct 2010 18:55:42 +0000 (14:55 -0400)]
Removing both the transient window and the mdct_weight_shift.

Both ended up causing more harm than good (e.g. violating energy conservation)
and provided little benefit. This also saves ~3 kB code size on x86-86.

8 years agoTurning off time-domain window pending decision on what to do with it.
Jean-Marc Valin [Mon, 18 Oct 2010 04:34:32 +0000 (00:34 -0400)]
Turning off time-domain window pending decision on what to do with it.

8 years agoRemoving dead code found by LLVM's static analysis
Jean-Marc Valin [Sun, 17 Oct 2010 20:25:56 +0000 (16:25 -0400)]
Removing dead code found by LLVM's static analysis

8 years agoOptimised float->int cast for Win64
John Ridges [Sat, 16 Oct 2010 22:00:54 +0000 (18:00 -0400)]
Optimised float->int cast for Win64

I've been compiling CELT for 64-bit Windows and it all seems to work
fine (with the occasional benign warning message) except for one place,
and that is in "float_cast.h" where there is some inline assembly
language that gets complied for Windows. Since the Microsoft 64-bit
compiler won't allow inline assembly language (and *still* doesn't have
"lrintf").

8 years agoFixed fixed-point overflow for 2.5 ms frames.
Jean-Marc Valin [Sat, 16 Oct 2010 04:01:27 +0000 (00:01 -0400)]
Fixed fixed-point overflow for 2.5 ms frames.

8 years agoFolding code moved to quant_band() to prevent duplication.
Jean-Marc Valin [Sat, 16 Oct 2010 03:43:45 +0000 (23:43 -0400)]
Folding code moved to quant_band() to prevent duplication.

8 years agoMore VQ search simplifications
Jean-Marc Valin [Sat, 16 Oct 2010 03:31:06 +0000 (23:31 -0400)]
More VQ search simplifications

8 years agoRemoving yshift from the fixed-point VQ search
Jean-Marc Valin [Sat, 16 Oct 2010 02:55:35 +0000 (22:55 -0400)]
Removing yshift from the fixed-point VQ search

8 years agoMore simplifications to the VQ search
Jean-Marc Valin [Sat, 16 Oct 2010 02:45:02 +0000 (22:45 -0400)]
More simplifications to the VQ search

8 years agoVQ search no longer needs to put more than one pulse at a time
Jean-Marc Valin [Sat, 16 Oct 2010 02:06:36 +0000 (22:06 -0400)]
VQ search no longer needs to put more than one pulse at a time

8 years agotweaks to the split delta for transients
Jean-Marc Valin [Fri, 15 Oct 2010 21:45:33 +0000 (17:45 -0400)]
tweaks to the split delta for transients

8 years agoTransient detection fix for the case where a transient occurs during the overlap
Jean-Marc Valin [Fri, 15 Oct 2010 18:17:13 +0000 (14:17 -0400)]
Transient detection fix for the case where a transient occurs during the overlap

8 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

8 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

8 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.

8 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

8 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

8 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.

8 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

8 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.

8 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

8 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

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

8 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

8 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

8 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

8 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

8 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.

8 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

8 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

8 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.

8 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

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

8 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

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

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

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

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

8 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

8 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

8 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

8 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

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

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

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

8 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

8 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

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

8 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

8 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

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

8 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

8 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

8 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.

8 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.

8 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

8 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

8 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

8 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

8 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

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

8 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

8 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

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

8 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

8 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

8 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.

8 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

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

8 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

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

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

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

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

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

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

8 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

8 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.

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

8 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.

8 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

8 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

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

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

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

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

8 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.

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

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

8 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