Lines Matching refs:ics
1387 static int decode_prediction(AACContext *ac, IndividualChannelStream *ics,
1392 ics->predictor_reset_group = get_bits(gb, 5);
1393 if (ics->predictor_reset_group == 0 ||
1394 ics->predictor_reset_group > 30) {
1400 for (sfb = 0; sfb < FFMIN(ics->max_sfb, ff_aac_pred_sfb_max[ac->oc[1].m4ac.sampling_index]); sfb++) {
1401 ics->prediction_used[sfb] = get_bits1(gb);
1423 static int decode_ics_info(AACContext *ac, IndividualChannelStream *ics,
1437 ics->window_sequence[1] = ics->window_sequence[0];
1438 ics->window_sequence[0] = get_bits(gb, 2);
1440 ics->window_sequence[0] != ONLY_LONG_SEQUENCE) {
1443 "window sequence %d found.\n", ics->window_sequence[0]);
1444 ics->window_sequence[0] = ONLY_LONG_SEQUENCE;
1447 ics->use_kb_window[1] = ics->use_kb_window[0];
1448 ics->use_kb_window[0] = get_bits1(gb);
1450 ics->num_window_groups = 1;
1451 ics->group_len[0] = 1;
1452 if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
1454 ics->max_sfb = get_bits(gb, 4);
1457 ics->group_len[ics->num_window_groups - 1]++;
1459 ics->num_window_groups++;
1460 ics->group_len[ics->num_window_groups - 1] = 1;
1463 ics->num_windows = 8;
1465 ics->swb_offset = ff_swb_offset_120[sampling_index];
1466 ics->num_swb = ff_aac_num_swb_120[sampling_index];
1468 ics->swb_offset = ff_swb_offset_128[sampling_index];
1469 ics->num_swb = ff_aac_num_swb_128[sampling_index];
1471 ics->tns_max_bands = ff_tns_max_bands_128[sampling_index];
1472 ics->predictor_present = 0;
1474 ics->max_sfb = get_bits(gb, 6);
1475 ics->num_windows = 1;
1478 ics->swb_offset = ff_swb_offset_480[sampling_index];
1479 ics->num_swb = ff_aac_num_swb_480[sampling_index];
1480 ics->tns_max_bands = ff_tns_max_bands_480[sampling_index];
1482 ics->swb_offset = ff_swb_offset_512[sampling_index];
1483 ics->num_swb = ff_aac_num_swb_512[sampling_index];
1484 ics->tns_max_bands = ff_tns_max_bands_512[sampling_index];
1486 if (!ics->num_swb || !ics->swb_offset) {
1492 ics->num_swb = ff_aac_num_swb_960[sampling_index];
1493 ics->swb_offset = ff_swb_offset_960[sampling_index];
1495 ics->num_swb = ff_aac_num_swb_1024[sampling_index];
1496 ics->swb_offset = ff_swb_offset_1024[sampling_index];
1498 ics->tns_max_bands = ff_tns_max_bands_1024[sampling_index];
1501 ics->predictor_present = get_bits1(gb);
1502 ics->predictor_reset_group = 0;
1504 if (ics->predictor_present) {
1506 if (decode_prediction(ac, ics, gb)) {
1521 if ((ics->ltp.present = get_bits(gb, 1)))
1522 decode_ltp(&ics->ltp, gb, ics->max_sfb);
1527 if (ics->max_sfb > ics->num_swb) {
1531 ics->max_sfb, ics->num_swb);
1537 ics->max_sfb = 0;
1551 IndividualChannelStream *ics)
1554 const int bits = (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) ? 3 : 5;
1555 for (g = 0; g < ics->num_window_groups; g++) {
1557 while (k < ics->max_sfb) {
1572 if (sect_end > ics->max_sfb) {
1575 sect_end, ics->max_sfb);
1600 IndividualChannelStream *ics,
1608 for (g = 0; g < ics->num_window_groups; g++) {
1609 for (i = 0; i < ics->max_sfb;) {
1701 GetBitContext *gb, const IndividualChannelStream *ics)
1704 const int is8 = ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE;
1706 for (w = 0; w < ics->num_windows; w++) {
1747 int max_idx = cpe->ch[0].ics.num_window_groups * cpe->ch[0].ics.max_sfb;
1771 const IndividualChannelStream *ics,
1775 const int c = 1024 / ics->num_windows;
1776 const uint16_t *offsets = ics->swb_offset;
1779 for (g = 0; g < ics->num_windows; g++)
1780 memset(coef + g * 128 + offsets[ics->max_sfb], 0,
1781 sizeof(INTFLOAT) * (c - offsets[ics->max_sfb]));
1783 for (g = 0; g < ics->num_window_groups; g++) {
1784 unsigned g_len = ics->group_len[g];
1786 for (i = 0; i < ics->max_sfb; i++, idx++) {
2038 for (g = 0; g < ics->num_window_groups; g++) {
2039 unsigned g_len = ics->group_len[g];
2041 for (i = 0; i < ics->max_sfb; i++, idx++) {
2067 if (!sce->ics.predictor_initialized) {
2069 sce->ics.predictor_initialized = 1;
2072 if (sce->ics.window_sequence[0] != EIGHT_SHORT_SEQUENCE) {
2076 for (k = sce->ics.swb_offset[sfb];
2077 k < sce->ics.swb_offset[sfb + 1];
2080 sce->ics.predictor_present &&
2081 sce->ics.prediction_used[sfb]);
2084 if (sce->ics.predictor_reset_group)
2086 sce->ics.predictor_reset_group);
2101 const int mode = sce->ics.window_sequence[0];
2131 IndividualChannelStream *ics = &sce->ics;
2150 ret = decode_ics_info(ac, ics, gb);
2156 sce->band_type_run_end, gb, ics)) < 0)
2158 if ((ret = decode_scalefactors(ac, sce->sf, gb, global_gain, ics,
2165 if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
2171 if (decode_pulses(&pulse, gb, ics->swb_offset, ics->num_swb)) {
2180 ret = decode_tns(ac, tns, gb, ics);
2194 ret = decode_tns(ac, tns, gb, ics);
2201 &pulse, ics, sce->band_type);
2219 const IndividualChannelStream *ics = &cpe->ch[0].ics;
2223 const uint16_t *offsets = ics->swb_offset;
2224 for (g = 0; g < ics->num_window_groups; g++) {
2225 for (i = 0; i < ics->max_sfb; i++, idx++) {
2230 for (group = 0; group < ics->group_len[g]; group++) {
2235 for (group = 0; group < ics->group_len[g]; group++) {
2243 ch0 += ics->group_len[g] * 128;
2244 ch1 += ics->group_len[g] * 128;
2258 const IndividualChannelStream *ics = &cpe->ch[1].ics;
2261 const uint16_t *offsets = ics->swb_offset;
2265 for (g = 0; g < ics->num_window_groups; g++) {
2266 for (i = 0; i < ics->max_sfb;) {
2275 for (group = 0; group < ics->group_len[g]; group++)
2295 coef0 += ics->group_len[g] * 128;
2296 coef1 += ics->group_len[g] * 128;
2312 if (decode_ics_info(ac, &cpe->ch[0].ics, gb))
2314 i = cpe->ch[1].ics.use_kb_window[0];
2315 cpe->ch[1].ics = cpe->ch[0].ics;
2316 cpe->ch[1].ics.use_kb_window[1] = i;
2317 if (cpe->ch[1].ics.predictor_present &&
2319 if ((cpe->ch[1].ics.ltp.present = get_bits(gb, 1)))
2320 decode_ltp(&cpe->ch[1].ics.ltp, gb, cpe->ch[1].ics.max_sfb);
2409 for (g = 0; g < sce->ics.num_window_groups; g++) {
2410 for (sfb = 0; sfb < sce->ics.max_sfb; sfb++, idx++) {
2608 IndividualChannelStream *ics, int decode)
2610 const int mmm = FFMIN(ics->tns_max_bands, ics->max_sfb);
2620 for (w = 0; w < ics->num_windows; w++) {
2621 bottom = ics->num_swb;
2632 start = ics->swb_offset[FFMIN(bottom, mmm)];
2633 end = ics->swb_offset[FFMIN( top, mmm)];
2668 INTFLOAT *in, IndividualChannelStream *ics)
2670 const INTFLOAT *lwindow = ics->use_kb_window[0] ? AAC_RENAME2(aac_kbd_long_1024) : AAC_RENAME2(sine_1024);
2671 const INTFLOAT *swindow = ics->use_kb_window[0] ? AAC_RENAME2(aac_kbd_short_128) : AAC_RENAME2(sine_128);
2672 const INTFLOAT *lwindow_prev = ics->use_kb_window[1] ? AAC_RENAME2(aac_kbd_long_1024) : AAC_RENAME2(sine_1024);
2673 const INTFLOAT *swindow_prev = ics->use_kb_window[1] ? AAC_RENAME2(aac_kbd_short_128) : AAC_RENAME2(sine_128);
2675 if (ics->window_sequence[0] != LONG_STOP_SEQUENCE) {
2681 if (ics->window_sequence[0] != LONG_START_SEQUENCE) {
2695 const LongTermPrediction *ltp = &sce->ics.ltp;
2696 const uint16_t *offsets = sce->ics.swb_offset;
2699 if (sce->ics.window_sequence[0] != EIGHT_SHORT_SEQUENCE) {
2710 ac->windowing_and_mdct_ltp(ac, predFreq, predTime, &sce->ics);
2713 ac->apply_tns(predFreq, &sce->tns, &sce->ics, 0);
2715 for (sfb = 0; sfb < FFMIN(sce->ics.max_sfb, MAX_LTP_LONG_SFB); sfb++)
2727 IndividualChannelStream *ics = &sce->ics;
2730 const INTFLOAT *lwindow = ics->use_kb_window[0] ? AAC_RENAME2(aac_kbd_long_1024) : AAC_RENAME2(sine_1024);
2731 const INTFLOAT *swindow = ics->use_kb_window[0] ? AAC_RENAME2(aac_kbd_short_128) : AAC_RENAME2(sine_128);
2734 if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
2741 } else if (ics->window_sequence[0] == LONG_START_SEQUENCE) {
2765 IndividualChannelStream *ics = &sce->ics;
2769 const INTFLOAT *swindow = ics->use_kb_window[0] ? AAC_RENAME2(aac_kbd_short_128) : AAC_RENAME2(sine_128);
2770 const INTFLOAT *lwindow_prev = ics->use_kb_window[1] ? AAC_RENAME2(aac_kbd_long_1024) : AAC_RENAME2(sine_1024);
2771 const INTFLOAT *swindow_prev = ics->use_kb_window[1] ? AAC_RENAME2(aac_kbd_short_128) : AAC_RENAME2(sine_128);
2777 if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
2794 if ((ics->window_sequence[1] == ONLY_LONG_SEQUENCE || ics->window_sequence[1] == LONG_STOP_SEQUENCE) &&
2795 (ics->window_sequence[0] == ONLY_LONG_SEQUENCE || ics->window_sequence[0] == LONG_START_SEQUENCE)) {
2800 if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
2814 if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
2820 } else if (ics->window_sequence[0] == LONG_START_SEQUENCE) {
2834 IndividualChannelStream *ics = &sce->ics;
2838 const INTFLOAT *swindow = ics->use_kb_window[0] ? AAC_RENAME(aac_kbd_short_120) : AAC_RENAME(sine_120);
2839 const INTFLOAT *lwindow_prev = ics->use_kb_window[1] ? AAC_RENAME(aac_kbd_long_960) : AAC_RENAME(sine_960);
2840 const INTFLOAT *swindow_prev = ics->use_kb_window[1] ? AAC_RENAME(aac_kbd_short_120) : AAC_RENAME(sine_120);
2846 if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
2860 if ((ics->window_sequence[1] == ONLY_LONG_SEQUENCE || ics->window_sequence[1] == LONG_STOP_SEQUENCE) &&
2861 (ics->window_sequence[0] == ONLY_LONG_SEQUENCE || ics->window_sequence[0] == LONG_START_SEQUENCE)) {
2866 if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
2880 if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
2886 } else if (ics->window_sequence[0] == LONG_START_SEQUENCE) {
2896 IndividualChannelStream *ics = &sce->ics;
2914 if (ics->use_kb_window[1]) {
3057 if (che->ch[0].ics.predictor_present) {
3058 if (che->ch[0].ics.ltp.present)
3060 if (che->ch[1].ics.ltp.present && type == TYPE_CPE)
3065 ac->apply_tns(che->ch[0].coeffs, &che->ch[0].tns, &che->ch[0].ics, 1);
3067 ac->apply_tns(che->ch[1].coeffs, &che->ch[1].tns, &che->ch[1].ics, 1);