media/libopus/celt/entdec.h

Thu, 15 Jan 2015 15:59:08 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:59:08 +0100
branch
TOR_BUG_9701
changeset 10
ac0c01689b40
permissions
-rw-r--r--

Implement a real Private Browsing Mode condition by changing the API/ABI;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

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

mercurial