Implements the VAD functionality corresponding to VAD option 2.
IppStatus ippsVAD2_GSMAMR_16s(const Ipp16s* pSrcSpch, IppGSMAMRVad2State* pValResultVad2State, Ipp16s* pResultVadFlag, Ipp16s ltpFlag);
pSrcSpch |
Pointer to the input speech signal, of length 160, in Q0. |
pValResultVad2State |
On input, pointer to the VAD Option 2 history variables. On output, points to the updated VAD Option 2 history variables. The structure IppGSMAMRVad2State is defined below. |
pResultVadFlag |
Pointer to the Boolean flag VAD_flag. If set to “1”, it indicates the presence of signals that should be transmitted. If set to “0”, no need to transmit signals from this frame. |
ltpFlag |
LTP_flag value in GSM 06.94 equation (4.24), which is generated by the comparison of the long-term prediction to a constant threshold LTP_THLD. |
The function ippsVAD2_GSMAMR is declared in ippsc.h file. This function implements the VAD functionality corresponding to VAD option 2 of ETSI GSM 06.94. It is used to indicate whether each 20ms frame contains signals that must be transmitted. For example, speech, music, or information tones. The structure IppGSMAMRVad2State contains the history variables of VAD Option 2:
typedef struct{ | Description |
---|---|
Ipp32s pEngyEstimate[16]; | Channel energy estimates vector Ech of current half-frame, which is calculated during the previous half-frame according to the equation ETSI GSM 06.94 (4.4). |
Ipp32s pNoiseEstimate[16]; | Channel noise estimate vector En of current half-frame, which is calculated during the previous half-frame according to the equation ETSI GSM 06.94 (4.26). |
Ipp16s pLongTermEngyDb[16]; | Channel average long-term spectral estimate vector ĒdB, which is calculated during the previous half-frame according to the equation ETSI GSM 06.94 (4.20). |
Ipp16s preEmphasisFactor; | Pre-emphasis factor ζp, which is used to pre-emphasize the input speech signal according to the equation ETSI GSM 06.94 (4.1). |
Ipp16s updateCount; | update_cnt value used in background noise update decision logic. |
Ipp16s lastUpdateCount; | last_update_cnt value used in background noise update decision logic. |
Ipp16s hysterCount; | hyster_cnt value used in background noise update decision logic. |
Ipp16s prevNormShift; | Shifted bits of previous half-frame input speech when normalized to obtain high precision and avoid overflow when doing FFT transformation. |
Ipp16s shiftState; | Shift state flag which indicates whether previous half-frame has been shifted or not. |
Ipp16s forcedUpdateFlag; | fupdate_flag value which is the result of forced update logic of background noise update decision. |
Ipp16s ltpSnr; | Long-term peak signal-noise ratio SNRp of previous half-frame, which is used to calibrate the responsiveness of VAD decision. |
Ipp16s variabFactor; | Variability factor ψ of previous half-frame, which indicates the variability of the background noise estimate and is updated according to the equation ETSI GSM 06.94 (4.13). |
Ipp16s negSnrBias; | Negative SNR sensitivity bias factor μ of previous half-frame. |
Ipp16s burstCount; | Burst counter b(m) used in the 10 ms half-frames's VAD Decision. |
Ipp16s hangOverCount; | Hangover counter h(m) used in the 10ms half-frame's VAD Decision. |
Ipp32s frameCount; | Half-frame counter. |
}IppGmrVad2State; |
Please refer to ETSI GSM 06.94 VAD Option 2 specification for details.
ippStsNoErr |
Indicates no error. |
ippStsNullPtrErr |
Indicates an error when one of the specified pointers is NULL. |
Copyright © 2000 - 2011, Intel Corporation. All rights reserved.