diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2003-05-14 10:55:59 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2003-05-14 10:55:59 +0000 |
commit | 17fb5fd34e96ce472019d4f2b8d798bbd885a24b (patch) | |
tree | 2ff6cb1985d58cbd551d79c5b9347b29f3788bdf /libavcodec/common.h | |
parent | 924311cd9828695b42cf639c4ea5f258c1a04efd (diff) | |
download | ffmpeg-17fb5fd34e96ce472019d4f2b8d798bbd885a24b.tar.gz |
libmpeg2 style bitstream reader fixes
Originally committed as revision 1875 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/common.h')
-rw-r--r-- | libavcodec/common.h | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/libavcodec/common.h b/libavcodec/common.h index 494db42e2e..1a8202d709 100644 --- a/libavcodec/common.h +++ b/libavcodec/common.h @@ -543,8 +543,8 @@ static inline int get_bits_count(GetBitContext *s){ # define UPDATE_CACHE(name, gb)\ if(name##_bit_count >= 0){\ - name##_cache+= (int)be2me_16(*(uint16_t*)name##_buffer_ptr++) << name##_bit_count;\ - name##_buffer_ptr+=2;\ + name##_cache+= (int)be2me_16(*(uint16_t*)name##_buffer_ptr) << name##_bit_count;\ + ((uint16_t*)name##_buffer_ptr)++;\ name##_bit_count-= 16;\ }\ @@ -654,9 +654,12 @@ static inline int get_bits_count(GetBitContext *s){ #endif -/* add BERO - if MSB not set it is negative -*/ +/** + * read mpeg1 dc style vlc (sign bit + mantisse with no MSB). + * if MSB not set it is negative + * @param n length in bits + * @author BERO + */ static inline int get_xbits(GetBitContext *s, int n){ register int tmp; register int32_t cache; @@ -685,6 +688,10 @@ static inline int get_sbits(GetBitContext *s, int n){ return tmp; } +/** + * reads 0-17 bits. + * Note, the alt bitstream reader can read upto 25 bits, but the libmpeg2 reader cant + */ static inline unsigned int get_bits(GetBitContext *s, int n){ register int tmp; OPEN_READER(re, s) @@ -695,6 +702,12 @@ static inline unsigned int get_bits(GetBitContext *s, int n){ return tmp; } +unsigned int get_bits_long(GetBitContext *s, int n); + +/** + * shows 0-17 bits. + * Note, the alt bitstream reader can read upto 25 bits, but the libmpeg2 reader cant + */ static inline unsigned int show_bits(GetBitContext *s, int n){ register int tmp; OPEN_READER(re, s) @@ -704,6 +717,8 @@ static inline unsigned int show_bits(GetBitContext *s, int n){ return tmp; } +unsigned int show_bits_long(GetBitContext *s, int n); + static inline void skip_bits(GetBitContext *s, int n){ //Note gcc seems to optimize this to s->index+=n for the ALT_READER :)) OPEN_READER(re, s) |