142 lines
5.5 KiB
C
142 lines
5.5 KiB
C
/*
|
|
* 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.
|
|
*/
|
|
|
|
/*
|
|
* codec.h
|
|
*
|
|
* This header file contains the calls to the internal encoder
|
|
* and decoder functions.
|
|
*
|
|
*/
|
|
|
|
#ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_
|
|
#define WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_
|
|
|
|
#include "structs.h"
|
|
|
|
|
|
int WebRtcIsacfix_EstimateBandwidth(BwEstimatorstr *bwest_str,
|
|
Bitstr_dec *streamdata,
|
|
WebRtc_Word32 packet_size,
|
|
WebRtc_UWord16 rtp_seq_number,
|
|
WebRtc_UWord32 send_ts,
|
|
WebRtc_UWord32 arr_ts);
|
|
|
|
WebRtc_Word16 WebRtcIsacfix_DecodeImpl(WebRtc_Word16 *signal_out16,
|
|
ISACFIX_DecInst_t *ISACdec_obj,
|
|
WebRtc_Word16 *current_framesamples);
|
|
|
|
WebRtc_Word16 WebRtcIsacfix_DecodePlcImpl(WebRtc_Word16 *decoded,
|
|
ISACFIX_DecInst_t *ISACdec_obj,
|
|
WebRtc_Word16 *current_framesample );
|
|
|
|
int WebRtcIsacfix_EncodeImpl(WebRtc_Word16 *in,
|
|
ISACFIX_EncInst_t *ISACenc_obj,
|
|
BwEstimatorstr *bw_estimatordata,
|
|
WebRtc_Word16 CodingMode);
|
|
|
|
int WebRtcIsacfix_EncodeStoredData(ISACFIX_EncInst_t *ISACenc_obj,
|
|
int BWnumber,
|
|
float scale,
|
|
WebRtc_Word16 CodingMode);
|
|
|
|
/************************** initialization functions *************************/
|
|
|
|
void WebRtcIsacfix_InitMaskingEnc(MaskFiltstr_enc *maskdata);
|
|
void WebRtcIsacfix_InitMaskingDec(MaskFiltstr_dec *maskdata);
|
|
|
|
void WebRtcIsacfix_InitPreFilterbank(PreFiltBankstr *prefiltdata);
|
|
|
|
void WebRtcIsacfix_InitPostFilterbank(PostFiltBankstr *postfiltdata);
|
|
|
|
void WebRtcIsacfix_InitPitchFilter(PitchFiltstr *pitchfiltdata);
|
|
|
|
void WebRtcIsacfix_InitPitchAnalysis(PitchAnalysisStruct *State);
|
|
|
|
void WebRtcIsacfix_InitPlc( PLCstr *State );
|
|
|
|
|
|
/**************************** transform functions ****************************/
|
|
|
|
void WebRtcIsacfix_InitTransform();
|
|
|
|
|
|
void WebRtcIsacfix_Time2Spec(WebRtc_Word16 *inre1Q9,
|
|
WebRtc_Word16 *inre2Q9,
|
|
WebRtc_Word16 *outre,
|
|
WebRtc_Word16 *outim);
|
|
|
|
|
|
|
|
void WebRtcIsacfix_Spec2Time(WebRtc_Word16 *inreQ7,
|
|
WebRtc_Word16 *inimQ7,
|
|
WebRtc_Word32 *outre1Q16,
|
|
WebRtc_Word32 *outre2Q16);
|
|
|
|
|
|
|
|
|
|
/***************************** filterbank functions **************************/
|
|
|
|
|
|
|
|
void WebRtcIsacfix_SplitAndFilter1(WebRtc_Word16 *in,
|
|
WebRtc_Word16 *LP16,
|
|
WebRtc_Word16 *HP16,
|
|
PreFiltBankstr *prefiltdata);
|
|
|
|
void WebRtcIsacfix_FilterAndCombine1(WebRtc_Word16 *tempin_ch1,
|
|
WebRtc_Word16 *tempin_ch2,
|
|
WebRtc_Word16 *out16,
|
|
PostFiltBankstr *postfiltdata);
|
|
|
|
#ifdef NB_CALLS
|
|
|
|
void WebRtcIsacfix_SplitAndFilter2(WebRtc_Word16 *in,
|
|
WebRtc_Word16 *LP16,
|
|
WebRtc_Word16 *HP16,
|
|
PreFiltBankstr *prefiltdata);
|
|
|
|
void WebRtcIsacfix_FilterAndCombine2(WebRtc_Word16 *tempin_ch1,
|
|
WebRtc_Word16 *tempin_ch2,
|
|
WebRtc_Word16 *out16,
|
|
PostFiltBankstr *postfiltdata,
|
|
WebRtc_Word16 len);
|
|
|
|
#endif
|
|
|
|
/************************* normalized lattice filters ************************/
|
|
|
|
|
|
void WebRtcIsacfix_NormLatticeFilterMa(WebRtc_Word16 orderCoef,
|
|
WebRtc_Word32 *stateGQ15,
|
|
WebRtc_Word16 *lat_inQ0,
|
|
WebRtc_Word16 *filt_coefQ15,
|
|
WebRtc_Word32 *gain_lo_hiQ17,
|
|
WebRtc_Word16 lo_hi,
|
|
WebRtc_Word16 *lat_outQ9);
|
|
|
|
|
|
void WebRtcIsacfix_NormLatticeFilterAr(WebRtc_Word16 orderCoef,
|
|
WebRtc_Word16 *stateGQ0,
|
|
WebRtc_Word32 *lat_inQ25,
|
|
WebRtc_Word16 *filt_coefQ15,
|
|
WebRtc_Word32 *gain_lo_hiQ17,
|
|
WebRtc_Word16 lo_hi,
|
|
WebRtc_Word16 *lat_outQ0);
|
|
|
|
int WebRtcIsacfix_AutocorrFix(WebRtc_Word32 *r,
|
|
const WebRtc_Word16 *x,
|
|
WebRtc_Word16 N,
|
|
WebRtc_Word16 order,
|
|
WebRtc_Word16 *scale);
|
|
|
|
#endif /* WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_ */
|