opus.git
2 years agoCorrect analysis downmix scaling factor
Mark Harris [Sat, 27 Aug 2016 14:03:02 +0000 (07:03 -0700)]
Correct analysis downmix scaling factor

Divide by the actual number of channels mixed

2 years agoProperly process both channels for DTX
Jean-Marc Valin [Thu, 25 Aug 2016 18:24:38 +0000 (14:24 -0400)]
Properly process both channels for DTX

Adding a "channels" argument to compute_frame_energy() and is_digital_silence()

3 years agoMake the DC rejection filter Q14 instead of Q15
Jean-Marc Valin [Sun, 21 Aug 2016 19:53:35 +0000 (15:53 -0400)]
Make the DC rejection filter Q14 instead of Q15

This avoids an overflow on extreme signals

3 years agoFixes an overflow in LPC_inverse_pred_gain_QA()
Jean-Marc Valin [Sun, 31 Jul 2016 02:40:48 +0000 (22:40 -0400)]
Fixes an overflow in LPC_inverse_pred_gain_QA()

We now declare that anything that would overflow is not stable enough

3 years agoRemoved a float operation that sneaked in in the fixed-point code
Jean-Marc Valin [Mon, 15 Aug 2016 23:50:45 +0000 (19:50 -0400)]
Removed a float operation that sneaked in in the fixed-point code

3 years agoOops, fixes the sign in dc_reject()
Jean-Marc Valin [Mon, 15 Aug 2016 23:19:47 +0000 (19:19 -0400)]
Oops, fixes the sign in dc_reject()

Thanks to Mark Harris for pointing it out.

3 years agoImplementing compute_frame_energy() from celt_inner_prod() for float
Jean-Marc Valin [Mon, 15 Aug 2016 22:24:30 +0000 (18:24 -0400)]
Implementing compute_frame_energy() from celt_inner_prod() for float

3 years agoSpeeding up PVQ search by allocating even more pulses in the projection.
Jean-Marc Valin [Mon, 15 Aug 2016 21:30:00 +0000 (17:30 -0400)]
Speeding up PVQ search by allocating even more pulses in the projection.

3 years agoReducing the overhead due to dependency chains in dc_reject() for stereo
Jean-Marc Valin [Mon, 15 Aug 2016 21:26:20 +0000 (17:26 -0400)]
Reducing the overhead due to dependency chains in dc_reject() for stereo

Gives another ~2% speedup

3 years agoReducing the dependency chain in dc_reject()
Jean-Marc Valin [Mon, 15 Aug 2016 20:46:05 +0000 (16:46 -0400)]
Reducing the dependency chain in dc_reject()

Speeds up the encoder by about 1%

3 years agoApply deemphasis to both channels in the same loop for the simple case
Jean-Marc Valin [Sun, 14 Aug 2016 21:56:45 +0000 (17:56 -0400)]
Apply deemphasis to both channels in the same loop for the simple case

This makes the decoder ~2.5% faster on x86 because the stereo loop
takes the same processing time as one mono loop due to the dependency chain

3 years agoMaking gcc use SSE directly for float->int conversion when available
Jean-Marc Valin [Sat, 13 Aug 2016 06:53:12 +0000 (02:53 -0400)]
Making gcc use SSE directly for float->int conversion when available

3 years agoReducing dependencies in deemphasis()
Jean-Marc Valin [Sat, 13 Aug 2016 03:49:35 +0000 (23:49 -0400)]
Reducing dependencies in deemphasis()

Reordering the add with VERY_SMALL changes the dependencies cycle from 2 add + 1 mul
(11 cycles on haswell) to 1 add + 1 mul (8 cycles). This makes the entire decoder about
1.5% faster.

3 years agoFixes problem with M_PI
Jean-Marc Valin [Fri, 12 Aug 2016 03:23:46 +0000 (23:23 -0400)]
Fixes problem with M_PI

3 years agoMaking stereo_itheta() use the same atan2() approximation as tonality_analysis()
Jean-Marc Valin [Thu, 11 Aug 2016 15:05:51 +0000 (11:05 -0400)]
Making stereo_itheta() use the same atan2() approximation as tonality_analysis()

3 years agoSSE2 implementation of the PVQ search
Jean-Marc Valin [Wed, 10 Aug 2016 03:22:27 +0000 (23:22 -0400)]
SSE2 implementation of the PVQ search

We used the SSE reciprocal square root instruction to vectorize the serch rather
than compare one at a time with multiplies. Speeds up the entire encoder by 8-10%.

