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

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

9 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

9 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

9 years agoFixing (read) array overrun for 1024-sample frames.
George de Vries [Thu, 3 Dec 2009 01:59:44 +0000 (20:59 -0500)]
Fixing (read) array overrun for 1024-sample frames.

9 years agoSome work on the pitch search weighting filter (still disabled)
Jean-Marc Valin [Wed, 2 Dec 2009 12:04:28 +0000 (07:04 -0500)]
Some work on the pitch search weighting filter (still disabled)

9 years agoReorganised the pitch code to simplify the PLC case and fixed a buffer overflow
Jean-Marc Valin [Thu, 26 Nov 2009 05:39:36 +0000 (00:39 -0500)]
Reorganised the pitch code to simplify the PLC case and fixed a buffer overflow
introduced in Thorvald's previous patch.

9 years agoFixing a few memory errors
Jean-Marc Valin [Thu, 26 Nov 2009 01:38:52 +0000 (20:38 -0500)]
Fixing a few memory errors

9 years agoUse stack_alloc for pitch.c
Thorvald Natvig [Wed, 25 Nov 2009 00:02:42 +0000 (01:02 +0100)]
Use stack_alloc for pitch.c

9 years agominor code cleanup
Jean-Marc Valin [Sun, 22 Nov 2009 04:41:26 +0000 (23:41 -0500)]
minor code cleanup

9 years agoRenamed MDCT functions to avoid symbol clashes with Vorbis
Jean-Marc Valin [Sun, 22 Nov 2009 02:57:44 +0000 (21:57 -0500)]
Renamed MDCT functions to avoid symbol clashes with Vorbis

9 years agoRemoving original freq-domain pitch code
Jean-Marc Valin [Mon, 9 Nov 2009 04:51:54 +0000 (13:51 +0900)]
Removing original freq-domain pitch code

9 years agoTemporal pitch search
Jean-Marc Valin [Sun, 8 Nov 2009 13:29:54 +0000 (22:29 +0900)]
Temporal pitch search

9 years agocelt_ilog2() is only used in fixed-point mode
Jean-Marc Valin [Sat, 31 Oct 2009 17:43:43 +0000 (13:43 -0400)]
celt_ilog2() is only used in fixed-point mode

9 years agoExpose the normalized range for reciprocal square roots in fixed-point mode. This...
Timothy Terriberry [Sat, 31 Oct 2009 17:19:06 +0000 (10:19 -0700)]
Expose the normalized range for reciprocal square roots in fixed-point mode. This allows subsequnt calculations to use the full precision of the result.

9 years agoSMALL_FOOTPRINT preserves the special n=1 cwrs case
Jean-Marc Valin [Sat, 24 Oct 2009 18:29:15 +0000 (14:29 -0400)]
SMALL_FOOTPRINT preserves the special n=1 cwrs case

9 years agoAdded a SMALL_FOOTPRINT option
Jean-Marc Valin [Sat, 24 Oct 2009 15:44:07 +0000 (11:44 -0400)]
Added a SMALL_FOOTPRINT option

9 years agomisc minor changes
Jean-Marc Valin [Sat, 24 Oct 2009 15:24:34 +0000 (11:24 -0400)]
misc minor changes

9 years agoremoving more unused code
Jean-Marc Valin [Sat, 24 Oct 2009 02:33:25 +0000 (22:33 -0400)]
removing more unused code

9 years agoRemoving unused code in the entropy coder
Jean-Marc Valin [Sat, 24 Oct 2009 01:44:54 +0000 (21:44 -0400)]
Removing unused code in the entropy coder

9 years agodoxygen fix
Jean-Marc Valin [Fri, 23 Oct 2009 01:14:22 +0000 (21:14 -0400)]
doxygen fix

9 years agoprevent busting at ridiculously low bit-rate VBR
Jean-Marc Valin [Thu, 22 Oct 2009 04:23:56 +0000 (00:23 -0400)]
prevent busting at ridiculously low bit-rate VBR

9 years agoMaking sure the VBR controller never busts the number of bytes allowed
Jean-Marc Valin [Thu, 22 Oct 2009 04:12:31 +0000 (00:12 -0400)]
Making sure the VBR controller never busts the number of bytes allowed

9 years agoBetter computation of the VBR rate upper bound and reducing the coarse energy
Jean-Marc Valin [Thu, 22 Oct 2009 03:24:18 +0000 (23:24 -0400)]
Better computation of the VBR rate upper bound and reducing the coarse energy
budget at low bitrate.

9 years agoEnhancements the fixed-point approximations of non-linear functions.
Timothy B. Terriberry [Wed, 21 Oct 2009 04:18:41 +0000 (00:18 -0400)]
Enhancements the fixed-point approximations of non-linear functions.

Accuracy for rsqrt, rcp, cos, and log2 is now at the level of truncation error
 for the current output resolution of these functions.
sqrt and exp2 still have non-trivial algebraic error, but this cannot be
 reduced much further using the current method without additional computation.
Also updates the fast float approximations for log2 and exp2 with coefficients
 that give slightly lower maximum relative error.

Patch modified by Jean-Marc Valin to leave the cos approximation as is and
leave the check for x<-15 in exp2 as is.

9 years agoAllow coarse energy to take almost all the bits. Also, fixed a some issues with
Jean-Marc Valin [Wed, 21 Oct 2009 11:08:27 +0000 (07:08 -0400)]
Allow coarse energy to take almost all the bits. Also, fixed a some issues with
the VBR rate controller.

