/*
 *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

/*
 * This file contains some helper macros that can be used when loading the
 * NetEQ codec database.
 */

#ifndef WEBRTC_NETEQ_HELP_MACROS_H
#define WEBRTC_NETEQ_HELP_MACROS_H

#ifndef NULL
#define NULL 0
#endif

/**********************************************************
 * Help macros for NetEQ initialization
 */

#define SET_CODEC_PAR(inst,decoder,pt,state,fs) \
                    inst.codec=decoder; \
                    inst.payloadType=pt; \
                    inst.codec_state=state; \
                    inst.codec_fs=fs;

#define SET_PCMU_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG711_DecodeU; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=NULL; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_PCMA_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG711_DecodeA; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=NULL; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_ILBC_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcIlbcfix_Decode; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcIlbcfix_NetEqPlc; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcIlbcfix_Decoderinit30Ms; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_ISAC_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcIsac_Decode; \
                    inst.funcDecodeRCU=(WebRtcNetEQ_FuncDecode)WebRtcIsac_DecodeRcu; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcIsac_DecoderInit; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=(WebRtcNetEQ_FuncUpdBWEst)WebRtcIsac_UpdateBwEstimate; \
                    inst.funcGetErrorCode=(WebRtcNetEQ_FuncGetErrorCode)WebRtcIsac_GetErrorCode;

#define SET_ISACfix_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcIsacfix_Decode; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcIsacfix_DecoderInit; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=(WebRtcNetEQ_FuncUpdBWEst)WebRtcIsacfix_UpdateBwEstimate; \
                    inst.funcGetErrorCode=(WebRtcNetEQ_FuncGetErrorCode)WebRtcIsacfix_GetErrorCode;

#define SET_ISACSWB_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcIsac_Decode; \
                    inst.funcDecodeRCU=(WebRtcNetEQ_FuncDecode)WebRtcIsac_DecodeRcu; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcIsac_DecoderInit; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=(WebRtcNetEQ_FuncUpdBWEst)WebRtcIsac_UpdateBwEstimate; \
                    inst.funcGetErrorCode=(WebRtcNetEQ_FuncGetErrorCode)WebRtcIsac_GetErrorCode;

#define SET_G729_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG729_Decode; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcG729_DecodePlc; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcG729_DecoderInit; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_G729_1_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG7291_Decode; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcG7291_DecoderInit; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=(WebRtcNetEQ_FuncUpdBWEst)WebRtcG7291_DecodeBwe; \
                    inst.funcGetErrorCode=NULL;

#define SET_PCM16B_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcPcm16b_DecodeW16; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=NULL; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_PCM16B_WB_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcPcm16b_DecodeW16; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=NULL; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_PCM16B_SWB32_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcPcm16b_DecodeW16; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=NULL; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;


#define SET_PCM16B_SWB48_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcPcm16b_DecodeW16; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=NULL; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_G722_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG722_Decode; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcG722_DecoderInit;\
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_G722_1_16_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG7221_Decode16; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcG7221_DecodePlc16; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcG7221_DecoderInit16; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_G722_1_24_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG7221_Decode24; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcG7221_DecodePlc24; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcG7221_DecoderInit24; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_G722_1_32_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG7221_Decode32; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcG7221_DecodePlc32; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcG7221_DecoderInit32; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_G722_1C_24_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG7221C_Decode24; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcG7221C_DecodePlc24; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcG7221C_DecoderInit24; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_G722_1C_32_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG7221C_Decode32; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcG7221C_DecodePlc32; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcG7221C_DecoderInit32; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_G722_1C_48_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG7221C_Decode48; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcG7221C_DecodePlc48; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcG7221C_DecoderInit48; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_AMR_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcAmr_Decode; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcAmr_DecodePlc; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcAmr_DecoderInit; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_AMRWB_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcAmrWb_Decode; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcAmrWb_DecodePlc; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcAmrWb_DecoderInit; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_GSMFR_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcGSMFR_Decode; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcGSMFR_DecodePlc; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcGSMFR_DecoderInit; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_G726_16_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG726_decode16; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcG726_decoderinit16; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_G726_24_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG726_decode24; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcG726_decoderinit24; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_G726_32_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG726_decode32; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcG726_decoderinit32; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_G726_40_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcG726_decode40; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcG726_decoderinit40; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_SPEEX_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcSpeex_Decode; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcSpeex_DecodePlc; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcSpeex_DecoderInit; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_CELT_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcCelt_Decode; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcCelt_DecodePlc; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcCelt_DecoderInit; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_CELTSLAVE_FUNCTIONS(inst) \
                    inst.funcDecode=(WebRtcNetEQ_FuncDecode)WebRtcCelt_DecodeSlave; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=(WebRtcNetEQ_FuncDecodePLC)WebRtcCelt_DecodePlc; \
                    inst.funcDecodeInit=(WebRtcNetEQ_FuncDecodeInit)WebRtcCelt_DecoderInit; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_RED_FUNCTIONS(inst) \
                    inst.funcDecode=NULL; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=NULL; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_AVT_FUNCTIONS(inst) \
                    inst.funcDecode=NULL; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=NULL; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#define SET_CNG_FUNCTIONS(inst) \
                    inst.funcDecode=NULL; \
                    inst.funcDecodeRCU=NULL; \
                    inst.funcDecodePLC=NULL; \
                    inst.funcDecodeInit=NULL; \
                    inst.funcAddLatePkt=NULL; \
                    inst.funcGetMDinfo=NULL; \
                    inst.funcGetPitch=NULL; \
                    inst.funcUpdBWEst=NULL; \
                    inst.funcGetErrorCode=NULL;

#endif /* WEBRTC_NETEQ_HELP_MACROS_H */

