| /* |
| * 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 */ |
| |