This is added in 10.11, so we add a #define when building against older SDKs. The decoder actually supports 7.1-channel eac3, but since the parser only reports 6 channels, we end up decoding the 5.1 downmix (same as the internal decoder) for now.
Unified · Split
| @@ -2650,6 +2650,7 @@ ac3_at_decoder_deps="audiotoolbox" · 2649 unmodified lines | |||
| 2650 | adpcm_ima_qt_at_decoder_deps="audiotoolbox" | 2650 | adpcm_ima_qt_at_decoder_deps="audiotoolbox" |
| 2651 | alac_at_decoder_deps="audiotoolbox" | 2651 | alac_at_decoder_deps="audiotoolbox" |
| 2652 | amr_nb_at_decoder_deps="audiotoolbox" | 2652 | amr_nb_at_decoder_deps="audiotoolbox" |
| 2653 | eac3_at_decoder_deps="audiotoolbox" | ||
| 2653 | gsm_ms_at_decoder_deps="audiotoolbox" | 2654 | gsm_ms_at_decoder_deps="audiotoolbox" |
| 2654 | ilbc_at_decoder_deps="audiotoolbox" | 2655 | ilbc_at_decoder_deps="audiotoolbox" |
| 2655 | mp1_at_decoder_deps="audiotoolbox" | 2656 | mp1_at_decoder_deps="audiotoolbox" |
| @@ -806,6 +806,7 @@ OBJS-$(CONFIG_AC3_AT_DECODER) += audiotoolboxdec.o · 805 unmodified lines | |||
| 806 | OBJS-$(CONFIG_ADPCM_IMA_QT_AT_DECODER) += audiotoolboxdec.o | 806 | OBJS-$(CONFIG_ADPCM_IMA_QT_AT_DECODER) += audiotoolboxdec.o |
| 807 | OBJS-$(CONFIG_ALAC_AT_DECODER) += audiotoolboxdec.o | 807 | OBJS-$(CONFIG_ALAC_AT_DECODER) += audiotoolboxdec.o |
| 808 | OBJS-$(CONFIG_AMR_NB_AT_DECODER) += audiotoolboxdec.o | 808 | OBJS-$(CONFIG_AMR_NB_AT_DECODER) += audiotoolboxdec.o |
| 809 | OBJS-$(CONFIG_EAC3_AT_DECODER) += audiotoolboxdec.o | ||
| 809 | OBJS-$(CONFIG_GSM_MS_AT_DECODER) += audiotoolboxdec.o | 810 | OBJS-$(CONFIG_GSM_MS_AT_DECODER) += audiotoolboxdec.o |
| 810 | OBJS-$(CONFIG_ILBC_AT_DECODER) += audiotoolboxdec.o | 811 | OBJS-$(CONFIG_ILBC_AT_DECODER) += audiotoolboxdec.o |
| 811 | OBJS-$(CONFIG_MP1_AT_DECODER) += audiotoolboxdec.o | 812 | OBJS-$(CONFIG_MP1_AT_DECODER) += audiotoolboxdec.o |
| @@ -568,6 +568,7 @@ void avcodec_register_all(void) · 567 unmodified lines | |||
| 568 | REGISTER_DECODER(ADPCM_IMA_QT_AT, adpcm_ima_qt_at); | 568 | REGISTER_DECODER(ADPCM_IMA_QT_AT, adpcm_ima_qt_at); |
| 569 | REGISTER_ENCDEC (ALAC_AT, alac_at); | 569 | REGISTER_ENCDEC (ALAC_AT, alac_at); |
| 570 | REGISTER_DECODER(AMR_NB_AT, amr_nb_at); | 570 | REGISTER_DECODER(AMR_NB_AT, amr_nb_at); |
| 571 | REGISTER_DECODER(EAC3_AT, eac3_at); | ||
| 571 | REGISTER_DECODER(GSM_MS_AT, gsm_ms_at); | 572 | REGISTER_DECODER(GSM_MS_AT, gsm_ms_at); |
| 572 | REGISTER_ENCDEC (ILBC_AT, ilbc_at); | 573 | REGISTER_ENCDEC (ILBC_AT, ilbc_at); |
| 573 | REGISTER_DECODER(MP1_AT, mp1_at); | 574 | REGISTER_DECODER(MP1_AT, mp1_at); |
| @@ -30,6 +30,10 @@ · 29 unmodified lines | |||
| 30 | #include "libavutil/opt.h" | 30 | #include "libavutil/opt.h" |
| 31 | #include "libavutil/log.h" | 31 | #include "libavutil/log.h" |
| 32 | 32 | ||
| 33 | #ifndef __MAC_10_11 | ||
| 34 | #define kAudioFormatEnhancedAC3 'ec-3' | ||
| 35 | #endif | ||
| 36 | |||
| 33 | typedef struct ATDecodeContext { | 37 | typedef struct ATDecodeContext { |
| 34 | AVClass *av_class; | 38 | AVClass *av_class; |
| 35 | 39 | ||
| @@ -58,6 +62,8 @@ static UInt32 ffat_get_format_id(enum AVCodecID codec, int profile) · 22 unmodified lines | |||
| 58 | return kAudioFormatAppleLossless; | 62 | return kAudioFormatAppleLossless; |
| 59 | case AV_CODEC_ID_AMR_NB: | 63 | case AV_CODEC_ID_AMR_NB: |
| 60 | return kAudioFormatAMR; | 64 | return kAudioFormatAMR; |
| 65 | case AV_CODEC_ID_EAC3: | ||
| 66 | return kAudioFormatEnhancedAC3; | ||
| 61 | case AV_CODEC_ID_GSM_MS: | 67 | case AV_CODEC_ID_GSM_MS: |
| 62 | return kAudioFormatMicrosoftGSM; | 68 | return kAudioFormatMicrosoftGSM; |
| 63 | case AV_CODEC_ID_ILBC: | 69 | case AV_CODEC_ID_ILBC: |
| @@ -512,6 +518,7 @@ FFAT_DEC(ac3, AV_CODEC_ID_AC3) · 448 unmodified lines | |||
| 512 | FFAT_DEC(adpcm_ima_qt, AV_CODEC_ID_ADPCM_IMA_QT) | 518 | FFAT_DEC(adpcm_ima_qt, AV_CODEC_ID_ADPCM_IMA_QT) |
| 513 | FFAT_DEC(alac, AV_CODEC_ID_ALAC) | 519 | FFAT_DEC(alac, AV_CODEC_ID_ALAC) |
| 514 | FFAT_DEC(amr_nb, AV_CODEC_ID_AMR_NB) | 520 | FFAT_DEC(amr_nb, AV_CODEC_ID_AMR_NB) |
| 521 | FFAT_DEC(eac3, AV_CODEC_ID_EAC3) | ||
| 515 | FFAT_DEC(gsm_ms, AV_CODEC_ID_GSM_MS) | 522 | FFAT_DEC(gsm_ms, AV_CODEC_ID_GSM_MS) |
| 516 | FFAT_DEC(ilbc, AV_CODEC_ID_ILBC) | 523 | FFAT_DEC(ilbc, AV_CODEC_ID_ILBC) |
| 517 | FFAT_DEC(mp1, AV_CODEC_ID_MP1) | 524 | FFAT_DEC(mp1, AV_CODEC_ID_MP1) |