18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *  Use of this source code is governed by a BSD-style license
51f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt *  that can be found in the LICENSE file in the root of the source
68d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *  tree. An additional intellectual property rights grant can be found
7fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt *  in the file PATENTS.  All contributing project authors may
8fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt *  be found in the AUTHORS file in the root of the source tree.
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * arith_routines.h
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Functions for arithmetic coding.
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
18fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt#ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ARITH_ROUTINES_H_
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ARITH_ROUTINES_H_
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "structs.h"
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
241f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtint WebRtcIsac_EncLogisticMulti2(
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    Bitstr *streamdata,              /* in-/output struct containing bitstream */
267832adbbd72a1b784b7fb74a71a5d4085b0cb0d3Dmitry Shmidt    int16_t *dataQ7,           /* input: data vector */
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const uint16_t *env,       /* input: side info vector defining the width of the pdf */
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const int N,                     /* input: data vector length */
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const int16_t isSWB12kHz); /* if the codec is working in 12kHz bandwidth */
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* returns the number of bytes in the stream */
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint WebRtcIsac_EncTerminate(Bitstr *streamdata); /* in-/output struct containing bitstream */
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* returns the number of bytes in the stream so far */
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint WebRtcIsac_DecLogisticMulti2(
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    int16_t *data,             /* output: data vector */
378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    Bitstr *streamdata,              /* in-/output struct containing bitstream */
388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const uint16_t *env,       /* input: side info vector defining the width of the pdf */
398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const int16_t *dither,     /* input: dither vector */
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const int N,                     /* input: data vector length */
4187fd279308af3f806848c8f2ab65ef18c6ac4c30Jouni Malinen    const int16_t isSWB12kHz); /* if the codec is working in 12kHz bandwidth */
428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid WebRtcIsac_EncHistMulti(
448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    Bitstr *streamdata,         /* in-/output struct containing bitstream */
458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const int *data,            /* input: data vector */
468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const uint16_t **cdf, /* input: array of cdf arrays */
478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const int N);               /* input: data vector length */
488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint WebRtcIsac_DecHistBisectMulti(
508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    int *data,                      /* output: data vector */
518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    Bitstr *streamdata,             /* in-/output struct containing bitstream */
528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const uint16_t **cdf,     /* input: array of cdf arrays */
538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const uint16_t *cdf_size, /* input: array of cdf table sizes+1 (power of two: 2^k) */
548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const int N);                   /* input: data vector length */
558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint WebRtcIsac_DecHistOneStepMulti(
578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    int *data,                       /* output: data vector */
588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    Bitstr *streamdata,              /* in-/output struct containing bitstream */
591f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt    const uint16_t **cdf,      /* input: array of cdf arrays */
608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const uint16_t *init_index,/* input: vector of initial cdf table search entries */
618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    const int N);                    /* input: data vector length */
628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ARITH_ROUTINES_H_ */
648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt