99                             enum OCStatus oc_type, 
int get_new_frame);
 
  101 #define overread_err "Input buffer exhausted before END element found\n" 
  106     for (i = 0; i < tags; i++) {
 
  107         int syn_ele = 
layout[i][0];
 
  109         sum += (1 + (syn_ele == 
TYPE_CPE)) *
 
  129                                  int type, 
int id, 
int *channels)
 
  134         if (!ac->
che[type][
id]) {
 
  151         if (ac->
che[type][
id])
 
  164     for (type = 0; type < 4; type++) {
 
  184     for (ch = 0; ch < avctx->
channels; ch++) {
 
  201                        uint64_t right, 
int pos)
 
  203     if (layout_map[offset][0] == 
TYPE_CPE) {
 
  205             .av_position  = left | right,
 
  207             .elem_id      = layout_map[
offset][1],
 
  215             .elem_id      = layout_map[
offset][1],
 
  219             .av_position  = right,
 
  221             .elem_id      = layout_map[offset + 1][1],
 
  231     int num_pos_channels = 0;
 
  235     for (i = *current; i < tags; i++) {
 
  236         if (layout_map[i][2] != pos)
 
  246             num_pos_channels += 2;
 
  257     return num_pos_channels;
 
  262     int i, 
n, total_non_cc_elements;
 
  264     int num_front_channels, num_side_channels, num_back_channels;
 
  273     if (num_front_channels < 0)
 
  277     if (num_side_channels < 0)
 
  281     if (num_back_channels < 0)
 
  284     if (num_side_channels == 0 && num_back_channels >= 4) {
 
  285         num_side_channels = 2;
 
  286         num_back_channels -= 2;
 
  290     if (num_front_channels & 1) {
 
  294             .elem_id      = layout_map[i][1],
 
  298         num_front_channels--;
 
  300     if (num_front_channels >= 4) {
 
  305         num_front_channels -= 2;
 
  307     if (num_front_channels >= 2) {
 
  312         num_front_channels -= 2;
 
  314     while (num_front_channels >= 2) {
 
  319         num_front_channels -= 2;
 
  322     if (num_side_channels >= 2) {
 
  327         num_side_channels -= 2;
 
  329     while (num_side_channels >= 2) {
 
  334         num_side_channels -= 2;
 
  337     while (num_back_channels >= 4) {
 
  342         num_back_channels -= 2;
 
  344     if (num_back_channels >= 2) {
 
  349         num_back_channels -= 2;
 
  351     if (num_back_channels) {
 
  355             .elem_id      = layout_map[i][1],
 
  366             .elem_id      = layout_map[i][1],
 
  375             .elem_id      = layout_map[i][1],
 
  382     total_non_cc_elements = n = i;
 
  385         for (i = 1; i < 
n; i++)
 
  386             if (e2c_vec[i - 1].av_position > e2c_vec[i].av_position) {
 
  394     for (i = 0; i < total_non_cc_elements; i++) {
 
  395         layout_map[i][0] = e2c_vec[i].
syn_ele;
 
  396         layout_map[i][1] = e2c_vec[i].
elem_id;
 
  398         if (e2c_vec[i].av_position != UINT64_MAX) {
 
  411         ac->
oc[0] = ac->
oc[1];
 
  422         ac->
oc[1] = ac->
oc[0];
 
  437                             uint8_t layout_map[MAX_ELEM_ID * 4][3], 
int tags,
 
  438                             enum OCStatus oc_type, 
int get_new_frame)
 
  441     int i, channels = 0, ret;
 
  447         memcpy(ac->
oc[1].
layout_map, layout_map, tags * 
sizeof(layout_map[0]));
 
  450     for (i = 0; i < tags; i++) {
 
  451         int type =         layout_map[i][0];
 
  452         int id =           layout_map[i][1];
 
  454         if (id_map[type][
id] >= MAX_ELEM_ID) {
 
  463     for (i = 0; i < tags; i++) {
 
  464         int type =     layout_map[i][0];
 
  465         int id =       layout_map[i][1];
 
  466         int iid =      id_map[
type][
id];
 
  467         int position = layout_map[i][2];
 
  475     if (ac->
oc[1].
m4ac.
ps == 1 && channels == 2) {
 
  501     for (type = 3; type >= 0; type--) {
 
  505                 for (j = 0; j <= 1; j++) {
 
  524     if (channel_config < 1 || (channel_config > 7 && channel_config < 11) ||
 
  525         channel_config > 12) {
 
  527                "invalid default channel configuration (%d)\n",
 
  533            *tags * 
sizeof(*layout_map));
 
  548                " instead of a spec-compliant 7.1(wide) layout, use -strict %d to decode" 
  566         uint8_t layout_map[MAX_ELEM_ID*4][3];
 
  573                                        &layout_map_tags, 2) < 0)
 
  585         uint8_t layout_map[MAX_ELEM_ID * 4][3];
 
  592                                        &layout_map_tags, 1) < 0)
 
  628                    "This stream seems to incorrectly report its last channel as %s[%d], mapping to LFE[0]\n",
 
  629                    type == 
TYPE_SCE ? 
"SCE" : 
"LFE", elem_id);
 
  650                    "This stream seems to incorrectly report its last channel as %s[%d], mapping to SCE[1]\n",
 
  651                    type == 
TYPE_SCE ? 
"SCE" : 
"LFE", elem_id);
 
  711         layout_map[0][0] = syn_ele;
 
  713         layout_map[0][2] = 
type;
 
  727     int num_front, num_side, num_back, num_lfe, num_assoc_data, num_cc;
 
  737                "Sample rate index in program config element does not " 
  738                "match the sample rate index configured by the container.\n");
 
  755     if (
get_bits_left(gb) < 4 * (num_front + num_side + num_back + num_lfe + num_assoc_data + num_cc)) {
 
  798     int extension_flag, ret, ep_config, res_flags;
 
  799     uint8_t layout_map[MAX_ELEM_ID*4][3];
 
  816     if (channel_config == 0) {
 
  818         tags = 
decode_pce(avctx, m4ac, layout_map, gb);
 
  823                                               &tags, channel_config)))
 
  829     } 
else if (m4ac->
sbr == 1 && m4ac->
ps == -1)
 
  835     if (extension_flag) {
 
  848                                               "AAC data resilience (flags %x)",
 
  864                                           "epConfig %d", ep_config);
 
  876     int ret, ep_config, res_flags;
 
  877     uint8_t layout_map[MAX_ELEM_ID*4][3];
 
  879     const int ELDEXT_TERM = 0;
 
  894                                       "AAC data resilience (flags %x)",
 
  905     while (
get_bits(gb, 4) != ELDEXT_TERM) {
 
  919                                           &tags, channel_config)))
 
  928                                       "epConfig %d", ep_config);
 
  955     if (bit_size < 0 || bit_size > INT_MAX) {
 
  960     ff_dlog(avctx, 
"audio specific config size %d\n", (
int)bit_size >> 3);
 
  961     for (i = 0; i < bit_size >> 3; i++)
 
  962         ff_dlog(avctx, 
"%02x ", data[i]);
 
  969                                           sync_extension)) < 0)
 
  973                "invalid sampling rate index %d\n",
 
  980                "invalid low delay sampling rate index %d\n",
 
 1004                                       "Audio object type %s%d",
 
 1005                                       m4ac->
sbr == 1 ? 
"SBR+" : 
"",
 
 1011             "AOT %d chan config %d sampling index %d (%d) SBR %d PS %d\n",
 
 1028     union { 
unsigned u; 
int s; } v = { previous_val * 1664525u + 1013904223 };
 
 1041          if (92017 <= rate) 
return 0;
 
 1042     else if (75132 <= rate) 
return 1;
 
 1043     else if (55426 <= rate) 
return 2;
 
 1044     else if (46009 <= rate) 
return 3;
 
 1045     else if (37566 <= rate) 
return 4;
 
 1046     else if (27713 <= rate) 
return 5;
 
 1047     else if (23004 <= rate) 
return 6;
 
 1048     else if (18783 <= rate) 
return 7;
 
 1049     else if (13856 <= rate) 
return 8;
 
 1050     else if (11502 <= rate) 
return 9;
 
 1051     else if (9391  <= rate) 
return 10;
 
 1062 #define AAC_INIT_VLC_STATIC(num, size)                                     \ 
 1063     INIT_VLC_STATIC(&vlc_spectral[num], 8, ff_aac_spectral_sizes[num],     \ 
 1064          ff_aac_spectral_bits[num], sizeof(ff_aac_spectral_bits[num][0]),  \ 
 1065                                     sizeof(ff_aac_spectral_bits[num][0]),  \ 
 1066         ff_aac_spectral_codes[num], sizeof(ff_aac_spectral_codes[num][0]), \ 
 1067                                     sizeof(ff_aac_spectral_codes[num][0]), \ 
 1139         uint8_t layout_map[MAX_ELEM_ID*4][3];
 
 1140         int layout_map_tags;
 
 1225                    "Invalid Predictor Reset Group.\n");
 
 1269                    "AAC LD is only defined for ONLY_LONG_SEQUENCE but " 
 1282         for (i = 0; i < 7; i++) {
 
 1327                        "Prediction is not allowed in AAC-LC.\n");
 
 1332                            "LTP in ER AAC LD not yet implemented.\n");
 
 1343                "Number of scalefactor bands in group (%d) " 
 1344                "exceeds limit (%d).\n",
 
 1371         while (k < ics->max_sfb) {
 
 1374             int sect_band_type = 
get_bits(gb, 4);
 
 1375             if (sect_band_type == 12) {
 
 1380                 sect_len_incr = 
get_bits(gb, bits);
 
 1381                 sect_end += sect_len_incr;
 
 1386                 if (sect_end > ics->
max_sfb) {
 
 1388                            "Number of bands (%d) exceeds limit (%d).\n",
 
 1392             } 
while (sect_len_incr == (1 << bits) - 1);
 
 1393             for (; k < sect_end; k++) {
 
 1394                 band_type        [idx]   = sect_band_type;
 
 1395                 band_type_run_end[idx++] = sect_end;
 
 1413                                unsigned int global_gain,
 
 1416                                int band_type_run_end[120])
 
 1423         for (i = 0; i < ics->
max_sfb;) {
 
 1424             int run_end = band_type_run_end[idx];
 
 1425             if (band_type[idx] == 
ZERO_BT) {
 
 1426                 for (; i < run_end; i++, idx++)
 
 1430                 for (; i < run_end; i++, idx++) {
 
 1432                     clipped_offset = av_clip(offset[2], -155, 100);
 
 1433                     if (offset[2] != clipped_offset) {
 
 1435                                               "If you heard an audible artifact, there may be a bug in the decoder. " 
 1436                                               "Clipped intensity stereo position (%d -> %d)",
 
 1437                                               offset[2], clipped_offset);
 
 1440                     sf[idx] = 100 - clipped_offset;
 
 1445             } 
else if (band_type[idx] == 
NOISE_BT) {
 
 1446                 for (; i < run_end; i++, idx++) {
 
 1447                     if (noise_flag-- > 0)
 
 1451                     clipped_offset = av_clip(offset[1], -100, 155);
 
 1452                     if (offset[1] != clipped_offset) {
 
 1454                                               "If you heard an audible artifact, there may be a bug in the decoder. " 
 1455                                               "Clipped noise gain (%d -> %d)",
 
 1456                                               offset[1], clipped_offset);
 
 1459                     sf[idx] = -(100 + clipped_offset);
 
 1465                 for (; i < run_end; i++, idx++) {
 
 1467                     if (offset[0] > 255
U) {
 
 1469                                "Scalefactor (%d) out of range.\n", offset[0]);
 
 1473                     sf[idx] = -offset[0];
 
 1488                          const uint16_t *swb_offset, 
int num_swb)
 
 1493     if (pulse_swb >= num_swb)
 
 1495     pulse->
pos[0]    = swb_offset[pulse_swb];
 
 1497     if (pulse->
pos[0] >= swb_offset[num_swb])
 
 1500     for (i = 1; i < pulse->
num_pulse; i++) {
 
 1502         if (pulse->
pos[i] >= swb_offset[num_swb])
 
 1517     int w, 
filt, i, coef_len, coef_res, coef_compress;
 
 1524             for (filt = 0; filt < tns->
n_filt[w]; filt++) {
 
 1528                 if ((tns->
order[w][filt] = 
get_bits(gb, 5 - 2 * is8)) > tns_max_order) {
 
 1530                            "TNS filter order %d is greater than maximum %d.\n",
 
 1531                            tns->
order[w][filt], tns_max_order);
 
 1535                 if (tns->
order[w][filt]) {
 
 1538                     coef_len = coef_res + 3 - coef_compress;
 
 1539                     tmp2_idx = 2 * coef_compress + coef_res;
 
 1541                     for (i = 0; i < tns->
order[w][
filt]; i++)
 
 1562     if (ms_present == 1) {
 
 1563         for (idx = 0; idx < max_idx; idx++)
 
 1565     } 
else if (ms_present == 2) {
 
 1584                                        int pulse_present, 
const Pulse *pulse,
 
 1588     int i, k, 
g, idx = 0;
 
 1594         memset(coef + g * 128 + offsets[ics->
max_sfb], 0,
 
 1600         for (i = 0; i < ics->
max_sfb; i++, idx++) {
 
 1601             const unsigned cbt_m1 = band_type[idx] - 1;
 
 1603             int off_len = offsets[i + 1] - offsets[i];
 
 1607                 for (group = 0; group < (
AAC_SIGNE)g_len; group++, cfo+=128) {
 
 1608                     memset(cfo, 0, off_len * 
sizeof(*cfo));
 
 1610             } 
else if (cbt_m1 == 
NOISE_BT - 1) {
 
 1611                 for (group = 0; group < (
AAC_SIGNE)g_len; group++, cfo+=128) {
 
 1617                     for (k = 0; k < off_len; k++) {
 
 1627                     band_energy = ac->
fdsp->scalarproduct_fixed(cfo, cfo, off_len);
 
 1632                     scale = sf[idx] / sqrtf(band_energy);
 
 1644                 switch (cbt_m1 >> 1) {
 
 1646                     for (group = 0; group < (
AAC_SIGNE)g_len; group++, cfo+=128) {
 
 1656                             cb_idx = cb_vector_idx[code];
 
 1660                             cf = 
VMUL4(cf, vq, cb_idx, sf + idx);
 
 1667                     for (group = 0; group < (
AAC_SIGNE)g_len; group++, cfo+=128) {
 
 1679                             cb_idx = cb_vector_idx[code];
 
 1680                             nnz = cb_idx >> 8 & 15;
 
 1686                             cf = 
VMUL4S(cf, vq, cb_idx, bits, sf + idx);
 
 1693                     for (group = 0; group < (
AAC_SIGNE)g_len; group++, cfo+=128) {
 
 1703                             cb_idx = cb_vector_idx[code];
 
 1707                             cf = 
VMUL2(cf, vq, cb_idx, sf + idx);
 
 1715                     for (group = 0; group < (
AAC_SIGNE)g_len; group++, cfo+=128) {
 
 1727                             cb_idx = cb_vector_idx[code];
 
 1728                             nnz = cb_idx >> 8 & 15;
 
 1729                             sign = nnz ? 
SHOW_UBITS(
re, gb, nnz) << (cb_idx >> 12) : 0;
 
 1734                             cf = 
VMUL2S(cf, vq, cb_idx, sign, sf + idx);
 
 1741                     for (group = 0; group < (
AAC_SIGNE)g_len; group++, cfo+=128) {
 
 1747                         uint32_t *icf = (uint32_t *) cf;
 
 1767                             cb_idx = cb_vector_idx[code];
 
 1773                             for (j = 0; j < 2; j++) {
 
 1808                                     unsigned v = ((
const uint32_t*)vq)[cb_idx & 15];
 
 1809                                     *icf++ = (bits & 1
U<<31) | v;
 
 1828     if (pulse_present) {
 
 1830         for (i = 0; i < pulse->
num_pulse; i++) {
 
 1832             while (offsets[idx + 1] <= pulse->
pos[i])
 
 1834             if (band_type[idx] != 
NOISE_BT && sf[idx]) {
 
 1838                     ico = co + (co > 0 ? -ico : ico);
 
 1840                 coef_base[ pulse->
pos[i] ] = ico;
 
 1844                     ico = co / sqrtf(sqrtf(fabsf(co))) + (co > 0 ? -ico : ico);
 
 1846                 coef_base[ pulse->
pos[i] ] = 
cbrtf(fabsf(ico)) * ico * sf[idx];
 
 1857         for (i = 0; i < ics->
max_sfb; i++, idx++) {
 
 1858             const unsigned cbt_m1 = band_type[idx] - 1;
 
 1859             int *cfo = coef + offsets[i];
 
 1860             int off_len = offsets[i + 1] - offsets[i];
 
 1864                 for (group = 0; group < (int)g_len; group++, cfo+=128) {
 
 1893                  k < sce->ics.swb_offset[sfb + 1];
 
 1922     int global_gain, eld_syntax, er_syntax, pulse_present = 0;
 
 1938     if (!common_window && !scale_flag) {
 
 1952         if (!eld_syntax && (pulse_present = 
get_bits1(gb))) {
 
 1955                        "Pulse tool not allowed in eight short sequence.\n");
 
 1960                        "Pulse data corrupt or invalid.\n");
 
 1965         if (tns->
present && !er_syntax)
 
 1974         if (tns->
present && er_syntax)
 
 1997     int g, i, group, idx = 0;
 
 2000         for (i = 0; i < ics->
max_sfb; i++, idx++) {
 
 2005                 for (group = 0; group < ics->
group_len[
g]; group++) {
 
 2006                     ac->
fdsp->butterflies_fixed(ch0 + group * 128 + offsets[i],
 
 2007                                                 ch1 + group * 128 + offsets[i],
 
 2008                                                 offsets[i+1] - offsets[i]);
 
 2010                 for (group = 0; group < ics->
group_len[
g]; group++) {
 
 2012                                                ch1 + group * 128 + offsets[i],
 
 2013                                                offsets[i+1] - offsets[i]);
 
 2037     int g, group, i, idx = 0;
 
 2041         for (i = 0; i < ics->
max_sfb;) {
 
 2045                 for (; i < bt_run_end; i++, idx++) {
 
 2046                     c = -1 + 2 * (sce1->
band_type[idx] - 14);
 
 2048                         c *= 1 - 2 * cpe->
ms_mask[idx];
 
 2049                     scale = c * sce1->
sf[idx];
 
 2050                     for (group = 0; group < ics->
group_len[
g]; group++)
 
 2053                                       coef0 + group * 128 + offsets[i],
 
 2056                                       offsets[i + 1] - offsets[i]);
 
 2059                                                     coef0 + group * 128 + offsets[i],
 
 2061                                                     offsets[i + 1] - offsets[i]);
 
 2066                 idx += bt_run_end - i;
 
 2082     int i, ret, common_window, ms_present = 0;
 
 2085     common_window = eld_syntax || 
get_bits1(gb);
 
 2086     if (common_window) {
 
 2097         if (ms_present == 3) {
 
 2100         } 
else if (ms_present)
 
 2103     if ((ret = 
decode_ics(ac, &cpe->
ch[0], gb, common_window, 0)))
 
 2105     if ((ret = 
decode_ics(ac, &cpe->
ch[1], gb, common_window, 0)))
 
 2108     if (common_window) {
 
 2122     1.09050773266525765921, 
 
 2123     1.18920711500272106672, 
 
 2163     for (c = 0; c < num_gain; c++) {
 
 2170             gain = cge ? 
get_vlc2(gb, vlc_scalefactors.
table, 7, 3) - 60: 0;
 
 2171             gain_cache = 
GET_GAIN(scale, gain);
 
 2174             coup->
gain[
c][0] = gain_cache;
 
 2177                 for (sfb = 0; sfb < sce->
ics.
max_sfb; sfb++, idx++) {
 
 2191                         coup->
gain[
c][idx] = gain_cache;
 
 2209     int num_excl_chan = 0;
 
 2212         for (i = 0; i < 7; i++)
 
 2216     return num_excl_chan / 7;
 
 2228     int drc_num_bands = 1;
 
 2249         for (i = 0; i < drc_num_bands; i++) {
 
 2262     for (i = 0; i < drc_num_bands; i++) {
 
 2273     int i, major, minor;
 
 2280     for(i=0; i+1<
sizeof(
buf) && len>=8; i++, len-=8)
 
 2287     if (sscanf(buf, 
"libfaac %d.%d", &major, &minor) == 2){
 
 2373         for (filt = 0; filt < tns->
n_filt[w]; filt++) {
 
 2385             if ((size = end - start) <= 0)
 
 2397                 for (m = 0; m < 
size; m++, start += inc)
 
 2398                     for (i = 1; i <= 
FFMIN(m, order); i++)
 
 2399                         coef[start] -= 
AAC_MUL26(coef[start - i * inc], lpc[i - 1]);
 
 2402                 for (m = 0; m < 
size; m++, start += inc) {
 
 2403                     tmp[0] = coef[
start];
 
 2404                     for (i = 1; i <= 
FFMIN(m, order); i++)
 
 2405                         coef[start] += 
AAC_MUL26(tmp[i], lpc[i - 1]);
 
 2406                     for (i = order; i > 0; i--)
 
 2407                         tmp[i] = tmp[i - 1];
 
 2429         memset(in, 0, 448 * 
sizeof(*in));
 
 2436         memset(in + 1024 + 576, 0, 448 * 
sizeof(*in));
 
 2453         int16_t num_samples = 2048;
 
 2455         if (ltp->
lag < 1024)
 
 2456             num_samples = ltp->
lag + 1024;
 
 2457         for (i = 0; i < num_samples; i++)
 
 2459         memset(&predTime[i], 0, (2048 - i) * 
sizeof(*predTime));
 
 2468                 for (i = offsets[sfb]; i < offsets[sfb + 1]; i++)
 
 2469                     sce->
coeffs[i] += predFreq[i];
 
 2486         memcpy(saved_ltp,       saved, 512 * 
sizeof(*saved_ltp));
 
 2487         memset(saved_ltp + 576, 0,     448 * 
sizeof(*saved_ltp));
 
 2490         for (i = 0; i < 64; i++)
 
 2493         memcpy(saved_ltp,       ac->
buf_mdct + 512, 448 * 
sizeof(*saved_ltp));
 
 2494         memset(saved_ltp + 576, 0,                  448 * 
sizeof(*saved_ltp));
 
 2497         for (i = 0; i < 64; i++)
 
 2502         for (i = 0; i < 512; i++)
 
 2529         for (i = 0; i < 1024; i += 128)
 
 2534         for (i=0; i<1024; i++)
 
 2535           buf[i] = (buf[i] + 4) >> 3;
 
 2549         memcpy(                         out,               saved,            448 * 
sizeof(*out));
 
 2557             memcpy(                     out + 448 + 4*128, temp, 64 * 
sizeof(*out));
 
 2560             memcpy(                     out + 576,         buf + 64,         448 * 
sizeof(*out));
 
 2566         memcpy(                     saved,       temp + 64,         64 * 
sizeof(*saved));
 
 2570         memcpy(                     saved + 448, buf + 7*128 + 64,  64 * 
sizeof(*saved));
 
 2572         memcpy(                     saved,       buf + 512,        448 * 
sizeof(*saved));
 
 2573         memcpy(                     saved + 448, buf + 7*128 + 64,  64 * 
sizeof(*saved));
 
 2575         memcpy(                     saved,       buf + 512,        512 * 
sizeof(*saved));
 
 2594     for (i = 0; i < 1024; i++)
 
 2595         buf[i] = (buf[i] + 2) >> 2;
 
 2601         memcpy(out, saved, 192 * 
sizeof(*out));
 
 2603         memcpy(                     out + 320, buf + 64, 192 * 
sizeof(*out));
 
 2609     memcpy(saved, buf + 256, 256 * 
sizeof(*saved));
 
 2620     const int n2 = n >> 1;
 
 2621     const int n4 = n >> 2;
 
 2630     for (i = 0; i < n2; i+=2) {
 
 2632         temp =  in[i    ]; in[i    ] = -in[n - 1 - i]; in[n - 1 - i] = 
temp;
 
 2633         temp = -in[i + 1]; in[i + 1] =  in[n - 2 - i]; in[n - 2 - i] = 
temp;
 
 2643     for (i = 0; i < 1024; i++)
 
 2644       buf[i] = (buf[i] + 1) >> 1;
 
 2647     for (i = 0; i < 
n; i+=2) {
 
 2657     for (i = n4; i < n2; i ++) {
 
 2658         out[i - n4] = 
AAC_MUL31(   buf[    n2 - 1 - i] , window[i       - n4]) +
 
 2659                       AAC_MUL31( saved[        i + n2] , window[i +   n - n4]) +
 
 2660                       AAC_MUL31(-saved[n + n2 - 1 - i] , window[i + 2*n - n4]) +
 
 2661                       AAC_MUL31(-saved[  2*n + n2 + i] , window[i + 3*n - n4]);
 
 2663     for (i = 0; i < n2; i ++) {
 
 2664         out[n4 + i] = 
AAC_MUL31(   buf[              i] , window[i + n2       - n4]) +
 
 2665                       AAC_MUL31(-saved[      n - 1 - i] , window[i + n2 +   n - n4]) +
 
 2666                       AAC_MUL31(-saved[          n + i] , window[i + n2 + 2*n - n4]) +
 
 2667                       AAC_MUL31( saved[2*n + n - 1 - i] , window[i + n2 + 3*n - n4]);
 
 2669     for (i = 0; i < n4; i ++) {
 
 2670         out[n2 + n4 + i] = 
AAC_MUL31(   buf[    i + n2] , window[i +   n - n4]) +
 
 2671                            AAC_MUL31(-saved[n2 - 1 - i] , window[i + 2*n - n4]) +
 
 2672                            AAC_MUL31(-saved[n + n2 + i] , window[i + 3*n - n4]);
 
 2676     memmove(saved + n, saved, 2 * n * 
sizeof(*saved));
 
 2677     memcpy( saved,       buf,     n * 
sizeof(*saved));
 
 2700                 if (coup->
type[c] == type && coup->
id_select[c] == elem_id) {
 
 2702                         apply_coupling_method(ac, &cc->
ch[0], cce, index);
 
 2707                         apply_coupling_method(ac, &cc->
ch[1], cce, index++);
 
 2732     for (type = 3; type >= 0; type--) {
 
 2772                     for(j = 0; j<samples; j++){
 
 2773                         che->
ch[0].
ret[j] = (
int32_t)av_clipl_int32((int64_t)che->
ch[0].
ret[j]<<7)+0x8000;
 
 2775                             che->
ch[1].
ret[j] = (
int32_t)av_clipl_int32((int64_t)che->
ch[1].
ret[j]<<7)+0x8000;
 
 2791     uint8_t layout_map[MAX_ELEM_ID*4][3];
 
 2792     int layout_map_tags, ret;
 
 2800                                           "More than one AAC RDB per ADTS frame");
 
 2823                 layout_map_tags = 2;
 
 2824                 layout_map[0][0] = layout_map[1][0] = 
TYPE_SCE;
 
 2826                 layout_map[0][1] = 0;
 
 2827                 layout_map[1][1] = 1;
 
 2874     if (chan_config < 0 || (chan_config >= 8 && chan_config < 11) || chan_config >= 13) {
 
 2882         if (!(che=
get_che(ac, elem_type, elem_id))) {
 
 2884                    "channel element %d.%d is not allocated\n",
 
 2885                    elem_type, elem_id);
 
 2891         switch (elem_type) {
 
 2928     int samples = 0, multiplier, audio_found = 0, pce_found = 0;
 
 2929     int is_dmono, sce_count = 0;
 
 2966             if (!(che=
get_che(ac, elem_type, elem_id))) {
 
 2968                        elem_type, elem_id);
 
 2976         switch (elem_type) {
 
 3003             uint8_t layout_map[MAX_ELEM_ID*4][3];
 
 3013                        "Not evaluating a further program_config_element as this construct is dubious at best.\n");
 
 3042         elem_type_prev = elem_type;
 
 3060     samples <<= multiplier;
 
 3064     if (ac->
oc[1].
status && audio_found) {
 
 3073         if (side && side_size>=4)
 
 3088     *got_frame_ptr = !!samples;
 
 3091     is_dmono = ac->
dmono_mode && sce_count == 2 &&
 
 3107                             int *got_frame_ptr, 
AVPacket *avpkt)
 
 3111     int buf_size = avpkt->
size;
 
 3116     int new_extradata_size;
 
 3119                                        &new_extradata_size);
 
 3120     int jp_dualmono_size;
 
 3125     if (new_extradata && 0) {
 
 3132         memcpy(avctx->
extradata, new_extradata, new_extradata_size);
 
 3143     if (jp_dualmono && jp_dualmono_size > 0)
 
 3148     if (INT_MAX / 8 <= buf_size)
 
 3168     for (buf_offset = buf_consumed; buf_offset < buf_size; buf_offset++)
 
 3169         if (buf[buf_offset])
 
 3172     return buf_size > buf_offset ? buf_consumed : buf_size;
 
 3181         for (type = 0; type < 4; type++) {
 
 3182             if (ac->
che[type][i])
 
 3219 #define AACDEC_FLAGS AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM 
 3221     {
"dual_mono_mode", 
"Select the channel to decode for dual mono",
 
int predictor_initialized
static float * VMUL4S(float *dst, const float *v, unsigned idx, unsigned sign, const float *scale)
static void apply_prediction(AACContext *ac, SingleChannelElement *sce)
Apply AAC-Main style frequency domain prediction. 
static void imdct_and_windowing(AACContext *ac, SingleChannelElement *sce)
Conduct IMDCT and windowing. 
static void apply_ltp(AACContext *ac, SingleChannelElement *sce)
Apply the long term prediction. 
static int decode_pce(AVCodecContext *avctx, MPEG4AudioConfig *m4ac, uint8_t(*layout_map)[3], GetBitContext *gb)
Decode program configuration element; reference: table 4.2. 
#define AVERROR_INVALIDDATA
Invalid data found when processing input. 
static int decode_pulses(Pulse *pulse, GetBitContext *gb, const uint16_t *swb_offset, int num_swb)
Decode pulse data; reference: table 4.7. 
uint8_t use_kb_window[2]
If set, use Kaiser-Bessel window, otherwise use a sine window. 
void(* subband_scale)(int *dst, int *src, int scale, int offset, int len)
This structure describes decoded (raw) audio or video data. 
ptrdiff_t const GLvoid * data
static void flush(AVCodecContext *avctx)
static const int8_t tags_per_config[16]
void(* mdct_calc)(struct FFTContext *s, FFTSample *output, const FFTSample *input)
static int * DEC_UPAIR(int *dst, unsigned idx, unsigned sign)
static AVOnce aac_table_init
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits. 
#define AV_LOG_WARNING
Something somehow does not look correct. 
av_cold void ff_kbd_window_init(float *window, float alpha, int n)
Generate a Kaiser-Bessel Derived Window. 
#define LIBAVUTIL_VERSION_INT
#define SCALE_DIFF_ZERO
codebook index corresponding to zero scalefactor indices difference 
static const float cce_scale[]
static void skip_bits_long(GetBitContext *s, int n)
static float * VMUL2S(float *dst, const float *v, unsigned idx, unsigned sign, const float *scale)
#define AACDEC_FLAGS
AVOptions for Japanese DTV specific extensions (ADTS only) 
static void imdct_and_windowing_eld(AACContext *ac, SingleChannelElement *sce)
static void aacdec_init(AACContext *ac)
static int * DEC_SQUAD(int *dst, unsigned idx)
ChannelElement * che[4][MAX_ELEM_ID]
float(* scalarproduct_float)(const float *v1, const float *v2, int len)
Calculate the scalar product of two vectors of floats. 
INTFLOAT * ret
PCM output. 
static void update_ltp(AACContext *ac, SingleChannelElement *sce)
Update the LTP buffer for next frame. 
void(* update_ltp)(AACContext *ac, SingleChannelElement *sce)
void(* imdct_and_windowing)(AACContext *ac, SingleChannelElement *sce)
static void vector_pow43(int *coefs, int len)
INTFLOAT sf[120]
scalefactors 
void(* vector_fmul_reverse)(float *dst, const float *src0, const float *src1, int len)
Calculate the entry wise product of two vectors of floats, and store the result in a vector of floats...
#define AV_EF_BITSTREAM
detect bitstream specification deviations 
uint8_t ms_mask[128]
Set if mid/side stereo is used for each scalefactor window band. 
static void apply_independent_coupling(AACContext *ac, SingleChannelElement *target, ChannelElement *cce, int index)
Apply independent channel coupling (applied after IMDCT). 
static void subband_scale(int *dst, int *src, int scale, int offset, int len)
Dynamic Range Control - decoded from the bitstream but not processed further. 
static av_cold int che_configure(AACContext *ac, enum ChannelPosition che_pos, int type, int id, int *channels)
Check for the channel element in the current channel position configuration. 
static VLC vlc_scalefactors
#define NOISE_PRE
preamble for NOISE_BT, put in bitstream with the first noise band 
#define FF_PROFILE_AAC_HE_V2
static av_always_inline void predict(PredictorState *ps, float *coef, int output_enable)
enum RawDataBlockType type[8]
Type of channel element to be coupled - SCE or CPE. 
static int output_configure(AACContext *ac, uint8_t layout_map[MAX_ELEM_ID *4][3], int tags, enum OCStatus oc_type, int get_new_frame)
Configure output channel order based on the current program configuration element. 
static void decode_channel_map(uint8_t layout_map[][3], enum ChannelPosition type, GetBitContext *gb, int n)
Decode an array of 4 bit element IDs, optionally interleaved with a stereo/mono switching bit...
static int aac_decode_er_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, GetBitContext *gb)
Spectral data are scaled white noise not coded in the bitstream. 
static int decode_cce(AACContext *ac, GetBitContext *gb, ChannelElement *che)
Decode coupling_channel_element; reference: table 4.8. 
static void apply_tns(INTFLOAT coef[1024], TemporalNoiseShaping *tns, IndividualChannelStream *ics, int decode)
Decode Temporal Noise Shaping filter coefficients and apply all-pole filters; reference: 4...
static av_always_inline int lcg_random(unsigned previous_val)
linear congruential pseudorandom number generator 
int band_incr
Number of DRC bands greater than 1 having DRC info. 
const uint8_t ff_aac_num_swb_128[]
int dmono_mode
0->not dmono, 1->use first channel, 2->use second channel 
const uint16_t * swb_offset
table of offsets to the lowest spectral coefficient of a scalefactor band, sfb, for a particular wind...
N Error Resilient Long Term Prediction. 
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
#define av_assert0(cond)
assert() equivalent, that is always enabled. 
void void avpriv_request_sample(void *avc, const char *msg,...) av_printf_format(2
Log a generic warning message about a missing feature. 
static int decode_ics_info(AACContext *ac, IndividualChannelStream *ics, GetBitContext *gb)
Decode Individual Channel Stream info; reference: table 4.6. 
void(* vector_fmul_window)(float *dst, const float *src0, const float *src1, const float *win, int len)
Overlap/add with window function. 
enum AVSampleFormat sample_fmt
audio sample format 
uint8_t layout_map[MAX_ELEM_ID *4][3]
Output configuration under trial specified by an inband PCE. 
#define INIT_VLC_STATIC(vlc, bits, a, b, c, d, e, f, g, static_size)
const uint16_t *const ff_swb_offset_480[]
#define FF_DEBUG_PICT_INFO
SingleChannelElement ch[2]
const uint16_t *const ff_swb_offset_512[]
const uint8_t ff_tns_max_bands_480[]
static av_cold int end(AVCodecContext *avctx)
N Error Resilient Low Delay. 
static int decode_extension_payload(AACContext *ac, GetBitContext *gb, int cnt, ChannelElement *che, enum RawDataBlockType elem_type)
Decode extension data (incomplete); reference: table 4.51. 
const uint8_t ff_aac_scalefactor_bits[121]
CouplingPoint
The point during decoding at which channel coupling is applied. 
uint8_t * extradata
some codecs need / can use extradata like Huffman tables. 
int num_coupled
number of target elements 
#define AV_CH_LOW_FREQUENCY
int exclude_mask[MAX_CHANNELS]
Channels to be excluded from DRC processing. 
void(* vector_pow43)(int *coefs, int len)
SingleChannelElement * output_element[MAX_CHANNELS]
Points to each SingleChannelElement. 
static av_cold int aac_decode_init(AVCodecContext *avctx)
static int get_bits_count(const GetBitContext *s)
static int count_channels(uint8_t(*layout)[3], int tags)
Scalefactor data are intensity stereo positions (in phase). 
#define AV_LOG_VERBOSE
Detailed information. 
static int sample_rate_idx(int rate)
static int decode_tns(AACContext *ac, TemporalNoiseShaping *tns, GetBitContext *gb, const IndividualChannelStream *ics)
Decode Temporal Noise Shaping data; reference: table 4.48. 
int id_select[8]
element id 
const float *const ff_aac_codebook_vector_vals[]
AVFixedDSPContext * avpriv_alloc_fixed_dsp(int bit_exact)
Allocate and initialize a fixed DSP context. 
static av_always_inline int fixed_sqrt(int x, int bits)
Calculate the square root. 
N Error Resilient Low Complexity. 
ChannelElement * tag_che_map[4][MAX_ELEM_ID]
Output configuration set in a global header but not yet locked. 
static void spectral_to_sample(AACContext *ac, int samples)
Convert spectral data to samples, applying all supported tools as appropriate. 
static int parse_adts_frame_header(AACContext *ac, GetBitContext *gb)
static int get_bits_left(GetBitContext *gb)
int dyn_rng_sgn[17]
DRC sign information; 0 - positive, 1 - negative. 
void AAC_RENAME() ff_sbr_apply(AACContext *ac, SpectralBandReplication *sbr, int id_aac, INTFLOAT *L, INTFLOAT *R)
Apply one SBR element to one AAC element. 
static void pop_output_configuration(AACContext *ac)
Restore the previous output configuration if and only if the current configuration is unlocked...
static int decode_fill(AACContext *ac, GetBitContext *gb, int len)
#define UPDATE_CACHE(name, gb)
PredictorState predictor_state[MAX_PREDICTORS]
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
SpectralBandReplication sbr
void(* vector_fmul)(float *dst, const float *src0, const float *src1, int len)
Calculate the entry wise product of two vectors of floats and store the result in a vector of floats...
enum CouplingPoint coupling_point
The point during decoding at which coupling is applied. 
const uint8_t ff_aac_num_swb_1024[]
void(* butterflies_float)(float *av_restrict v1, float *av_restrict v2, int len)
Calculate the sum and difference of two vectors of floats. 
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers. 
float ff_aac_kbd_long_1024[1024]
int flags
AV_CODEC_FLAG_*. 
static int decode_eld_specific_config(AACContext *ac, AVCodecContext *avctx, GetBitContext *gb, MPEG4AudioConfig *m4ac, int channel_config)
av_cold void ff_imdct15_uninit(IMDCT15Context **ps)
Free an iMDCT. 
static int assign_pair(struct elem_to_channel e2c_vec[MAX_ELEM_ID], uint8_t(*layout_map)[3], int offset, uint64_t left, uint64_t right, int pos)
uint8_t max_sfb
number of scalefactor bands per group 
static void push_output_configuration(AACContext *ac)
Save current output configuration if and only if it has been locked. 
const float ff_aac_eld_window_512[1920]
static const uint8_t offset[127][2]
#define CLOSE_READER(name, gb)
int num_swb
number of scalefactor window bands 
static int count_paired_channels(uint8_t(*layout_map)[3], int tags, int pos, int *current)
int prog_ref_level
A reference level for the long-term program audio level for all channels combined. 
Output configuration locked in place. 
float ff_aac_pow2sf_tab[428]
uint64_t channel_layout
Audio channel layout. 
#define SKIP_BITS(name, gb, num)
int warned_remapping_once
INTFLOAT ret_buf[2048]
PCM output buffer. 
N Error Resilient Scalable. 
static void reset_predictor_group(PredictorState *ps, int group_num)
static ChannelElement * get_che(AACContext *ac, int type, int elem_id)
enum WindowSequence window_sequence[2]
INTFLOAT ltp_state[3072]
time signal for LTP 
#define AV_CODEC_FLAG_BITEXACT
Use only bitexact stuff (except (I)DCT). 
const uint8_t ff_aac_num_swb_512[]
int err_recognition
Error recognition; may misdetect some more or less valid parts as errors. 
static int aac_decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
int predictor_reset_group
static int frame_configure_elements(AVCodecContext *avctx)
int dyn_rng_ctl[17]
DRC magnitude information. 
static const INTFLOAT ltp_coef[8]
static void decode_mid_side_stereo(ChannelElement *cpe, GetBitContext *gb, int ms_present)
Decode Mid/Side data; reference: table 4.54. 
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
static void apply_intensity_stereo(AACContext *ac, ChannelElement *cpe, int ms_present)
intensity stereo decoding; reference: 4.6.8.2.3 
static unsigned int show_bits(GetBitContext *s, int n)
Show 1-25 bits. 
void ff_aacdec_init_mips(AACContext *c)
int AAC_RENAME() ff_decode_sbr_extension(AACContext *ac, SpectralBandReplication *sbr, GetBitContext *gb, int crc, int cnt, int id_aac)
Decode one SBR element. 
#define LAST_SKIP_BITS(name, gb, num)
static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE(*table)[2], int bits, int max_depth)
Parse a vlc code. 
void(* vector_fmul_scalar)(float *dst, const float *src, float mul, int len)
Multiply a vector of floats by a scalar float. 
static av_cold void aac_static_table_init(void)
void AAC_RENAME() ff_aac_sbr_ctx_close(SpectralBandReplication *sbr)
Close one SBR context. 
static void apply_channel_coupling(AACContext *ac, ChannelElement *cc, enum RawDataBlockType type, int elem_id, enum CouplingPoint coupling_point, void(*apply_coupling_method)(AACContext *ac, SingleChannelElement *target, ChannelElement *cce, int index))
channel coupling transformation interface 
#define AV_CH_FRONT_LEFT_OF_CENTER
#define AV_EF_EXPLODE
abort decoding on minor error detection 
const uint8_t ff_tns_max_bands_1024[]
#define GET_VLC(code, name, gb, table, bits, max_depth)
If the vlc code is invalid and max_depth=1, then no bits will be removed. 
static int AAC_RENAME() compute_lpc_coefs(const LPC_TYPE *autoc, int max_order, LPC_TYPE *lpc, int lpc_stride, int fail, int normalize)
Levinson-Durbin recursion. 
#define AV_CH_FRONT_CENTER
static void decode_ltp(LongTermPrediction *ltp, GetBitContext *gb, uint8_t max_sfb)
Decode Long Term Prediction data; reference: table 4.xx. 
static int aac_decode_frame_int(AVCodecContext *avctx, void *data, int *got_frame_ptr, GetBitContext *gb, AVPacket *avpkt)
static void apply_dependent_coupling(AACContext *ac, SingleChannelElement *target, ChannelElement *cce, int index)
Apply dependent channel coupling (applied before IMDCT). 
static int decode_spectrum_and_dequant(AACContext *ac, INTFLOAT coef[1024], GetBitContext *gb, const INTFLOAT sf[120], int pulse_present, const Pulse *pulse, const IndividualChannelStream *ics, enum BandType band_type[120])
Decode spectral data; reference: table 4.50. 
void AAC_RENAME() ff_aac_sbr_init(void)
Initialize SBR. 
int pce_instance_tag
Indicates with which program the DRC info is associated. 
static void windowing_and_mdct_ltp(AACContext *ac, INTFLOAT *out, INTFLOAT *in, IndividualChannelStream *ics)
Apply windowing and MDCT to obtain the spectral coefficient from the predicted sample by LTP...
static const INTFLOAT *const tns_tmp2_map[4]
#define SHOW_UBITS(name, gb, num)
#define FF_ARRAY_ELEMS(a)
#define AV_CH_FRONT_RIGHT_OF_CENTER
int interpolation_scheme
Indicates the interpolation scheme used in the SBR QMF domain. 
static void reset_all_predictors(PredictorState *ps)
static int skip_data_stream_element(AACContext *ac, GetBitContext *gb)
Skip data_stream_element; reference: table 4.10. 
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome. 
int ch_select[8]
[0] shared list of gains; [1] list of gains for right channel; [2] list of gains for left channel; [3...
int frame_size
Number of samples per channel in an audio frame. 
int force_dmono_mode
0->not dmono, 1->use first channel, 2->use second channel 
#define AV_LOG_INFO
Standard information. 
int warned_num_aac_frames
#define AAC_INIT_VLC_STATIC(num, size)
int sample_rate
samples per second 
float ff_aac_kbd_short_128[128]
static uint32_t cbrt_tab[1<< 13]
static const AVOption options[]
static int init_get_bits8(GetBitContext *s, const uint8_t *buffer, int byte_size)
Initialize GetBitContext. 
#define AV_CH_LAYOUT_NATIVE
Channel mask value used for AVCodecContext.request_channel_layout to indicate that the user requests ...
static int decode_scalefactors(AACContext *ac, INTFLOAT sf[120], GetBitContext *gb, unsigned int global_gain, IndividualChannelStream *ics, enum BandType band_type[120], int band_type_run_end[120])
Decode scalefactors; reference: table 4.47. 
static int decode_cpe(AACContext *ac, GetBitContext *gb, ChannelElement *cpe)
Decode a channel_pair_element; reference: table 4.4. 
main external API structure. 
#define NOISE_PRE_BITS
length of preamble 
int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
Get a buffer for a frame. 
#define OPEN_READER(name, gb)
IndividualChannelStream ics
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(constint16_t *) pi >>8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(constint32_t *) pi >>24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(constfloat *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(constfloat *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(constfloat *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(constdouble *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(constdouble *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(constdouble *) pi *(1U<< 31))))#defineSET_CONV_FUNC_GROUP(ofmt, ifmt) staticvoidset_generic_function(AudioConvert *ac){}voidff_audio_convert_free(AudioConvert **ac){if(!*ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);}AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enumAVSampleFormatout_fmt, enumAVSampleFormatin_fmt, intchannels, intsample_rate, intapply_map){AudioConvert *ac;intin_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) returnNULL;ac->avr=avr;ac->out_fmt=out_fmt;ac->in_fmt=in_fmt;ac->channels=channels;ac->apply_map=apply_map;if(avr->dither_method!=AV_RESAMPLE_DITHER_NONE &&av_get_packed_sample_fmt(out_fmt)==AV_SAMPLE_FMT_S16 &&av_get_bytes_per_sample(in_fmt)>2){ac->dc=ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, apply_map);if(!ac->dc){av_free(ac);returnNULL;}returnac;}in_planar=ff_sample_fmt_is_planar(in_fmt, channels);out_planar=ff_sample_fmt_is_planar(out_fmt, channels);if(in_planar==out_planar){ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar?ac->channels:1;}elseif(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;elseac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_AARCH64) ff_audio_convert_init_aarch64(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);returnac;}intff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in){intuse_generic=1;intlen=in->nb_samples;intp;if(ac->dc){av_log(ac->avr, AV_LOG_TRACE,"%dsamples-audio_convert:%sto%s(dithered)\n", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));returnff_convert_dither(ac-> in
int avpriv_aac_parse_header(GetBitContext *gbc, AACADTSHeaderInfo *hdr)
Parse AAC frame header. 
static av_always_inline float cbrtf(float x)
void(* imdct_half)(struct FFTContext *s, FFTSample *output, const FFTSample *input)
#define AVERROR_BUG
Internal bug, also see AVERROR_BUG2. 
static av_cold void AAC_RENAME() cbrt_tableinit(void)
static unsigned int get_bits1(GetBitContext *s)
static void skip_bits1(GetBitContext *s)
void(* apply_tns)(INTFLOAT coef[1024], TemporalNoiseShaping *tns, IndividualChannelStream *ics, int decode)
Describe the class of an AVClass context structure. 
int sample_rate
Sample rate of the audio data. 
static av_cold int aac_decode_close(AVCodecContext *avctx)
static void skip_bits(GetBitContext *s, int n)
static int decode_audio_specific_config(AACContext *ac, AVCodecContext *avctx, MPEG4AudioConfig *m4ac, const uint8_t *data, int64_t bit_size, int sync_extension)
Decode audio specific configuration; reference: table 1.13. 
static uint64_t sniff_channel_order(uint8_t(*layout_map)[3], int tags)
static int decode_drc_channel_exclusions(DynamicRangeControl *che_drc, GetBitContext *gb)
Parse whether channels are to be excluded from Dynamic Range Compression; reference: table 4...
static void noise_scale(int *coefs, int scale, int band_energy, int len)
void(* imdct_half)(struct IMDCT15Context *s, float *dst, const float *src, ptrdiff_t src_stride, float scale)
Calculate the middle half of the iMDCT. 
static int init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size)
Initialize GetBitContext. 
Recommmends skipping the specified number of samples. 
#define GET_CACHE(name, gb)
static float * VMUL2(float *dst, const float *v, unsigned idx, const float *scale)
OCStatus
Output configuration status. 
int skip_samples
Number of audio samples to skip at the start of the next decoded frame. 
N Error Resilient Bit-Sliced Arithmetic Coding. 
void AAC_RENAME() ff_aac_sbr_ctx_init(AACContext *ac, SpectralBandReplication *sbr)
Initialize one SBR context. 
av_cold AVFloatDSPContext * avpriv_float_dsp_alloc(int bit_exact)
Allocate a float DSP context. 
#define FF_COMPLIANCE_STRICT
Strictly conform to all the things in the spec no matter what consequences. 
av_cold int ff_imdct15_init(IMDCT15Context **ps, int N)
Init an iMDCT of the length 2 * 15 * (2^N) 
const uint32_t ff_aac_scalefactor_code[121]
Output configuration under trial specified by a frame header. 
static int decode_prediction(AACContext *ac, IndividualChannelStream *ics, GetBitContext *gb)
const uint8_t ff_tns_max_bands_128[]
#define NOISE_OFFSET
subtracted from global gain, used as offset for the preamble 
static void imdct_and_window(TwinVQContext *tctx, enum TwinVQFrameType ftype, int wtype, float *in, float *prev, int ch)
void av_frame_unref(AVFrame *frame)
Unreference all the buffers referenced by frame and reset the frame fields. 
void avpriv_report_missing_feature(void *avc, const char *msg,...) av_printf_format(2
Log a generic warning message about a missing feature. 
static const int8_t filt[NUMTAPS]
int band_type_run_end[120]
band type run end points 
static int decode_band_types(AACContext *ac, enum BandType band_type[120], int band_type_run_end[120], GetBitContext *gb, IndividualChannelStream *ics)
Decode band types (section_data payload); reference: table 4.46. 
#define AV_CH_BACK_CENTER
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes. 
int band_top[17]
Indicates the top of the i-th DRC band in units of 4 spectral lines. 
INTFLOAT coeffs[1024]
coefficients for IMDCT, maybe processed 
static VLC vlc_spectral[11]
Scalefactor data are intensity stereo positions (out of phase). 
N Error Resilient Enhanced Low Delay. 
static int set_default_channel_config(AVCodecContext *avctx, uint8_t(*layout_map)[3], int *tags, int channel_config)
Set up channel positions based on a default channel configuration as specified in table 1...
static int decode(AVCodecContext *avctx, void *data, int *got_sub, AVPacket *avpkt)
INTFLOAT coef[8][4][TNS_MAX_ORDER]
DynamicRangeControl che_drc
static av_always_inline void reset_predict_state(PredictorState *ps)
OutputConfiguration oc[2]
An AV_PKT_DATA_JP_DUALMONO side data packet indicates that the packet may contain "dual mono" audio s...
const uint8_t ff_aac_pred_sfb_max[]
void(* apply_ltp)(AACContext *ac, SingleChannelElement *sce)
uint8_t prediction_used[41]
const float ff_aac_eld_window_480[1800]
INTFLOAT saved[1536]
overlap 
Single Channel Element - used for both SCE and LFE elements. 
const uint8_t ff_aac_num_swb_480[]
const uint16_t *const ff_swb_offset_1024[]
void(* windowing_and_mdct_ltp)(AACContext *ac, INTFLOAT *out, INTFLOAT *in, IndividualChannelStream *ics)
Individual Channel Stream. 
#define AVERROR_UNKNOWN
Unknown error, typically from an external library. 
int avpriv_mpeg4audio_get_config(MPEG4AudioConfig *c, const uint8_t *buf, int bit_size, int sync_extension)
Parse MPEG-4 systems extradata to retrieve audio configuration. 
const uint16_t *const ff_aac_codebook_vector_idx[]
static void ff_aac_tableinit(void)
#define AV_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
channel element - generic struct for SCE/CPE/CCE/LFE 
static int decode_ics(AACContext *ac, SingleChannelElement *sce, GetBitContext *gb, int common_window, int scale_flag)
Decode an individual_channel_stream payload; reference: table 4.44. 
#define FF_DEBUG_STARTCODE
static int decode_ga_specific_config(AACContext *ac, AVCodecContext *avctx, GetBitContext *gb, MPEG4AudioConfig *m4ac, int channel_config)
Decode GA "General Audio" specific configuration; reference: table 4.1. 
const uint8_t ff_tns_max_bands_512[]
Scalefactors and spectral data are all zero. 
int channels
number of audio channels 
static int * DEC_SPAIR(int *dst, unsigned idx)
struct AVCodecInternal * internal
Private context used for internal data. 
const uint8_t ff_mpeg4audio_channels[8]
static int ff_thread_once(char *control, void(*routine)(void))
VLC_TYPE(* table)[2]
code, bits 
static const uint8_t * align_get_bits(GetBitContext *s)
#define FF_PROFILE_AAC_HE
enum BandType band_type[128]
band types 
static int decode_dynamic_range(DynamicRangeControl *che_drc, GetBitContext *gb)
Decode dynamic range information; reference: table 4.52. 
#define AV_CH_FRONT_RIGHT
#define POW_SF2_ZERO
ff_aac_pow2sf_tab index corresponding to pow(2, 0); 
static void imdct_and_windowing_ld(AACContext *ac, SingleChannelElement *sce)
int sbr
-1 implicit, 1 presence 
uint8_t * av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type, int *size)
Get side information from packet. 
static void apply_mid_side_stereo(AACContext *ac, ChannelElement *cpe)
Mid/Side stereo decoding; reference: 4.6.8.1.3. 
#define FFSWAP(type, a, b)
int ps
-1 implicit, 1 presence 
int8_t used[MAX_LTP_LONG_SFB]
const uint16_t *const ff_swb_offset_128[]
static const AVClass aac_decoder_class
uint8_t ** extended_data
pointers to the data planes/channels. 
uint64_t request_channel_layout
Request decoder to use this channel layout if it can (0 for default) 
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
This structure stores compressed data. 
int nb_samples
number of audio samples (per channel) described by this frame 
void * av_mallocz(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
int strict_std_compliance
strictly follow the standard (MPEG4, ...). 
void AAC_RENAME() ff_init_ff_sine_windows(int index)
initialize the specified entry of ff_sine_windows 
static int * DEC_UQUAD(int *dst, unsigned idx, unsigned sign)
static float * VMUL4(float *dst, const float *v, unsigned idx, const float *scale)
static const uint8_t aac_channel_layout_map[16][5][3]