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

9 years agoSimplification to the transient detection code
Jean-Marc Valin [Fri, 28 May 2010 22:58:42 +0000 (18:58 -0400)]
Simplification to the transient detection code

Discarding the amplitude of the overlap for "frame_max"

9 years agoMore simplifications to the Viterbi code
Jean-Marc Valin [Fri, 28 May 2010 22:01:02 +0000 (18:01 -0400)]
More simplifications to the Viterbi code

9 years agoSimplifications to the tf_res RD code
Jean-Marc Valin [Fri, 28 May 2010 21:50:34 +0000 (17:50 -0400)]
Simplifications to the tf_res RD code

9 years agoViterbi-based RD optimization of the tf_res decisions
Jean-Marc Valin [Fri, 28 May 2010 21:26:27 +0000 (17:26 -0400)]
Viterbi-based RD optimization of the tf_res decisions

9 years agochanging probability of first tf resolution symbol
Jean-Marc Valin [Fri, 28 May 2010 10:56:23 +0000 (06:56 -0400)]
changing probability of first tf resolution symbol

9 years agoAdaptive time-frequency resolution
Jean-Marc Valin [Fri, 28 May 2010 03:56:53 +0000 (23:56 -0400)]
Adaptive time-frequency resolution

Encoding the optimal tf-tradeoff for each band and then
applying it during quantization.

9 years agoAdds a range coder call to encode a single bit with arbitrary probability
Jean-Marc Valin [Thu, 27 May 2010 20:23:52 +0000 (16:23 -0400)]
Adds a range coder call to encode a single bit with arbitrary probability

9 years agoFixed a long-standing rare mismatch
Jean-Marc Valin [Wed, 26 May 2010 19:04:41 +0000 (15:04 -0400)]
Fixed a long-standing rare mismatch

In cases where the coarse energy quantizer wasn't able to
go down fast enough, we could have a negative error that didn't
get clamped.

9 years agoRe-organised the special case for N==1
Jean-Marc Valin [Wed, 26 May 2010 19:04:29 +0000 (15:04 -0400)]
Re-organised the special case for N==1

9 years agoBunch of fixes for frames of 2.5 ms.
Jean-Marc Valin [Wed, 26 May 2010 15:27:32 +0000 (11:27 -0400)]
Bunch of fixes for frames of 2.5 ms.

9 years agoMore recombining "infrastructure"
Jean-Marc Valin [Wed, 26 May 2010 03:54:56 +0000 (23:54 -0400)]
More recombining "infrastructure"

9 years agoCode for recombining bands (not enabled yet)
Jean-Marc Valin [Wed, 26 May 2010 03:15:14 +0000 (23:15 -0400)]
Code for recombining bands (not enabled yet)

9 years agoRemoving the rest of the >32-bit PVQ code
Jean-Marc Valin [Mon, 24 May 2010 13:02:35 +0000 (09:02 -0400)]
Removing the rest of the >32-bit PVQ code

9 years agoMinor code simplifications
Jean-Marc Valin [Fri, 21 May 2010 21:36:58 +0000 (17:36 -0400)]
Minor code simplifications

9 years agoDoing folding from the highest freq possible
Jean-Marc Valin [Fri, 21 May 2010 20:05:47 +0000 (16:05 -0400)]
Doing folding from the highest freq possible

(rather than the lowest)

9 years agoIncreasing the temporal resolution of transients
Jean-Marc Valin [Fri, 21 May 2010 19:44:06 +0000 (15:44 -0400)]
Increasing the temporal resolution of transients

Apply a one-level Haar transform (or Hadamard) on each short MDCT
to nearly double the time-domain resolution.

9 years agoImproving the transient detection
Jean-Marc Valin [Fri, 21 May 2010 18:18:38 +0000 (14:18 -0400)]
Improving the transient detection

When a transient occurs in the overlap between two frames, we
now make sure that both these frames are coded as transients

9 years agoSplitting transients in time domain
Jean-Marc Valin [Fri, 21 May 2010 17:58:51 +0000 (13:58 -0400)]
Splitting transients in time domain

9 years agoMoving code to quant_band()
Jean-Marc Valin [Fri, 21 May 2010 14:44:11 +0000 (10:44 -0400)]
Moving code to quant_band()

9 years agoTuning/cleanup of angle quantization
Jean-Marc Valin [Fri, 21 May 2010 11:54:59 +0000 (07:54 -0400)]
Tuning/cleanup of angle quantization

