1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
#ifndef __PPMD_RANGE_CODER_H__
#define __PPMD_RANGE_CODER_H__
#include <stdint.h>
#include <stdbool.h>
typedef int PPMdReadFunction(void *context);
typedef struct PPMdRangeCoder
{
PPMdReadFunction *readfunc;
void *inputcontext;
uint32_t low,code,range,bottom;
bool uselow;
} PPMdRangeCoder;
void InitializePPMdRangeCoder(PPMdRangeCoder *self,
PPMdReadFunction *readfunc,void *inputcontext,
bool uselow,int bottom);
uint32_t PPMdRangeCoderCurrentCount(PPMdRangeCoder *self,uint32_t scale);
void RemovePPMdRangeCoderSubRange(PPMdRangeCoder *self,uint32_t lowcount,uint32_t highcount);
int NextWeightedBitFromPPMdRangeCoder(PPMdRangeCoder *self,int weight,int size);
int NextWeightedBitFromPPMdRangeCoder2(PPMdRangeCoder *self,int weight,int shift);
void NormalizePPMdRangeCoder(PPMdRangeCoder *self);
#endif
|