diff options
Diffstat (limited to 'src/modules/audio_coding/codecs/isac/fix/source/entropy_coding.h')
-rw-r--r-- | src/modules/audio_coding/codecs/isac/fix/source/entropy_coding.h | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/src/modules/audio_coding/codecs/isac/fix/source/entropy_coding.h b/src/modules/audio_coding/codecs/isac/fix/source/entropy_coding.h new file mode 100644 index 0000000000..298ea223ac --- /dev/null +++ b/src/modules/audio_coding/codecs/isac/fix/source/entropy_coding.h @@ -0,0 +1,111 @@ +/* + * 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. + */ + +/* + * entropy_coding.h + * + * This header file contains all of the functions used to arithmetically + * encode the iSAC bistream + * + */ + +#ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ENTROPY_CODING_H_ +#define WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ENTROPY_CODING_H_ + +#include "structs.h" + +/* decode complex spectrum (return number of bytes in stream) */ +WebRtc_Word16 WebRtcIsacfix_DecodeSpec(Bitstr_dec *streamdata, + WebRtc_Word16 *frQ7, + WebRtc_Word16 *fiQ7, + WebRtc_Word16 AvgPitchGain_Q12); + +/* encode complex spectrum */ +int WebRtcIsacfix_EncodeSpec(const WebRtc_Word16 *fr, + const WebRtc_Word16 *fi, + Bitstr_enc *streamdata, + WebRtc_Word16 AvgPitchGain_Q12); + + +/* decode & dequantize LPC Coef */ +int WebRtcIsacfix_DecodeLpcCoef(Bitstr_dec *streamdata, + WebRtc_Word32 *LPCCoefQ17, + WebRtc_Word32 *gain_lo_hiQ17, + WebRtc_Word16 *outmodel); + +int WebRtcIsacfix_DecodeLpc(WebRtc_Word32 *gain_lo_hiQ17, + WebRtc_Word16 *LPCCoef_loQ15, + WebRtc_Word16 *LPCCoef_hiQ15, + Bitstr_dec *streamdata, + WebRtc_Word16 *outmodel); + +/* quantize & code LPC Coef */ +int WebRtcIsacfix_EncodeLpc(WebRtc_Word32 *gain_lo_hiQ17, + WebRtc_Word16 *LPCCoef_loQ15, + WebRtc_Word16 *LPCCoef_hiQ15, + WebRtc_Word16 *model, + WebRtc_Word32 *sizeQ11, + Bitstr_enc *streamdata, + ISAC_SaveEncData_t* encData, + transcode_obj *transcodeParam); + +int WebRtcIsacfix_EstCodeLpcGain(WebRtc_Word32 *gain_lo_hiQ17, + Bitstr_enc *streamdata, + ISAC_SaveEncData_t* encData); +/* decode & dequantize RC */ +int WebRtcIsacfix_DecodeRcCoef(Bitstr_dec *streamdata, + WebRtc_Word16 *RCQ15); + +/* quantize & code RC */ +int WebRtcIsacfix_EncodeRcCoef(WebRtc_Word16 *RCQ15, + Bitstr_enc *streamdata); + +/* decode & dequantize squared Gain */ +int WebRtcIsacfix_DecodeGain2(Bitstr_dec *streamdata, + WebRtc_Word32 *Gain2); + +/* quantize & code squared Gain (input is squared gain) */ +int WebRtcIsacfix_EncodeGain2(WebRtc_Word32 *gain2, + Bitstr_enc *streamdata); + +int WebRtcIsacfix_EncodePitchGain(WebRtc_Word16 *PitchGains_Q12, + Bitstr_enc *streamdata, + ISAC_SaveEncData_t* encData); + +int WebRtcIsacfix_EncodePitchLag(WebRtc_Word16 *PitchLagQ7, + WebRtc_Word16 *PitchGain_Q12, + Bitstr_enc *streamdata, + ISAC_SaveEncData_t* encData); + +int WebRtcIsacfix_DecodePitchGain(Bitstr_dec *streamdata, + WebRtc_Word16 *PitchGain_Q12); + +int WebRtcIsacfix_DecodePitchLag(Bitstr_dec *streamdata, + WebRtc_Word16 *PitchGain_Q12, + WebRtc_Word16 *PitchLagQ7); + +int WebRtcIsacfix_DecodeFrameLen(Bitstr_dec *streamdata, + WebRtc_Word16 *framelength); + + +int WebRtcIsacfix_EncodeFrameLen(WebRtc_Word16 framelength, + Bitstr_enc *streamdata); + +int WebRtcIsacfix_DecodeSendBandwidth(Bitstr_dec *streamdata, + WebRtc_Word16 *BWno); + + +int WebRtcIsacfix_EncodeReceiveBandwidth(WebRtc_Word16 *BWno, + Bitstr_enc *streamdata); + +void WebRtcIsacfix_TranscodeLpcCoef(WebRtc_Word32 *tmpcoeffs_gQ6, + WebRtc_Word16 *index_gQQ); + +#endif /* WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ENTROPY_CODING_H_ */ |