📄 probmod.h
字号:
#if !defined(_probmod_H)# define _probmod_H (1)# include "entcode.h"typedef struct ec_probsamp ec_probsamp;typedef struct ec_probmod ec_probmod;/*A sample from a probability distribution. This is the information needed to encode a symbol or update the decoder state.*/struct ec_probsamp{ /*The cumulative frequency of all symbols preceding this one in the alphabet.*/ unsigned fl; /*The frequency of the symbol coded.*/ unsigned fs; /*The total frequency of all symbols in the alphabet.*/ unsigned ft;};/*A simple frequency-count probability model.*/struct ec_probmod{ /*The number of symbols in this context.*/ int sz; /*The largest power of two less than or equal to sz.*/ int split; /*The amount by which to increment the frequency count of an observed symbol.*/ unsigned inc; /*The current total frequency count.*/ unsigned ft; /*The maximum total frequency count allowed before the counts are rescaled. Note that this should be larger than (inc+1>>1)+sz-1, since at most one rescaling is done per decoded symbol. Otherwise, this threshold might be exceeded. This must be less than 2**23 for a range coder, and 2**31 for an arithmetic coder.*/ unsigned thresh; /*The binary indexed tree used to keep track of the frequency counts.*/ unsigned *bitree;};/*Initializes a probability model of the given size. The amount to increment and all frequency counts are initialized to 1. The rescaling threshold is initialized to 2**23. _sz: The number of symbols in this context.*/void ec_probmod_init(ec_probmod *_this,unsigned _sz);/*Initializes a probability model of the given size. The amount to increment is initialized to 1. The rescaling threshold is initialized to 2**23. _sz: The number of symbols in this context. _counts: The initial frequency count of each symbol.*/void ec_probmod_init_from_counts(ec_probmod *_this,unsigned _sz, const unsigned *_counts);/*Initializes a probability model of the given size. _sz: The number of symbols in this context. _inc: The amount by which to increment the frequency count of an observed symbol. _thresh: The maximum total frequency count allowed before the counts are rescaled. See above for restrictions on this value. _counts: The initial frequency count of each symbol, or NULL to initialize each frequency count to 1.*/void ec_probmod_init_full(ec_probmod *_this,unsigned _sz,unsigned _inc, unsigned _thresh,const unsigned *_counts);/*Frees all memory used by this probability model.*/void ec_probmod_clear(ec_probmod *_this);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -