move RLTable stuff to its own header
[ffmpeg.git] / libavcodec / rl.h
1 /**
2  * @file rl.h
3  * rl header.
4  */
5
6 #ifndef AVCODEC_RL_H
7 #define AVCODEC_RL_H
8
9 /** RLTable. */
10 typedef struct RLTable {
11     int n;                         ///< number of entries of table_vlc minus 1
12     int last;                      ///< number of values for last = 0
13     const uint16_t (*table_vlc)[2];
14     const int8_t *table_run;
15     const int8_t *table_level;
16     uint8_t *index_run[2];         ///< encoding only
17     int8_t *max_level[2];          ///< encoding & decoding
18     int8_t *max_run[2];            ///< encoding & decoding
19     VLC vlc;                       ///< decoding only deprected FIXME remove
20     RL_VLC_ELEM *rl_vlc[32];       ///< decoding only
21 } RLTable;
22
23 void init_rl(RLTable *rl, int use_static);
24 void init_vlc_rl(RLTable *rl, int use_static);
25
26 static inline int get_rl_index(const RLTable *rl, int last, int run, int level)
27 {
28     int index;
29     index = rl->index_run[last][run];
30     if (index >= rl->n)
31         return rl->n;
32     if (level > rl->max_level[last][run])
33         return rl->n;
34     return index + level - 1;
35 }
36
37 #endif