opus.git
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

9 years agoEliminate the loop when decoding the split angle.
Timothy B. Terriberry [Tue, 27 Jul 2010 22:09:51 +0000 (15:09 -0700)]
Eliminate the loop when decoding the split angle.

Use a closed-form formula for the search instead.
This requires an integer sqrt, so it is not actually closed-form,
 but the number of iterations is O(qb) instead of O(2**qb).

9 years agoEliminate the loop when encoding the split angle.
Timothy B. Terriberry [Tue, 27 Jul 2010 20:33:55 +0000 (13:33 -0700)]
Eliminate the loop when encoding the split angle.

Use a closed-form formula for the codebook parameters instead.

9 years agoBit allocation
Jean-Marc Valin [Tue, 27 Jul 2010 20:39:15 +0000 (22:39 +0200)]
Bit allocation

Also convert the stereo split code to use log(N)/2 as the bit allocation
offset

9 years agoAdjust fine bits allocation.
Timothy B. Terriberry [Tue, 27 Jul 2010 14:49:24 +0000 (07:49 -0700)]
Adjust fine bits allocation.

The old code allocated too many fine bits to large bands.
New allocations were derived from by numerical optimization using quantization
 MSE sampled from Laplacian distributed random data to within +/- 1 bit for
 N=2...160 and bits per band from 0 to 64.
Those allocations could be modeled with only minor errors using a simple offset
 of 19/8+log2(N), with no bits spent on fine energy when there would not be
 enough bits remaining to code a single pulse.
However, PEAQ testing suggested an offset of 14/8 was better, and that it was
 always worth spending at least one bit on fine energy.

9 years agoMore cleanup
Jean-Marc Valin [Sun, 25 Jul 2010 02:06:29 +0000 (22:06 -0400)]
More cleanup

9 years agoSpreading code cleanup -- now allowing tf change when spreading is off
Jean-Marc Valin [Sun, 25 Jul 2010 01:36:44 +0000 (21:36 -0400)]
Spreading code cleanup -- now allowing tf change when spreading is off

9 years agoUsing random noise in upper bands when signal is "normal"
Jean-Marc Valin [Sat, 24 Jul 2010 21:13:17 +0000 (17:13 -0400)]
Using random noise in upper bands when signal is "normal"

9 years agoCodec state simplification
Jean-Marc Valin [Sat, 24 Jul 2010 15:48:10 +0000 (11:48 -0400)]
Codec state simplification

Making the preemphasis memory an array of two, removing unused fields

9 years agoUpdated static mode generation for latest changes
Jean-Marc Valin [Sat, 24 Jul 2010 11:59:08 +0000 (07:59 -0400)]
Updated static mode generation for latest changes

9 years agoJust removing old code that was commented out anyway
Jean-Marc Valin [Fri, 23 Jul 2010 21:46:53 +0000 (17:46 -0400)]
Just removing old code that was commented out anyway

9 years agoCleanup, de-inlining some math functions
Jean-Marc Valin [Fri, 23 Jul 2010 21:28:50 +0000 (17:28 -0400)]
Cleanup, de-inlining some math functions

9 years agoMaking a bunch of things static
Jean-Marc Valin [Fri, 23 Jul 2010 21:02:23 +0000 (17:02 -0400)]
Making a bunch of things static

9 years agoCleaning up intra_decision()
Jean-Marc Valin [Fri, 23 Jul 2010 20:54:20 +0000 (16:54 -0400)]
Cleaning up intra_decision()

9 years agoEnergy quantization tuning.
Jean-Marc Valin [Fri, 23 Jul 2010 20:10:36 +0000 (16:10 -0400)]
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.

9 years agoFixes a bug that could turn off folding at low rate when specifying
Jean-Marc Valin [Tue, 20 Jul 2010 21:30:31 +0000 (17:30 -0400)]
Fixes a bug that could turn off folding at low rate when specifying
a start band.

9 years agoThe coarse energy budget is no longer part of the bit-stream.
Jean-Marc Valin [Mon, 19 Jul 2010 18:32:40 +0000 (14:32 -0400)]
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.

