OBJS-$(CONFIG_AAC_DECODER) += aac.o aactab.o mdct.o fft.o
OBJS-$(CONFIG_AASC_DECODER) += aasc.o
-OBJS-$(CONFIG_AC3_DECODER) += ac3dec.o ac3tab.o ac3dec_data.o ac3.o mdct.o fft.o
+OBJS-$(CONFIG_AC3_DECODER) += eac3dec.o ac3dec.o ac3tab.o ac3dec_data.o ac3.o mdct.o fft.o
OBJS-$(CONFIG_AC3_ENCODER) += ac3enc.o ac3tab.o ac3.o
OBJS-$(CONFIG_ALAC_DECODER) += alac.o
OBJS-$(CONFIG_ALAC_ENCODER) += alacenc.o lpc.o
int phase_flags[18]; ///< phase flags (phsflg)
int num_cpl_subbands; ///< number of coupling sub bands (ncplsubnd)
int num_cpl_bands; ///< number of coupling bands (ncplbnd)
- int cpl_band_struct[18]; ///< coupling band structure (cplbndstrc)
+ uint8_t cpl_band_struct[18]; ///< coupling band structure (cplbndstrc)
int firstchincpl; ///< first channel in coupling
int first_cpl_coords[AC3_MAX_CHANNELS]; ///< first coupling coordinates states (firstcplcos)
int cpl_coords[AC3_MAX_CHANNELS][18]; ///< coupling coordinates (cplco)
///@}
} AC3DecodeContext;
+/**
+ * Parse the E-AC-3 frame header.
+ * This parses both the bit stream info and audio frame header.
+ */
+int ff_eac3_parse_header(AC3DecodeContext *s);
+
+/**
+ * Decode mantissas in a single channel for the entire frame.
+ * This is used when AHT mode is enabled.
+ */
+void ff_eac3_decode_transform_coeffs_aht_ch(AC3DecodeContext *s, int ch);
+
#endif /* FFMPEG_AC3DEC_H */
/**
* Table E3.6, Gk=2 & Gk=4, B
* Large mantissa inverse quantization, negative mantissa remapping offsets
+ * Table values from the spec are right-shifted by 8 to simplify calculations.
* ff_eac3_gaq_remap_3_4_b[hebap-8][Gk=2,4]
*/
const int16_t ff_eac3_gaq_remap_2_4_b[9][2] = {
- { -5461, -1170},
- { -11703, -4915},
- { -14199, -6606},
- { -15327, -7412},
- { -15864, -7805},
- { -16126, -7999},
- { -16255, -8096},
- { -16320, -8144},
- { -16352, -8168}
+ { -22, -5 },
+ { -46, -20 },
+ { -56, -26 },
+ { -60, -29 },
+ { -62, -31 },
+ { -63, -32 },
+ { -64, -32 },
+ { -64, -32 },
+ { -64, -32 },
};
static const int16_t vq_hebap1[4][6] = {