116 static const char overread_err[] =
"Input buffer exhausted before END element found\n";
121 for (i = 0; i < tags; i++) {
122 int syn_ele =
layout[i][0];
124 sum += (1 + (syn_ele ==
TYPE_CPE)) *
144 int type,
int id,
int *channels)
149 if (!ac->
che[type][
id]) {
162 if (ac->
che[type][
id])
172 int type,
id, ch, ret;
175 for (type = 0; type < 4; type++) {
194 for (ch = 0; ch < avctx->
channels; ch++) {
210 uint8_t (*layout_map)[3],
int offset, uint64_t left,
211 uint64_t right,
int pos)
213 if (layout_map[offset][0] ==
TYPE_CPE) {
215 .av_position = left | right,
217 .elem_id = layout_map[offset][1],
225 .elem_id = layout_map[offset][1],
229 .av_position = right,
231 .elem_id = layout_map[offset + 1][1],
241 int num_pos_channels = 0;
245 for (i = *current; i < tags; i++) {
246 if (layout_map[i][2] != pos)
256 num_pos_channels += 2;
267 return num_pos_channels;
272 int i, n, total_non_cc_elements;
274 int num_front_channels, num_side_channels, num_back_channels;
283 if (num_front_channels < 0)
287 if (num_side_channels < 0)
291 if (num_back_channels < 0)
295 if (num_front_channels & 1) {
299 .elem_id = layout_map[i][1],
303 num_front_channels--;
305 if (num_front_channels >= 4) {
310 num_front_channels -= 2;
312 if (num_front_channels >= 2) {
317 num_front_channels -= 2;
319 while (num_front_channels >= 2) {
324 num_front_channels -= 2;
327 if (num_side_channels >= 2) {
332 num_side_channels -= 2;
334 while (num_side_channels >= 2) {
339 num_side_channels -= 2;
342 while (num_back_channels >= 4) {
347 num_back_channels -= 2;
349 if (num_back_channels >= 2) {
354 num_back_channels -= 2;
356 if (num_back_channels) {
360 .elem_id = layout_map[i][1],
371 .elem_id = layout_map[i][1],
380 .elem_id = layout_map[i][1],
387 total_non_cc_elements = n = i;
390 for (i = 1; i < n; i++)
391 if (e2c_vec[i - 1].av_position > e2c_vec[i].av_position) {
399 for (i = 0; i < total_non_cc_elements; i++) {
400 layout_map[i][0] = e2c_vec[i].
syn_ele;
401 layout_map[i][1] = e2c_vec[i].
elem_id;
403 if (e2c_vec[i].av_position != UINT64_MAX) {
416 ac->
oc[0] = ac->
oc[1];
427 ac->
oc[1] = ac->
oc[0];
440 uint8_t layout_map[MAX_ELEM_ID * 4][3],
int tags,
441 enum OCStatus oc_type,
int get_new_frame)
444 int i, channels = 0, ret;
448 memcpy(ac->
oc[1].
layout_map, layout_map, tags *
sizeof(layout_map[0]));
456 for (i = 0; i < tags; i++) {
457 int type = layout_map[i][0];
458 int id = layout_map[i][1];
459 int position = layout_map[i][2];
466 if (ac->
oc[1].
m4ac.
ps == 1 && channels == 2) {
498 if (channel_config < 1 || channel_config > 7) {
500 "invalid default channel configuration (%d)\n",
506 *tags *
sizeof(*layout_map));
520 uint8_t layout_map[MAX_ELEM_ID*4][3];
525 &layout_map_tags, 2) < 0)
537 uint8_t layout_map[MAX_ELEM_ID * 4][3];
542 &layout_map_tags, 1) < 0)
628 layout_map[0][0] = syn_ele;
630 layout_map[0][2] = type;
644 int num_front, num_side, num_back, num_lfe, num_assoc_data, num_cc;
654 "Sample rate index in program config element does not "
655 "match the sample rate index configured by the container.\n");
711 int extension_flag, ret, ep_config, res_flags;
712 uint8_t layout_map[MAX_ELEM_ID*4][3];
728 if (channel_config == 0) {
730 tags =
decode_pce(avctx, m4ac, layout_map, gb);
735 &tags, channel_config)))
741 }
else if (m4ac->
sbr == 1 && m4ac->
ps == -1)
747 if (extension_flag) {
760 "AAC data resilience (flags %x)",
776 "epConfig %d", ep_config);
788 int ret, ep_config, res_flags;
789 uint8_t layout_map[MAX_ELEM_ID*4][3];
791 const int ELDEXT_TERM = 0;
804 "AAC data resilience (flags %x)",
815 while (
get_bits(gb, 4) != ELDEXT_TERM) {
829 &tags, channel_config)))
838 "epConfig %d", ep_config);
874 sync_extension)) < 0)
878 "invalid sampling rate index %d\n",
885 "invalid low delay sampling rate index %d\n",
909 "Audio object type %s%d",
910 m4ac->
sbr == 1 ?
"SBR+" :
"",
916 "AOT %d chan config %d sampling index %d (%d) SBR %d PS %d\n",
933 union {
unsigned u;
int s; } v = { previous_val * 1664525u + 1013904223 };
956 if (92017 <= rate)
return 0;
957 else if (75132 <= rate)
return 1;
958 else if (55426 <= rate)
return 2;
959 else if (46009 <= rate)
return 3;
960 else if (37566 <= rate)
return 4;
961 else if (27713 <= rate)
return 5;
962 else if (23004 <= rate)
return 6;
963 else if (18783 <= rate)
return 7;
964 else if (13856 <= rate)
return 8;
965 else if (11502 <= rate)
return 9;
966 else if (9391 <= rate)
return 10;
977 #define AAC_INIT_VLC_STATIC(num, size) \
978 INIT_VLC_STATIC(&vlc_spectral[num], 8, ff_aac_spectral_sizes[num], \
979 ff_aac_spectral_bits[num], sizeof(ff_aac_spectral_bits[num][0]), \
980 sizeof(ff_aac_spectral_bits[num][0]), \
981 ff_aac_spectral_codes[num], sizeof(ff_aac_spectral_codes[num][0]), \
982 sizeof(ff_aac_spectral_codes[num][0]), \
1003 uint8_t layout_map[MAX_ELEM_ID*4][3];
1004 int layout_map_tags;
1107 "Invalid Predictor Reset Group.\n");
1148 "AAC LD is only defined for ONLY_LONG_SEQUENCE but "
1161 for (i = 0; i < 7; i++) {
1200 "Prediction is not allowed in AAC-LC.\n");
1205 "LTP in ER AAC LD not yet implemented.\n");
1216 "Number of scalefactor bands in group (%d) "
1217 "exceeds limit (%d).\n",
1241 while (k < ics->max_sfb) {
1244 int sect_band_type =
get_bits(gb, 4);
1245 if (sect_band_type == 12) {
1250 sect_len_incr =
get_bits(gb, bits);
1251 sect_end += sect_len_incr;
1256 if (sect_end > ics->
max_sfb) {
1258 "Number of bands (%d) exceeds limit (%d).\n",
1262 }
while (sect_len_incr == (1 << bits) - 1);
1263 for (; k < sect_end; k++) {
1264 band_type [idx] = sect_band_type;
1265 band_type_run_end[idx++] = sect_end;
1283 unsigned int global_gain,
1286 int band_type_run_end[120])
1289 int offset[3] = { global_gain, global_gain - 90, 0 };
1293 for (i = 0; i < ics->
max_sfb;) {
1294 int run_end = band_type_run_end[idx];
1295 if (band_type[idx] ==
ZERO_BT) {
1296 for (; i < run_end; i++, idx++)
1300 for (; i < run_end; i++, idx++) {
1301 offset[2] +=
get_vlc2(gb, vlc_scalefactors.
table, 7, 3) - 60;
1302 clipped_offset = av_clip(offset[2], -155, 100);
1303 if (offset[2] != clipped_offset) {
1305 "If you heard an audible artifact, there may be a bug in the decoder. "
1306 "Clipped intensity stereo position (%d -> %d)",
1307 offset[2], clipped_offset);
1311 }
else if (band_type[idx] ==
NOISE_BT) {
1312 for (; i < run_end; i++, idx++) {
1313 if (noise_flag-- > 0)
1314 offset[1] +=
get_bits(gb, 9) - 256;
1316 offset[1] +=
get_vlc2(gb, vlc_scalefactors.
table, 7, 3) - 60;
1317 clipped_offset = av_clip(offset[1], -100, 155);
1318 if (offset[1] != clipped_offset) {
1320 "If you heard an audible artifact, there may be a bug in the decoder. "
1321 "Clipped noise gain (%d -> %d)",
1322 offset[1], clipped_offset);
1327 for (; i < run_end; i++, idx++) {
1328 offset[0] +=
get_vlc2(gb, vlc_scalefactors.
table, 7, 3) - 60;
1329 if (offset[0] > 255
U) {
1331 "Scalefactor (%d) out of range.\n", offset[0]);
1346 const uint16_t *swb_offset,
int num_swb)
1351 if (pulse_swb >= num_swb)
1353 pulse->
pos[0] = swb_offset[pulse_swb];
1355 if (pulse->
pos[0] > 1023)
1358 for (i = 1; i < pulse->
num_pulse; i++) {
1360 if (pulse->
pos[i] > 1023)
1375 int w, filt, i, coef_len, coef_res, coef_compress;
1382 for (filt = 0; filt < tns->
n_filt[w]; filt++) {
1386 if ((tns->
order[w][filt] =
get_bits(gb, 5 - 2 * is8)) > tns_max_order) {
1388 "TNS filter order %d is greater than maximum %d.\n",
1389 tns->
order[w][filt], tns_max_order);
1390 tns->
order[w][filt] = 0;
1393 if (tns->
order[w][filt]) {
1396 coef_len = coef_res + 3 - coef_compress;
1397 tmp2_idx = 2 * coef_compress + coef_res;
1399 for (i = 0; i < tns->
order[w][filt]; i++)
1419 if (ms_present == 1) {
1424 }
else if (ms_present == 2) {
1430 static inline float *
VMUL2(
float *dst,
const float *v,
unsigned idx,
1434 *dst++ = v[idx & 15] * s;
1435 *dst++ = v[idx>>4 & 15] * s;
1441 static inline float *
VMUL4(
float *dst,
const float *v,
unsigned idx,
1445 *dst++ = v[idx & 3] * s;
1446 *dst++ = v[idx>>2 & 3] * s;
1447 *dst++ = v[idx>>4 & 3] * s;
1448 *dst++ = v[idx>>6 & 3] * s;
1454 static inline float *
VMUL2S(
float *dst,
const float *v,
unsigned idx,
1455 unsigned sign,
const float *
scale)
1460 s0.
i ^= sign >> 1 << 31;
1463 *dst++ = v[idx & 15] * s0.
f;
1464 *dst++ = v[idx>>4 & 15] * s1.
f;
1471 static inline float *
VMUL4S(
float *dst,
const float *v,
unsigned idx,
1472 unsigned sign,
const float *
scale)
1474 unsigned nz = idx >> 12;
1478 t.
i = s.
i ^ (sign & 1
U<<31);
1479 *dst++ = v[idx & 3] * t.
f;
1481 sign <<= nz & 1; nz >>= 1;
1482 t.
i = s.
i ^ (sign & 1
U<<31);
1483 *dst++ = v[idx>>2 & 3] * t.
f;
1485 sign <<= nz & 1; nz >>= 1;
1486 t.
i = s.
i ^ (sign & 1
U<<31);
1487 *dst++ = v[idx>>4 & 3] * t.
f;
1490 t.
i = s.
i ^ (sign & 1
U<<31);
1491 *dst++ = v[idx>>6 & 3] * t.
f;
1511 int pulse_present,
const Pulse *pulse,
1515 int i, k,
g, idx = 0;
1518 float *coef_base = coef;
1521 memset(coef + g * 128 + offsets[ics->
max_sfb], 0,
1522 sizeof(
float) * (c - offsets[ics->
max_sfb]));
1527 for (i = 0; i < ics->
max_sfb; i++, idx++) {
1528 const unsigned cbt_m1 = band_type[idx] - 1;
1529 float *cfo = coef + offsets[
i];
1530 int off_len = offsets[i + 1] - offsets[
i];
1534 for (group = 0; group < g_len; group++, cfo+=128) {
1535 memset(cfo, 0, off_len *
sizeof(
float));
1537 }
else if (cbt_m1 ==
NOISE_BT - 1) {
1538 for (group = 0; group < g_len; group++, cfo+=128) {
1542 for (k = 0; k < off_len; k++) {
1548 scale = sf[idx] / sqrtf(band_energy);
1557 switch (cbt_m1 >> 1) {
1559 for (group = 0; group < g_len; group++, cfo+=128) {
1569 cb_idx = cb_vector_idx[code];
1570 cf =
VMUL4(cf, vq, cb_idx, sf + idx);
1576 for (group = 0; group < g_len; group++, cfo+=128) {
1588 cb_idx = cb_vector_idx[code];
1589 nnz = cb_idx >> 8 & 15;
1592 cf =
VMUL4S(cf, vq, cb_idx, bits, sf + idx);
1598 for (group = 0; group < g_len; group++, cfo+=128) {
1608 cb_idx = cb_vector_idx[code];
1609 cf =
VMUL2(cf, vq, cb_idx, sf + idx);
1616 for (group = 0; group < g_len; group++, cfo+=128) {
1628 cb_idx = cb_vector_idx[code];
1629 nnz = cb_idx >> 8 & 15;
1630 sign = nnz ?
SHOW_UBITS(
re, gb, nnz) << (cb_idx >> 12) : 0;
1632 cf =
VMUL2S(cf, vq, cb_idx, sign, sf + idx);
1638 for (group = 0; group < g_len; group++, cfo+=128) {
1640 uint32_t *icf = (uint32_t *) cf;
1659 cb_idx = cb_vector_idx[code];
1665 for (j = 0; j < 2; j++) {
1687 unsigned v = ((
const uint32_t*)vq)[cb_idx & 15];
1688 *icf++ = (bits & 1
U<<31) | v;
1705 if (pulse_present) {
1707 for (i = 0; i < pulse->
num_pulse; i++) {
1708 float co = coef_base[ pulse->
pos[
i] ];
1709 while (offsets[idx + 1] <= pulse->
pos[i])
1711 if (band_type[idx] !=
NOISE_BT && sf[idx]) {
1712 float ico = -pulse->
amp[
i];
1715 ico = co / sqrtf(sqrtf(fabsf(co))) + (co > 0 ? -ico : ico);
1717 coef_base[ pulse->
pos[
i] ] =
cbrtf(fabsf(ico)) * ico * sf[idx];
1728 tmp.
i = (tmp.
i + 0x00008000
U) & 0xFFFF0000U;
1736 tmp.
i = (tmp.
i + 0x00007FFF
U + (tmp.
i & 0x00010000
U >> 16)) & 0xFFFF0000
U;
1744 pun.
i &= 0xFFFF0000
U;
1751 const float a = 0.953125;
1752 const float alpha = 0.90625;
1756 float r0 = ps->
r0, r1 = ps->
r1;
1757 float cor0 = ps->
cor0, cor1 = ps->
cor1;
1758 float var0 = ps->
var0, var1 = ps->
var1;
1760 k1 = var0 > 1 ? cor0 *
flt16_even(a / var0) : 0;
1761 k2 = var1 > 1 ? cor1 *
flt16_even(a / var1) : 0;
1796 k < sce->ics.swb_offset[sfb + 1];
1825 int global_gain, eld_syntax, er_syntax, pulse_present = 0;
1841 if (!common_window && !scale_flag) {
1855 if (!eld_syntax && (pulse_present =
get_bits1(gb))) {
1858 "Pulse tool not allowed in eight short sequence.\n");
1863 "Pulse data corrupt or invalid.\n");
1868 if (tns->
present && !er_syntax)
1877 if (tns->
present && er_syntax)
1900 int g,
i, group, idx = 0;
1903 for (i = 0; i < ics->
max_sfb; i++, idx++) {
1907 for (group = 0; group < ics->
group_len[
g]; group++) {
1909 ch1 + group * 128 + offsets[i],
1910 offsets[i+1] - offsets[i]);
1933 int g, group,
i, idx = 0;
1937 for (i = 0; i < ics->
max_sfb;) {
1941 for (; i < bt_run_end; i++, idx++) {
1942 c = -1 + 2 * (sce1->
band_type[idx] - 14);
1944 c *= 1 - 2 * cpe->
ms_mask[idx];
1945 scale = c * sce1->
sf[idx];
1946 for (group = 0; group < ics->
group_len[
g]; group++)
1948 coef0 + group * 128 + offsets[i],
1950 offsets[i + 1] - offsets[i]);
1954 idx += bt_run_end -
i;
1970 int i, ret, common_window, ms_present = 0;
1973 common_window = eld_syntax ||
get_bits1(gb);
1974 if (common_window) {
1985 if (ms_present == 3) {
1988 }
else if (ms_present)
1991 if ((ret =
decode_ics(ac, &cpe->
ch[0], gb, common_window, 0)))
1993 if ((ret =
decode_ics(ac, &cpe->
ch[1], gb, common_window, 0)))
1996 if (common_window) {
2010 1.09050773266525765921,
2011 1.18920711500272106672,
2046 scale = cce_scale[
get_bits(gb, 2)];
2051 for (c = 0; c < num_gain; c++) {
2055 float gain_cache = 1.0;
2058 gain = cge ?
get_vlc2(gb, vlc_scalefactors.
table, 7, 3) - 60: 0;
2059 gain_cache =
powf(scale, -gain);
2062 coup->
gain[c][0] = gain_cache;
2065 for (sfb = 0; sfb < sce->
ics.
max_sfb; sfb++, idx++) {
2076 gain_cache =
powf(scale, -t) * s;
2079 coup->
gain[c][idx] = gain_cache;
2097 int num_excl_chan = 0;
2100 for (i = 0; i < 7; i++)
2104 return num_excl_chan / 7;
2116 int drc_num_bands = 1;
2137 for (i = 0; i < drc_num_bands; i++) {
2150 for (i = 0; i < drc_num_bands; i++) {
2222 int bottom, top, order, start, end,
size, inc;
2228 for (filt = 0; filt < tns->
n_filt[w]; filt++) {
2231 order = tns->
order[w][filt];
2240 if ((size = end - start) <= 0)
2252 for (m = 0; m <
size; m++, start += inc)
2253 for (i = 1; i <=
FFMIN(m, order); i++)
2254 coef[start] -= coef[start - i * inc] * lpc[i - 1];
2257 for (m = 0; m <
size; m++, start += inc) {
2258 tmp[0] = coef[start];
2259 for (i = 1; i <=
FFMIN(m, order); i++)
2260 coef[start] += tmp[i] * lpc[i - 1];
2261 for (i = order; i > 0; i--)
2262 tmp[i] = tmp[i - 1];
2284 memset(in, 0, 448 *
sizeof(
float));
2291 memset(in + 1024 + 576, 0, 448 *
sizeof(
float));
2306 float *predTime = sce->
ret;
2308 int16_t num_samples = 2048;
2310 if (ltp->
lag < 1024)
2311 num_samples = ltp->
lag + 1024;
2312 for (i = 0; i < num_samples; i++)
2314 memset(&predTime[i], 0, (2048 - i) *
sizeof(
float));
2323 for (i = offsets[sfb]; i < offsets[sfb + 1]; i++)
2324 sce->
coeffs[i] += predFreq[i];
2334 float *saved = sce->
saved;
2335 float *saved_ltp = sce->
coeffs;
2341 memcpy(saved_ltp, saved, 512 *
sizeof(
float));
2342 memset(saved_ltp + 576, 0, 448 *
sizeof(
float));
2344 for (i = 0; i < 64; i++)
2345 saved_ltp[i + 512] = ac->
buf_mdct[1023 - i] * swindow[63 - i];
2347 memcpy(saved_ltp, ac->
buf_mdct + 512, 448 *
sizeof(
float));
2348 memset(saved_ltp + 576, 0, 448 *
sizeof(
float));
2350 for (i = 0; i < 64; i++)
2351 saved_ltp[i + 512] = ac->
buf_mdct[1023 - i] * swindow[63 - i];
2354 for (i = 0; i < 512; i++)
2355 saved_ltp[i + 512] = ac->
buf_mdct[1023 - i] * lwindow[511 - i];
2371 float *saved = sce->
saved;
2376 float *temp = ac->
temp;
2381 for (i = 0; i < 1024; i += 128)
2396 memcpy( out, saved, 448 *
sizeof(
float));
2404 memcpy( out + 448 + 4*128, temp, 64 *
sizeof(
float));
2407 memcpy( out + 576, buf + 64, 448 *
sizeof(
float));
2413 memcpy( saved, temp + 64, 64 *
sizeof(
float));
2417 memcpy( saved + 448, buf + 7*128 + 64, 64 *
sizeof(
float));
2419 memcpy( saved, buf + 512, 448 *
sizeof(
float));
2420 memcpy( saved + 448, buf + 7*128 + 64, 64 *
sizeof(
float));
2422 memcpy( saved, buf + 512, 512 *
sizeof(
float));
2431 float *saved = sce->
saved;
2440 memcpy(out, saved, 192 *
sizeof(
float));
2442 memcpy( out + 320, buf + 64, 192 *
sizeof(
float));
2448 memcpy(saved, buf + 256, 256 *
sizeof(
float));
2455 float *saved = sce->
saved;
2460 const int n2 = n >> 1;
2461 const int n4 = n >> 2;
2468 for (i = 0; i < n2; i+=2) {
2470 temp = in[
i ]; in[
i ] = -in[n - 1 -
i]; in[n - 1 -
i] = temp;
2471 temp = -in[i + 1]; in[i + 1] = in[n - 2 -
i]; in[n - 2 -
i] = temp;
2474 for (i = 0; i < n; i+=2) {
2484 for (i = n4; i < n2; i ++) {
2485 out[i - n4] = buf[n2 - 1 -
i] * window[i - n4] +
2486 saved[ i + n2] * window[i + n - n4] +
2487 -saved[ n + n2 - 1 -
i] * window[i + 2*n - n4] +
2488 -saved[2*n + n2 +
i] * window[i + 3*n - n4];
2490 for (i = 0; i < n2; i ++) {
2491 out[n4 +
i] = buf[
i] * window[i + n2 - n4] +
2492 -saved[ n - 1 -
i] * window[i + n2 + n - n4] +
2493 -saved[ n +
i] * window[i + n2 + 2*n - n4] +
2494 saved[2*n + n - 1 -
i] * window[i + n2 + 3*n - n4];
2496 for (i = 0; i < n4; i ++) {
2497 out[n2 + n4 +
i] = buf[ i + n2] * window[i + n - n4] +
2498 -saved[ n2 - 1 -
i] * window[i + 2*n - n4] +
2499 -saved[ n + n2 +
i] * window[i + 3*n - n4];
2503 memmove(saved + n, saved, 2 * n *
sizeof(
float));
2504 memcpy( saved, buf, n *
sizeof(
float));
2518 float *dest = target->
coeffs;
2519 const float *src = cce->
ch[0].
coeffs;
2520 int g,
i, group, k, idx = 0;
2523 "Dependent coupling is not supported together with LTP\n");
2527 for (i = 0; i < ics->
max_sfb; i++, idx++) {
2530 for (group = 0; group < ics->
group_len[
g]; group++) {
2531 for (k = offsets[i]; k < offsets[i + 1]; k++) {
2533 dest[group * 128 + k] += gain * src[group * 128 + k];
2554 const float *src = cce->
ch[0].
ret;
2555 float *dest = target->
ret;
2558 for (i = 0; i <
len; i++)
2559 dest[i] += gain * src[i];
2582 if (coup->
type[c] == type && coup->
id_select[c] == elem_id) {
2584 apply_coupling_method(ac, &cc->
ch[0], cce, index);
2589 apply_coupling_method(ac, &cc->
ch[1], cce, index++);
2614 for (type = 3; type >= 0; type--) {
2658 uint8_t layout_map[MAX_ELEM_ID*4][3];
2659 int layout_map_tags, ret;
2665 "More than one AAC RDB per ADTS frame");
2722 if (chan_config < 0 || chan_config >= 8) {
2730 if (!(che=
get_che(ac, elem_type, elem_id))) {
2732 "channel element %d.%d is not allocated\n",
2733 elem_type, elem_id);
2738 switch (elem_type) {
2770 int samples = 0, multiplier, audio_found = 0, pce_found = 0;
2799 if (!(che=
get_che(ac, elem_type, elem_id))) {
2801 elem_type, elem_id);
2808 switch (elem_type) {
2834 uint8_t layout_map[MAX_ELEM_ID*4][3];
2844 "Not evaluating a further program_config_element as this construct is dubious at best.\n");
2872 elem_type_prev = elem_type;
2887 samples <<= multiplier;
2908 int *got_frame_ptr,
AVPacket *avpkt)
2912 int buf_size = avpkt->
size;
2917 int new_extradata_size;
2920 &new_extradata_size);
2922 if (new_extradata) {
2929 memcpy(avctx->
extradata, new_extradata, new_extradata_size);
2956 for (buf_offset = buf_consumed; buf_offset < buf_size; buf_offset++)
2957 if (buf[buf_offset])
2960 return buf_size > buf_offset ? buf_consumed : buf_size;
2969 for (type = 0; type < 4; type++) {
2970 if (ac->
che[type][i])
2984 #define LOAS_SYNC_WORD 0x2b7
3010 int sync_extension = 0;
3011 int bits_consumed, esize;
3019 if (config_start_bit % 8) {
3021 "Non-byte-aligned audio-specific config");
3027 gb->
buffer + (config_start_bit / 8),
3028 asclen, sync_extension);
3030 if (bits_consumed < 0)
3040 esize = (bits_consumed+7) / 8;
3055 return bits_consumed;
3061 int ret, audio_mux_version =
get_bits(gb, 1);
3064 if (audio_mux_version)
3069 if (audio_mux_version)
3089 if (!audio_mux_version) {
3120 if (audio_mux_version) {
3143 int mux_slot_length = 0;
3146 mux_slot_length += tmp;
3147 }
while (tmp == 255);
3148 return mux_slot_length;
3164 if (!use_same_mux) {
3169 "no decoder config found\n");
3177 }
else if (mux_slot_length_bytes * 8 + 256 <
get_bits_left(gb)) {
3179 "frame length mismatch %d << %d\n",
3189 int *got_frame_ptr,
AVPacket *avpkt)
3204 if (muxlength > avpkt->
size)
3228 "ADTS header detected, probably as result of configuration "