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