blob: 298ea223ac513cf2cca9df481174fe6a365cc3a8 [file] [log] [blame]
/*
* 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_ */