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

9 years agoRemoving some warnings
Jean-Marc Valin [Sun, 27 Jun 2010 04:53:51 +0000 (00:53 -0400)]
Removing some warnings

9 years agoImproved quality of small frame sizes at low bitrate.
Jean-Marc Valin [Wed, 23 Jun 2010 19:22:54 +0000 (15:22 -0400)]
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.

9 years agoPreventing ridiculous bit depths > 16 bit/sample
Jean-Marc Valin [Wed, 23 Jun 2010 01:26:16 +0000 (21:26 -0400)]
Preventing ridiculous bit depths > 16 bit/sample

9 years agoImproved code for reusing ec structures
Jean-Marc Valin [Tue, 22 Jun 2010 01:39:44 +0000 (21:39 -0400)]
Improved code for reusing ec structures

Using the number of unallocated bytes for coarse quantization and VBR
instead the total number of bytes.

9 years agoNo need to memset() the byte buffer
Jean-Marc Valin [Mon, 21 Jun 2010 21:55:28 +0000 (17:55 -0400)]
No need to memset() the byte buffer

9 years agoCompile fix for MSVC
Benjamin Jemlich [Mon, 21 Jun 2010 12:31:00 +0000 (14:31 +0200)]
Compile fix for MSVC

9 years agoBumping LT_CURRENT
Jean-Marc Valin [Mon, 21 Jun 2010 11:15:47 +0000 (07:15 -0400)]
Bumping LT_CURRENT

9 years agoremoving some warnings
Jean-Marc Valin [Mon, 21 Jun 2010 05:01:17 +0000 (01:01 -0400)]
removing some warnings

9 years agoFixed testcase
Jean-Marc Valin [Mon, 21 Jun 2010 04:13:35 +0000 (00:13 -0400)]
Fixed testcase

9 years agoRemoving old PCL, added plc.h
Jean-Marc Valin [Mon, 21 Jun 2010 02:48:50 +0000 (22:48 -0400)]
Removing old PCL, added plc.h

9 years agoComments, code cleanup
Jean-Marc Valin [Sat, 19 Jun 2010 14:27:28 +0000 (10:27 -0400)]
Comments, code cleanup

9 years agofixed-point: New PLC now enabled by default
Jean-Marc Valin [Fri, 18 Jun 2010 00:25:51 +0000 (20:25 -0400)]
fixed-point: New PLC now enabled by default

9 years agofixed-point: More work on the PLC
Jean-Marc Valin [Fri, 18 Jun 2010 00:10:02 +0000 (20:10 -0400)]
fixed-point: More work on the PLC

9 years agofixed-point: PLC auto-correlation converted
Jean-Marc Valin [Thu, 17 Jun 2010 11:32:20 +0000 (07:32 -0400)]
fixed-point: PLC auto-correlation converted

9 years agominor tweaks to frac_div32()
Jean-Marc Valin [Thu, 17 Jun 2010 04:35:26 +0000 (00:35 -0400)]
minor tweaks to frac_div32()

9 years agoFixed-point version of frac_div32()
Jean-Marc Valin [Thu, 17 Jun 2010 04:11:54 +0000 (00:11 -0400)]
Fixed-point version of frac_div32()

9 years agoMore work on fixed-point Levinson-Durbin
Jean-Marc Valin [Thu, 17 Jun 2010 02:38:57 +0000 (22:38 -0400)]
More work on fixed-point Levinson-Durbin

9 years agoImplementing two choices for the tf resolution
Jean-Marc Valin [Sun, 13 Jun 2010 12:06:28 +0000 (08:06 -0400)]
Implementing two choices for the tf resolution

9 years agoRemove unnecessary free of global stack on error
Jean-Marc Valin [Wed, 9 Jun 2010 01:01:41 +0000 (21:01 -0400)]
Remove unnecessary free of global stack on error