3 years agoMaking signx[] an int in alg_quant() and removes unnecessary sign copying
Jean-Marc Valin [Sat, 6 Aug 2016 19:49:55 +0000 (15:49 -0400)]
Making signx[] an int in alg_quant() and removes unnecessary sign copying

No measurable speed change.

3 years agoSpeeding up PVQ using unlikely() and moving first position out of the loop
Jean-Marc Valin [Sat, 6 Aug 2016 05:01:13 +0000 (01:01 -0400)]
Speeding up PVQ using unlikely() and moving first position out of the loop

Speeds up encoding by another ~1-2%

3 years agoGetting gcc to use cmovs rather than branches in alg_quant()
Jean-Marc Valin [Sat, 6 Aug 2016 04:06:48 +0000 (00:06 -0400)]
Getting gcc to use cmovs rather than branches in alg_quant()

Speeds up CELT encoding by around 5% on x86

3 years agobiasing quantization
Jean-Marc Valin [Fri, 29 Jul 2016 17:47:07 +0000 (13:47 -0400)]
biasing quantization

3 years agoFixes "mixed declarations and code"
Jean-Marc Valin [Fri, 5 Aug 2016 21:34:04 +0000 (17:34 -0400)]
Fixes "mixed declarations and code"

3 years agoMaking it clearer to Coverity that nStates cannot exceed NLSF_QUANT_DEL_DEC_STATES
Jean-Marc Valin [Fri, 5 Aug 2016 21:15:14 +0000 (17:15 -0400)]
Making it clearer to Coverity that nStates cannot exceed NLSF_QUANT_DEL_DEC_STATES

3 years agoWeighting theta rdo based on channel energy
Jean-Marc Valin [Fri, 29 Jul 2016 03:26:29 +0000 (23:26 -0400)]
Weighting theta rdo based on channel energy

3 years agoFixes overflow in CNG
Jean-Marc Valin [Sat, 30 Jul 2016 15:38:28 +0000 (11:38 -0400)]
Fixes overflow in CNG

(found through fuzzing)

3 years agoDon't do theta RDO on intensity-stereo-coded bands
Jean-Marc Valin [Thu, 28 Jul 2016 19:05:36 +0000 (15:05 -0400)]
Don't do theta RDO on intensity-stereo-coded bands

3 years agoSaving the state rather than re-compute the best option
Jean-Marc Valin [Wed, 27 Jul 2016 13:24:26 +0000 (09:24 -0400)]
Saving the state rather than re-compute the best option

3 years agoMaking stereo theta decision based on minimizing distortion
Jean-Marc Valin [Wed, 6 Jan 2016 07:02:16 +0000 (02:02 -0500)]
Making stereo theta decision based on minimizing distortion

No point in minimizing the rate too since it's almost constant.

3 years agocontrolling rounding
Jean-Marc Valin [Tue, 5 Jan 2016 03:35:13 +0000 (22:35 -0500)]
controlling rounding

3 years agoProperly allocation scratch space for resynth encoder
Jean-Marc Valin [Tue, 26 Jul 2016 00:44:17 +0000 (20:44 -0400)]
Properly allocation scratch space for resynth encoder

3 years agocleanup: putting resynth flag in the context
Jean-Marc Valin [Tue, 5 Jan 2016 04:29:36 +0000 (23:29 -0500)]
cleanup: putting resynth flag in the context

3 years agocleanup: line wrapping
Jean-Marc Valin [Tue, 5 Jan 2016 03:09:54 +0000 (22:09 -0500)]
cleanup: line wrapping

3 years agoEnsure that NLSF cannot be negative when computing a min distance between them
Felicia Lim [Thu, 28 Jul 2016 13:21:19 +0000 (15:21 +0200)]
Ensure that NLSF cannot be negative when computing a min distance between them

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
3 years agoappveyor: Package includes and opus.lib as an artifact.
Ricardo Constantino (:RiCON) [Tue, 26 Jul 2016 22:18:38 +0000 (23:18 +0100)]
appveyor: Package includes and opus.lib as an artifact.

This lets projects which depend on opus build against our
test results.

Signed-off-by: Ralph Giles <giles@mozilla.com>
3 years agoVS2015: Ignore warning 4146 in celt/kiss_fft.c.
Ricardo Constantino (:RiCON) [Tue, 26 Jul 2016 19:35:42 +0000 (20:35 +0100)]
VS2015: Ignore warning 4146 in celt/kiss_fft.c.

