summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@jmvalin.ca>2016-06-08 02:15:21 -0400
committerJean-Marc Valin <jmvalin@jmvalin.ca>2016-06-29 15:21:31 -0400
commit4108cded16aef0ccf079c2b11a043614a59b388b (patch)
tree948f6d34d7a50eb4fa57fafd405e90563652e99c
parent2c21ce861a5cc98734ed4c069a7869d0649dd949 (diff)
downloadopus-4108cded16aef0ccf079c2b11a043614a59b388b.tar.gz
Minor TF cleanup (tf_sum was useless), plus comments
-rw-r--r--celt/celt.c13
-rw-r--r--celt/celt_encoder.c9
2 files changed, 11 insertions, 11 deletions
diff --git a/celt/celt.c b/celt/celt.c
index b121c51a..2425ba3e 100644
--- a/celt/celt.c
+++ b/celt/celt.c
@@ -244,11 +244,16 @@ void comb_filter(opus_val32 *y, opus_val32 *x, int T0, int T1, int N,
}
#endif /* OVERRIDE_comb_filter */
+/* TF change table. Positive values mean better frequency resolution (longer
+ effective window), whereas negative values mean better time resolution
+ (shorter effective window). The second index is computed as:
+ 4*isTransient + 2*tf_select + per_band_flag */
const signed char tf_select_table[4][8] = {
- {0, -1, 0, -1, 0,-1, 0,-1},
- {0, -1, 0, -2, 1, 0, 1,-1},
- {0, -2, 0, -3, 2, 0, 1,-1},
- {0, -2, 0, -3, 3, 0, 1,-1},
+ /*isTransient=0 isTransient=1 */
+ {0, -1, 0, -1, 0,-1, 0,-1}, /* 2.5 ms */
+ {0, -1, 0, -2, 1, 0, 1,-1}, /* 5 ms */
+ {0, -2, 0, -3, 2, 0, 1,-1}, /* 10 ms */
+ {0, -2, 0, -3, 3, 0, 1,-1}, /* 20 ms */
};
diff --git a/celt/celt_encoder.c b/celt/celt_encoder.c
index 9486bd16..edb08e80 100644
--- a/celt/celt_encoder.c
+++ b/celt/celt_encoder.c
@@ -550,7 +550,7 @@ static opus_val32 l1_metric(const celt_norm *tmp, int N, int LM, opus_val16 bias
static int tf_analysis(const CELTMode *m, int len, int isTransient,
int *tf_res, int lambda, celt_norm *X, int N0, int LM,
- int *tf_sum, opus_val16 tf_estimate, int tf_chan)
+ opus_val16 tf_estimate, int tf_chan)
{
int i;
VARDECL(int, metric);
@@ -575,7 +575,6 @@ static int tf_analysis(const CELTMode *m, int len, int isTransient,
ALLOC(path0, len, int);
ALLOC(path1, len, int);
- *tf_sum = 0;
for (i=0;i<len;i++)
{
int k, N;
@@ -630,7 +629,6 @@ static int tf_analysis(const CELTMode *m, int len, int isTransient,
metric[i] = 2*best_level;
else
metric[i] = -2*best_level;
- *tf_sum += (isTransient ? LM : 0) - metric[i]/2;
/* For bands that can't be split to -1, set the metric to the half-way point to avoid
biasing the decision */
if (narrow && (metric[i]==0 || metric[i]==-2*LM))
@@ -1334,7 +1332,6 @@ int celt_encode_with_ec(CELTEncoder * OPUS_RESTRICT st, const opus_val16 * pcm,
int end;
int effEnd;
int codedBands;
- int tf_sum;
int alloc_trim;
int pitch_index=COMBFILTER_MINPERIOD;
opus_val16 gain1 = 0;
@@ -1769,18 +1766,16 @@ int celt_encode_with_ec(CELTEncoder * OPUS_RESTRICT st, const opus_val16 * pcm,
else
lambda = 3;
lambda*=2;
- tf_select = tf_analysis(mode, effEnd, isTransient, tf_res, lambda, X, N, LM, &tf_sum, tf_estimate, tf_chan);
+ tf_select = tf_analysis(mode, effEnd, isTransient, tf_res, lambda, X, N, LM, 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++)
tf_res[i] = isTransient;
tf_select=0;