mirror of
https://github.com/xiph/opus.git
synced 2025-05-29 22:57:41 +00:00
Minor TF cleanup (tf_sum was useless), plus comments
This commit is contained in:
parent
f705e9b5bd
commit
2ca6df03df
2 changed files with 11 additions and 11 deletions
13
celt/celt.c
13
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 */
|
#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] = {
|
const signed char tf_select_table[4][8] = {
|
||||||
{0, -1, 0, -1, 0,-1, 0,-1},
|
/*isTransient=0 isTransient=1 */
|
||||||
{0, -1, 0, -2, 1, 0, 1,-1},
|
{0, -1, 0, -1, 0,-1, 0,-1}, /* 2.5 ms */
|
||||||
{0, -2, 0, -3, 2, 0, 1,-1},
|
{0, -1, 0, -2, 1, 0, 1,-1}, /* 5 ms */
|
||||||
{0, -2, 0, -3, 3, 0, 1,-1},
|
{0, -2, 0, -3, 2, 0, 1,-1}, /* 10 ms */
|
||||||
|
{0, -2, 0, -3, 3, 0, 1,-1}, /* 20 ms */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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,
|
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_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;
|
int i;
|
||||||
VARDECL(int, metric);
|
VARDECL(int, metric);
|
||||||
|
@ -575,7 +575,6 @@ static int tf_analysis(const CELTMode *m, int len, int isTransient,
|
||||||
ALLOC(path0, len, int);
|
ALLOC(path0, len, int);
|
||||||
ALLOC(path1, len, int);
|
ALLOC(path1, len, int);
|
||||||
|
|
||||||
*tf_sum = 0;
|
|
||||||
for (i=0;i<len;i++)
|
for (i=0;i<len;i++)
|
||||||
{
|
{
|
||||||
int k, N;
|
int k, N;
|
||||||
|
@ -630,7 +629,6 @@ static int tf_analysis(const CELTMode *m, int len, int isTransient,
|
||||||
metric[i] = 2*best_level;
|
metric[i] = 2*best_level;
|
||||||
else
|
else
|
||||||
metric[i] = -2*best_level;
|
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
|
/* For bands that can't be split to -1, set the metric to the half-way point to avoid
|
||||||
biasing the decision */
|
biasing the decision */
|
||||||
if (narrow && (metric[i]==0 || metric[i]==-2*LM))
|
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 end;
|
||||||
int effEnd;
|
int effEnd;
|
||||||
int codedBands;
|
int codedBands;
|
||||||
int tf_sum;
|
|
||||||
int alloc_trim;
|
int alloc_trim;
|
||||||
int pitch_index=COMBFILTER_MINPERIOD;
|
int pitch_index=COMBFILTER_MINPERIOD;
|
||||||
opus_val16 gain1 = 0;
|
opus_val16 gain1 = 0;
|
||||||
|
@ -1769,18 +1766,16 @@ int celt_encode_with_ec(CELTEncoder * OPUS_RESTRICT st, const opus_val16 * pcm,
|
||||||
else
|
else
|
||||||
lambda = 3;
|
lambda = 3;
|
||||||
lambda*=2;
|
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++)
|
for (i=effEnd;i<end;i++)
|
||||||
tf_res[i] = tf_res[effEnd-1];
|
tf_res[i] = tf_res[effEnd-1];
|
||||||
} else if (hybrid && effectiveBytes<15)
|
} else if (hybrid && effectiveBytes<15)
|
||||||
{
|
{
|
||||||
/* For low bitrate hybrid, we force temporal resolution to 5 ms rather than 2.5 ms. */
|
/* 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++)
|
for (i=0;i<end;i++)
|
||||||
tf_res[i] = 0;
|
tf_res[i] = 0;
|
||||||
tf_select=isTransient;
|
tf_select=isTransient;
|
||||||
} else {
|
} else {
|
||||||
tf_sum = 0;
|
|
||||||
for (i=0;i<end;i++)
|
for (i=0;i<end;i++)
|
||||||
tf_res[i] = isTransient;
|
tf_res[i] = isTransient;
|
||||||
tf_select=0;
|
tf_select=0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue