/*
 *  Copyright (c) 2011 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.
 */

/*****************************************************************************************
 *
 * Compilation flags in NetEQ:
 *
 *****************************************************************************************
 *
 ***** Platform flags ******
 *
 * SCRATCH                        Run NetEQ with "Scratch memory" to save some stack memory.
 *                                Definition can be used on all platforms
 *
 ***** Summary flags ******
 *
 * NETEQ_ALL_SPECIAL_CODECS       Add support for special codecs (CN/RED/DTMF)
 *
 * NETEQ_ALL_NB_CODECS            Add support for all NB codecs (except CN/RED/DTMF)
 *
 * NETEQ_ALL_WB_CODECS            Add support for all WB codecs (except CN/RED/DTMF)
 *
 * NETEQ_VOICEENGINE_CODECS       Support for all NB, WB and SWB32 codecs and CN, RED and DTMF
 *
 * NETEQ_ALL_CODECS               Support for all NB, WB, SWB 32kHz and SWB 48kHz as well as
 *                                CN, RED and DTMF
 *
 ***** Sampling frequency ****** 
 * (Note: usually not needed when Summary flags are used)
 *
 * NETEQ_WIDEBAND                 Wideband enabled
 *
 * NETEQ_32KHZ_WIDEBAND           Super wideband @ 32kHz enabled
 *
 * NETEQ_48KHZ_WIDEBAND           Super wideband @ 48kHz enabled
 *
 ***** Special Codec ****** 
 * (Note: not needed if NETEQ_ALL_CODECS is used)
 *
 * NETEQ_RED_CODEC                With this flag you enable NetEQ to understand redundancy in
 *                                the RTP. NetEQ will use the redundancy if it's the same
 *                                codec
 *
 * NETEQ_CNG_CODEC                Enable DTX with the CN payload
 *
 * NETEQ_ATEVENT_DECODE           Enable AVT event and play out the corresponding DTMF tone
 *
 ***** Speech Codecs *****
 * (Note: Not needed if Summary flags are used)
 *
 * NETEQ_G711_CODEC               Enable G.711 u- and A-law
 *
 * NETEQ_PCM16B_CODEC             Enable uncompressed 16-bit
 *
 * NETEQ_ILBC_CODEC               Enable iLBC
 *
 * NETEQ_ISAC_CODEC               Enable iSAC
 *
 * NETEQ_ISAC_SWB_CODEC           Enable iSAC-SWB
 *
 * NETEQ_G722_CODEC               Enable G.722
 *
 * NETEQ_G729_CODEC               Enable G.729
 *
 * NETEQ_G729_1_CODEC             Enable G.729.1
 *
 * NETEQ_G726_CODEC               Enable G.726
 *
 * NETEQ_G722_1_CODEC             Enable G722.1
 *
 * NETEQ_G722_1C_CODEC            Enable G722.1 Annex C
 *
 * NETEQ_SPEEX_CODEC              Enable Speex (at 8 and 16 kHz sample rate)
 *
 * NETEQ_GSMFR_CODEC              Enable GSM-FR
 *
 * NETEQ_AMR_CODEC                Enable AMR (narrowband)
 *
 * NETEQ_AMRWB_CODEC              Enable AMR-WB
 *
 * NETEQ_CNG_CODEC                Enable DTX with the CNG payload
 *
 * NETEQ_ATEVENT_DECODE           Enable AVT event and play out the corresponding DTMF tone
 *
 ***** Test flags ******
 *
 * WEBRTC_NETEQ_40BITACC_TEST     Run NetEQ with simulated 40-bit accumulator to run
 *                                bit-exact to a DSP implementation where the main (splib
 *                                and NetEQ) functions have been 40-bit optimized
 *
 *****************************************************************************************
 */

#if !defined NETEQ_DEFINES_H
#define NETEQ_DEFINES_H

/* Data block structure for MCU to DSP communication:
 *
 *
 *  First 3 16-bit words are pre-header that contains instructions and timestamp update
 *  Fourth 16-bit word is length of data block 1
 *  Rest is payload data
 *
 *  0               48          64          80
 *  -------------...----------------------------------------------------------------------
 *  |  PreHeader ... | Length 1 |  Payload data 1 ...... | Lenght 2| Data block 2....    | ...
 *  -------------...----------------------------------------------------------------------
 *
 *
 *  Preheader:
 *  4 MSB can be either of:
 */

#define DSP_INSTR_NORMAL                         0x1000
/* Payload data will contain the encoded frames */

#define DSP_INSTR_MERGE                          0x2000
/* Payload data block 1 will contain the encoded frame */
/* Info block will contain the number of missing samples */

