summaryrefslogtreecommitdiff
path: root/libavcodec/bitstream.h
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2006-08-26 10:26:14 +0000
committerMichael Niedermayer <michaelni@gmx.at>2006-08-26 10:26:14 +0000
commit5a7bd28335d502d90c727f69a50e6f251c305e72 (patch)
treebb490c9bb4cc71148723e82e4b0bd86b541ce78c /libavcodec/bitstream.h
parent727c236a6b07ac4426d5c5e3e564c563c890bb7c (diff)
move align_get_bits() to .h to avoid conflicts between different bitstream readers in different codecs
add a skip_bits_long() which can skip by any amount in any direction (several codecs contain half working hacks to do that) Originally committed as revision 6093 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/bitstream.h')
-rw-r--r--libavcodec/bitstream.h28
1 files changed, 27 insertions, 1 deletions
diff --git a/libavcodec/bitstream.h b/libavcodec/bitstream.h
index 13a563bb90..4c789e4a6a 100644
--- a/libavcodec/bitstream.h
+++ b/libavcodec/bitstream.h
@@ -444,6 +444,11 @@ static inline int unaligned32_le(const void *v)
static inline int get_bits_count(GetBitContext *s){
return s->index;
}
+
+static inline void skip_bits_long(GetBitContext *s, int n){
+ s->index + n;
+}
+
#elif defined LIBMPEG2_BITSTREAM_READER
//libmpeg2 like reader
@@ -572,6 +577,22 @@ static inline int get_bits_count(GetBitContext *s){
return ((uint8_t*)s->buffer_ptr - s->buffer)*8 - 32 + s->bit_count;
}
+static inline void skip_bits_long(GetBitContext *s, int n){
+ OPEN_READER(re, s)
+ re_bit_count += n;
+ re_buffer_ptr += s->bit_count>>5;
+ re_bit_count &= 31;
+ if(re_bit_count<=0){
+ re_bit_count += 32;
+ re_buffer_ptr--;
+ }
+ re_cache0=
+ re_cache1= 0;
+ UPDATE_CACHE(re, s)
+ re_cache1= 0;
+ CLOSE_READER(re, s)
+}
+
#endif
/**
@@ -720,8 +741,13 @@ static inline void init_get_bits(GetBitContext *s,
#endif
}
+static void align_get_bits(GetBitContext *s)
+{
+ int n= (-get_bits_count(s)) & 7;
+ if(n) skip_bits(s, n);
+}
+
int check_marker(GetBitContext *s, const char *msg);
-void align_get_bits(GetBitContext *s);
int init_vlc(VLC *vlc, int nb_bits, int nb_codes,
const void *bits, int bits_wrap, int bits_size,
const void *codes, int codes_wrap, int codes_size,