avcodec/aacdec: Rename AACContext to AACDecContext
It is decoder-only; furthermore, there is already an AACContext in use by libfdk-aacenc. Also make aacdec.h provide the typedef for AACContext; up until now, this has been done by sbr.h. Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
		
							parent
							
								
									1b048dd443
								
							
						
					
					
						commit
						1ecc906536
					
				| @ -210,7 +210,7 @@ static av_always_inline void predict(PredictorState *ps, float *coef, | ||||
|  * | ||||
|  * @param   index   index into coupling gain array | ||||
|  */ | ||||
| static void apply_dependent_coupling(AACContext *ac, | ||||
| static void apply_dependent_coupling(AACDecContext *ac, | ||||
|                                      SingleChannelElement *target, | ||||
|                                      ChannelElement *cce, int index) | ||||
| { | ||||
| @ -246,7 +246,7 @@ static void apply_dependent_coupling(AACContext *ac, | ||||
|  * | ||||
|  * @param   index   index into coupling gain array | ||||
|  */ | ||||
| static void apply_independent_coupling(AACContext *ac, | ||||
| static void apply_independent_coupling(AACDecContext *ac, | ||||
|                                        SingleChannelElement *target, | ||||
|                                        ChannelElement *cce, int index) | ||||
| { | ||||
| @ -263,7 +263,7 @@ static void apply_independent_coupling(AACContext *ac, | ||||
| #define LOAS_SYNC_WORD   0x2b7       ///< 11 bits LOAS sync word
 | ||||
| 
 | ||||
| struct LATMContext { | ||||
|     AACContext aac_ctx;     ///< containing AACContext
 | ||||
|     AACDecContext aac_ctx;  ///< containing AACContext
 | ||||
|     int initialized;        ///< initialized after a valid extradata was seen
 | ||||
| 
 | ||||
|     // parser data
 | ||||
| @ -282,7 +282,7 @@ static inline uint32_t latm_get_value(GetBitContext *b) | ||||
| static int latm_decode_audio_specific_config(struct LATMContext *latmctx, | ||||
|                                              GetBitContext *gb, int asclen) | ||||
| { | ||||
|     AACContext *ac        = &latmctx->aac_ctx; | ||||
|     AACDecContext *ac     = &latmctx->aac_ctx; | ||||
|     AVCodecContext *avctx = ac->avctx; | ||||
|     MPEG4AudioConfig m4ac = { 0 }; | ||||
|     GetBitContext gbc; | ||||
| @ -556,7 +556,7 @@ const FFCodec ff_aac_decoder = { | ||||
|     CODEC_LONG_NAME("AAC (Advanced Audio Coding)"), | ||||
|     .p.type          = AVMEDIA_TYPE_AUDIO, | ||||
|     .p.id            = AV_CODEC_ID_AAC, | ||||
|     .priv_data_size  = sizeof(AACContext), | ||||
|     .priv_data_size  = sizeof(AACDecContext), | ||||
|     .init            = aac_decode_init, | ||||
|     .close           = aac_decode_close, | ||||
|     FF_CODEC_DECODE_CB(aac_decode_frame), | ||||
|  | ||||
| @ -81,7 +81,7 @@ typedef struct DynamicRangeControl { | ||||
| /**
 | ||||
|  * main AAC decoding context | ||||
|  */ | ||||
| struct AACContext { | ||||
| typedef struct AACDecContext { | ||||
|     const struct AVClass  *class; | ||||
|     struct AVCodecContext *avctx; | ||||
|     struct AVFrame *frame; | ||||
| @ -162,18 +162,17 @@ struct AACContext { | ||||
|     int warned_he_aac_mono; | ||||
| 
 | ||||
|     /* aacdec functions pointers */ | ||||
|     void (*imdct_and_windowing)(AACContext *ac, SingleChannelElement *sce); | ||||
|     void (*apply_ltp)(AACContext *ac, SingleChannelElement *sce); | ||||
|     void (*imdct_and_windowing)(struct AACDecContext *ac, SingleChannelElement *sce); | ||||
|     void (*apply_ltp)(struct AACDecContext *ac, SingleChannelElement *sce); | ||||
|     void (*apply_tns)(INTFLOAT coef[1024], TemporalNoiseShaping *tns, | ||||
|                       IndividualChannelStream *ics, int decode); | ||||
|     void (*windowing_and_mdct_ltp)(AACContext *ac, INTFLOAT *out, | ||||
|     void (*windowing_and_mdct_ltp)(struct AACDecContext *ac, INTFLOAT *out, | ||||
|                                    INTFLOAT *in, IndividualChannelStream *ics); | ||||
|     void (*update_ltp)(AACContext *ac, SingleChannelElement *sce); | ||||
|     void (*update_ltp)(struct AACDecContext *ac, SingleChannelElement *sce); | ||||
|     void (*vector_pow43)(int *coefs, int len); | ||||
|     void (*subband_scale)(int *dst, int *src, int scale, int offset, int len, void *log_context); | ||||
| } AACDecContext; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| void ff_aacdec_init_mips(AACContext *c); | ||||
| void ff_aacdec_init_mips(AACDecContext *c); | ||||
| 
 | ||||
| #endif /* AVCODEC_AACDEC_H */ | ||||
|  | ||||
| @ -355,7 +355,7 @@ static const int cce_scale_fixed[8] = { | ||||
|  * | ||||
|  * @param   index   index into coupling gain array | ||||
|  */ | ||||
| static void apply_dependent_coupling_fixed(AACContext *ac, | ||||
| static void apply_dependent_coupling_fixed(AACDecContext *ac, | ||||
|                                      SingleChannelElement *target, | ||||
|                                      ChannelElement *cce, int index) | ||||
| { | ||||
| @ -419,7 +419,7 @@ static void apply_dependent_coupling_fixed(AACContext *ac, | ||||
|  * | ||||
|  * @param   index   index into coupling gain array | ||||
|  */ | ||||
| static void apply_independent_coupling_fixed(AACContext *ac, | ||||
| static void apply_independent_coupling_fixed(AACDecContext *ac, | ||||
|                                        SingleChannelElement *target, | ||||
|                                        ChannelElement *cce, int index) | ||||
| { | ||||
| @ -457,7 +457,7 @@ const FFCodec ff_aac_fixed_decoder = { | ||||
|     CODEC_LONG_NAME("AAC (Advanced Audio Coding)"), | ||||
|     .p.type          = AVMEDIA_TYPE_AUDIO, | ||||
|     .p.id            = AV_CODEC_ID_AAC, | ||||
|     .priv_data_size  = sizeof(AACContext), | ||||
|     .priv_data_size  = sizeof(AACDecContext), | ||||
|     .init            = aac_decode_init, | ||||
|     .close           = aac_decode_close, | ||||
|     FF_CODEC_DECODE_CB(aac_decode_frame), | ||||
|  | ||||
| @ -94,7 +94,7 @@ | ||||
| #include "decode.h" | ||||
| #include "internal.h" | ||||
| 
 | ||||
| static int output_configure(AACContext *ac, | ||||
| static int output_configure(AACDecContext *ac, | ||||
|                             uint8_t layout_map[MAX_ELEM_ID*4][3], int tags, | ||||
|                             enum OCStatus oc_type, int get_new_frame); | ||||
| 
 | ||||
| @ -124,7 +124,7 @@ static int count_channels(uint8_t (*layout)[3], int tags) | ||||
|  * | ||||
|  * @return  Returns error status. 0 - OK, !0 - error | ||||
|  */ | ||||
| static av_cold int che_configure(AACContext *ac, | ||||
| static av_cold int che_configure(AACDecContext *ac, | ||||
|                                  enum ChannelPosition che_pos, | ||||
|                                  int type, int id, int *channels) | ||||
| { | ||||
| @ -160,7 +160,7 @@ static av_cold int che_configure(AACContext *ac, | ||||
| 
 | ||||
| static int frame_configure_elements(AVCodecContext *avctx) | ||||
| { | ||||
|     AACContext *ac = avctx->priv_data; | ||||
|     AACDecContext *ac = avctx->priv_data; | ||||
|     int type, id, ch, ret; | ||||
| 
 | ||||
|     /* set channel pointers to internal buffers by default */ | ||||
| @ -411,7 +411,8 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) | ||||
| /**
 | ||||
|  * Save current output configuration if and only if it has been locked. | ||||
|  */ | ||||
| static int push_output_configuration(AACContext *ac) { | ||||
| static int push_output_configuration(AACDecContext *ac) | ||||
| { | ||||
|     int pushed = 0; | ||||
| 
 | ||||
|     if (ac->oc[1].status == OC_LOCKED || ac->oc[0].status == OC_NONE) { | ||||
| @ -426,7 +427,8 @@ static int push_output_configuration(AACContext *ac) { | ||||
|  * Restore the previous output configuration if and only if the current | ||||
|  * configuration is unlocked. | ||||
|  */ | ||||
| static void pop_output_configuration(AACContext *ac) { | ||||
| static void pop_output_configuration(AACDecContext *ac) | ||||
| { | ||||
|     if (ac->oc[1].status != OC_LOCKED && ac->oc[0].status != OC_NONE) { | ||||
|         ac->oc[1] = ac->oc[0]; | ||||
|         ac->avctx->ch_layout = ac->oc[1].ch_layout; | ||||
| @ -441,7 +443,7 @@ static void pop_output_configuration(AACContext *ac) { | ||||
|  * | ||||
|  * @return  Returns error status. 0 - OK, !0 - error | ||||
|  */ | ||||
| static int output_configure(AACContext *ac, | ||||
| static int output_configure(AACDecContext *ac, | ||||
|                             uint8_t layout_map[MAX_ELEM_ID * 4][3], int tags, | ||||
|                             enum OCStatus oc_type, int get_new_frame) | ||||
| { | ||||
| @ -516,7 +518,7 @@ FF_ENABLE_DEPRECATION_WARNINGS | ||||
| 
 | ||||
| static void flush(AVCodecContext *avctx) | ||||
| { | ||||
|     AACContext *ac= avctx->priv_data; | ||||
|     AACDecContext *ac= avctx->priv_data; | ||||
|     int type, i, j; | ||||
| 
 | ||||
|     for (type = 3; type >= 0; type--) { | ||||
| @ -537,7 +539,7 @@ static void flush(AVCodecContext *avctx) | ||||
|  * | ||||
|  * @return  Returns error status. 0 - OK, !0 - error | ||||
|  */ | ||||
| static int set_default_channel_config(AACContext *ac, AVCodecContext *avctx, | ||||
| static int set_default_channel_config(AACDecContext *ac, AVCodecContext *avctx, | ||||
|                                       uint8_t (*layout_map)[3], | ||||
|                                       int *tags, | ||||
|                                       int channel_config) | ||||
| @ -577,7 +579,7 @@ static int set_default_channel_config(AACContext *ac, AVCodecContext *avctx, | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| static ChannelElement *get_che(AACContext *ac, int type, int elem_id) | ||||
| static ChannelElement *get_che(AACDecContext *ac, int type, int elem_id) | ||||
| { | ||||
|     /* For PCE based channel configurations map the channels solely based
 | ||||
|      * on tags. */ | ||||
| @ -830,12 +832,12 @@ static int decode_pce(AVCodecContext *avctx, MPEG4AudioConfig *m4ac, | ||||
| /**
 | ||||
|  * Decode GA "General Audio" specific configuration; reference: table 4.1. | ||||
|  * | ||||
|  * @param   ac          pointer to AACContext, may be null | ||||
|  * @param   ac          pointer to AACDecContext, may be null | ||||
|  * @param   avctx       pointer to AVCCodecContext, used for logging | ||||
|  * | ||||
|  * @return  Returns error status. 0 - OK, !0 - error | ||||
|  */ | ||||
| static int decode_ga_specific_config(AACContext *ac, AVCodecContext *avctx, | ||||
| static int decode_ga_specific_config(AACDecContext *ac, AVCodecContext *avctx, | ||||
|                                      GetBitContext *gb, | ||||
|                                      int get_bit_alignment, | ||||
|                                      MPEG4AudioConfig *m4ac, | ||||
| @ -916,7 +918,7 @@ static int decode_ga_specific_config(AACContext *ac, AVCodecContext *avctx, | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| static int decode_eld_specific_config(AACContext *ac, AVCodecContext *avctx, | ||||
| static int decode_eld_specific_config(AACDecContext *ac, AVCodecContext *avctx, | ||||
|                                      GetBitContext *gb, | ||||
|                                      MPEG4AudioConfig *m4ac, | ||||
|                                      int channel_config) | ||||
| @ -976,7 +978,7 @@ static int decode_eld_specific_config(AACContext *ac, AVCodecContext *avctx, | ||||
| /**
 | ||||
|  * Decode audio specific configuration; reference: table 1.13. | ||||
|  * | ||||
|  * @param   ac          pointer to AACContext, may be null | ||||
|  * @param   ac          pointer to AACDecContext, may be null | ||||
|  * @param   avctx       pointer to AVCCodecContext, used for logging | ||||
|  * @param   m4ac        pointer to MPEG4AudioConfig, used for parsing | ||||
|  * @param   gb          buffer holding an audio specific config | ||||
| @ -985,7 +987,7 @@ static int decode_eld_specific_config(AACContext *ac, AVCodecContext *avctx, | ||||
|  * | ||||
|  * @return  Returns error status or number of consumed bits. <0 - error | ||||
|  */ | ||||
| static int decode_audio_specific_config_gb(AACContext *ac, | ||||
| static int decode_audio_specific_config_gb(AACDecContext *ac, | ||||
|                                            AVCodecContext *avctx, | ||||
|                                            MPEG4AudioConfig *m4ac, | ||||
|                                            GetBitContext *gb, | ||||
| @ -1052,7 +1054,7 @@ static int decode_audio_specific_config_gb(AACContext *ac, | ||||
|     return get_bits_count(gb); | ||||
| } | ||||
| 
 | ||||
| static int decode_audio_specific_config(AACContext *ac, | ||||
| static int decode_audio_specific_config(AACDecContext *ac, | ||||
|                                         AVCodecContext *avctx, | ||||
|                                         MPEG4AudioConfig *m4ac, | ||||
|                                         const uint8_t *data, int64_t bit_size, | ||||
| @ -1121,7 +1123,7 @@ static void reset_predictor_group(PredictorState *ps, int group_num) | ||||
|         reset_predict_state(&ps[i]); | ||||
| } | ||||
| 
 | ||||
| static void aacdec_init(AACContext *ac); | ||||
| static void aacdec_init(AACDecContext *ac); | ||||
| 
 | ||||
| static av_cold void aac_static_table_init(void) | ||||
| { | ||||
| @ -1152,7 +1154,7 @@ static AVOnce aac_table_init = AV_ONCE_INIT; | ||||
| static av_cold int aac_decode_init(AVCodecContext *avctx) | ||||
| { | ||||
|     float scale; | ||||
|     AACContext *ac = avctx->priv_data; | ||||
|     AACDecContext *ac = avctx->priv_data; | ||||
|     int ret; | ||||
| 
 | ||||
|     if (avctx->sample_rate > 96000) | ||||
| @ -1250,7 +1252,7 @@ static av_cold int aac_decode_init(AVCodecContext *avctx) | ||||
| /**
 | ||||
|  * Skip data_stream_element; reference: table 4.10. | ||||
|  */ | ||||
| static int skip_data_stream_element(AACContext *ac, GetBitContext *gb) | ||||
| static int skip_data_stream_element(AACDecContext *ac, GetBitContext *gb) | ||||
| { | ||||
|     int byte_align = get_bits1(gb); | ||||
|     int count = get_bits(gb, 8); | ||||
| @ -1267,7 +1269,7 @@ static int skip_data_stream_element(AACContext *ac, GetBitContext *gb) | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| static int decode_prediction(AACContext *ac, IndividualChannelStream *ics, | ||||
| static int decode_prediction(AACDecContext *ac, IndividualChannelStream *ics, | ||||
|                              GetBitContext *gb) | ||||
| { | ||||
|     int sfb; | ||||
| @ -1303,7 +1305,7 @@ static void decode_ltp(LongTermPrediction *ltp, | ||||
| /**
 | ||||
|  * Decode Individual Channel Stream info; reference: table 4.6. | ||||
|  */ | ||||
| static int decode_ics_info(AACContext *ac, IndividualChannelStream *ics, | ||||
| static int decode_ics_info(AACDecContext *ac, IndividualChannelStream *ics, | ||||
|                            GetBitContext *gb) | ||||
| { | ||||
|     const MPEG4AudioConfig *const m4ac = &ac->oc[1].m4ac; | ||||
| @ -1429,7 +1431,7 @@ fail: | ||||
|  * | ||||
|  * @return  Returns error status. 0 - OK, !0 - error | ||||
|  */ | ||||
| static int decode_band_types(AACContext *ac, enum BandType band_type[120], | ||||
| static int decode_band_types(AACDecContext *ac, enum BandType band_type[120], | ||||
|                              int band_type_run_end[120], GetBitContext *gb, | ||||
|                              IndividualChannelStream *ics) | ||||
| { | ||||
| @ -1478,7 +1480,7 @@ static int decode_band_types(AACContext *ac, enum BandType band_type[120], | ||||
|  * | ||||
|  * @return  Returns error status. 0 - OK, !0 - error | ||||
|  */ | ||||
| static int decode_scalefactors(AACContext *ac, INTFLOAT sf[120], GetBitContext *gb, | ||||
| static int decode_scalefactors(AACDecContext *ac, INTFLOAT sf[120], GetBitContext *gb, | ||||
|                                unsigned int global_gain, | ||||
|                                IndividualChannelStream *ics, | ||||
|                                enum BandType band_type[120], | ||||
| @ -1580,7 +1582,7 @@ static int decode_pulses(Pulse *pulse, GetBitContext *gb, | ||||
|  * | ||||
|  * @return  Returns error status. 0 - OK, !0 - error | ||||
|  */ | ||||
| static int decode_tns(AACContext *ac, TemporalNoiseShaping *tns, | ||||
| static int decode_tns(AACDecContext *ac, TemporalNoiseShaping *tns, | ||||
|                       GetBitContext *gb, const IndividualChannelStream *ics) | ||||
| { | ||||
|     int w, filt, i, coef_len, coef_res, coef_compress; | ||||
| @ -1648,7 +1650,7 @@ static void decode_mid_side_stereo(ChannelElement *cpe, GetBitContext *gb, | ||||
|  * | ||||
|  * @return  Returns error status. 0 - OK, !0 - error | ||||
|  */ | ||||
| static int decode_spectrum_and_dequant(AACContext *ac, INTFLOAT coef[1024], | ||||
| static int decode_spectrum_and_dequant(AACDecContext *ac, INTFLOAT coef[1024], | ||||
|                                        GetBitContext *gb, const INTFLOAT sf[120], | ||||
|                                        int pulse_present, const Pulse *pulse, | ||||
|                                        const IndividualChannelStream *ics, | ||||
| @ -1943,7 +1945,7 @@ static int decode_spectrum_and_dequant(AACContext *ac, INTFLOAT coef[1024], | ||||
| /**
 | ||||
|  * Apply AAC-Main style frequency domain prediction. | ||||
|  */ | ||||
| static void apply_prediction(AACContext *ac, SingleChannelElement *sce) | ||||
| static void apply_prediction(AACDecContext *ac, SingleChannelElement *sce) | ||||
| { | ||||
|     int sfb, k; | ||||
| 
 | ||||
| @ -2006,7 +2008,7 @@ static void decode_gain_control(SingleChannelElement * sce, GetBitContext * gb) | ||||
|  * | ||||
|  * @return  Returns error status. 0 - OK, !0 - error | ||||
|  */ | ||||
| static int decode_ics(AACContext *ac, SingleChannelElement *sce, | ||||
| static int decode_ics(AACDecContext *ac, SingleChannelElement *sce, | ||||
|                       GetBitContext *gb, int common_window, int scale_flag) | ||||
| { | ||||
|     Pulse pulse; | ||||
| @ -2097,7 +2099,7 @@ fail: | ||||
| /**
 | ||||
|  * Mid/Side stereo decoding; reference: 4.6.8.1.3. | ||||
|  */ | ||||
| static void apply_mid_side_stereo(AACContext *ac, ChannelElement *cpe) | ||||
| static void apply_mid_side_stereo(AACDecContext *ac, ChannelElement *cpe) | ||||
| { | ||||
|     const IndividualChannelStream *ics = &cpe->ch[0].ics; | ||||
|     INTFLOAT *ch0 = cpe->ch[0].coeffs; | ||||
| @ -2135,7 +2137,7 @@ static void apply_mid_side_stereo(AACContext *ac, ChannelElement *cpe) | ||||
|  *                      [1] mask is decoded from bitstream; [2] mask is all 1s; | ||||
|  *                      [3] reserved for scalable AAC | ||||
|  */ | ||||
| static void apply_intensity_stereo(AACContext *ac, | ||||
| static void apply_intensity_stereo(AACDecContext *ac, | ||||
|                                    ChannelElement *cpe, int ms_present) | ||||
| { | ||||
|     const IndividualChannelStream *ics = &cpe->ch[1].ics; | ||||
| @ -2185,7 +2187,7 @@ static void apply_intensity_stereo(AACContext *ac, | ||||
|  * | ||||
|  * @return  Returns error status. 0 - OK, !0 - error | ||||
|  */ | ||||
| static int decode_cpe(AACContext *ac, GetBitContext *gb, ChannelElement *cpe) | ||||
| static int decode_cpe(AACDecContext *ac, GetBitContext *gb, ChannelElement *cpe) | ||||
| { | ||||
|     int i, ret, common_window, ms_present = 0; | ||||
|     int eld_syntax = ac->oc[1].m4ac.object_type == AOT_ER_AAC_ELD; | ||||
| @ -2238,7 +2240,7 @@ static const float cce_scale[] = { | ||||
|  * | ||||
|  * @return  Returns error status. 0 - OK, !0 - error | ||||
|  */ | ||||
| static int decode_cce(AACContext *ac, GetBitContext *gb, ChannelElement *che) | ||||
| static int decode_cce(AACDecContext *ac, GetBitContext *gb, ChannelElement *che) | ||||
| { | ||||
|     int num_gain = 0; | ||||
|     int c, g, sfb, ret; | ||||
| @ -2388,7 +2390,7 @@ static int decode_dynamic_range(DynamicRangeControl *che_drc, | ||||
|     return n; | ||||
| } | ||||
| 
 | ||||
| static int decode_fill(AACContext *ac, GetBitContext *gb, int len) { | ||||
| static int decode_fill(AACDecContext *ac, GetBitContext *gb, int len) { | ||||
|     uint8_t buf[256]; | ||||
|     int i, major, minor; | ||||
| 
 | ||||
| @ -2421,7 +2423,7 @@ unknown: | ||||
|  * | ||||
|  * @return Returns number of bytes consumed | ||||
|  */ | ||||
| static int decode_extension_payload(AACContext *ac, GetBitContext *gb, int cnt, | ||||
| static int decode_extension_payload(AACDecContext *ac, GetBitContext *gb, int cnt, | ||||
|                                     ChannelElement *che, enum RawDataBlockType elem_type) | ||||
| { | ||||
|     int crc_flag = 0; | ||||
| @ -2551,7 +2553,7 @@ static void apply_tns(INTFLOAT coef_param[1024], TemporalNoiseShaping *tns, | ||||
|  *  Apply windowing and MDCT to obtain the spectral | ||||
|  *  coefficient from the predicted sample by LTP. | ||||
|  */ | ||||
| static void windowing_and_mdct_ltp(AACContext *ac, INTFLOAT *out, | ||||
| static void windowing_and_mdct_ltp(AACDecContext *ac, INTFLOAT *out, | ||||
|                                    INTFLOAT *in, IndividualChannelStream *ics) | ||||
| { | ||||
|     const INTFLOAT *lwindow      = ics->use_kb_window[0] ? AAC_RENAME2(aac_kbd_long_1024) : AAC_RENAME2(sine_1024); | ||||
| @ -2577,7 +2579,7 @@ static void windowing_and_mdct_ltp(AACContext *ac, INTFLOAT *out, | ||||
| /**
 | ||||
|  * Apply the long term prediction | ||||
|  */ | ||||
| static void apply_ltp(AACContext *ac, SingleChannelElement *sce) | ||||
| static void apply_ltp(AACDecContext *ac, SingleChannelElement *sce) | ||||
| { | ||||
|     const LongTermPrediction *ltp = &sce->ics.ltp; | ||||
|     const uint16_t *offsets = sce->ics.swb_offset; | ||||
| @ -2609,7 +2611,7 @@ static void apply_ltp(AACContext *ac, SingleChannelElement *sce) | ||||
| /**
 | ||||
|  * Update the LTP buffer for next frame | ||||
|  */ | ||||
| static void update_ltp(AACContext *ac, SingleChannelElement *sce) | ||||
| static void update_ltp(AACDecContext *ac, SingleChannelElement *sce) | ||||
| { | ||||
|     IndividualChannelStream *ics = &sce->ics; | ||||
|     INTFLOAT *saved     = sce->saved; | ||||
| @ -2647,7 +2649,7 @@ static void update_ltp(AACContext *ac, SingleChannelElement *sce) | ||||
| /**
 | ||||
|  * Conduct IMDCT and windowing. | ||||
|  */ | ||||
| static void imdct_and_windowing(AACContext *ac, SingleChannelElement *sce) | ||||
| static void imdct_and_windowing(AACDecContext *ac, SingleChannelElement *sce) | ||||
| { | ||||
|     IndividualChannelStream *ics = &sce->ics; | ||||
|     INTFLOAT *in    = sce->coeffs; | ||||
| @ -2711,7 +2713,7 @@ static void imdct_and_windowing(AACContext *ac, SingleChannelElement *sce) | ||||
| /**
 | ||||
|  * Conduct IMDCT and windowing. | ||||
|  */ | ||||
| static void imdct_and_windowing_960(AACContext *ac, SingleChannelElement *sce) | ||||
| static void imdct_and_windowing_960(AACDecContext *ac, SingleChannelElement *sce) | ||||
| { | ||||
|     IndividualChannelStream *ics = &sce->ics; | ||||
|     INTFLOAT *in    = sce->coeffs; | ||||
| @ -2772,7 +2774,7 @@ static void imdct_and_windowing_960(AACContext *ac, SingleChannelElement *sce) | ||||
|         memcpy(                      saved,       buf + 480,        480 * sizeof(*saved)); | ||||
|     } | ||||
| } | ||||
| static void imdct_and_windowing_ld(AACContext *ac, SingleChannelElement *sce) | ||||
| static void imdct_and_windowing_ld(AACDecContext *ac, SingleChannelElement *sce) | ||||
| { | ||||
|     IndividualChannelStream *ics = &sce->ics; | ||||
|     INTFLOAT *in    = sce->coeffs; | ||||
| @ -2797,7 +2799,7 @@ static void imdct_and_windowing_ld(AACContext *ac, SingleChannelElement *sce) | ||||
|     memcpy(saved, buf + 256, 256 * sizeof(*saved)); | ||||
| } | ||||
| 
 | ||||
| static void imdct_and_windowing_eld(AACContext *ac, SingleChannelElement *sce) | ||||
| static void imdct_and_windowing_eld(AACDecContext *ac, SingleChannelElement *sce) | ||||
| { | ||||
|     UINTFLOAT *in   = sce->coeffs; | ||||
|     INTFLOAT *out   = sce->ret; | ||||
| @ -2865,10 +2867,10 @@ static void imdct_and_windowing_eld(AACContext *ac, SingleChannelElement *sce) | ||||
|  * | ||||
|  * @param   apply_coupling_method   pointer to (in)dependent coupling function | ||||
|  */ | ||||
| static void apply_channel_coupling(AACContext *ac, ChannelElement *cc, | ||||
| static void apply_channel_coupling(AACDecContext *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)) | ||||
|                                    void (*apply_coupling_method)(AACDecContext *ac, SingleChannelElement *target, ChannelElement *cce, int index)) | ||||
| { | ||||
|     int i, c; | ||||
| 
 | ||||
| @ -2898,10 +2900,10 @@ static void apply_channel_coupling(AACContext *ac, ChannelElement *cc, | ||||
| /**
 | ||||
|  * Convert spectral data to samples, applying all supported tools as appropriate. | ||||
|  */ | ||||
| static void spectral_to_sample(AACContext *ac, int samples) | ||||
| static void spectral_to_sample(AACDecContext *ac, int samples) | ||||
| { | ||||
|     int i, type; | ||||
|     void (*imdct_and_window)(AACContext *ac, SingleChannelElement *sce); | ||||
|     void (*imdct_and_window)(AACDecContext *ac, SingleChannelElement *sce); | ||||
|     switch (ac->oc[1].m4ac.object_type) { | ||||
|     case AOT_ER_AAC_LD: | ||||
|         imdct_and_window = imdct_and_windowing_ld; | ||||
| @ -2970,7 +2972,7 @@ static void spectral_to_sample(AACContext *ac, int samples) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| static int parse_adts_frame_header(AACContext *ac, GetBitContext *gb) | ||||
| static int parse_adts_frame_header(AACDecContext *ac, GetBitContext *gb) | ||||
| { | ||||
|     int size; | ||||
|     AACADTSHeaderInfo hdr_info; | ||||
| @ -3035,7 +3037,7 @@ static int parse_adts_frame_header(AACContext *ac, GetBitContext *gb) | ||||
| static int aac_decode_er_frame(AVCodecContext *avctx, AVFrame *frame, | ||||
|                                int *got_frame_ptr, GetBitContext *gb) | ||||
| { | ||||
|     AACContext *ac = avctx->priv_data; | ||||
|     AACDecContext *ac = avctx->priv_data; | ||||
|     const MPEG4AudioConfig *const m4ac = &ac->oc[1].m4ac; | ||||
|     ChannelElement *che; | ||||
|     int err, i; | ||||
| @ -3108,7 +3110,7 @@ static int aac_decode_frame_int(AVCodecContext *avctx, AVFrame *frame, | ||||
|                                 int *got_frame_ptr, GetBitContext *gb, | ||||
|                                 const AVPacket *avpkt) | ||||
| { | ||||
|     AACContext *ac = avctx->priv_data; | ||||
|     AACDecContext *ac = avctx->priv_data; | ||||
|     ChannelElement *che = NULL, *che_prev = NULL; | ||||
|     enum RawDataBlockType elem_type, che_prev_type = TYPE_END; | ||||
|     int err, elem_id; | ||||
| @ -3317,7 +3319,7 @@ fail: | ||||
| static int aac_decode_frame(AVCodecContext *avctx, AVFrame *frame, | ||||
|                             int *got_frame_ptr, AVPacket *avpkt) | ||||
| { | ||||
|     AACContext *ac = avctx->priv_data; | ||||
|     AACDecContext *ac = avctx->priv_data; | ||||
|     const uint8_t *buf = avpkt->data; | ||||
|     int buf_size = avpkt->size; | ||||
|     GetBitContext gb; | ||||
| @ -3379,7 +3381,7 @@ static int aac_decode_frame(AVCodecContext *avctx, AVFrame *frame, | ||||
| 
 | ||||
| static av_cold int aac_decode_close(AVCodecContext *avctx) | ||||
| { | ||||
|     AACContext *ac = avctx->priv_data; | ||||
|     AACDecContext *ac = avctx->priv_data; | ||||
|     int i, type; | ||||
| 
 | ||||
|     for (i = 0; i < MAX_ELEM_ID; i++) { | ||||
| @ -3402,7 +3404,7 @@ static av_cold int aac_decode_close(AVCodecContext *avctx) | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| static void aacdec_init(AACContext *c) | ||||
| static void aacdec_init(AACDecContext *c) | ||||
| { | ||||
|     c->imdct_and_windowing                      = imdct_and_windowing; | ||||
|     c->apply_ltp                                = apply_ltp; | ||||
| @ -3424,9 +3426,10 @@ static void aacdec_init(AACContext *c) | ||||
|  * AVOptions for Japanese DTV specific extensions (ADTS only) | ||||
|  */ | ||||
| #define AACDEC_FLAGS AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM | ||||
| #define OFF(field) offsetof(AACDecContext, field) | ||||
| static const AVOption options[] = { | ||||
|     {"dual_mono_mode", "Select the channel to decode for dual mono", | ||||
|      offsetof(AACContext, force_dmono_mode), AV_OPT_TYPE_INT, {.i64=-1}, -1, 2, | ||||
|      OFF(force_dmono_mode), AV_OPT_TYPE_INT, {.i64=-1}, -1, 2, | ||||
|      AACDEC_FLAGS, .unit = "dual_mono_mode"}, | ||||
| 
 | ||||
|     {"auto", "autoselection",            0, AV_OPT_TYPE_CONST, {.i64=-1}, INT_MIN, INT_MAX, AACDEC_FLAGS, .unit = "dual_mono_mode"}, | ||||
| @ -3435,7 +3438,7 @@ static const AVOption options[] = { | ||||
|     {"both", "Select both channels",     0, AV_OPT_TYPE_CONST, {.i64= 0}, INT_MIN, INT_MAX, AACDEC_FLAGS, .unit = "dual_mono_mode"}, | ||||
| 
 | ||||
|     { "channel_order", "Order in which the channels are to be exported", | ||||
|         offsetof(AACContext, output_channel_order), AV_OPT_TYPE_INT, | ||||
|         OFF(output_channel_order), AV_OPT_TYPE_INT, | ||||
|         { .i64 = CHANNEL_ORDER_DEFAULT }, 0, 1, AACDEC_FLAGS, .unit = "channel_order" }, | ||||
|       { "default", "normal libavcodec channel order", 0, AV_OPT_TYPE_CONST, | ||||
|         { .i64 = CHANNEL_ORDER_DEFAULT }, .flags = AACDEC_FLAGS, .unit = "channel_order" }, | ||||
|  | ||||
| @ -69,14 +69,14 @@ enum { | ||||
| /** Initialize SBR. */ | ||||
| void AAC_RENAME(ff_aac_sbr_init)(void); | ||||
| /** Initialize one SBR context. */ | ||||
| int AAC_RENAME(ff_aac_sbr_ctx_init)(AACContext *ac, SpectralBandReplication *sbr, int id_aac); | ||||
| int AAC_RENAME(ff_aac_sbr_ctx_init)(struct AACDecContext *ac, SpectralBandReplication *sbr, int id_aac); | ||||
| /** Close one SBR context. */ | ||||
| void AAC_RENAME(ff_aac_sbr_ctx_close)(SpectralBandReplication *sbr); | ||||
| /** Decode one SBR element. */ | ||||
| int AAC_RENAME(ff_decode_sbr_extension)(AACContext *ac, SpectralBandReplication *sbr, | ||||
| int AAC_RENAME(ff_decode_sbr_extension)(struct AACDecContext *ac, SpectralBandReplication *sbr, | ||||
|                             GetBitContext *gb, int crc, int cnt, int id_aac); | ||||
| /** Apply one SBR element to one AAC element. */ | ||||
| void AAC_RENAME(ff_sbr_apply)(AACContext *ac, SpectralBandReplication *sbr, int id_aac, | ||||
| void AAC_RENAME(ff_sbr_apply)(struct AACDecContext *ac, SpectralBandReplication *sbr, int id_aac, | ||||
|                   INTFLOAT* L, INTFLOAT *R); | ||||
| 
 | ||||
| void ff_aacsbr_func_ptr_init_mips(AACSBRContext *c); | ||||
|  | ||||
| @ -64,7 +64,7 @@ static void sbr_turnoff(SpectralBandReplication *sbr) { | ||||
|     memset(&sbr->spectrum_params, -1, sizeof(SpectrumParameters)); | ||||
| } | ||||
| 
 | ||||
| av_cold int AAC_RENAME(ff_aac_sbr_ctx_init)(AACContext *ac, SpectralBandReplication *sbr, int id_aac) | ||||
| av_cold int AAC_RENAME(ff_aac_sbr_ctx_init)(AACDecContext *ac, SpectralBandReplication *sbr, int id_aac) | ||||
| { | ||||
|     int ret; | ||||
|     float scale; | ||||
| @ -254,7 +254,7 @@ static int check_n_master(AVCodecContext *avctx, int n_master, int bs_xover_band | ||||
| } | ||||
| 
 | ||||
| /// Master Frequency Band Table (14496-3 sp04 p194)
 | ||||
| static int sbr_make_f_master(AACContext *ac, SpectralBandReplication *sbr, | ||||
| static int sbr_make_f_master(AACDecContext *ac, SpectralBandReplication *sbr, | ||||
|                              SpectrumParameters *spectrum) | ||||
| { | ||||
|     unsigned int temp, max_qmf_subbands = 0; | ||||
| @ -474,7 +474,7 @@ static int sbr_make_f_master(AACContext *ac, SpectralBandReplication *sbr, | ||||
| } | ||||
| 
 | ||||
| /// High Frequency Generation - Patch Construction (14496-3 sp04 p216 fig. 4.46)
 | ||||
| static int sbr_hf_calc_npatches(AACContext *ac, SpectralBandReplication *sbr) | ||||
| static int sbr_hf_calc_npatches(AACDecContext *ac, SpectralBandReplication *sbr) | ||||
| { | ||||
|     int i, k, last_k = -1, last_msb = -1, sb = 0; | ||||
|     int msb = sbr->k[0]; | ||||
| @ -532,7 +532,7 @@ static int sbr_hf_calc_npatches(AACContext *ac, SpectralBandReplication *sbr) | ||||
| } | ||||
| 
 | ||||
| /// Derived Frequency Band Tables (14496-3 sp04 p197)
 | ||||
| static int sbr_make_f_derived(AACContext *ac, SpectralBandReplication *sbr) | ||||
| static int sbr_make_f_derived(AACDecContext *ac, SpectralBandReplication *sbr) | ||||
| { | ||||
|     int k, temp; | ||||
| #if USE_FIXED | ||||
| @ -617,7 +617,7 @@ static const int8_t ceil_log2[] = { | ||||
|     0, 1, 2, 2, 3, 3, | ||||
| }; | ||||
| 
 | ||||
| static int read_sbr_grid(AACContext *ac, SpectralBandReplication *sbr, | ||||
| static int read_sbr_grid(AACDecContext *ac, SpectralBandReplication *sbr, | ||||
|                          GetBitContext *gb, SBRData *ch_data) | ||||
| { | ||||
|     int i; | ||||
| @ -800,7 +800,7 @@ static void read_sbr_invf(SpectralBandReplication *sbr, GetBitContext *gb, | ||||
|         ch_data->bs_invf_mode[0][i] = get_bits(gb, 2); | ||||
| } | ||||
| 
 | ||||
| static int read_sbr_envelope(AACContext *ac, SpectralBandReplication *sbr, GetBitContext *gb, | ||||
| static int read_sbr_envelope(AACDecContext *ac, SpectralBandReplication *sbr, GetBitContext *gb, | ||||
|                               SBRData *ch_data, int ch) | ||||
| { | ||||
|     int bits; | ||||
| @ -880,7 +880,7 @@ static int read_sbr_envelope(AACContext *ac, SpectralBandReplication *sbr, GetBi | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| static int read_sbr_noise(AACContext *ac, SpectralBandReplication *sbr, GetBitContext *gb, | ||||
| static int read_sbr_noise(AACDecContext *ac, SpectralBandReplication *sbr, GetBitContext *gb, | ||||
|                            SBRData *ch_data, int ch) | ||||
| { | ||||
|     int i, j; | ||||
| @ -922,7 +922,7 @@ static int read_sbr_noise(AACContext *ac, SpectralBandReplication *sbr, GetBitCo | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| static void read_sbr_extension(AACContext *ac, SpectralBandReplication *sbr, | ||||
| static void read_sbr_extension(AACDecContext *ac, SpectralBandReplication *sbr, | ||||
|                                GetBitContext *gb, | ||||
|                                int bs_extension_id, int *num_bits_left) | ||||
| { | ||||
| @ -949,7 +949,7 @@ static void read_sbr_extension(AACContext *ac, SpectralBandReplication *sbr, | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| static int read_sbr_single_channel_element(AACContext *ac, | ||||
| static int read_sbr_single_channel_element(AACDecContext *ac, | ||||
|                                             SpectralBandReplication *sbr, | ||||
|                                             GetBitContext *gb) | ||||
| { | ||||
| @ -973,7 +973,7 @@ static int read_sbr_single_channel_element(AACContext *ac, | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| static int read_sbr_channel_pair_element(AACContext *ac, | ||||
| static int read_sbr_channel_pair_element(AACDecContext *ac, | ||||
|                                           SpectralBandReplication *sbr, | ||||
|                                           GetBitContext *gb) | ||||
| { | ||||
| @ -1025,7 +1025,7 @@ static int read_sbr_channel_pair_element(AACContext *ac, | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| static unsigned int read_sbr_data(AACContext *ac, SpectralBandReplication *sbr, | ||||
| static unsigned int read_sbr_data(AACDecContext *ac, SpectralBandReplication *sbr, | ||||
|                                   GetBitContext *gb, int id_aac) | ||||
| { | ||||
|     unsigned int cnt = get_bits_count(gb); | ||||
| @ -1069,7 +1069,7 @@ static unsigned int read_sbr_data(AACContext *ac, SpectralBandReplication *sbr, | ||||
|     return get_bits_count(gb) - cnt; | ||||
| } | ||||
| 
 | ||||
| static void sbr_reset(AACContext *ac, SpectralBandReplication *sbr) | ||||
| static void sbr_reset(AACDecContext *ac, SpectralBandReplication *sbr) | ||||
| { | ||||
|     int err; | ||||
|     err = sbr_make_f_master(ac, sbr, &sbr->spectrum_params); | ||||
| @ -1090,7 +1090,7 @@ static void sbr_reset(AACContext *ac, SpectralBandReplication *sbr) | ||||
|  * | ||||
|  * @return  Returns number of bytes consumed from the TYPE_FIL element. | ||||
|  */ | ||||
| int AAC_RENAME(ff_decode_sbr_extension)(AACContext *ac, SpectralBandReplication *sbr, | ||||
| int AAC_RENAME(ff_decode_sbr_extension)(AACDecContext *ac, SpectralBandReplication *sbr, | ||||
|                             GetBitContext *gb_host, int crc, int cnt, int id_aac) | ||||
| { | ||||
|     unsigned int num_sbr_bits = 0, num_align_bits; | ||||
| @ -1243,7 +1243,7 @@ static void sbr_qmf_synthesis(AVTXContext *mdct, av_tx_fn mdct_fn, | ||||
| #endif | ||||
| 
 | ||||
| /// Generate the subband filtered lowband
 | ||||
| static int sbr_lf_gen(AACContext *ac, SpectralBandReplication *sbr, | ||||
| static int sbr_lf_gen(AACDecContext *ac, SpectralBandReplication *sbr, | ||||
|                       INTFLOAT X_low[32][40][2], const INTFLOAT W[2][32][32][2], | ||||
|                       int buf_idx) | ||||
| { | ||||
| @ -1268,7 +1268,7 @@ static int sbr_lf_gen(AACContext *ac, SpectralBandReplication *sbr, | ||||
| } | ||||
| 
 | ||||
| /// High Frequency Generator (14496-3 sp04 p215)
 | ||||
| static int sbr_hf_gen(AACContext *ac, SpectralBandReplication *sbr, | ||||
| static int sbr_hf_gen(AACDecContext *ac, SpectralBandReplication *sbr, | ||||
|                       INTFLOAT X_high[64][40][2], const INTFLOAT X_low[32][40][2], | ||||
|                       const INTFLOAT (*alpha0)[2], const INTFLOAT (*alpha1)[2], | ||||
|                       const INTFLOAT bw_array[5], const uint8_t *t_env, | ||||
| @ -1342,7 +1342,7 @@ static int sbr_x_gen(SpectralBandReplication *sbr, INTFLOAT X[2][38][64], | ||||
| /** High Frequency Adjustment (14496-3 sp04 p217) and Mapping
 | ||||
|  * (14496-3 sp04 p217) | ||||
|  */ | ||||
| static int sbr_mapping(AACContext *ac, SpectralBandReplication *sbr, | ||||
| static int sbr_mapping(AACDecContext *ac, SpectralBandReplication *sbr, | ||||
|                         SBRData *ch_data, int e_a[2]) | ||||
| { | ||||
|     int e, i, m; | ||||
| @ -1456,7 +1456,7 @@ static void sbr_env_estimate(AAC_FLOAT (*e_curr)[48], INTFLOAT X_high[64][40][2] | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void AAC_RENAME(ff_sbr_apply)(AACContext *ac, SpectralBandReplication *sbr, int id_aac, | ||||
| void AAC_RENAME(ff_sbr_apply)(AACDecContext *ac, SpectralBandReplication *sbr, int id_aac, | ||||
|                   INTFLOAT* L, INTFLOAT* R) | ||||
| { | ||||
|     int downsampled = ac->oc[1].m4ac.ext_sample_rate < sbr->sample_rate; | ||||
|  | ||||
| @ -112,7 +112,7 @@ static av_always_inline int lcg_random(unsigned previous_val) | ||||
|     return v.s; | ||||
| } | ||||
| 
 | ||||
| static void imdct_and_windowing_mips(AACContext *ac, SingleChannelElement *sce) | ||||
| static void imdct_and_windowing_mips(AACDecContext *ac, SingleChannelElement *sce) | ||||
| { | ||||
|     IndividualChannelStream *ics = &sce->ics; | ||||
|     float *in    = sce->coeffs; | ||||
| @ -224,7 +224,7 @@ static void imdct_and_windowing_mips(AACContext *ac, SingleChannelElement *sce) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| static void apply_ltp_mips(AACContext *ac, SingleChannelElement *sce) | ||||
| static void apply_ltp_mips(AACDecContext *ac, SingleChannelElement *sce) | ||||
| { | ||||
|     const LongTermPrediction *ltp = &sce->ics.ltp; | ||||
|     const uint16_t *offsets = sce->ics.swb_offset; | ||||
| @ -334,7 +334,7 @@ static av_always_inline void fmul_and_reverse(float *dst, const float *src0, con | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| static void update_ltp_mips(AACContext *ac, SingleChannelElement *sce) | ||||
| static void update_ltp_mips(AACDecContext *ac, SingleChannelElement *sce) | ||||
| { | ||||
|     IndividualChannelStream *ics = &sce->ics; | ||||
|     float *saved     = sce->saved; | ||||
| @ -431,7 +431,7 @@ static void update_ltp_mips(AACContext *ac, SingleChannelElement *sce) | ||||
| #endif /* HAVE_MIPSFPU */ | ||||
| #endif /* HAVE_INLINE_ASM */ | ||||
| 
 | ||||
| void ff_aacdec_init_mips(AACContext *c) | ||||
| void ff_aacdec_init_mips(AACDecContext *c) | ||||
| { | ||||
| #if HAVE_INLINE_ASM | ||||
| #if HAVE_MIPSFPU | ||||
|  | ||||
| @ -60,7 +60,7 @@ | ||||
| 
 | ||||
| #if HAVE_INLINE_ASM | ||||
| #if HAVE_MIPSFPU | ||||
| static int sbr_lf_gen_mips(AACContext *ac, SpectralBandReplication *sbr, | ||||
| static int sbr_lf_gen_mips(AACDecContext *ac, SpectralBandReplication *sbr, | ||||
|                       float X_low[32][40][2], const float W[2][32][32][2], | ||||
|                       int buf_idx) | ||||
| { | ||||
|  | ||||
| @ -37,7 +37,7 @@ | ||||
| #include "aacps.h" | ||||
| #include "sbrdsp.h" | ||||
| 
 | ||||
| typedef struct AACContext AACContext; | ||||
| struct AACDecContext; | ||||
| 
 | ||||
| /**
 | ||||
|  * Spectral Band Replication header - spectrum parameters that invoke a reset if they differ from the previous header. | ||||
| @ -121,7 +121,7 @@ typedef struct SpectralBandReplication SpectralBandReplication; | ||||
|  * aacsbr functions pointers | ||||
|  */ | ||||
| typedef struct AACSBRContext { | ||||
|     int (*sbr_lf_gen)(AACContext *ac, SpectralBandReplication *sbr, | ||||
|     int (*sbr_lf_gen)(struct AACDecContext *ac, SpectralBandReplication *sbr, | ||||
|                       INTFLOAT X_low[32][40][2], const INTFLOAT W[2][32][32][2], | ||||
|                       int buf_idx); | ||||
|     void (*sbr_hf_assemble)(INTFLOAT Y1[38][64][2], | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user