opus.git
11 years agoFixing the manual stack handling code
Jean-Marc Valin [Fri, 19 Sep 2008 15:50:50 +0000 (11:50 -0400)]
Fixing the manual stack handling code

11 years agoMerge branch 'cwrs_speedup' (derf's cwrs changes)
Jean-Marc Valin [Fri, 19 Sep 2008 12:02:50 +0000 (08:02 -0400)]
Merge branch 'cwrs_speedup' (derf's cwrs changes)

Conflicts:
libcelt/cwrs.c

11 years agoChange CWRS indexing to use Pyramid VQ's magnitude ordering.
Timothy B.B Terriberry [Fri, 19 Sep 2008 06:32:42 +0000 (02:32 -0400)]
Change CWRS indexing to use Pyramid VQ's magnitude ordering.

This lets us encode and decode directly from the pulse vector without an
 intermediate transformation.
This makes old streams undecodable.
Additionally, ncwrs_u32() has been sped up for large N by using the sliding
 recurrence from Mohorko et al.
ncwrs_u64 could be sped up in a similar manner, but would require a larger
 table of multiplicative inverses (or several 32x32->64 bit multiplies).
Note that U(N,M) is now everywhere 1/2 the value it used to be.

11 years agoBetter use of the arithmetic operators
Jean-Marc Valin [Tue, 16 Sep 2008 17:29:37 +0000 (13:29 -0400)]
Better use of the arithmetic operators

11 years agoConverted everything to 32-bit CWRS (using split after that)
Jean-Marc Valin [Sat, 13 Sep 2008 01:27:35 +0000 (21:27 -0400)]
Converted everything to 32-bit CWRS (using split after that)

11 years agoGenerate slightly more accurate WMOPS figures
Jean-Marc Valin [Sat, 13 Sep 2008 00:52:27 +0000 (20:52 -0400)]
Generate slightly more accurate WMOPS figures

11 years agoOne-at-a-time allocator now uses direct feedback from ec_*_tell().
Jean-Marc Valin [Thu, 11 Sep 2008 04:20:08 +0000 (00:20 -0400)]
One-at-a-time allocator now uses direct feedback from ec_*_tell().

11 years agoSimplifications to the new allocator
Jean-Marc Valin [Wed, 10 Sep 2008 11:34:17 +0000 (07:34 -0400)]
Simplifications to the new allocator

11 years agoAt least attempting to use all the bits.
Jean-Marc Valin [Wed, 10 Sep 2008 03:21:36 +0000 (23:21 -0400)]
At least attempting to use all the bits.

11 years agoSimplified allocation by doing it one band at a time, with memory
Jean-Marc Valin [Tue, 9 Sep 2008 04:15:40 +0000 (00:15 -0400)]
Simplified allocation by doing it one band at a time, with memory

11 years agoAdded Erik de Castro Lopo's float_cast.h to use lrintf() when available. Also
Jean-Marc Valin [Mon, 1 Sep 2008 03:34:47 +0000 (23:34 -0400)]
Added Erik de Castro Lopo's float_cast.h to use lrintf() when available. Also
disables the synthesis on the encoder side when pitch is disabled.

11 years agoexp() and log() are faster than pow() and log10() for dB conversion
Jean-Marc Valin [Sat, 30 Aug 2008 18:53:44 +0000 (14:53 -0400)]
exp() and log() are faster than pow() and log10() for dB conversion

11 years agoAdded signalling bits for enabling/disabling pitch, short blocks, and folding.
Jean-Marc Valin [Sat, 30 Aug 2008 04:55:07 +0000 (00:55 -0400)]
Added signalling bits for enabling/disabling pitch, short blocks, and folding.
Also, making it possible to disable pitch for all frames.

11 years agoFixed a bunch of fixed-point overflows on insanely hot signals by changing
Jean-Marc Valin [Fri, 29 Aug 2008 03:34:24 +0000 (23:34 -0400)]
Fixed a bunch of fixed-point overflows on insanely hot signals by changing
the time-domain representation from Q14 to Q12 (Q29 to Q27 using the
standard convention).

11 years agoAdded hooks for tuning pulses and fine energy quant
Jean-Marc Valin [Thu, 14 Aug 2008 02:07:20 +0000 (22:07 -0400)]
Added hooks for tuning pulses and fine energy quant

11 years agoAdding a floating point interface to encode and decode
Gregory Maxwell [Tue, 12 Aug 2008 03:50:07 +0000 (23:50 -0400)]
Adding a floating point interface to encode and decode

11 years agoFixed fixed-point compilation error.
Gregory Maxwell [Sun, 10 Aug 2008 05:06:33 +0000 (01:06 -0400)]
Fixed fixed-point compilation error.

11 years agoSolved an encoder/decoder mismatch happening when there's no pulse in the first
Jean-Marc Valin [Thu, 7 Aug 2008 03:06:31 +0000 (23:06 -0400)]
Solved an encoder/decoder mismatch happening when there's no pulse in the first
band

11 years agoPreventing encoder/decoder mismatch when coarse energy budget is busted
Jean-Marc Valin [Wed, 6 Aug 2008 02:03:34 +0000 (22:03 -0400)]
Preventing encoder/decoder mismatch when coarse energy budget is busted

11 years agosome tuning to fine energy allocation and prevent it from going above 7 bits
Jean-Marc Valin [Wed, 6 Aug 2008 00:39:53 +0000 (20:39 -0400)]
some tuning to fine energy allocation and prevent it from going above 7 bits
(at which point, it causes problems)

11 years agoChanging the allocation algorithm to better take into account the fixed cost
Jean-Marc Valin [Mon, 4 Aug 2008 02:07:06 +0000 (22:07 -0400)]
Changing the allocation algorithm to better take into account the fixed cost
per frames for each mode.

11 years agoMerged compute_allocation_table() and compute_energy_allocation_table()
Jean-Marc Valin [Sun, 3 Aug 2008 02:25:19 +0000 (22:25 -0400)]
Merged compute_allocation_table() and compute_energy_allocation_table()

11 years agoTurns out that the worse case of the vector split is the same as that of the
Jean-Marc Valin [Sun, 3 Aug 2008 00:51:44 +0000 (20:51 -0400)]
Turns out that the worse case of the vector split is the same as that of the
pulse split. Also, added an allocation line for even higher bit-rates

11 years agofixed a bunch of bugs in the unified allocation code.
Jean-Marc Valin [Sun, 3 Aug 2008 00:14:17 +0000 (20:14 -0400)]
fixed a bunch of bugs in the unified allocation code.

11 years agoFixed two issues pointed out by Greg
Jean-Marc Valin [Sat, 2 Aug 2008 12:16:58 +0000 (08:16 -0400)]
Fixed two issues pointed out by Greg

11 years agoUnified allocation of fine energy and pulses.
Jean-Marc Valin [Sat, 2 Aug 2008 12:14:42 +0000 (08:14 -0400)]
Unified allocation of fine energy and pulses.

11 years agoCompleted the separation of coarse and fine energy quantisation
Jean-Marc Valin [Sat, 2 Aug 2008 02:26:49 +0000 (22:26 -0400)]
Completed the separation of coarse and fine energy quantisation

11 years agoSplit coarse and fine energy quantisation
Jean-Marc Valin [Fri, 1 Aug 2008 04:11:25 +0000 (00:11 -0400)]
Split coarse and fine energy quantisation

11 years agobump bit-stream version
Jean-Marc Valin [Sat, 26 Jul 2008 13:15:26 +0000 (09:15 -0400)]
bump bit-stream version

11 years agoBetter bit allocation for all frame sizes that are not equal to 256.
Jean-Marc Valin [Thu, 24 Jul 2008 12:49:34 +0000 (08:49 -0400)]
Better bit allocation for all frame sizes that are not equal to 256.

11 years agoRe-implemented renormalise_bands() based on renormalise_vector().
Jean-Marc Valin [Mon, 21 Jul 2008 03:30:29 +0000 (23:30 -0400)]
Re-implemented renormalise_bands() based on renormalise_vector().

11 years agoSimplified the folding normalisation by creating renormalise_vector().
Jean-Marc Valin [Mon, 21 Jul 2008 03:14:31 +0000 (23:14 -0400)]
Simplified the folding normalisation by creating renormalise_vector().

11 years agoRe-enabling folding/intra for transients
Jean-Marc Valin [Mon, 21 Jul 2008 00:36:54 +0000 (20:36 -0400)]
Re-enabling folding/intra for transients

11 years agoisolated the folding part of the code that's common in vq.c
Jean-Marc Valin [Thu, 17 Jul 2008 20:22:23 +0000 (16:22 -0400)]
isolated the folding part of the code that's common in vq.c

11 years agoDo not encode the short-window bit when not applicable.
Jean-Marc Valin [Fri, 11 Jul 2008 03:06:58 +0000 (23:06 -0400)]
Do not encode the short-window bit when not applicable.

11 years agocleaned up transient_analysis() and replaced the algorithm with a simpler one
Jean-Marc Valin [Sun, 6 Jul 2008 14:57:26 +0000 (10:57 -0400)]
cleaned up transient_analysis() and replaced the algorithm with a simpler one
based on the max absolute value in a range.

11 years agofixed-point: conversion of pre-echo avoidance now complete.
Jean-Marc Valin [Fri, 4 Jul 2008 20:47:28 +0000 (16:47 -0400)]
fixed-point: conversion of pre-echo avoidance now complete.

11 years agofixed-point: more work on the time window (almost done)
Jean-Marc Valin [Fri, 4 Jul 2008 00:41:06 +0000 (20:41 -0400)]
fixed-point: more work on the time window (almost done)

11 years agoMore fixed-point conversion of the time window.
Jean-Marc Valin [Sun, 29 Jun 2008 02:06:05 +0000 (12:06 +1000)]
More fixed-point conversion of the time window.

11 years agoMore fixed-point work on the time window -- including conversion of the gain
Jean-Marc Valin [Sat, 28 Jun 2008 17:46:39 +0000 (03:46 +1000)]
More fixed-point work on the time window -- including conversion of the gain
to power-of-two.

11 years agoCleaned up the pre-echo avoidance code so it works when compiled as fixed-point
Jean-Marc Valin [Thu, 26 Jun 2008 21:57:35 +0000 (07:57 +1000)]
Cleaned up the pre-echo avoidance code so it works when compiled as fixed-point
(still requires float ops though). Also, removed the per-band IDCT.

11 years agoAutomatically choosing the overlap based on the frame size.
Jean-Marc Valin [Wed, 18 Jun 2008 13:44:48 +0000 (23:44 +1000)]
Automatically choosing the overlap based on the frame size.

11 years agoshort-block MDCT
Jean-Marc Valin [Tue, 17 Jun 2008 03:28:13 +0000 (13:28 +1000)]
short-block MDCT

11 years agoImplemented two pre-echo avoidance techniques: time-domain pre-emphasis and
Jean-Marc Valin [Mon, 16 Jun 2008 04:13:05 +0000 (14:13 +1000)]
Implemented two pre-echo avoidance techniques: time-domain pre-emphasis and
per-band IDCT.

11 years agoDoing the cwrs split in dimensions should save a few bits.
Jean-Marc Valin [Wed, 11 Jun 2008 08:05:57 +0000 (18:05 +1000)]
Doing the cwrs split in dimensions should save a few bits.

11 years agoTurns out maxK and maxM were also inverted in fits_in64()
Jean-Marc Valin [Tue, 10 Jun 2008 13:46:12 +0000 (23:46 +1000)]
Turns out maxK and maxM were also inverted in fits_in64()

11 years agofixed a cwrs bug in fits_in32()
Jean-Marc Valin [Tue, 10 Jun 2008 10:57:52 +0000 (20:57 +1000)]
fixed a cwrs bug in fits_in32()

11 years agoImplemented split-cwrs for very large codebooks (>64 bits), but still getting
Jean-Marc Valin [Tue, 10 Jun 2008 07:23:03 +0000 (17:23 +1000)]
Implemented split-cwrs for very large codebooks (>64 bits), but still getting
a few decoding errors.

11 years agoImplemented a cleaner way to detect whether CWRS codebooks fit in 32 or 64 bits
Jean-Marc Valin [Tue, 10 Jun 2008 06:25:45 +0000 (16:25 +1000)]
Implemented a cleaner way to detect whether CWRS codebooks fit in 32 or 64 bits

11 years agoSuggesting .oga as extension for Ogg files
Jean-Marc Valin [Mon, 9 Jun 2008 05:40:34 +0000 (15:40 +1000)]
Suggesting .oga as extension for Ogg files

11 years agoUse EXPORT macro in a way compatible with win32
Peter Kirk [Fri, 6 Jun 2008 12:38:38 +0000 (14:38 +0200)]
Use EXPORT macro in a way compatible with win32

11 years agoAllowing frames up to 512 samples
Jean-Marc Valin [Fri, 6 Jun 2008 07:04:07 +0000 (17:04 +1000)]
Allowing frames up to 512 samples

11 years agoInfrastructure work for a psy model
Jean-Marc Valin [Sun, 1 Jun 2008 13:19:16 +0000 (23:19 +1000)]
Infrastructure work for a psy model

11 years agoAdjusted stereo bit allocation to be higher than mono for the same alloc line
Jean-Marc Valin [Fri, 30 May 2008 06:07:06 +0000 (16:07 +1000)]
Adjusted stereo bit allocation to be higher than mono for the same alloc line

11 years agoBrought the mdct masking function up-to-date
Jean-Marc Valin [Fri, 30 May 2008 05:48:09 +0000 (15:48 +1000)]
Brought the mdct masking function up-to-date

11 years agoMaking the Laplace test case pass again
Jean-Marc Valin [Tue, 27 May 2008 14:58:42 +0000 (00:58 +1000)]
Making the Laplace test case pass again

11 years agoPreventing encoder-decoder mismatch when energy values are too large to be
Jean-Marc Valin [Tue, 27 May 2008 12:17:13 +0000 (22:17 +1000)]
Preventing encoder-decoder mismatch when energy values are too large to be
represented by the laplace encoder (would have a probability of zero due
to finite precision)

11 years agofixed the skipping of the zeros (skip the zeros instead of the good samples!)
Jean-Marc Valin [Mon, 26 May 2008 13:46:28 +0000 (23:46 +1000)]
fixed the skipping of the zeros (skip the zeros instead of the good samples!)

11 years agoDoing mid-side stereo when not doing intensity.
Jean-Marc Valin [Fri, 23 May 2008 07:27:39 +0000 (17:27 +1000)]
Doing mid-side stereo when not doing intensity.

11 years agoImplemented intensity stereo, which required changes all over the place
Jean-Marc Valin [Fri, 23 May 2008 06:57:34 +0000 (16:57 +1000)]
Implemented intensity stereo, which required changes all over the place
to make sure that stereo coupling is done at the band level. Previously
the stereo coupling was done all at once, but there were all kinds of
interactions with the prediction and folding.

11 years agoMore stereo infrastructure
Jean-Marc Valin [Fri, 23 May 2008 04:23:22 +0000 (14:23 +1000)]
More stereo infrastructure

11 years agoinfrastructure changes for upcoming stereo improvements
Jean-Marc Valin [Fri, 23 May 2008 03:35:35 +0000 (13:35 +1000)]
infrastructure changes for upcoming stereo improvements

11 years agoPreventing some encode/decoder mismatch situations at low bit-rate. Also, some
Jean-Marc Valin [Thu, 22 May 2008 06:49:38 +0000 (16:49 +1000)]
Preventing some encode/decoder mismatch situations at low bit-rate. Also, some
simplifications to the energy encoding.

11 years agodoxygen version number
Jean-Marc Valin [Fri, 16 May 2008 03:28:58 +0000 (13:28 +1000)]
doxygen version number

11 years agoversion bump to 0.3.2
Jean-Marc Valin [Thu, 15 May 2008 11:53:36 +0000 (21:53 +1000)]
version bump to 0.3.2

11 years agoAdded calls to query the bit-stream version.
Jean-Marc Valin [Thu, 15 May 2008 11:53:27 +0000 (21:53 +1000)]
Added calls to query the bit-stream version.

11 years agoSome code for packet loss and bit error simulation
Jean-Marc Valin [Thu, 15 May 2008 10:21:27 +0000 (20:21 +1000)]
Some code for packet loss and bit error simulation

11 years agoMore bit allocation tuning
Jean-Marc Valin [Wed, 7 May 2008 06:44:29 +0000 (16:44 +1000)]
More bit allocation tuning

11 years agoImplemented rate-dependant allocation for the fine energy quantisation.
Jean-Marc Valin [Wed, 7 May 2008 03:44:39 +0000 (13:44 +1000)]
Implemented rate-dependant allocation for the fine energy quantisation.

11 years agoPacking the pitch parameters first to improve robustness to bit errors with
Jean-Marc Valin [Tue, 6 May 2008 13:21:55 +0000 (23:21 +1000)]
Packing the pitch parameters first to improve robustness to bit errors with
(hopefully) no other side effect

11 years agoSome tuning improvements, more to come
Jean-Marc Valin [Tue, 6 May 2008 08:01:17 +0000 (18:01 +1000)]
Some tuning improvements, more to come

11 years agoDisabled pulse spreading until I can show it actually helps
Jean-Marc Valin [Mon, 5 May 2008 06:05:34 +0000 (16:05 +1000)]
Disabled pulse spreading until I can show it actually helps

11 years agoSlightly less arbitrary gains for intra prediction.
Jean-Marc Valin [Mon, 5 May 2008 05:43:57 +0000 (15:43 +1000)]
Slightly less arbitrary gains for intra prediction.

11 years agoUsing only a sign for the intra prediction instead of using up to 5 bits for
Jean-Marc Valin [Mon, 5 May 2008 02:02:14 +0000 (12:02 +1000)]
Using only a sign for the intra prediction instead of using up to 5 bits for
an offset.

11 years agoFixed a bug in the PLC and added code to estimate the pitch from the synthesis
Jean-Marc Valin [Fri, 2 May 2008 00:34:07 +0000 (10:34 +1000)]
Fixed a bug in the PLC and added code to estimate the pitch from the synthesis
instead of relying on the one previously transmitted by the encoder.

11 years agoError detection in uint decoding (can no longer return an int that's out
Jean-Marc Valin [Mon, 28 Apr 2008 07:30:26 +0000 (17:30 +1000)]
Error detection in uint decoding (can no longer return an int that's out
of range.

11 years agoBetter value for prediction coef beta
Jean-Marc Valin [Mon, 28 Apr 2008 05:57:03 +0000 (15:57 +1000)]
Better value for prediction coef beta

11 years agoAdded code for simulating bit errors
Jean-Marc Valin [Mon, 28 Apr 2008 05:56:38 +0000 (15:56 +1000)]
Added code for simulating bit errors

11 years agomdct_overlap no longer needed
Jean-Marc Valin [Wed, 23 Apr 2008 08:03:46 +0000 (18:03 +1000)]
mdct_overlap no longer needed

11 years agoAdded STDIN_TUNING to make it easier to tune CELT
Jean-Marc Valin [Fri, 25 Apr 2008 22:16:12 +0000 (08:16 +1000)]
Added STDIN_TUNING to make it easier to tune CELT

11 years agobump version number
Jean-Marc Valin [Fri, 25 Apr 2008 12:54:11 +0000 (22:54 +1000)]
bump version number

11 years agoBrought the mdct test-case with the recent changes to the mdct semantic
Jean-Marc Valin [Fri, 25 Apr 2008 12:39:46 +0000 (22:39 +1000)]
Brought the mdct test-case with the recent changes to the mdct semantic

11 years agoSHORTCUTS now disables the encoder's de-emphasis (i.e. can't check encoder
Jean-Marc Valin [Wed, 23 Apr 2008 22:29:25 +0000 (08:29 +1000)]
SHORTCUTS now disables the encoder's de-emphasis (i.e. can't check encoder
against the decoder)

11 years agoOptimisation: caching the divisions used in the Laplace encoder.
Jean-Marc Valin [Wed, 23 Apr 2008 03:42:10 +0000 (13:42 +1000)]
Optimisation: caching the divisions used in the Laplace encoder.

11 years agoremoved two shifts from the pitch estimation inner loop
Jean-Marc Valin [Wed, 23 Apr 2008 01:57:40 +0000 (11:57 +1000)]
removed two shifts from the pitch estimation inner loop

11 years agoBetter indexing for find_spectral_pitch()
Jean-Marc Valin [Tue, 22 Apr 2008 22:49:32 +0000 (08:49 +1000)]
Better indexing for find_spectral_pitch()

11 years agoReverted to the old MDCT behaviour of only doing down-scaling in the FFT.
Jean-Marc Valin [Tue, 22 Apr 2008 07:08:59 +0000 (17:08 +1000)]
Reverted to the old MDCT behaviour of only doing down-scaling in the FFT.

11 years agomdct_backward now does the WOLA, so there isn't much left in compute_inv_mdcts
Jean-Marc Valin [Tue, 22 Apr 2008 03:37:16 +0000 (13:37 +1000)]
mdct_backward now does the WOLA, so there isn't much left in compute_inv_mdcts

11 years agoMoved the windowing from compute_inv_mdcts() to mdct_backward()
Jean-Marc Valin [Tue, 22 Apr 2008 02:18:36 +0000 (12:18 +1000)]
Moved the windowing from compute_inv_mdcts() to mdct_backward()

11 years agoSeparated the pre-rotate from the window+shuffling and further simplified
Jean-Marc Valin [Tue, 22 Apr 2008 00:13:25 +0000 (10:13 +1000)]
Separated the pre-rotate from the window+shuffling and further simplified
everything.

11 years agoFurther simplifications to the forward mdct
Jean-Marc Valin [Mon, 21 Apr 2008 23:49:22 +0000 (09:49 +1000)]
Further simplifications to the forward mdct

11 years agonon-negative mdct input index
Jean-Marc Valin [Mon, 21 Apr 2008 21:50:50 +0000 (07:50 +1000)]
non-negative mdct input index

11 years agoMoved the windowing operation from compute_mdcts() to mdct_forward() in an
Jean-Marc Valin [Mon, 21 Apr 2008 14:10:52 +0000 (00:10 +1000)]
Moved the windowing operation from compute_mdcts() to mdct_forward() in an
attempt to reduce copying.

11 years agoPassing the mode to the intra prediction functions so the single-channel case
Jean-Marc Valin [Mon, 21 Apr 2008 11:59:37 +0000 (21:59 +1000)]
Passing the mode to the intra prediction functions so the single-channel case
can be optimised

11 years agoDisabling pitch when gain is very small.
Jean-Marc Valin [Mon, 21 Apr 2008 05:08:57 +0000 (15:08 +1000)]
Disabling pitch when gain is very small.

11 years agoMaking stack push a tiny bit clearer to the compiler -- don't think it really
Jean-Marc Valin [Mon, 21 Apr 2008 03:54:41 +0000 (13:54 +1000)]
Making stack push a tiny bit clearer to the compiler -- don't think it really
has an effect though.

11 years agos/B/C/ in the intra stuff to have the same notation as everywhere else
Jean-Marc Valin [Mon, 21 Apr 2008 03:41:09 +0000 (13:41 +1000)]
s/B/C/ in the intra stuff to have the same notation as everywhere else

11 years agoBit better indexing in intra_prediction()
Jean-Marc Valin [Mon, 21 Apr 2008 02:15:16 +0000 (12:15 +1000)]
Bit better indexing in intra_prediction()

11 years agoRemoving some unnecessary initialisations to zero.
Jean-Marc Valin [Mon, 21 Apr 2008 02:14:16 +0000 (12:14 +1000)]
Removing some unnecessary initialisations to zero.

11 years agoAnother bunch of do-while() loops
Jean-Marc Valin [Mon, 21 Apr 2008 01:43:51 +0000 (11:43 +1000)]
Another bunch of do-while() loops