9 years agoMaking the multiplication in normalise_residual() produce a 32-bit result just
Jean-Marc Valin [Tue, 20 Oct 2009 11:22:04 +0000 (07:22 -0400)]
Making the multiplication in normalise_residual() produce a 32-bit result just
to be on the safe side (not that I observed any overflow, but I can't prove
it can't happen).

9 years agoAccuracy improvements to the fixed-point celt_rsqrt().
Timothy B. Terriberry [Tue, 20 Oct 2009 06:39:45 +0000 (02:39 -0400)]
Accuracy improvements to the fixed-point celt_rsqrt().

9 years agoThis should prevent a rare divide-by-zero in the pitch gain code
Jean-Marc Valin [Tue, 20 Oct 2009 11:13:35 +0000 (07:13 -0400)]
This should prevent a rare divide-by-zero in the pitch gain code

9 years agoNew VBR rate controller that doesn't allow more than one frame worth of excess
Jean-Marc Valin [Tue, 20 Oct 2009 04:25:31 +0000 (00:25 -0400)]
New VBR rate controller that doesn't allow more than one frame worth of excess
bit-rate

9 years agofixed a few trivial bugs: exporting celt_strerror(), changed DB_SCALING to a
Jean-Marc Valin [Mon, 19 Oct 2009 23:07:38 +0000 (19:07 -0400)]
fixed a few trivial bugs: exporting celt_strerror(), changed DB_SCALING to a
shift and removed the chec for DISABLE_STEREO in the mode creation.

9 years agoRemoved the _t from all the celt*_t types to avoid clashing with POSIX
Jean-Marc Valin [Sun, 18 Oct 2009 02:12:42 +0000 (22:12 -0400)]
Removed the _t from all the celt*_t types to avoid clashing with POSIX

9 years agoUpdated copyright notices
Jean-Marc Valin [Sun, 18 Oct 2009 01:40:10 +0000 (21:40 -0400)]
Updated copyright notices

9 years agoChanged all the celt*int*_t types to remove the _t suffix, which is reserved
Jean-Marc Valin [Sat, 17 Oct 2009 18:35:13 +0000 (14:35 -0400)]
Changed all the celt*int*_t types to remove the _t suffix, which is reserved
by POSIX. The other _t types that are not part of the API are still there
for now. Also, got rid of all that was left of the 64-bit types.

9 years agoConstrain the pitch gain to prevent potential instabilities.
Jean-Marc Valin [Sat, 17 Oct 2009 03:16:47 +0000 (23:16 -0400)]
Constrain the pitch gain to prevent potential instabilities.

9 years agoNow using a unique ID for CELT_ALLOC_FAIL
Jean-Marc Valin [Sat, 17 Oct 2009 01:32:52 +0000 (21:32 -0400)]
Now using a unique ID for CELT_ALLOC_FAIL

9 years agoImproved error handling, and implemented celt_strerror()
Jean-Marc Valin [Fri, 16 Oct 2009 11:30:14 +0000 (07:30 -0400)]
Improved error handling, and implemented celt_strerror()

9 years agoThe number of channels is now set when creating the states rather than when
Jean-Marc Valin [Fri, 16 Oct 2009 01:45:32 +0000 (21:45 -0400)]
The number of channels is now set when creating the states rather than when
creating the mode. This means that the same mode can be shared for mono and
stereo.

10 years agofirst step for removing the number of channels from the mode
Jean-Marc Valin [Thu, 15 Oct 2009 11:28:19 +0000 (07:28 -0400)]
first step for removing the number of channels from the mode

10 years agoAdjusting the allocation for stereo directly in the alloc function rather than
Jean-Marc Valin [Wed, 14 Oct 2009 00:35:21 +0000 (20:35 -0400)]
Adjusting the allocation for stereo directly in the alloc function rather than
in the table.

10 years agomerged the code for quant_bands() and unquant_bands()
Jean-Marc Valin [Fri, 9 Oct 2009 03:10:45 +0000 (23:10 -0400)]
merged the code for quant_bands() and unquant_bands()

10 years agoRenamed mix_pitch_and_residual() to normalise_residual(), after minor
Jean-Marc Valin [Wed, 7 Oct 2009 10:56:03 +0000 (06:56 -0400)]
Renamed mix_pitch_and_residual() to normalise_residual(), after minor
simplification.

10 years agoFurther simplifications to mix_pitch_and_residual() (which no longer does
Jean-Marc Valin [Wed, 7 Oct 2009 00:08:49 +0000 (20:08 -0400)]
Further simplifications to mix_pitch_and_residual() (which no longer does
anything that its name implies)

10 years agoDoing the mdct shaping in the normalised domain, so that energy is preserved
Jean-Marc Valin [Mon, 5 Oct 2009 01:35:36 +0000 (21:35 -0400)]
Doing the mdct shaping in the normalised domain, so that energy is preserved

10 years agostereo allocator tuning
Jean-Marc Valin [Sun, 4 Oct 2009 05:17:42 +0000 (01:17 -0400)]
stereo allocator tuning

10 years agomaking compute_ebands() a tiny bit less stupid.
Jean-Marc Valin [Sun, 4 Oct 2009 03:27:52 +0000 (23:27 -0400)]
making compute_ebands() a tiny bit less stupid.

10 years agomoved the de-emphasis code to a separate function (shared between encoder and
Jean-Marc Valin [Sat, 3 Oct 2009 17:57:31 +0000 (13:57 -0400)]
moved the de-emphasis code to a separate function (shared between encoder and
decoder), declared a few things static

10 years agoSimplifying the IMDCT
Jean-Marc Valin [Sat, 3 Oct 2009 14:36:27 +0000 (10:36 -0400)]
Simplifying the IMDCT

10 years agoSimplifications to the code
Jean-Marc Valin [Sat, 3 Oct 2009 13:27:59 +0000 (09:27 -0400)]
Simplifications to the code