9 years agoError checking on the decoder side
Jean-Marc Valin [Mon, 19 Jul 2010 01:20:35 +0000 (21:20 -0400)]
Error checking on the decoder side

9 years agoEncoder now has a way to check whether an error has occurred
Jean-Marc Valin [Sun, 18 Jul 2010 13:42:05 +0000 (09:42 -0400)]
Encoder now has a way to check whether an error has occurred

9 years agoThe encoder and decoder can now process audio encoded at a higher rate
Jean-Marc Valin [Sat, 17 Jul 2010 01:48:44 +0000 (21:48 -0400)]
The encoder and decoder can now process audio encoded at a higher rate
than what they're running at.

9 years agoSome work towards being able to encode a 48 kHz stream from 32 kHz audio (incomplete)
Jean-Marc Valin [Fri, 16 Jul 2010 22:12:45 +0000 (18:12 -0400)]
Some work towards being able to encode a 48 kHz stream from 32 kHz audio (incomplete)

9 years agoAll modes based on 2.5 ms short blocks now use the same definition
Jean-Marc Valin [Fri, 16 Jul 2010 19:55:30 +0000 (15:55 -0400)]
All modes based on 2.5 ms short blocks now use the same definition

9 years agoConsidering the end band in more places in the code
Jean-Marc Valin [Fri, 16 Jul 2010 19:25:30 +0000 (15:25 -0400)]
Considering the end band in more places in the code

9 years agoEncoding transient_time independently of the sampling rate
Jean-Marc Valin [Fri, 16 Jul 2010 18:23:03 +0000 (14:23 -0400)]
Encoding transient_time independently of the sampling rate

9 years agoNumber of short blocks now based on the frame duration instead of the
Jean-Marc Valin [Fri, 16 Jul 2010 16:00:00 +0000 (12:00 -0400)]
Number of short blocks now based on the frame duration instead of the
number of samples

9 years agoBetter support for non-48 kHz sampling rates
Jean-Marc Valin [Fri, 16 Jul 2010 15:47:50 +0000 (11:47 -0400)]
Better support for non-48 kHz sampling rates

9 years agoPre-emphasis coefficients now part of the mode and has a numerator as well
Jean-Marc Valin [Fri, 16 Jul 2010 15:05:06 +0000 (11:05 -0400)]
Pre-emphasis coefficients now part of the mode and has a numerator as well
as a denominator

9 years agoUsing short blocks a bit more often now that we have variable tf resolution
Jean-Marc Valin [Thu, 15 Jul 2010 21:57:50 +0000 (17:57 -0400)]
Using short blocks a bit more often now that we have variable tf resolution

9 years agoHandling the start band and end band in tf encoding
Jean-Marc Valin [Tue, 13 Jul 2010 20:50:11 +0000 (16:50 -0400)]
Handling the start band and end band in tf encoding

9 years agoSupport for adjusting the end band
Jean-Marc Valin [Tue, 13 Jul 2010 18:14:16 +0000 (14:14 -0400)]
Support for adjusting the end band

9 years ago16-bit bitrev table
Jean-Marc Valin [Fri, 9 Jul 2010 01:02:05 +0000 (21:02 -0400)]
16-bit bitrev table

9 years agoSharing of the twiddles across multiple FFTs
Jean-Marc Valin [Fri, 9 Jul 2010 00:54:32 +0000 (20:54 -0400)]
Sharing of the twiddles across multiple FFTs

9 years agoVersion string update
Jean-Marc Valin [Thu, 8 Jul 2010 19:30:58 +0000 (15:30 -0400)]
Version string update

9 years agoUpdated draft for 0.8.1
Jean-Marc Valin [Thu, 8 Jul 2010 19:28:08 +0000 (15:28 -0400)]
Updated draft for 0.8.1

9 years agoFix accidental change of celt_alloc() to non-inline
Jean-Marc Valin [Thu, 8 Jul 2010 18:35:29 +0000 (14:35 -0400)]
Fix accidental change of celt_alloc() to non-inline

