#define AVCODEC_LAGARITHRAC_H
#include <stdint.h>
+
#include "libavutil/common.h"
#include "libavutil/intreadwrite.h"
+
#include "avcodec.h"
-#include "get_bits.h"
+#include "bitstream.h"
typedef struct lag_rac {
AVCodecContext *avctx;
unsigned low;
unsigned range;
- unsigned scale; /*!< Number of bits of precision in range. */
- unsigned hash_shift; /*!< Number of bits to shift to calculate hash for radix search. */
+ unsigned scale; /**< Number of bits of precision in range. */
+ unsigned hash_shift; /**< Number of bits to shift to calculate hash for radix search. */
- const uint8_t *bytestream_start; /*!< Start of input bytestream. */
- const uint8_t *bytestream; /*!< Current position in input bytestream. */
- const uint8_t *bytestream_end; /*!< End position of input bytestream. */
+ const uint8_t *bytestream_start; /**< Start of input bytestream. */
+ const uint8_t *bytestream; /**< Current position in input bytestream. */
+ const uint8_t *bytestream_end; /**< End position of input bytestream. */
- uint32_t prob[258]; /*!< Table of cumulative probability for each symbol. */
- uint8_t range_hash[256]; /*!< Hash table mapping upper byte to approximate symbol. */
+ uint32_t prob[258]; /**< Table of cumulative probability for each symbol. */
+ uint8_t range_hash[256]; /**< Hash table mapping upper byte to approximate symbol. */
} lag_rac;
-void lag_rac_init(lag_rac *l, GetBitContext *gb, int length);
+void ff_lag_rac_init(lag_rac *l, BitstreamContext *bc, int length);
/* TODO: Optimize */
static inline void lag_rac_refill(lag_rac *l)
l->range -= range_scaled * l->prob[255];
}
+ if (!l->range)
+ l->range = 0x80;
+
l->low -= range_scaled * l->prob[val];
return val;