#define DSP_INSTR_EXPAND                         0x3000
/* Payload data will be empty */

#define DSP_INSTR_ACCELERATE                     0x4000
/* Payload data will contain the encoded frame */

#define DSP_INSTR_DO_RFC3389CNG                  0x5000
/* Payload data will contain the SID frame if there is one*/

#define DSP_INSTR_DTMF_GENERATE                  0x6000
/* Payload data will be one WebRtc_Word16 with the current DTMF value and one
 * WebRtc_Word16 with the current volume value
 */
#define DSP_INSTR_NORMAL_ONE_DESC                0x7000
/* No encoded frames */

#define DSP_INSTR_DO_CODEC_INTERNAL_CNG          0x8000
/* Codec has a built-in VAD/DTX scheme (use the above for "no transmission") */

#define DSP_INSTR_PREEMPTIVE_EXPAND              0x9000
/* Payload data will contain the encoded frames, if any */

#define DSP_INSTR_DO_ALTERNATIVE_PLC             0xB000
/* NetEQ switched off and packet missing... */

#define DSP_INSTR_DO_ALTERNATIVE_PLC_INC_TS      0xC000
/* NetEQ switched off and packet missing... */

#define DSP_INSTR_DO_AUDIO_REPETITION            0xD000
/* NetEQ switched off and packet missing... */

#define DSP_INSTR_DO_AUDIO_REPETITION_INC_TS     0xE000
/* NetEQ switched off and packet missing... */

#define DSP_INSTR_FADE_TO_BGN                    0xF000
/* Exception handling: fade out to BGN (expand) */

/*
 * Next 4 bits signal additional data that needs to be transmitted
 */

#define DSP_CODEC_NO_CHANGE                      0x0100
#define DSP_CODEC_NEW_CODEC                      0x0200
#define DSP_CODEC_ADD_LATE_PKT                   0x0300
#define DSP_CODEC_RESET                          0x0400
#define DSP_DTMF_PAYLOAD                         0x0010

/*
 * The most significant bit of the payload-length
 * is used to flag whether the associated payload
 * is redundant payload. This currently useful only for
 * iSAC, where redundant payloads have to be treated 
 * differently. Every time the length is read it must be
 * masked by DSP_CODEC_MASK_RED_FLAG to ignore the flag.
 * Use DSP_CODEC_RED_FLAG to set or retrieve the flag.
 */
#define DSP_CODEC_MASK_RED_FLAG                  0x7FFF
#define DSP_CODEC_RED_FLAG                       0x8000

/*
 * The first block of payload data consist of decode function pointers,
 * and then the speech blocks.
 *
 */


/*
 * The playout modes that NetEq produced (i.e. gives more info about if the 
 * Accelerate was successful or not)
 */

#define MODE_NORMAL                    0x0000
#define MODE_EXPAND                    0x0001
#define MODE_MERGE                     0x0002
#define MODE_SUCCESS_ACCELERATE        0x0003
#define MODE_UNSUCCESS_ACCELERATE      0x0004
#define MODE_RFC3389CNG                0x0005
#define MODE_LOWEN_ACCELERATE          0x0006
#define MODE_DTMF                      0x0007
#define MODE_ONE_DESCRIPTOR            0x0008
#define MODE_CODEC_INTERNAL_CNG        0x0009
#define MODE_SUCCESS_PREEMPTIVE        0x000A
#define MODE_UNSUCCESS_PREEMPTIVE      0x000B
#define MODE_LOWEN_PREEMPTIVE          0x000C
#define MODE_FADE_TO_BGN               0x000D

#define MODE_ERROR                     0x0010

#define MODE_AWAITING_CODEC_PTR        0x0100

#define MODE_BGN_ONLY                  0x0200

#define MODE_MASTER_DTMF_SIGNAL        0x0400

#define MODE_USING_STEREO              0x0800



/***********************/
/* Group codec defines */
/***********************/

#if (defined(NETEQ_ALL_SPECIAL_CODECS))
    #define NETEQ_CNG_CODEC
    #define NETEQ_ATEVENT_DECODE
    #define NETEQ_RED_CODEC
    #define NETEQ_VAD
    #define NETEQ_ARBITRARY_CODEC
#endif

#if (defined(NETEQ_ALL_NB_CODECS))        /* Except RED, DTMF and CNG */
    #define NETEQ_PCM16B_CODEC
    #define NETEQ_G711_CODEC
    #define NETEQ_ILBC_CODEC
    #define NETEQ_G729_CODEC
    #define NETEQ_G726_CODEC
    #define NETEQ_GSMFR_CODEC
    #define NETEQ_AMR_CODEC
#endif