Warning 4146 is "unary minus operator applied to unsigned type,
result still unsigned"

Signed-off-by: Ralph Giles <giles@mozilla.com>
3 years agowin32/.gitignore: Add DebugDLL_fixed.
Ricardo Constantino (:RiCON) [Tue, 26 Jul 2016 19:34:51 +0000 (20:34 +0100)]
win32/.gitignore: Add DebugDLL_fixed.

Signed-off-by: Ralph Giles <giles@mozilla.com>
3 years agoVS2015: Disable building DebugDLL opus_demo.
Ricardo Constantino (:RiCON) [Tue, 26 Jul 2016 18:35:58 +0000 (19:35 +0100)]
VS2015: Disable building DebugDLL opus_demo.

This works around the issue with using private symbols.

Signed-off-by: Ralph Giles <giles@mozilla.com>
3 years agovs2015: Merge opus dependencies into its project.
Ricardo Constantino (:RiCON) [Sat, 16 Jul 2016 00:55:28 +0000 (01:55 +0100)]
vs2015: Merge opus dependencies into its project.

Since DLL builds can't include both fixed and float, separate DLL_fixed
configurations added that include fixed silk code and also set FIXED_POINT.

Signed-off-by: Ralph Giles <giles@mozilla.com>
3 years agoVS2015: Mirror changes in *.mk files from exp_lbr_tune merge.
Ricardo Constantino (:RiCON) [Wed, 20 Jul 2016 14:26:19 +0000 (15:26 +0100)]
VS2015: Mirror changes in *.mk files from exp_lbr_tune merge.

Signed-off-by: Ralph Giles <giles@mozilla.com>
3 years agoTrim appveyor config.
Ralph Giles [Thu, 14 Jul 2016 05:23:58 +0000 (22:23 -0700)]
Trim appveyor config.

3 years agoAdd appveyor.yml to test VS2015 builds.
Ricardo Constantino (:RiCON) [Thu, 14 Jul 2016 01:41:46 +0000 (02:41 +0100)]
Add appveyor.yml to test VS2015 builds.

Signed-off-by: Ralph Giles <giles@mozilla.com>
3 years agoVS2015: Suppress a few warnings.
Ricardo Constantino (:RiCON) [Fri, 8 Jul 2016 22:28:49 +0000 (23:28 +0100)]
VS2015: Suppress a few warnings.

SDLCheck is a superset of BufferSecurityCheck and is off by default.
If it's set, it complains that it's overriden by BufferSecurityCheck.

Warning 4996 is already ignored in other binaries (fopen being deprecated and
suggesting fopen_s).

NoExtensions isn't a valid value for EnableEnhancedInstructionSet in x64 builds.

3 years agoCreate a simple project to create version.h.
Ricardo Constantino (:RiCON) [Fri, 15 Jul 2016 19:15:51 +0000 (20:15 +0100)]
Create a simple project to create version.h.

Run before any other project.

Avoids trying to create and replace version.h more than once which
led to file-locking errors with multicore builds.

Signed-off-by: Ralph Giles <giles@mozilla.com>
3 years agoDisabling the use of celt_fir() in silk_LPC_analysis_filter() by default
Jean-Marc Valin [Mon, 25 Jul 2016 16:08:08 +0000 (12:08 -0400)]
Disabling the use of celt_fir() in silk_LPC_analysis_filter() by default

3 years agoFixes an overflow in limit_warped_coefs()
Jean-Marc Valin [Mon, 25 Jul 2016 15:05:00 +0000 (11:05 -0400)]
Fixes an overflow in limit_warped_coefs()

For large values of maxabs_Q20, silk_MUL( maxabs_Q20, ind + 1 ) could
overflow.

3 years agoMove PLC LPC bandwidth expansion before the FIR to avoid overflows in celt_fir()
Jean-Marc Valin [Mon, 25 Jul 2016 14:23:07 +0000 (10:23 -0400)]
Move PLC LPC bandwidth expansion before the FIR to avoid overflows in celt_fir()

3 years agoFixes comment
Jean-Marc Valin [Mon, 25 Jul 2016 02:16:29 +0000 (22:16 -0400)]
Fixes comment

3 years agoFixes an overflow in amp2Log2() for very large encoder input
Jean-Marc Valin [Mon, 25 Jul 2016 02:06:08 +0000 (22:06 -0400)]
Fixes an overflow in amp2Log2() for very large encoder input

3 years agoFixes cap on gain in denormalise_bands()
Jean-Marc Valin [Sun, 24 Jul 2016 22:02:37 +0000 (18:02 -0400)]
Fixes cap on gain in denormalise_bands()

3 years agoFixes a shift<0 issue in transient_analysis()
Jean-Marc Valin [Sun, 24 Jul 2016 21:54:56 +0000 (17:54 -0400)]
Fixes a shift<0 issue in transient_analysis()

Fixes a potential overflow in high-passed signal for transient detection
and ensures that the shift can never go negative

3 years agoTighter bound in filter control in PLC
Jean-Marc Valin [Sun, 24 Jul 2016 21:49:58 +0000 (17:49 -0400)]
Tighter bound in filter control in PLC

We can't use the attenuation since it doesn't apply to the memory

3 years agoMore headroom in PLC code
Jean-Marc Valin [Sun, 24 Jul 2016 21:48:40 +0000 (17:48 -0400)]
More headroom in PLC code

extrapolation_len can be up to 960+120, so we we need a shift of 10
if the values are very large.

3 years agoSaturate MDCT output post-TDAC rather than pre-
Jean-Marc Valin [Sun, 24 Jul 2016 21:40:44 +0000 (17:40 -0400)]
Saturate MDCT output post-TDAC rather than pre-

Gives us a tighter bound on the pitch postfilter input to avoid overflows

3 years agoAvoids reading beyond the current buffer in comb_filter()
Jean-Marc Valin [Sun, 24 Jul 2016 19:37:27 +0000 (15:37 -0400)]
Avoids reading beyond the current buffer in comb_filter()

This could cause overflows when processing non-saturated TDAC values.

3 years agoDirectly saturate the comb filter output
Jean-Marc Valin [Sun, 24 Jul 2016 19:30:40 +0000 (15:30 -0400)]
Directly saturate the comb filter output

Otherwise, the output can grow as large as SIG_SAT/(1-0.75), which can cause
an overflow when adding two values (before multiplying by the filter tap).

3 years agoAvoiding an overflow in the LTP quantization
Jean-Marc Valin [Fri, 22 Jul 2016 19:58:30 +0000 (15:58 -0400)]
Avoiding an overflow in the LTP quantization

Reduces the XX values to avoid an overflow in silk_VQ_WMat_EC(), even in
floating-point.

3 years agoDisables MIPS silk_noise_shape_analysis_FIX() until it's updated
Jean-Marc Valin [Fri, 22 Jul 2016 19:40:40 +0000 (15:40 -0400)]
Disables MIPS silk_noise_shape_analysis_FIX() until it's updated

3 years agoMore headroom in fixed-point silk_burg_modified() to avoid an overflow
Jean-Marc Valin [Fri, 22 Jul 2016 19:14:34 +0000 (15:14 -0400)]
More headroom in fixed-point silk_burg_modified() to avoid an overflow

3 years agoIncrease headroom in silk_warped_autocorrelation_FIX()
Jean-Marc Valin [Fri, 22 Jul 2016 18:29:52 +0000 (14:29 -0400)]
Increase headroom in silk_warped_autocorrelation_FIX()

3 years agoIncrease headroom to avoid overflow in silk_pitch_analysis_core()
Jean-Marc Valin [Fri, 22 Jul 2016 18:25:03 +0000 (14:25 -0400)]
Increase headroom to avoid overflow in silk_pitch_analysis_core()

3 years agoPLC overflow fix
Jean-Marc Valin [Fri, 22 Jul 2016 15:47:01 +0000 (11:47 -0400)]
PLC overflow fix

3 years agoPrevent overflows in PLC celt_iir()
Jean-Marc Valin [Fri, 22 Jul 2016 15:05:19 +0000 (11:05 -0400)]
Prevent overflows in PLC celt_iir()

3 years agofixes overflows in celt_iir() by doing proper saturation
Jean-Marc Valin [Fri, 22 Jul 2016 13:13:00 +0000 (09:13 -0400)]
fixes overflows in celt_iir() by doing proper saturation

3 years agogetting rid of a PLC overflow (I think)
Jean-Marc Valin [Fri, 22 Jul 2016 01:56:55 +0000 (21:56 -0400)]
getting rid of a PLC overflow (I think)

3 years agopost-filter saturation
Jean-Marc Valin [Fri, 22 Jul 2016 01:56:44 +0000 (21:56 -0400)]
post-filter saturation

