mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-25 16:52:31 +00:00
aacenc_ltp: use an AR filter for LTP encoding as well
Seems to work better. Information on why the decoder does this is lacking. Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
This commit is contained in:
parent
3112501daf
commit
dcbe8d8abc
@ -107,7 +107,7 @@ void ff_aac_apply_tns(AACEncContext *s, SingleChannelElement *sce)
|
|||||||
IndividualChannelStream *ics = &sce->ics;
|
IndividualChannelStream *ics = &sce->ics;
|
||||||
int w, filt, m, i, top, order, bottom, start, end, size, inc;
|
int w, filt, m, i, top, order, bottom, start, end, size, inc;
|
||||||
const int mmm = FFMIN(ics->tns_max_bands, ics->max_sfb);
|
const int mmm = FFMIN(ics->tns_max_bands, ics->max_sfb);
|
||||||
float lpc[TNS_MAX_ORDER], tmp[TNS_MAX_ORDER+1];
|
float lpc[TNS_MAX_ORDER];
|
||||||
|
|
||||||
for (w = 0; w < ics->num_windows; w++) {
|
for (w = 0; w < ics->num_windows; w++) {
|
||||||
bottom = ics->num_swb;
|
bottom = ics->num_swb;
|
||||||
@ -133,19 +133,10 @@ void ff_aac_apply_tns(AACEncContext *s, SingleChannelElement *sce)
|
|||||||
}
|
}
|
||||||
start += w * 128;
|
start += w * 128;
|
||||||
|
|
||||||
if (!s->options.ltp) { // ar filter
|
/* AR filter */
|
||||||
for (m = 0; m < size; m++, start += inc) {
|
for (m = 0; m < size; m++, start += inc) {
|
||||||
for (i = 1; i <= FFMIN(m, order); i++) {
|
for (i = 1; i <= FFMIN(m, order); i++) {
|
||||||
sce->coeffs[start] += lpc[i-1]*sce->pcoeffs[start - i*inc];
|
sce->coeffs[start] += lpc[i-1]*sce->pcoeffs[start - i*inc];
|
||||||
}
|
|
||||||
}
|
|
||||||
} else { // ma filter
|
|
||||||
for (m = 0; m < size; m++, start += inc) {
|
|
||||||
tmp[0] = sce->pcoeffs[start];
|
|
||||||
for (i = 1; i <= FFMIN(m, order); i++)
|
|
||||||
sce->coeffs[start] += lpc[i-1]*tmp[i];
|
|
||||||
for (i = order; i > 0; i--)
|
|
||||||
tmp[i] = tmp[i - 1];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user