/******************************************************************************
 *                                                                            *
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 *****************************************************************************
 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
*/
#ifndef IXHEAACD_DRC_DATA_STRUCT_H

#define IXHEAACD_DRC_DATA_STRUCT_H

#define MAX_DRC_BANDS 16

#define MAX_AUDIO_CHANNELS 8

#define SBR_QMF_SUB_SAMPLES 64
#define SBR_QMF_SUB_BANDS 64

typedef enum {
  UNKNOWN_PAYLOAD = 0,
  MPEG_DRC_EXT_DATA = 1,
  DVB_DRC_ANC_DATA = 2

} AACDEC_DRC_PAYLOAD_TYPE;

#define DVB_ANC_DATA_SYNC_BYTE (0xBC)
typedef struct {
  WORD32 prog_ref_level;
  WORD16 n_mdct_bands[MAX_DRC_BANDS];
  WORD16 drc_fac[MAX_DRC_BANDS];
  WORD16 drc_fac_dvb[MAX_DRC_BANDS];
  WORD8 drc_exp;
  UWORD8 short_block;
  UWORD8 drc_interp_scheme;
  UWORD8 n_drc_bands;
  UWORD8 new_prog_ref_level;
  UWORD8 new_drc_fac;
  UWORD8 prev_interp_scheme;
  WORD32 drc_factors_sbr[SBR_QMF_SUB_SAMPLES][SBR_QMF_SUB_BANDS];
} ixheaac_drc_data_struct;

typedef struct {
  UWORD8 b_channel_on[MAX_AUDIO_CHANNELS];
  UWORD8 prog_ref_level_present;
  UWORD8 prog_ref_level;
  UWORD8 drc_num_bands;
  UWORD8 drc_band_top[MAX_DRC_BANDS];
  WORD8 dyn_rng_dlbl[MAX_DRC_BANDS];
  WORD8 dyn_rng_dlbl_dvb[MAX_DRC_BANDS];
  WORD8 max_dyn_rng_dlbl;
  UWORD8 drc_interpolation_scheme;
  WORD8 drc_data_type;
} ixheaac_drc_bs_data_struct;

typedef struct {
  ixheaac_drc_bs_data_struct str_drc_bs_data[MAX_BS_ELEMENT];
  ixheaac_drc_data_struct str_drc_channel_data[MAX_BS_ELEMENT];
  WORD16 drc_ref_level;
  WORD16 drc_def_level;
  UWORD8 drc_channel_next_index[MAX_BS_ELEMENT];
  UWORD8 sbr_allowed;
  UWORD8 sbr_found;
  UWORD8 drc_element_found;
  UWORD8 max_audio_channels;
  UWORD8 length_history;
  UWORD8 num_drc_elements;
  WORD32 state;
  WORD32 target_ref_level;
  WORD32 prog_ref_level;
  WORD32 cut_factor;
  WORD32 boost_factor;
  FLAG drc_dig_norm;
  FLAG drc_on;
  FLAG dvb_anc_data_present;
  WORD32 dvb_anc_data_pos;
  WORD32 pres_mode;
  WORD32 heavy_mode;
} ia_drc_dec_struct;

#endif
