112 lines
4.4 KiB
C
112 lines
4.4 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.
|
|
*/
|
|
|
|
/*
|
|
* 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_ */
|