9 years agoGetting rid of PVQ-level split
Jean-Marc Valin [Fri, 21 May 2010 04:26:03 +0000 (00:26 -0400)]
Getting rid of PVQ-level split

Adding one more level of band splitting so that splitting at the
PVQ encoding level is no longer necessary.

9 years agoMost 5ms bands now have even width
Jean-Marc Valin [Thu, 20 May 2010 02:02:02 +0000 (22:02 -0400)]
Most 5ms bands now have even width

9 years agoTuned the 5ms mode to have a band at 4 kHz and one at 8 kHz
Jean-Marc Valin [Wed, 19 May 2010 20:10:12 +0000 (16:10 -0400)]
Tuned the 5ms mode to have a band at 4 kHz and one at 8 kHz

9 years agoImplemented CELT_SET_START_BAND
Jean-Marc Valin [Wed, 19 May 2010 17:38:10 +0000 (13:38 -0400)]
Implemented CELT_SET_START_BAND

9 years agoSupport for passing your own ec state to the decoder
Jean-Marc Valin [Wed, 19 May 2010 16:05:02 +0000 (12:05 -0400)]
Support for passing your own ec state to the decoder

9 years agoSupport for passing your own ec state to the encoder
Jean-Marc Valin [Wed, 19 May 2010 15:56:57 +0000 (11:56 -0400)]
Support for passing your own ec state to the encoder

9 years agoSaving ~1 kB by using chars for the alloc table
Jean-Marc Valin [Sun, 16 May 2010 03:47:09 +0000 (23:47 -0400)]
Saving ~1 kB by using chars for the alloc table

Also a bunch of comments

9 years agoSharing more code between encode and decode (bis)
Jean-Marc Valin [Wed, 19 May 2010 03:19:19 +0000 (23:19 -0400)]
Sharing more code between encode and decode (bis)

9 years agoMerged encoding/decoding of mono/stereo
Jean-Marc Valin [Sat, 15 May 2010 02:12:33 +0000 (22:12 -0400)]
Merged encoding/decoding of mono/stereo

Now everything is done through quant_all_bands() and quant_band().

9 years agoTrying to prevent PVQ-level splits
Jean-Marc Valin [Fri, 14 May 2010 11:47:30 +0000 (07:47 -0400)]
Trying to prevent PVQ-level splits

We prevent as many as possible, but they can still occur if we
manage to reach the LN limit

9 years agoEntropy-coding the new split parameter.
Jean-Marc Valin [Fri, 14 May 2010 04:17:31 +0000 (00:17 -0400)]
Entropy-coding the new split parameter.

Uses a triangular PDF for coding the angle.

9 years agoNew band splitting method based on the stereo code
Jean-Marc Valin [Thu, 13 May 2010 04:04:57 +0000 (00:04 -0400)]
New band splitting method based on the stereo code

9 years agoStereo quantization also made more generic
Jean-Marc Valin [Wed, 12 May 2010 03:38:23 +0000 (23:38 -0400)]
Stereo quantization also made more generic

9 years agoMaking stereo code a bit more generic
Jean-Marc Valin [Wed, 12 May 2010 03:13:30 +0000 (23:13 -0400)]
Making stereo code a bit more generic

9 years agoTrivial code cleanup
Jean-Marc Valin [Wed, 12 May 2010 01:01:19 +0000 (21:01 -0400)]
Trivial code cleanup

9 years agoProper use of logN and logM for the offsets
Jean-Marc Valin [Tue, 11 May 2010 11:34:24 +0000 (07:34 -0400)]
Proper use of logN and logM for the offsets

9 years agoMaking stereo code use [un]quant_bands() as well
Jean-Marc Valin [Tue, 11 May 2010 01:55:36 +0000 (21:55 -0400)]
Making stereo code use [un]quant_bands() as well

9 years agoAllocation adjustment code in quand_band().
Jean-Marc Valin [Tue, 11 May 2010 01:27:00 +0000 (21:27 -0400)]
Allocation adjustment code in quand_band().

9 years agoCleaning up the folding code.
Jean-Marc Valin [Sun, 9 May 2010 23:45:31 +0000 (19:45 -0400)]
Cleaning up the folding code.

Folding now moved to alg_quant() and alg_unquant(). No more funny short block
alignment checks because bands now have to be aligned.

9 years agoAPI change: optional resynthesis
Jean-Marc Valin [Sat, 8 May 2010 00:30:22 +0000 (20:30 -0400)]
API change: optional resynthesis

The main encode call no longer takes a pointer for the optional resynthesis.
It's now done with a call to celt_encode_resynthesis().

