From: Andre Noll Date: Sun, 18 Oct 2009 19:37:51 +0000 (+0200) Subject: get rid of the useless preprocessor madness in bitstream.h. X-Git-Tag: v0.4.1~60 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=3138b08cfc53ea698c5d2d12d000586392abdc75 get rid of the useless preprocessor madness in bitstream.h. --- diff --git a/bitstream.h b/bitstream.h index 6765ed8c..7f944dbf 100644 --- a/bitstream.h +++ b/bitstream.h @@ -32,64 +32,28 @@ struct vlc { int table_size, table_allocated; }; -/** Load \a gb into local variables. */ -#define OPEN_READER(name, gb)\ - int name##_index= (gb)->index;\ - int name##_cache= 0;\ - -/** Store local vars in gb. */ -#define CLOSE_READER(name, gb)\ - (gb)->index= name##_index;\ - -/** - * Refill the internal cache from the bitstream. - */ -#define UPDATE_CACHE(name, gb)\ - name##_cache= AV_RB32( ((gb)->buffer) \ - + (name##_index >> 3) ) << (name##_index & 0x07);\ - -/** - * Remove the next num bits from the cache. - * - * SKIP_COUNTER MUST be called before UPDATE_CACHE / CLOSE_READER). - */ -#define SKIP_CACHE(name, gb, num)\ - name##_cache <<= (num); - -/** - * Increment the internal bit counter. - * - * \sa SKIP_CACHE. - */ -#define SKIP_COUNTER(name, gb, num)\ - name##_index += (num);\ - -/** Return the next num bits. */ -#define SHOW_UBITS(name, gb, num) \ - (((uint32_t)(name##_cache)) >> (32 - (num))) +static inline uint32_t show_bits(struct getbit_context *gbc, int num) +{ + int idx = gbc->index; + uint32_t x = AV_RB32(gbc->buffer + (idx >> 3)) << (idx & 7); + return x >> (32 - num); +} static inline int get_bits_count(struct getbit_context *s) { return s->index; } -/** - * Read 1-17 bits. - */ -static inline unsigned int get_bits(struct getbit_context *s, int n) +static inline void skip_bits(struct getbit_context *s, int n) { - register int tmp; - OPEN_READER(re, s) - UPDATE_CACHE(re, s) - tmp = SHOW_UBITS(re, s, n); - SKIP_COUNTER(re, s, n) - CLOSE_READER(re, s) - return tmp; + s->index += n; } -static inline void skip_bits(struct getbit_context *s, int n) +static inline unsigned int get_bits(struct getbit_context *gbc, int n) { - s->index += n; + unsigned int ret = show_bits(gbc, n); + skip_bits(gbc, n); + return ret; } static inline unsigned int get_bits1(struct getbit_context *s) @@ -140,29 +104,23 @@ static inline int get_vlc(struct getbit_context *gb, VLC_TYPE(*table)[2], { int n, idx, nb_bits, code; - OPEN_READER(re, gb) - UPDATE_CACHE(re, gb) - idx = SHOW_UBITS(re, gb, bits); + idx = show_bits(gb, bits); code = table[idx][0]; n = table[idx][1]; if (max_depth > 1 && n < 0) { - SKIP_COUNTER(re, gb, bits) - UPDATE_CACHE(re, gb) + skip_bits(gb, bits); nb_bits = -n; - idx = SHOW_UBITS(re, gb, nb_bits) + code; + idx = show_bits(gb, nb_bits) + code; code = table[idx][0]; n = table[idx][1]; if (max_depth > 2 && n < 0) { - SKIP_COUNTER(re, gb, nb_bits) - UPDATE_CACHE(re, gb) + skip_bits(gb, nb_bits); nb_bits = -n; - idx = SHOW_UBITS(re, gb, nb_bits) + code; + idx = show_bits(gb, nb_bits) + code; code = table[idx][0]; n = table[idx][1]; } } - SKIP_CACHE(re, gb, n) - SKIP_COUNTER(re, gb, n) - CLOSE_READER(re, gb) + skip_bits(gb, n); return code; }