From: Rostislav Pehlivanov Date: Sat, 17 Oct 2015 09:58:06 +0000 (+0100) Subject: aacenc_tns: simplify encoding function X-Git-Tag: android-x86-7.1-r1~8451 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=bf39beca8784077a3918de0933eaaa84a94e42a4;p=android-x86%2Fexternal-ffmpeg.git 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(). --- diff --git a/libavcodec/aacenc_tns.c b/libavcodec/aacenc_tns.c index 62cf7a06a1..f08b31eb62 100644 --- a/libavcodec/aacenc_tns.c +++ b/libavcodec/aacenc_tns.c @@ -59,31 +59,31 @@ static inline int compress_coeffs(int *coef, int order, int c_bits) */ void ff_aac_encode_tns_info(AACEncContext *s, SingleChannelElement *sce) { - int i, w, filt, coef_len, coef_compress = 0; - const int is8 = sce->ics.window_sequence[0] == EIGHT_SHORT_SEQUENCE; + int i, w, filt, coef_compress = 0, coef_len; 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) return; for (i = 0; i < sce->ics.num_windows; i++) { put_bits(&s->pb, 2 - is8, sce->tns.n_filt[i]); - if (tns->n_filt[i]) { - put_bits(&s->pb, 1, c_bits); - for (filt = 0; filt < tns->n_filt[i]; filt++) { - put_bits(&s->pb, 6 - 2 * is8, tns->length[i][filt]); - put_bits(&s->pb, 5 - 2 * is8, tns->order[i][filt]); - if (tns->order[i][filt]) { - coef_compress = compress_coeffs(tns->coef_idx[i][filt], - tns->order[i][filt], c_bits); - put_bits(&s->pb, 1, !!tns->direction[i][filt]); - put_bits(&s->pb, 1, !!coef_compress); - coef_len = c_bits + 3 - coef_compress; - for (w = 0; w < tns->order[i][filt]; w++) - put_bits(&s->pb, coef_len, tns->coef_idx[i][filt][w]); - } - } + if (!tns->n_filt[i]) + continue; + put_bits(&s->pb, 1, c_bits); + for (filt = 0; filt < tns->n_filt[i]; filt++) { + put_bits(&s->pb, 6 - 2 * is8, tns->length[i][filt]); + put_bits(&s->pb, 5 - 2 * is8, 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], + tns->order[i][filt], c_bits); + put_bits(&s->pb, 1, coef_compress); + coef_len = c_bits + 3 - coef_compress; + for (w = 0; w < tns->order[i][filt]; w++) + put_bits(&s->pb, coef_len, tns->coef_idx[i][filt][w]); } } }