9 years agoFixed pitchEnd wrt to variable frame size. It should (sort of) all work now
Jean-Marc Valin [Fri, 7 May 2010 11:48:07 +0000 (07:48 -0400)]
Fixed pitchEnd wrt to variable frame size. It should (sort of) all work now

9 years agoMore work on variable frame size (getting rid of FRAMESIZE() )
Jean-Marc Valin [Fri, 7 May 2010 11:45:18 +0000 (07:45 -0400)]
More work on variable frame size (getting rid of FRAMESIZE() )

9 years agoChanging the encoder API to add the frame size
Jean-Marc Valin [Fri, 7 May 2010 02:11:48 +0000 (22:11 -0400)]
Changing the encoder API to add the frame size

9 years agoOops! Fixed the fixed-point build
Jean-Marc Valin [Fri, 7 May 2010 00:15:27 +0000 (20:15 -0400)]
Oops! Fixed the fixed-point build

9 years agoFix for very short frame size (M=1)
Jean-Marc Valin [Thu, 6 May 2010 11:38:04 +0000 (07:38 -0400)]
Fix for very short frame size (M=1)

9 years agoYet another step towards variable frame size
Jean-Marc Valin [Thu, 6 May 2010 01:37:53 +0000 (21:37 -0400)]
Yet another step towards variable frame size

9 years agoMore preparation work for variable frame size
Jean-Marc Valin [Wed, 5 May 2010 11:21:21 +0000 (07:21 -0400)]
More preparation work for variable frame size

9 years agoreplaced instances of mode->nbShortMdcts by the dynamic number of MDCTs (M)
Jean-Marc Valin [Wed, 5 May 2010 04:02:26 +0000 (00:02 -0400)]
replaced instances of mode->nbShortMdcts by the dynamic number of MDCTs (M)

9 years agoAllocation table stored with BITRES accuracy based on the short block size
Jean-Marc Valin [Thu, 29 Apr 2010 15:24:11 +0000 (11:24 -0400)]
Allocation table stored with BITRES accuracy based on the short block size

9 years agoshortWindow hadn't been used for a while
Jean-Marc Valin [Thu, 29 Apr 2010 13:58:05 +0000 (09:58 -0400)]
shortWindow hadn't been used for a while

9 years agoShrinking the MDCT's table by separately rotating by the 1/(8N) factor
Jean-Marc Valin [Thu, 29 Apr 2010 02:10:57 +0000 (22:10 -0400)]
Shrinking the MDCT's table by separately rotating by the 1/(8N) factor

9 years agoMaking the band definition the same at all frame sizes.
Jean-Marc Valin [Mon, 26 Apr 2010 11:08:44 +0000 (07:08 -0400)]
Making the band definition the same at all frame sizes.

9 years agoMinor tweak to the band layout offset
Jean-Marc Valin [Wed, 21 Apr 2010 22:09:07 +0000 (18:09 -0400)]
Minor tweak to the band layout offset

9 years agoRe-enabled special stereo code for N=2
Jean-Marc Valin [Wed, 21 Apr 2010 03:52:31 +0000 (23:52 -0400)]
Re-enabled special stereo code for N=2

9 years agoBands are now (again) a multiple of the number of short MDCTs
Jean-Marc Valin [Wed, 21 Apr 2010 03:30:22 +0000 (23:30 -0400)]
Bands are now (again) a multiple of the number of short MDCTs

9 years agoSkipping transient shape renormalisation in the encoder because
Jean-Marc Valin [Tue, 20 Apr 2010 21:31:45 +0000 (17:31 -0400)]
Skipping transient shape renormalisation in the encoder because
our search can now work on vectors that don't have unit norm

9 years agoBump bitstream version now that we broke everything
Jean-Marc Valin [Tue, 20 Apr 2010 14:43:51 +0000 (10:43 -0400)]
Bump bitstream version now that we broke everything

9 years agoTuning the amount of spreading based on Koen's feedback
Jean-Marc Valin [Tue, 20 Apr 2010 04:47:22 +0000 (00:47 -0400)]
Tuning the amount of spreading based on Koen's feedback

9 years agoImproved transient_analysis() by adding one frame of memory.
Jean-Marc Valin [Mon, 19 Apr 2010 17:32:15 +0000 (13:32 -0400)]
Improved transient_analysis() by adding one frame of memory.

9 years agoRemoved unnecessary calls to log2Amp()
Jean-Marc Valin [Mon, 19 Apr 2010 02:47:58 +0000 (22:47 -0400)]
Removed unnecessary calls to log2Amp()

9 years agoDisabling resynthesis when not needed (need to remove folding for this to work)
Jean-Marc Valin [Mon, 19 Apr 2010 02:10:24 +0000 (22:10 -0400)]
Disabling resynthesis when not needed (need to remove folding for this to work)

9 years agoRe-introducing the successive spreading rotations, but in a two-step
Jean-Marc Valin [Sun, 18 Apr 2010 13:57:42 +0000 (09:57 -0400)]
Re-introducing the successive spreading rotations, but in a two-step
scheme. Keeping Hadamard as an option (disabled for now) for transients.

9 years agoCorrected some non-sensical code
Jean-Marc Valin [Sat, 17 Apr 2010 21:29:03 +0000 (17:29 -0400)]
Corrected some non-sensical code

9 years agoConverted a few double-precision constants to single precision
Jean-Marc Valin [Sat, 17 Apr 2010 00:57:56 +0000 (20:57 -0400)]
Converted a few double-precision constants to single precision

9 years agoMaking sure compute_allocation_table() doesn't overrun at lower sampling rates
Jean-Marc Valin [Wed, 14 Apr 2010 22:02:09 +0000 (18:02 -0400)]
Making sure compute_allocation_table() doesn't overrun at lower sampling rates

9 years agoversion string set to 0.8.0-git
Jean-Marc Valin [Wed, 14 Apr 2010 21:45:27 +0000 (17:45 -0400)]
version string set to 0.8.0-git

9 years agoChanged compute_allocation_table() so it handles ebands that start and end in the...
Jean-Marc Valin [Wed, 14 Apr 2010 21:42:22 +0000 (17:42 -0400)]
Changed compute_allocation_table() so it handles ebands that start and end in the same allocation band. Also fixed a minor C89 issue.

9 years agoFix small mode leak (forgot to free the new logN array).
Jean-Marc Valin [Wed, 7 Apr 2010 22:30:28 +0000 (18:30 -0400)]
Fix small mode leak (forgot to free the new logN array).

9 years agoCaching log2_frac(N, BITRES) in the more data to save some CPU
Jean-Marc Valin [Tue, 6 Apr 2010 03:58:44 +0000 (23:58 -0400)]
Caching log2_frac(N, BITRES) in the more data to save some CPU

