summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/entropy_encoder_model/entropy_encoder_model_kernel_2.h
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/entropy_encoder_model/entropy_encoder_model_kernel_2.h')
-rw-r--r--ml/dlib/dlib/entropy_encoder_model/entropy_encoder_model_kernel_2.h246
1 files changed, 0 insertions, 246 deletions
diff --git a/ml/dlib/dlib/entropy_encoder_model/entropy_encoder_model_kernel_2.h b/ml/dlib/dlib/entropy_encoder_model/entropy_encoder_model_kernel_2.h
deleted file mode 100644
index 08a16cae0..000000000
--- a/ml/dlib/dlib/entropy_encoder_model/entropy_encoder_model_kernel_2.h
+++ /dev/null
@@ -1,246 +0,0 @@
-// Copyright (C) 2004 Davis E. King (davis@dlib.net)
-// License: Boost Software License See LICENSE.txt for the full license.
-#ifndef DLIB_ENTROPY_ENCODER_MODEL_KERNEl_2_
-#define DLIB_ENTROPY_ENCODER_MODEL_KERNEl_2_
-
-#include "../algs.h"
-#include "entropy_encoder_model_kernel_abstract.h"
-#include "../assert.h"
-
-namespace dlib
-{
-
- template <
- unsigned long alphabet_size,
- typename entropy_encoder,
- typename cc,
- typename ccbig
- >
- class entropy_encoder_model_kernel_2
- {
- /*!
- REQUIREMENTS ON cc
- cc is an implementation of conditioning_class/conditioning_class_kernel_abstract.h
- cc::get_alphabet_size() == alphabet_size+1
- this will be used for the order-0 context
-
- REQUIREMENTS ON ccbig
- ccbig is an implementation of conditioning_class/conditioning_class_kernel_abstract.h
- ccbig::get_alphabet_size() == alphabet_size+1
- this will be used for the order-1 context
-
- INITIAL VALUE
- Initially this object's finite context model is empty
- previous_symbol == 0
-
- CONVENTION
- &get_entropy_encoder() == coder
- &order_0.get_global_state() == &gs
- &order_1[i]->get_global_state() == &gsbig
-
-
- This is an order-1-0 model. The last symbol in the order-0 and order-1
- context is an escape into the lower context.
-
- previous_symbol == the last symbol seen
- !*/
-
- public:
-
- typedef entropy_encoder entropy_encoder_type;
-
- entropy_encoder_model_kernel_2 (
- entropy_encoder& coder
- );
-
- virtual ~entropy_encoder_model_kernel_2 (
- );
-
- inline void clear(
- );
-
- inline void encode (
- unsigned long symbol
- );
-
- entropy_encoder& get_entropy_encoder (
- ) { return coder; }
-
- static unsigned long get_alphabet_size (
- ) { return alphabet_size; }
-
- private:
-
- entropy_encoder& coder;
- typename cc::global_state_type gs;
- typename ccbig::global_state_type gsbig;
- cc order_0;
- ccbig* order_1[alphabet_size];
- unsigned long previous_symbol;
-
-
- // restricted functions
- entropy_encoder_model_kernel_2(entropy_encoder_model_kernel_2<alphabet_size,entropy_encoder,cc,ccbig>&); // copy constructor
- entropy_encoder_model_kernel_2<alphabet_size,entropy_encoder,cc,ccbig>& operator=(entropy_encoder_model_kernel_2<alphabet_size,entropy_encoder,cc,ccbig>&); // assignment operator
-
- };
-
-// ----------------------------------------------------------------------------------------
-// ----------------------------------------------------------------------------------------
- // member function definitions
-// ----------------------------------------------------------------------------------------
-// ----------------------------------------------------------------------------------------
-
- template <
- unsigned long alphabet_size,
- typename entropy_encoder,
- typename cc,
- typename ccbig
- >
- entropy_encoder_model_kernel_2<alphabet_size,entropy_encoder,cc,ccbig>::
- entropy_encoder_model_kernel_2 (
- entropy_encoder& coder_
- ) :
- coder(coder_),
- order_0(gs),
- previous_symbol(0)
- {
- COMPILE_TIME_ASSERT( 1 < alphabet_size && alphabet_size < 65535 );
-
- unsigned long i;
- try
- {
- for (i = 0; i < alphabet_size; ++i)
- {
- order_1[i] = new ccbig(gsbig);
- }
- }
- catch (...)
- {
- for (unsigned long j = 0; j < i; ++j)
- {
- delete order_1[j];
- }
- throw;
- }
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- unsigned long alphabet_size,
- typename entropy_encoder,
- typename cc,
- typename ccbig
- >
- entropy_encoder_model_kernel_2<alphabet_size,entropy_encoder,cc,ccbig>::
- ~entropy_encoder_model_kernel_2 (
- )
- {
- for (unsigned long i = 0; i < alphabet_size; ++i)
- {
- delete order_1[i];
- }
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- unsigned long alphabet_size,
- typename entropy_encoder,
- typename cc,
- typename ccbig
- >
- void entropy_encoder_model_kernel_2<alphabet_size,entropy_encoder,cc,ccbig>::
- clear(
- )
- {
- previous_symbol = 0;
- order_0.clear();
- for (unsigned long i = 0; i < alphabet_size; ++i)
- {
- order_1[i]->clear();
- }
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- unsigned long alphabet_size,
- typename entropy_encoder,
- typename cc,
- typename ccbig
- >
- void entropy_encoder_model_kernel_2<alphabet_size,entropy_encoder,cc,ccbig>::
- encode (
- unsigned long symbol
- )
- {
- unsigned long low_count = 0, high_count = 0, total_count = 0;
-
-
- ccbig& context = *order_1[previous_symbol];
-
- // if we have seen this symbol in the order-1 context
- if (context.get_range(symbol,low_count,high_count,total_count))
- {
- // update the count for this symbol
- context.increment_count(symbol,2);
- // encode this symbol
- coder.encode(low_count,high_count,total_count);
- previous_symbol = symbol;
- return;
- }
-
- // we didn't find the symbol in the order-1 context so we must escape to a
- // lower context.
-
- // escape to the order-0 context
- context.get_range(alphabet_size,low_count,high_count,total_count);
- coder.encode(low_count,high_count,total_count);
-
-
- // increment counts for the escape symbol and the current symbol
- context.increment_count(alphabet_size);
- context.increment_count(symbol,2);
-
- previous_symbol = symbol;
-
-
-
-
-
- // if we have seen this symbol in the order-0 context
- if (order_0.get_range(symbol,low_count,high_count,total_count))
- {
- // update the count for this symbol
- order_0.increment_count(symbol,2);
- // encode this symbol
- coder.encode(low_count,high_count,total_count);
- return;
- }
-
- // if we are here then the symbol does not appear in the order-0 context
-
-
- // since we have never seen the current symbol in this context
- // escape from order-0 context
- order_0.get_range(alphabet_size,low_count,high_count,total_count);
- coder.encode(low_count,high_count,total_count);
- // increment the count for the escape symbol
- order_0.increment_count(alphabet_size);
-
- // update the count for this symbol
- order_0.increment_count(symbol,2);
-
- // use order minus one context
- coder.encode(symbol,symbol+1,alphabet_size);
-
- }
-
-// ----------------------------------------------------------------------------------------
-
-}
-
-#endif // DLIB_ENTROPY_ENCODER_MODEL_KERNEl_2_
-