aacenc_tns: simplify encoding function

It's simpler and has 2 less levels than the previous which
was practically lifted from the decoder with put_bits() instead
of get_bits().
This commit is contained in:
Rostislav Pehlivanov 2015-10-17 10:58:06 +01:00
parent f3ad901a32
commit bf39beca87
1 changed files with 18 additions and 18 deletions

View File

@ -59,33 +59,33 @@ static inline int compress_coeffs(int *coef, int order, int c_bits)
*/ */
void ff_aac_encode_tns_info(AACEncContext *s, SingleChannelElement *sce) void ff_aac_encode_tns_info(AACEncContext *s, SingleChannelElement *sce)
{ {
int i, w, filt, coef_len, coef_compress = 0; int i, w, filt, coef_compress = 0, coef_len;
const int is8 = sce->ics.window_sequence[0] == EIGHT_SHORT_SEQUENCE;
TemporalNoiseShaping *tns = &sce->tns; TemporalNoiseShaping *tns = &sce->tns;
const int c_bits = is8 ? TNS_Q_BITS_SHORT == 4 : TNS_Q_BITS == 4; const int is8 = sce->ics.window_sequence[0] == EIGHT_SHORT_SEQUENCE;
const int c_bits = is8 ? TNS_Q_BITS_IS8 == 4 : TNS_Q_BITS == 4;
if (!sce->tns.present) if (!sce->tns.present)
return; return;
for (i = 0; i < sce->ics.num_windows; i++) { for (i = 0; i < sce->ics.num_windows; i++) {
put_bits(&s->pb, 2 - is8, sce->tns.n_filt[i]); put_bits(&s->pb, 2 - is8, sce->tns.n_filt[i]);
if (tns->n_filt[i]) { if (!tns->n_filt[i])
continue;
put_bits(&s->pb, 1, c_bits); put_bits(&s->pb, 1, c_bits);
for (filt = 0; filt < tns->n_filt[i]; filt++) { for (filt = 0; filt < tns->n_filt[i]; filt++) {
put_bits(&s->pb, 6 - 2 * is8, tns->length[i][filt]); put_bits(&s->pb, 6 - 2 * is8, tns->length[i][filt]);
put_bits(&s->pb, 5 - 2 * is8, tns->order[i][filt]); put_bits(&s->pb, 5 - 2 * is8, tns->order[i][filt]);
if (tns->order[i][filt]) { if (!tns->order[i][filt])
continue;
put_bits(&s->pb, 1, tns->direction[i][filt]);
coef_compress = compress_coeffs(tns->coef_idx[i][filt], coef_compress = compress_coeffs(tns->coef_idx[i][filt],
tns->order[i][filt], c_bits); tns->order[i][filt], c_bits);
put_bits(&s->pb, 1, !!tns->direction[i][filt]); put_bits(&s->pb, 1, coef_compress);
put_bits(&s->pb, 1, !!coef_compress);
coef_len = c_bits + 3 - coef_compress; coef_len = c_bits + 3 - coef_compress;
for (w = 0; w < tns->order[i][filt]; w++) for (w = 0; w < tns->order[i][filt]; w++)
put_bits(&s->pb, coef_len, tns->coef_idx[i][filt][w]); put_bits(&s->pb, coef_len, tns->coef_idx[i][filt][w]);
} }
} }
}
}
} }
/* Apply TNS filter */ /* Apply TNS filter */