9 years agoA few minor optimisations (compute_allocation, denormalise_bands,
Jean-Marc Valin [Mon, 5 Apr 2010 13:26:22 +0000 (09:26 -0400)]
A few minor optimisations (compute_allocation, denormalise_bands,
deemphasis)

9 years agoA bit more tuning on the pseudo-frac-Hadamard. Also Trying to improve
Jean-Marc Valin [Sat, 3 Apr 2010 20:30:49 +0000 (16:30 -0400)]
A bit more tuning on the pseudo-frac-Hadamard. Also Trying to improve
transient spreading.

9 years agoDoing the spreading with a "pseudo-fractional-Hadamard" transform
Jean-Marc Valin [Sat, 3 Apr 2010 13:23:29 +0000 (09:23 -0400)]
Doing the spreading with a "pseudo-fractional-Hadamard" transform

9 years agofixed-point: improving accuracy of the energy prediction
Jean-Marc Valin [Sat, 20 Mar 2010 04:41:39 +0000 (00:41 -0400)]
fixed-point: improving accuracy of the energy prediction

9 years agofixed-point: slightly increasing the decoder accuracy again
Jean-Marc Valin [Sat, 20 Mar 2010 03:17:28 +0000 (23:17 -0400)]
fixed-point: slightly increasing the decoder accuracy again

9 years agoUpdate the log2 approximation to accomodate the increased bit precision from bd0610d2...
Timothy B. Terriberry [Tue, 16 Mar 2010 03:49:28 +0000 (23:49 -0400)]
Update the log2 approximation to accomodate the increased bit precision from bd0610d21b28b76095a49e601df44fb792b96369. This requires another term in the power series to reduce the error to the level of truncation (peak absolute error 0.621785). Also refactor the rounding bias term so that further changes to DB_SHIFT will leave the result unbiased.

9 years agofixed-point: Further reduction in mismatch
Jean-Marc Valin [Tue, 16 Mar 2010 02:55:51 +0000 (22:55 -0400)]
fixed-point: Further reduction in mismatch

9 years agofixed-point: reducing the mismatch in the folded part
Jean-Marc Valin [Tue, 16 Mar 2010 00:50:30 +0000 (20:50 -0400)]
fixed-point: reducing the mismatch in the folded part

9 years agoIncreasing log energy resolution
Jean-Marc Valin [Sat, 13 Mar 2010 15:04:19 +0000 (10:04 -0500)]
Increasing log energy resolution

9 years agoUsing the mean energy even when start>0
Jean-Marc Valin [Sat, 13 Mar 2010 03:00:10 +0000 (22:00 -0500)]
Using the mean energy even when start>0

9 years agoImproves fixed-point precision for quant_coarse_energy
Jean-Marc Valin [Fri, 12 Mar 2010 03:20:19 +0000 (22:20 -0500)]
Improves fixed-point precision for quant_coarse_energy

9 years agoFix quant_bands() for start != 0
Jean-Marc Valin [Mon, 1 Mar 2010 12:07:28 +0000 (07:07 -0500)]
Fix quant_bands() for start != 0

9 years agoAllowing CELT to skip the low frequencies
Jean-Marc Valin [Sun, 21 Feb 2010 20:10:22 +0000 (15:10 -0500)]
Allowing CELT to skip the low frequencies

9 years agoUpdating CELT_RESET_STATE to clear some fields that were "recently" added.
John Ridges [Fri, 12 Feb 2010 12:08:01 +0000 (07:08 -0500)]
Updating CELT_RESET_STATE to clear some fields that were "recently" added.

9 years agoGetting "make dist" to work again with the files that got removed
Jean-Marc Valin [Sun, 17 Jan 2010 04:35:45 +0000 (23:35 -0500)]
Getting "make dist" to work again with the files that got removed

9 years agoMisc changes for 0.7.1.
Jean-Marc Valin [Sun, 17 Jan 2010 00:12:06 +0000 (19:12 -0500)]
Misc changes for 0.7.1.

9 years agoChange name of libcelt to libcelt0
Thorvald Natvig [Sat, 16 Jan 2010 13:06:41 +0000 (08:06 -0500)]
Change name of libcelt to libcelt0

9 years agoUpdates celtclient to the new API.
Stefan de Konink [Fri, 8 Jan 2010 02:27:42 +0000 (21:27 -0500)]
Updates celtclient to the new API.

9 years agofixed-point: converted PLC filters and LPC parameters
Jean-Marc Valin [Fri, 1 Jan 2010 14:33:17 +0000 (09:33 -0500)]
fixed-point: converted PLC filters and LPC parameters

9 years agofixed-point: starting conversion of the new PLC
Jean-Marc Valin [Thu, 31 Dec 2009 03:40:24 +0000 (22:40 -0500)]
fixed-point: starting conversion of the new PLC

9 years agoAdding a safeguard against unstable LPC, so now there's no way (that I can
Jean-Marc Valin [Mon, 28 Dec 2009 12:59:42 +0000 (07:59 -0500)]
Adding a safeguard against unstable LPC, so now there's no way (that I can
think of) to produce NaNs in the new PLC.

9 years agoMaking new PLC code work in fixed-point even though it's still using float
Jean-Marc Valin [Mon, 28 Dec 2009 05:34:29 +0000 (00:34 -0500)]
Making new PLC code work in fixed-point even though it's still using float
arithmetic.

9 years agoC89 friendliness
Jean-Marc Valin [Mon, 21 Dec 2009 05:06:12 +0000 (00:06 -0500)]
C89 friendliness

9 years agoThis fixes a bug in stereo PLC (offset wasn't changed between channels)
Jean-Marc Valin [Thu, 17 Dec 2009 03:42:32 +0000 (22:42 -0500)]
This fixes a bug in stereo PLC (offset wasn't changed between channels)

9 years agoPLC: Added lag windowing and constraint to synthesis energy
Jean-Marc Valin [Tue, 15 Dec 2009 02:19:37 +0000 (21:19 -0500)]
PLC: Added lag windowing and constraint to synthesis energy

10 years agoVarlength arrays fix for C89
Thorvald Natvig [Fri, 11 Dec 2009 12:19:09 +0000 (13:19 +0100)]
Varlength arrays fix for C89

10 years agoNew LPC-based PLC code
Jean-Marc Valin [Fri, 11 Dec 2009 05:07:31 +0000 (00:07 -0500)]
New LPC-based PLC code

10 years agoOops, forgot to free the pitch bufer
Jean-Marc Valin [Thu, 3 Dec 2009 02:07:11 +0000 (21:07 -0500)]
Oops, forgot to free the pitch bufer