3 years agosaturate MDCT output
Jean-Marc Valin [Thu, 21 Jul 2016 23:48:55 +0000 (19:48 -0400)]
saturate MDCT output

3 years agosilencing overflows in MDCT and FFT
Jean-Marc Valin [Thu, 21 Jul 2016 23:40:23 +0000 (19:40 -0400)]
silencing overflows in MDCT and FFT

3 years agoReduce risk of overflowing in mono downsampling
Jean-Marc Valin [Fri, 22 Jul 2016 18:44:24 +0000 (14:44 -0400)]
Reduce risk of overflowing in mono downsampling

Not observed yet (except when caused by a different bug), but "just in case"

3 years agoAvoid overflowing on ridiculously large energy
Jean-Marc Valin [Fri, 22 Jul 2016 18:21:26 +0000 (14:21 -0400)]
Avoid overflowing on ridiculously large energy

3 years agoFixes shift<-2 case for denormalise_bands()
Jean-Marc Valin [Fri, 22 Jul 2016 18:42:29 +0000 (14:42 -0400)]
Fixes shift<-2 case for denormalise_bands()

3 years agoSilence fixed point unused parameter warning
Mark Harris [Fri, 22 Jul 2016 05:05:21 +0000 (22:05 -0700)]
Silence fixed point unused parameter warning

3 years agotest_opus_decode: Check all soft clip samples
Mark Harris [Fri, 22 Jul 2016 04:39:41 +0000 (21:39 -0700)]
test_opus_decode: Check all soft clip samples

3 years agotests: Avoid shift into sign undefined behavior
Mark Harris [Fri, 22 Jul 2016 04:22:22 +0000 (21:22 -0700)]
tests: Avoid shift into sign undefined behavior

3 years agoAvoids undefined behaviour from left-shifting negative values
Jean-Marc Valin [Thu, 21 Jul 2016 03:15:16 +0000 (23:15 -0400)]
Avoids undefined behaviour from left-shifting negative values

3 years agoFix use_dtx for DISABLE_FLOAT_API
Felicia Lim [Wed, 20 Jul 2016 11:37:13 +0000 (13:37 +0200)]
Fix use_dtx for DISABLE_FLOAT_API

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
3 years agoFix include warning
Tristan Matthews [Wed, 20 Jul 2016 03:12:13 +0000 (23:12 -0400)]
Fix include warning

3 years agoFix include warning
Tristan Matthews [Wed, 20 Jul 2016 02:58:35 +0000 (22:58 -0400)]
Fix include warning

3 years agoAdds some smoothing to the energy quantization exp_lbr_tune
Jean-Marc Valin [Mon, 4 Jul 2016 05:06:11 +0000 (01:06 -0400)]
Adds some smoothing to the energy quantization

When the energy is stable, we slightly bias energy quantization towards
the previous error to make the gain more stable (a constant offset is
better than fluctuations).

We reduce the bitrate by about 0.2% to 1% at low bitrate for the same quality.

3 years agoTune SILK rate for hybrid with FEC enabled
Jean-Marc Valin [Tue, 21 Jun 2016 17:37:29 +0000 (13:37 -0400)]
Tune SILK rate for hybrid with FEC enabled

3 years agoMoving FEC decision to the Opus encoder level (from SILK level)
Jean-Marc Valin [Tue, 21 Jun 2016 16:38:25 +0000 (12:38 -0400)]
Moving FEC decision to the Opus encoder level (from SILK level)

3 years agoTaking loss rate into account in compute_equiv_rate()
Jean-Marc Valin [Mon, 20 Jun 2016 22:54:06 +0000 (18:54 -0400)]
Taking loss rate into account in compute_equiv_rate()

3 years agoRetuning the tf_analysis() lambda
Jean-Marc Valin [Wed, 8 Jun 2016 19:19:03 +0000 (15:19 -0400)]
Retuning the tf_analysis() lambda

Increasing the value at low rate seems to help a bit.

3 years agoFixes equiv_rate for CBR
Jean-Marc Valin [Wed, 8 Jun 2016 06:33:56 +0000 (02:33 -0400)]
Fixes equiv_rate for CBR

3 years agoMinor TF cleanup (tf_sum was useless), plus comments
Jean-Marc Valin [Wed, 8 Jun 2016 06:15:21 +0000 (02:15 -0400)]
Minor TF cleanup (tf_sum was useless), plus comments