9 years agoCompletely disabling the tf code at low bitrate
Jean-Marc Valin [Mon, 7 Jun 2010 03:16:40 +0000 (23:16 -0400)]
Completely disabling the tf code at low bitrate

9 years agoEncoding the tf parameters after coarse energy
Jean-Marc Valin [Sun, 6 Jun 2010 03:12:19 +0000 (23:12 -0400)]
Encoding the tf parameters after coarse energy

Also a minor cleanup to the recombining/division

9 years agoDoing the log2Amp() just in one place
Jean-Marc Valin [Sat, 5 Jun 2010 05:18:40 +0000 (01:18 -0400)]
Doing the log2Amp() just in one place

9 years agonothing to see here
Jean-Marc Valin [Fri, 4 Jun 2010 04:13:19 +0000 (00:13 -0400)]
nothing to see here

9 years agoCompletely removed the old allocation table.
Jean-Marc Valin [Fri, 4 Jun 2010 03:29:35 +0000 (23:29 -0400)]
Completely removed the old allocation table.

Also made the new table an unsigned char array.

9 years agoBase everything on the "standard allocation table"
Jean-Marc Valin [Fri, 4 Jun 2010 02:11:41 +0000 (22:11 -0400)]
Base everything on the "standard allocation table"

9 years agoUsing allocation table for "standard" frame sizes
Jean-Marc Valin [Thu, 3 Jun 2010 12:12:11 +0000 (08:12 -0400)]
Using allocation table for "standard" frame sizes

9 years agoAllocation table now in bits/sample
Jean-Marc Valin [Thu, 3 Jun 2010 04:33:42 +0000 (00:33 -0400)]
Allocation table now in bits/sample

9 years agoChanging the allocator resolution to 1/8 bit
Jean-Marc Valin [Thu, 3 Jun 2010 01:25:19 +0000 (21:25 -0400)]
Changing the allocator resolution to 1/8 bit

Should eventually allow using 8-bit values for the pulse->bits table.

9 years agoFix for PLC crash when using large frames
Jean-Marc Valin [Tue, 1 Jun 2010 04:30:37 +0000 (00:30 -0400)]
Fix for PLC crash when using large frames

9 years agoTrying not to crash on bit errors
Jean-Marc Valin [Tue, 1 Jun 2010 01:56:12 +0000 (21:56 -0400)]
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.

9 years agoremoved stupid code in transient_analysis()
Jean-Marc Valin [Tue, 1 Jun 2010 01:35:40 +0000 (21:35 -0400)]
removed stupid code in transient_analysis()

9 years agoFixed stupid bug for single-sample bands
Jean-Marc Valin [Mon, 31 May 2010 13:51:36 +0000 (09:51 -0400)]
Fixed stupid bug for single-sample bands

9 years agoChange ec_{enc|dec}_bit_prob to take probabilities in units of 1/65536 instead of...
Timothy B. Terriberry [Sun, 30 May 2010 03:02:33 +0000 (23:02 -0400)]
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.

9 years agoProvide direct implementations ec_{enc|dec}_bit_prob() that do not require a division...
Timothy B. Terriberry [Sun, 30 May 2010 02:47:37 +0000 (22:47 -0400)]
Provide direct implementations ec_{enc|dec}_bit_prob() that do not require a division instead of using the normal entropy coder path. This should be exactly equivalent to the existing code.

9 years agoCleaning up VBR to be frame-size independent
Jean-Marc Valin [Sat, 29 May 2010 12:07:18 +0000 (08:07 -0400)]
Cleaning up VBR to be frame-size independent

9 years agoFolding tuning
Jean-Marc Valin [Sat, 29 May 2010 04:28:06 +0000 (00:28 -0400)]
Folding tuning

Trying to fold only from regions where we have at least 2 bits of depth

9 years agoRD optimisation now takes bitrate into account
Jean-Marc Valin [Sat, 29 May 2010 01:12:39 +0000 (21:12 -0400)]
RD optimisation now takes bitrate into account