diff options
author | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2016-06-06 16:54:29 -0400 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2016-07-19 16:11:50 -0400 |
commit | 8229f07d3bfbef53f1d89cfd371b4deed6f92227 (patch) | |
tree | 812c088cf7984b6a99dd89b80c6058c3fc213acf /celt/celt_encoder.c | |
parent | 92d2492bfdbea8267faf0e6a6fbba09a5ffa7b1c (diff) | |
download | opus-8229f07d3bfbef53f1d89cfd371b4deed6f92227.tar.gz |
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.
Diffstat (limited to 'celt/celt_encoder.c')
-rw-r--r-- | celt/celt_encoder.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/celt/celt_encoder.c b/celt/celt_encoder.c index 98cf4a88..29f67c94 100644 --- a/celt/celt_encoder.c +++ b/celt/celt_encoder.c @@ -1772,6 +1772,13 @@ int celt_encode_with_ec(CELTEncoder * OPUS_RESTRICT st, const opus_val16 * pcm, tf_select = tf_analysis(mode, effEnd, isTransient, tf_res, lambda, X, N, LM, &tf_sum, tf_estimate, tf_chan); for (i=effEnd;i<end;i++) tf_res[i] = tf_res[effEnd-1]; + } else if (hybrid && effectiveBytes<15) + { + /* For low bitrate hybrid, we force temporal resolution to 5 ms rather than 2.5 ms. */ + tf_sum = 0; + for (i=0;i<end;i++) + tf_res[i] = 0; + tf_select=isTransient; } else { tf_sum = 0; for (i=0;i<end;i++) |