Mercurial > hg > sv-dependency-builds
comparison src/opus-1.3/celt/entdec.h @ 69:7aeed7906520
Add Opus sources and macOS builds
author | Chris Cannam |
---|---|
date | Wed, 23 Jan 2019 13:48:08 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:85d5306e114e | 69:7aeed7906520 |
---|---|
1 /* Copyright (c) 2001-2011 Timothy B. Terriberry | |
2 Copyright (c) 2008-2009 Xiph.Org Foundation */ | |
3 /* | |
4 Redistribution and use in source and binary forms, with or without | |
5 modification, are permitted provided that the following conditions | |
6 are met: | |
7 | |
8 - Redistributions of source code must retain the above copyright | |
9 notice, this list of conditions and the following disclaimer. | |
10 | |
11 - Redistributions in binary form must reproduce the above copyright | |
12 notice, this list of conditions and the following disclaimer in the | |
13 documentation and/or other materials provided with the distribution. | |
14 | |
15 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
16 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
17 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
18 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER | |
19 OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | |
20 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | |
21 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |
22 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |
23 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | |
24 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
25 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
26 */ | |
27 | |
28 #if !defined(_entdec_H) | |
29 # define _entdec_H (1) | |
30 # include <limits.h> | |
31 # include "entcode.h" | |
32 | |
33 /*Initializes the decoder. | |
34 _buf: The input buffer to use. | |
35 Return: 0 on success, or a negative value on error.*/ | |
36 void ec_dec_init(ec_dec *_this,unsigned char *_buf,opus_uint32 _storage); | |
37 | |
38 /*Calculates the cumulative frequency for the next symbol. | |
39 This can then be fed into the probability model to determine what that | |
40 symbol is, and the additional frequency information required to advance to | |
41 the next symbol. | |
42 This function cannot be called more than once without a corresponding call to | |
43 ec_dec_update(), or decoding will not proceed correctly. | |
44 _ft: The total frequency of the symbols in the alphabet the next symbol was | |
45 encoded with. | |
46 Return: A cumulative frequency representing the encoded symbol. | |
47 If the cumulative frequency of all the symbols before the one that | |
48 was encoded was fl, and the cumulative frequency of all the symbols | |
49 up to and including the one encoded is fh, then the returned value | |
50 will fall in the range [fl,fh).*/ | |
51 unsigned ec_decode(ec_dec *_this,unsigned _ft); | |
52 | |
53 /*Equivalent to ec_decode() with _ft==1<<_bits.*/ | |
54 unsigned ec_decode_bin(ec_dec *_this,unsigned _bits); | |
55 | |
56 /*Advance the decoder past the next symbol using the frequency information the | |
57 symbol was encoded with. | |
58 Exactly one call to ec_decode() must have been made so that all necessary | |
59 intermediate calculations are performed. | |
60 _fl: The cumulative frequency of all symbols that come before the symbol | |
61 decoded. | |
62 _fh: The cumulative frequency of all symbols up to and including the symbol | |
63 decoded. | |
64 Together with _fl, this defines the range [_fl,_fh) in which the value | |
65 returned above must fall. | |
66 _ft: The total frequency of the symbols in the alphabet the symbol decoded | |
67 was encoded in. | |
68 This must be the same as passed to the preceding call to ec_decode().*/ | |
69 void ec_dec_update(ec_dec *_this,unsigned _fl,unsigned _fh,unsigned _ft); | |
70 | |
71 /* Decode a bit that has a 1/(1<<_logp) probability of being a one */ | |
72 int ec_dec_bit_logp(ec_dec *_this,unsigned _logp); | |
73 | |
74 /*Decodes a symbol given an "inverse" CDF table. | |
75 No call to ec_dec_update() is necessary after this call. | |
76 _icdf: The "inverse" CDF, such that symbol s falls in the range | |
77 [s>0?ft-_icdf[s-1]:0,ft-_icdf[s]), where ft=1<<_ftb. | |
78 The values must be monotonically non-increasing, and the last value | |
79 must be 0. | |
80 _ftb: The number of bits of precision in the cumulative distribution. | |
81 Return: The decoded symbol s.*/ | |
82 int ec_dec_icdf(ec_dec *_this,const unsigned char *_icdf,unsigned _ftb); | |
83 | |
84 /*Extracts a raw unsigned integer with a non-power-of-2 range from the stream. | |
85 The bits must have been encoded with ec_enc_uint(). | |
86 No call to ec_dec_update() is necessary after this call. | |
87 _ft: The number of integers that can be decoded (one more than the max). | |
88 This must be at least 2, and no more than 2**32-1. | |
89 Return: The decoded bits.*/ | |
90 opus_uint32 ec_dec_uint(ec_dec *_this,opus_uint32 _ft); | |
91 | |
92 /*Extracts a sequence of raw bits from the stream. | |
93 The bits must have been encoded with ec_enc_bits(). | |
94 No call to ec_dec_update() is necessary after this call. | |
95 _ftb: The number of bits to extract. | |
96 This must be between 0 and 25, inclusive. | |
97 Return: The decoded bits.*/ | |
98 opus_uint32 ec_dec_bits(ec_dec *_this,unsigned _ftb); | |
99 | |
100 #endif |