9 years agoietf draft update (incomplete)
Jean-Marc Valin [Thu, 8 Jul 2010 18:34:42 +0000 (14:34 -0400)]
ietf draft update (incomplete)

9 years agoSharing twiddle factors across all MDCTs
Jean-Marc Valin [Thu, 8 Jul 2010 01:26:38 +0000 (21:26 -0400)]
Sharing twiddle factors across all MDCTs

9 years agoSome code cleanup in the FFT.
Jean-Marc Valin [Wed, 7 Jul 2010 16:00:43 +0000 (12:00 -0400)]
Some code cleanup in the FFT.

Also dropped support for radices above 5.

9 years agoFixed C99-style declaration
Jean-Marc Valin [Wed, 7 Jul 2010 00:25:54 +0000 (20:25 -0400)]
Fixed C99-style declaration

9 years agoUpdating DISABLE_FLOAT_API use
Jean-Marc Valin [Tue, 6 Jul 2010 23:37:23 +0000 (19:37 -0400)]
Updating DISABLE_FLOAT_API use

9 years agofixes an int vs celt_int32 mismatch
Jean-Marc Valin [Tue, 6 Jul 2010 22:58:19 +0000 (18:58 -0400)]
fixes an int vs celt_int32 mismatch

9 years agofixed point bug fix in tf_analysis()
Jean-Marc Valin [Tue, 6 Jul 2010 21:54:33 +0000 (17:54 -0400)]
fixed point bug fix in tf_analysis()

9 years agoAnother coarse budget fix for _ec() calls
Jean-Marc Valin [Mon, 5 Jul 2010 18:33:49 +0000 (14:33 -0400)]
Another coarse budget fix for _ec() calls

9 years agoFixed a few more issues with the _ec() calls.
Jean-Marc Valin [Mon, 5 Jul 2010 17:52:41 +0000 (13:52 -0400)]
Fixed a few more issues with the _ec() calls.

9 years agoFix misleading comments about ec_{enc|dec}_tell()
Jean-Marc Valin [Mon, 5 Jul 2010 04:33:00 +0000 (00:33 -0400)]
Fix misleading comments about ec_{enc|dec}_tell()

9 years agogitignore update
Jean-Marc Valin [Sat, 3 Jul 2010 13:28:15 +0000 (09:28 -0400)]
gitignore update

9 years agoPrototypes for the _ec variants of the calls
Jean-Marc Valin [Thu, 1 Jul 2010 14:14:20 +0000 (10:14 -0400)]
Prototypes for the _ec variants of the calls

9 years agoOops, fixed an uninitialized var error
Jean-Marc Valin [Mon, 28 Jun 2010 21:22:37 +0000 (17:22 -0400)]
Oops, fixed an uninitialized var error

9 years agoSome C90-ication
Jean-Marc Valin [Mon, 28 Jun 2010 01:55:08 +0000 (21:55 -0400)]
Some C90-ication

9 years agoUpdating various version strings
Jean-Marc Valin [Mon, 28 Jun 2010 01:43:34 +0000 (21:43 -0400)]
Updating various version strings

9 years agoNo need for --enable-new-plc anymore (always on)
Jean-Marc Valin [Sun, 27 Jun 2010 17:52:08 +0000 (13:52 -0400)]
No need for --enable-new-plc anymore (always on)

9 years agoMode cleanup (removed redundant mdctSize field)
Jean-Marc Valin [Sun, 27 Jun 2010 17:49:38 +0000 (13:49 -0400)]
Mode cleanup (removed redundant mdctSize field)

9 years agoThink I got static modes working again
Jean-Marc Valin [Sun, 27 Jun 2010 13:56:26 +0000 (09:56 -0400)]
Think I got static modes working again

9 years agoUpdating static modes (not done yet)
Jean-Marc Valin [Sun, 27 Jun 2010 13:51:20 +0000 (09:51 -0400)]
Updating static modes (not done yet)