diff options
author | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2015-11-16 23:03:17 -0500 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2016-03-25 18:08:24 -0400 |
commit | 802ec759405f392e82ee490d0fd48cdcfaf8ba48 (patch) | |
tree | 741ea733a24c6a5d7a15bce69d97222ad2ca1d35 | |
parent | be9e747bcc542c277d30f6c78a57b0940e0c5b5e (diff) | |
download | opus-802ec759405f392e82ee490d0fd48cdcfaf8ba48.tar.gz |
Quality: removes VBR attenuation at low bitrate
Turns out that even low bitrates benefit from VBR
-rw-r--r-- | celt/celt_encoder.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/celt/celt_encoder.c b/celt/celt_encoder.c index 41fbfd49..7bdd1e49 100644 --- a/celt/celt_encoder.c +++ b/celt/celt_encoder.c @@ -1279,18 +1279,11 @@ static int compute_vbr(const CELTMode *mode, AnalysisInfo *analysis, opus_int32 /*printf("%f %d\n", maxDepth, floor_depth);*/ } - if ((!has_surround_mask||lfe) && (constrained_vbr || bitrate<64000)) + /* Make VBR less aggressive for constrained VBR because we can't keep a higher bitrate + for long. Needs tuning. */ + if ((!has_surround_mask||lfe) && constrained_vbr) { - opus_val16 rate_factor; -#ifdef FIXED_POINT - rate_factor = MAX16(0,(bitrate-32000)); -#else - rate_factor = MAX16(0,(1.f/32768)*(bitrate-32000)); -#endif - if (constrained_vbr) - rate_factor = MIN16(rate_factor, QCONST16(0.67f, 15)); - target = base_target + (opus_int32)MULT16_32_Q15(rate_factor, target-base_target); - + target = base_target + (opus_int32)MULT16_32_Q15(QCONST16(0.67f, 15), target-base_target); } if (!has_surround_mask && tf_estimate < QCONST16(.2f, 14)) |