The issue is that AOT 45 isn't defined anywhere, and looking at the git blame, it seems to have sprung up through a reordering of the enum, and adding a hole. The spec does not define an explicit AOT for SBR and no SBR, and only uses AOT 42 (previously AOT_USAC_NOSBR), so just rename AOT_USAC to it and replace its use everywhere.
Showing the changes to libavcodec/aac (1 of 2 files). Show all
Unified · Split
| @@ -1046,7 +1046,6 @@ static int decode_audio_specific_config_gb(AACDecContext *ac, · 1045 unmodified lines | |||
| 1046 | return ret; | 1046 | return ret; |
| 1047 | break; | 1047 | break; |
| 1048 | #if CONFIG_AAC_DECODER | 1048 | #if CONFIG_AAC_DECODER |
| 1049 | case AOT_USAC_NOSBR: /* fallthrough */ | ||
| 1050 | case AOT_USAC: | 1049 | case AOT_USAC: |
| 1051 | if ((ret = ff_aac_usac_config_decode(ac, avctx, gb, | 1050 | if ((ret = ff_aac_usac_config_decode(ac, avctx, gb, |
| 1052 | oc, m4ac->chan_config)) < 0) | 1051 | oc, m4ac->chan_config)) < 0) |
| @@ -1571,8 +1570,7 @@ int ff_aac_decode_tns(AACDecContext *ac, TemporalNoiseShaping *tns, · 518 unmodified lines | |||
| 1571 | GetBitContext *gb, const IndividualChannelStream *ics) | 1570 | GetBitContext *gb, const IndividualChannelStream *ics) |
| 1572 | { | 1571 | { |
| 1573 | int tns_max_order = INT32_MAX; | 1572 | int tns_max_order = INT32_MAX; |
| 1574 | const int is_usac = ac->oc[1].m4ac.object_type == AOT_USAC || | 1573 | const int is_usac = ac->oc[1].m4ac.object_type == AOT_USAC; |
| 1575 | ac->oc[1].m4ac.object_type == AOT_USAC_NOSBR; | ||
| 1576 | int w, filt, i, coef_len, coef_res, coef_compress; | 1574 | int w, filt, i, coef_len, coef_res, coef_compress; |
| 1577 | const int is8 = ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE; | 1575 | const int is8 = ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE; |
| 1578 | 1576 | ||
| @@ -2421,8 +2419,7 @@ static int aac_decode_frame_int(AVCodecContext *avctx, AVFrame *frame, · 842 unmodified lines | |||
| 2421 | 2419 | ||
| 2422 | ac->tags_mapped = 0; | 2420 | ac->tags_mapped = 0; |
| 2423 | 2421 | ||
| 2424 | if ((ac->oc[1].m4ac.object_type == AOT_USAC) || | 2422 | if (ac->oc[1].m4ac.object_type == AOT_USAC) { |
| 2425 | (ac->oc[1].m4ac.object_type == AOT_USAC_NOSBR)) { | ||
| 2426 | if (ac->is_fixed) { | 2423 | if (ac->is_fixed) { |
| 2427 | avpriv_report_missing_feature(ac->avctx, | 2424 | avpriv_report_missing_feature(ac->avctx, |
| 2428 | "AAC USAC fixed-point decoding"); | 2425 | "AAC USAC fixed-point decoding"); |