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

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