|  | /* | 
|  | *  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. | 
|  | */ | 
|  |  | 
|  | /* | 
|  | * arith_routins.h | 
|  | * | 
|  | * Functions for arithmetic coding. | 
|  | * | 
|  | */ | 
|  |  | 
|  | #ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ARITH_ROUTINS_H_ | 
|  | #define WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ARITH_ROUTINS_H_ | 
|  |  | 
|  | #include "structs.h" | 
|  |  | 
|  |  | 
|  | /**************************************************************************** | 
|  | * WebRtcIsacfix_EncLogisticMulti2(...) | 
|  | * | 
|  | * Arithmetic coding of spectrum. | 
|  | * | 
|  | * Input: | 
|  | *      - streamData        : in-/output struct containing bitstream | 
|  | *      - dataQ7            : data vector in Q7 | 
|  | *      - envQ8             : side info vector defining the width of the pdf | 
|  | *                            in Q8 | 
|  | *      - lenData           : data vector length | 
|  | * | 
|  | * Return value             :  0 if ok, | 
|  | *                             <0 otherwise. | 
|  | */ | 
|  | int WebRtcIsacfix_EncLogisticMulti2( | 
|  | Bitstr_enc *streamData, | 
|  | int16_t *dataQ7, | 
|  | const uint16_t *env, | 
|  | const int16_t lenData); | 
|  |  | 
|  |  | 
|  | /**************************************************************************** | 
|  | * WebRtcIsacfix_EncTerminate(...) | 
|  | * | 
|  | * Final call to the arithmetic coder for an encoder call. This function | 
|  | * terminates and return byte stream. | 
|  | * | 
|  | * Input: | 
|  | *      - streamData        : in-/output struct containing bitstream | 
|  | * | 
|  | * Return value             : number of bytes in the stream | 
|  | */ | 
|  | int16_t WebRtcIsacfix_EncTerminate(Bitstr_enc *streamData); | 
|  |  | 
|  |  | 
|  | /**************************************************************************** | 
|  | * WebRtcIsacfix_DecLogisticMulti2(...) | 
|  | * | 
|  | * Arithmetic decoding of spectrum. | 
|  | * | 
|  | * Input: | 
|  | *      - streamData        : in-/output struct containing bitstream | 
|  | *      - envQ8             : side info vector defining the width of the pdf | 
|  | *                            in Q8 | 
|  | *      - lenData           : data vector length | 
|  | * | 
|  | * Input/Output: | 
|  | *      - dataQ7            : input: dither vector, output: data vector, in Q7 | 
|  | * | 
|  | * Return value             : number of bytes in the stream so far | 
|  | *                            <0 if error detected | 
|  | */ | 
|  | int16_t WebRtcIsacfix_DecLogisticMulti2( | 
|  | int16_t *data, | 
|  | Bitstr_dec *streamData, | 
|  | const int32_t *env, | 
|  | const int16_t lenData); | 
|  |  | 
|  |  | 
|  | /**************************************************************************** | 
|  | * WebRtcIsacfix_EncHistMulti(...) | 
|  | * | 
|  | * Encode the histogram interval | 
|  | * | 
|  | * Input: | 
|  | *      - streamData        : in-/output struct containing bitstream | 
|  | *      - data              : data vector | 
|  | *      - cdf               : array of cdf arrays | 
|  | *      - lenData           : data vector length | 
|  | * | 
|  | * Return value             : 0 if ok | 
|  | *                            <0 if error detected | 
|  | */ | 
|  | int WebRtcIsacfix_EncHistMulti( | 
|  | Bitstr_enc *streamData, | 
|  | const int16_t *data, | 
|  | const uint16_t **cdf, | 
|  | const int16_t lenData); | 
|  |  | 
|  |  | 
|  | /**************************************************************************** | 
|  | * WebRtcIsacfix_DecHistBisectMulti(...) | 
|  | * | 
|  | * Function to decode more symbols from the arithmetic bytestream, using | 
|  | * method of bisection. | 
|  | * C df tables should be of size 2^k-1 (which corresponds to an | 
|  | * alphabet size of 2^k-2) | 
|  | * | 
|  | * Input: | 
|  | *      - streamData        : in-/output struct containing bitstream | 
|  | *      - cdf               : array of cdf arrays | 
|  | *      - cdfSize           : array of cdf table sizes+1 (power of two: 2^k) | 
|  | *      - lenData           : data vector length | 
|  | * | 
|  | * Output: | 
|  | *      - data              : data vector | 
|  | * | 
|  | * Return value             : number of bytes in the stream | 
|  | *                            <0 if error detected | 
|  | */ | 
|  | int16_t WebRtcIsacfix_DecHistBisectMulti( | 
|  | int16_t *data, | 
|  | Bitstr_dec *streamData, | 
|  | const uint16_t **cdf, | 
|  | const uint16_t *cdfSize, | 
|  | const int16_t lenData); | 
|  |  | 
|  |  | 
|  | /**************************************************************************** | 
|  | * WebRtcIsacfix_DecHistOneStepMulti(...) | 
|  | * | 
|  | * Function to decode more symbols from the arithmetic bytestream, taking | 
|  | * single step up or down at a time. | 
|  | * cdf tables can be of arbitrary size, but large tables may take a lot of | 
|  | * iterations. | 
|  | * | 
|  | * Input: | 
|  | *      - streamData        : in-/output struct containing bitstream | 
|  | *      - cdf               : array of cdf arrays | 
|  | *      - initIndex         : vector of initial cdf table search entries | 
|  | *      - lenData           : data vector length | 
|  | * | 
|  | * Output: | 
|  | *      - data              : data vector | 
|  | * | 
|  | * Return value             : number of bytes in original stream | 
|  | *                            <0 if error detected | 
|  | */ | 
|  | int16_t WebRtcIsacfix_DecHistOneStepMulti( | 
|  | int16_t *data, | 
|  | Bitstr_dec *streamData, | 
|  | const uint16_t **cdf, | 
|  | const uint16_t *initIndex, | 
|  | const int16_t lenData); | 
|  |  | 
|  | #endif /* WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ARITH_ROUTINS_H_ */ |