summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/entropy_decoder/entropy_decoder_kernel_abstract.h
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/entropy_decoder/entropy_decoder_kernel_abstract.h')
-rw-r--r--ml/dlib/dlib/entropy_decoder/entropy_decoder_kernel_abstract.h207
1 files changed, 0 insertions, 207 deletions
diff --git a/ml/dlib/dlib/entropy_decoder/entropy_decoder_kernel_abstract.h b/ml/dlib/dlib/entropy_decoder/entropy_decoder_kernel_abstract.h
deleted file mode 100644
index 89906b9ae..000000000
--- a/ml/dlib/dlib/entropy_decoder/entropy_decoder_kernel_abstract.h
+++ /dev/null
@@ -1,207 +0,0 @@
-// Copyright (C) 2003 Davis E. King (davis@dlib.net)
-// License: Boost Software License See LICENSE.txt for the full license.
-#undef DLIB_ENTROPY_DECODER_KERNEl_ABSTRACT_
-#ifdef DLIB_ENTROPY_DECODER_KERNEl_ABSTRACT_
-
-#include "../algs.h"
-#include <iosfwd>
-#include "../uintn.h"
-
-namespace dlib
-{
-
- class entropy_decoder
- {
- /*!
- INITIAL VALUE
- stream_is_set() == false
- get_target_called() == false
-
-
- WHAT THIS OBJECT REPRESENTS
- This object represents an entropy decoder (could be implemented as an
- arithmetic decoder for example).
-
- Note that all implementations of entropy_encoder and entropy_decoder
- are paired. This means that if you use entropy_encoder_kernel_n to
- encode something then you must use the corresponding
- entropy_decoder_kernel_n to decode it.
-
-
- WHERE IS EOF?
- It is important to note that this object will not give any indication
- that is has hit the end of the input stream when it occurs. It is
- up to you to use some kind of coding scheme to detect this in the
- compressed data stream.
-
- Another important thing to know is that decode() must be called
- exactly the same number of times as encode() and with the same values
- supplied for TOTAL, high_count, and low_count. Doing this ensures
- that the decoder consumes exactly all the bytes from the input
- stream that were written by the entropy_encoder.
-
- NOTATION:
- At any moment each symbol has a certain probability of appearing in
- the input stream. These probabilities may change as each symbol is
- decoded and the probability model is updated accordingly.
-
-
- - Before considering current symbol:
-
- let P(i) be a function which gives the probability of seeing the ith
- symbol of an N symbol alphabet. Note that P(i) refers to the probability
- of seeing the ith symbol WITHOUT considering the symbol currently given
- by get_target(TOTAL). ( The domain of P(i) is from 0 to N-1. )
-
- for each i: P(i) == COUNT/TOTAL where COUNT and TOTAL are integers
- and TOTAL is the same number for all P(i) but COUNT may vary.
-
- let LOW_COUNT(i) be the sum of all P(x)*TOTAL from x == 0 to x == i-1
- (note that LOW_COUNT(0) == 0)
- let HIGH_COUNT(i) be the sum of all P(x)*TOTAL from x == 0 to x == i
-
-
- - After considering current symbol:
-
- let #P(i) be a function which gives the probability of seeing the ith
- symbol after we have updated our probability model to take the symbol
- given by get_target(TOTAL) into account.
-
- for each i: #P(i) == #COUNT/#TOTAL where #COUNT and #TOTAL are integers
- and #TOTAL is the same number for all #P(i) but #COUNT may vary.
- !*/
-
- public:
-
- entropy_decoder (
- );
- /*!
- ensures
- - #*this is properly initialized
- throws
- - std::bad_alloc
- !*/
-
- virtual ~entropy_decoder (
- );
- /*!
- ensures
- - all memory associated with *this has been released
- !*/
-
- void clear(
- );
- /*!
- ensures
- - #*this has its initial value
- - if (stream_is_set())
- - clears any state accumulated in *this from decoding data from
- the stream get_stream()
- throws
- - any exception
- if this exception is thrown then #*this is unusable
- until clear() is called and succeeds
- !*/
-
- void set_stream (
- std::istream& in
- );
- /*!
- ensures
- - #*this will read data from in and decode it
- - #stream_is_set() == true
- - #get_target() == a number representing the first symbol from in
- - #get_target_called() == false
- - if (stream_is_set())
- - clears any state accumulated in *this from decoding data from
- the stream get_stream()
- throws
- - any exception
- if this exception is thrown then #*this is unusable
- until clear() is called and succeeds
- !*/
-
- bool stream_is_set (
- ) const;
- /*!
- ensures
- - returns true if a stream has been associated with *this by calling
- set_stream()
- !*/
-
- std::istream& get_stream (
- ) const;
- /*!
- requires
- - stream_is_set() == true
- ensures
- - returns a reference to the istream object that *this is reading
- encoded data from
- !*/
-
-
- void decode (
- uint32 low_count,
- uint32 high_count
- );
- /*!
- requires
- - get_target_called() == true
- - stream_is_set() == true
- - low_count == LOW_COUNT(S) where S is the symbol represented
- by get_target(TOTAL)
- - high_count == HIGH_COUNT(S) where S is the symbol represented
- by get_target(TOTAL)
- - low_count <= get_target(TOTAL) < high_count <= TOTAL
- ensures
- - #get_target(#TOTAL) == a number which represents the next symbol
- - #get_target_called() == false
- throws
- - any exception
- if this exception is thrown then #*this is unusable
- until clear() is called and succeeds
- !*/
-
- bool get_target_called (
- ) const;
- /*!
- ensures
- - returns true if get_target() has been called and since then decode()
- and set_stream() have not been called
- - returns false otherwise
- !*/
-
- uint32 get_target (
- uint32 total
- );
- /*!
- requires
- - 0 < total < 65536 (2^16)
- - total == TOTAL
- - stream_is_set() == true
- ensures
- - in the next call to decode() the value of TOTAL will be
- considered to be total
- - #get_target_called() == true
- - returns a number N such that:
- - N is in the range 0 to total - 1
- - N represents a symbol S where
- LOW_COUNT(S) <= N < HIGH_COUNT(S)
- throws
- - any exception
- if this exception is thrown then #*this is unusable
- until clear() is called and succeeds
- !*/
-
- private:
-
- // restricted functions
- entropy_decoder(entropy_decoder&); // copy constructor
- entropy_decoder& operator=(entropy_decoder&); // assignment operator
-
- };
-
-}
-
-#endif // DLIB_ENTROPY_DECODER_KERNEl_ABSTRACT_
-