|
|
@ -181,7 +181,7 @@ void ff_aac_search_for_tns(AACEncContext *s, SingleChannelElement *sce) |
|
|
|
|
|
|
|
|
|
|
|
for (w = 0; w < sce->ics.num_windows; w++) { |
|
|
|
for (w = 0; w < sce->ics.num_windows; w++) { |
|
|
|
float en[2] = {0.0f, 0.0f}; |
|
|
|
float en[2] = {0.0f, 0.0f}; |
|
|
|
int oc_start = 0, os_start = 0; |
|
|
|
int oc_start = 0; |
|
|
|
int coef_start = sce->ics.swb_offset[sfb_start]; |
|
|
|
int coef_start = sce->ics.swb_offset[sfb_start]; |
|
|
|
|
|
|
|
|
|
|
|
for (g = sfb_start; g < sce->ics.num_swb && g <= sfb_end; g++) { |
|
|
|
for (g = sfb_start; g < sce->ics.num_swb && g <= sfb_end; g++) { |
|
|
@ -202,12 +202,11 @@ void ff_aac_search_for_tns(AACEncContext *s, SingleChannelElement *sce) |
|
|
|
tns->n_filt[w] = is8 ? 1 : order != TNS_MAX_ORDER ? 2 : 3; |
|
|
|
tns->n_filt[w] = is8 ? 1 : order != TNS_MAX_ORDER ? 2 : 3; |
|
|
|
for (g = 0; g < tns->n_filt[w]; g++) { |
|
|
|
for (g = 0; g < tns->n_filt[w]; g++) { |
|
|
|
tns->direction[w][g] = slant != 2 ? slant : en[g] < en[!g]; |
|
|
|
tns->direction[w][g] = slant != 2 ? slant : en[g] < en[!g]; |
|
|
|
tns->order[w][g] = g < tns->n_filt[w] ? order/tns->n_filt[w] : order - oc_start; |
|
|
|
tns->order[w][g] = order/tns->n_filt[w]; |
|
|
|
tns->length[w][g] = g < tns->n_filt[w] ? sfb_len/tns->n_filt[w] : sfb_len - os_start; |
|
|
|
tns->length[w][g] = sfb_len/tns->n_filt[w]; |
|
|
|
quantize_coefs(&coefs[oc_start], tns->coef_idx[w][g], tns->coef[w][g], |
|
|
|
quantize_coefs(&coefs[oc_start], tns->coef_idx[w][g], tns->coef[w][g], |
|
|
|
tns->order[w][g], c_bits); |
|
|
|
tns->order[w][g], c_bits); |
|
|
|
oc_start += tns->order[w][g]; |
|
|
|
oc_start += tns->order[w][g]; |
|
|
|
os_start += tns->length[w][g]; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
count++; |
|
|
|
count++; |
|
|
|
} |
|
|
|
} |
|
|
|