#if (defined(NETEQ_ALL_WB_CODECS))        /* Except RED, DTMF and CNG */
    #define NETEQ_ISAC_CODEC
    #define NETEQ_G722_CODEC
    #define NETEQ_G722_1_CODEC
    #define NETEQ_G729_1_CODEC
    #define NETEQ_SPEEX_CODEC
    #define NETEQ_AMRWB_CODEC
    #define NETEQ_WIDEBAND
#endif

#if (defined(NETEQ_ALL_WB32_CODECS))        /* AAC, RED, DTMF and CNG */
    #define NETEQ_ISAC_SWB_CODEC
    #define NETEQ_32KHZ_WIDEBAND
    #define NETEQ_G722_1C_CODEC
#endif

#if (defined(NETEQ_VOICEENGINE_CODECS))
    /* Special codecs */
    #define NETEQ_CNG_CODEC
    #define NETEQ_ATEVENT_DECODE
    #define NETEQ_RED_CODEC
    #define NETEQ_VAD
    #define NETEQ_ARBITRARY_CODEC

    /* Narrowband codecs */
    #define NETEQ_PCM16B_CODEC
    #define NETEQ_G711_CODEC
    #define NETEQ_ILBC_CODEC
    #define NETEQ_AMR_CODEC
    #define NETEQ_G729_CODEC
    #define NETEQ_GSMFR_CODEC

    /* Wideband codecs */
    #define NETEQ_WIDEBAND
    #define NETEQ_ISAC_CODEC
    #define NETEQ_G722_CODEC
    #define NETEQ_G722_1_CODEC
    #define NETEQ_G729_1_CODEC
    #define NETEQ_AMRWB_CODEC
    #define NETEQ_SPEEX_CODEC

    /* Super wideband 32kHz codecs */
    #define NETEQ_ISAC_SWB_CODEC
    #define NETEQ_32KHZ_WIDEBAND
    #define NETEQ_G722_1C_CODEC

#endif 

#if (defined(NETEQ_ALL_CODECS))
    /* Special codecs */
    #define NETEQ_CNG_CODEC
    #define NETEQ_ATEVENT_DECODE
    #define NETEQ_RED_CODEC
    #define NETEQ_VAD
    #define NETEQ_ARBITRARY_CODEC

    /* Narrowband codecs */
    #define NETEQ_PCM16B_CODEC
    #define NETEQ_G711_CODEC
    #define NETEQ_ILBC_CODEC
    #define NETEQ_G729_CODEC
    #define NETEQ_G726_CODEC
    #define NETEQ_GSMFR_CODEC
    #define NETEQ_AMR_CODEC

    /* Wideband codecs */
    #define NETEQ_WIDEBAND
    #define NETEQ_ISAC_CODEC
    #define NETEQ_G722_CODEC
    #define NETEQ_G722_1_CODEC
    #define NETEQ_G729_1_CODEC
    #define NETEQ_SPEEX_CODEC
    #define NETEQ_AMRWB_CODEC

    /* Super wideband 32kHz codecs */
    #define NETEQ_ISAC_SWB_CODEC
    #define NETEQ_32KHZ_WIDEBAND
    #define NETEQ_G722_1C_CODEC

    /* Super wideband 48kHz codecs */
    #define NETEQ_48KHZ_WIDEBAND
#endif

/* Max output size from decoding one frame */
#if defined(NETEQ_48KHZ_WIDEBAND)
    #define NETEQ_MAX_FRAME_SIZE     2880    /* 60 ms super wideband */
    #define NETEQ_MAX_OUTPUT_SIZE    3600    /* 60+15 ms super wideband (60 ms decoded + 15 ms for merge overlap) */
#elif defined(NETEQ_32KHZ_WIDEBAND)
    #define NETEQ_MAX_FRAME_SIZE     1920    /* 60 ms super wideband */
    #define NETEQ_MAX_OUTPUT_SIZE    2400    /* 60+15 ms super wideband (60 ms decoded + 15 ms for merge overlap) */
#elif defined(NETEQ_WIDEBAND)
    #define NETEQ_MAX_FRAME_SIZE     960        /* 60 ms wideband */
    #define NETEQ_MAX_OUTPUT_SIZE    1200    /* 60+15 ms wideband (60 ms decoded + 10 ms for merge overlap) */
#else
    #define NETEQ_MAX_FRAME_SIZE     480        /* 60 ms narrowband */
    #define NETEQ_MAX_OUTPUT_SIZE    600        /* 60+15 ms narrowband (60 ms decoded + 10 ms for merge overlap) */
#endif


/* Enable stereo */
#define NETEQ_STEREO

#endif /* #if !defined NETEQ_DEFINES_H */