3 years agoUse SPREAD_AGGRESSIVE on non-transient hybrid frames
Jean-Marc Valin [Mon, 6 Jun 2016 17:43:13 +0000 (13:43 -0400)]
Use SPREAD_AGGRESSIVE on non-transient hybrid frames

3 years agoDon't use too much temporal resolution on hybrid frames at low rate
Jean-Marc Valin [Mon, 6 Jun 2016 20:54:29 +0000 (16:54 -0400)]
Don't use too much temporal resolution on hybrid frames at low rate

Otherwise, we risk having "temporal holes" in the HF that anti-collapse
can't always fill in.

3 years agoDisable patch_transient_decision() on hybrid since it's causing artifacts
Jean-Marc Valin [Mon, 6 Jun 2016 20:52:50 +0000 (16:52 -0400)]
Disable patch_transient_decision() on hybrid since it's causing artifacts

It would trigger on the second frame of "S"s, causing holes in the spectrum

3 years agoCBR: set gains to their previons values where we're busting the budget
Jean-Marc Valin [Fri, 3 Jun 2016 20:27:48 +0000 (16:27 -0400)]
CBR: set gains to their previons values where we're busting the budget

3 years agoSet pulses to zero if we can't meet rate target
Jean-Marc Valin [Fri, 3 Jun 2016 19:49:11 +0000 (15:49 -0400)]
Set pulses to zero if we can't meet rate target

3 years agoNow that we're preventing huge gains, we no longer need to pretend there's
Jean-Marc Valin [Fri, 3 Jun 2016 19:20:28 +0000 (15:20 -0400)]
Now that we're preventing huge gains, we no longer need to pretend there's
no dither

3 years agoCBR: lock the gain on a subframe when the number of pulses stops going down
Jean-Marc Valin [Fri, 3 Jun 2016 18:53:06 +0000 (14:53 -0400)]
CBR: lock the gain on a subframe when the number of pulses stops going down

3 years agomerge back in the LTP gain safety limiter
Koen Vos [Fri, 3 Jun 2016 06:18:03 +0000 (14:18 +0800)]
merge back in the LTP gain safety limiter

3 years agoCBR: Using the same gain increase for fixed-point as for float
Jean-Marc Valin [Fri, 3 Jun 2016 19:26:47 +0000 (15:26 -0400)]
CBR: Using the same gain increase for fixed-point as for float

3 years agoOops, edited the wrong comment in the previous commit
Jean-Marc Valin [Thu, 2 Jun 2016 23:08:01 +0000 (19:08 -0400)]
Oops, edited the wrong comment in the previous commit

3 years agoRe-tuning compute_equiv_rate()
Jean-Marc Valin [Thu, 2 Jun 2016 22:15:00 +0000 (18:15 -0400)]
Re-tuning compute_equiv_rate()

3 years agoGetting rid of the SILK penalty for hybrid CBR.
Jean-Marc Valin [Thu, 2 Jun 2016 22:11:33 +0000 (18:11 -0400)]
Getting rid of the SILK penalty for hybrid CBR.

That was likely a mistake from a misunderstanding on the SILK bit allocation

3 years agoImproving CBR for hybrid mode
Jean-Marc Valin [Thu, 2 Jun 2016 21:54:14 +0000 (17:54 -0400)]
Improving CBR for hybrid mode

Hybrid CBR now simply forces the SILK CBR rate to the "target" value. Also,
we're getting rid of the -2 kb/s offset for CBR, which appeared to be harmful.
In the case of hybrid constrained VBR, the cap is computed in the same way
as the target.

3 years agoMaking the encoder more aggressive at using wider bandwidths
Jean-Marc Valin [Thu, 2 Jun 2016 19:50:22 +0000 (15:50 -0400)]
Making the encoder more aggressive at using wider bandwidths

3 years agocomment about reduced codelength component in LTP quantizer error metric
Koen Vos [Thu, 2 Jun 2016 15:03:27 +0000 (23:03 +0800)]
comment about reduced codelength component in LTP quantizer error metric

3 years agoavoid double if statement for finding best quantized LTP coefs
Koen Vos [Thu, 2 Jun 2016 14:35:58 +0000 (22:35 +0800)]
avoid double if statement for finding best quantized LTP coefs

3 years agoincrease NSQ decision delay from 32 to 40
Koen Vos [Wed, 1 Jun 2016 13:49:11 +0000 (21:49 +0800)]
increase NSQ decision delay from 32 to 40