From fcb609f4324549b29849487716557cb3a321af17 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Thu, 4 Apr 2002 20:04:10 +0000 Subject: [PATCH] dump_stream support (nicely formated 0s and 1s) Originally committed as revision 375 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/common.h | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/libavcodec/common.h b/libavcodec/common.h index 8e5265c565..786f83248f 100644 --- a/libavcodec/common.h +++ b/libavcodec/common.h @@ -13,6 +13,7 @@ //#define ALT_BITSTREAM_READER //#define ALIGNED_BITSTREAM #define FAST_GET_FIRST_VLC +//#define DUMP_STREAM // only works with the ALT_BITSTREAM_READER #ifdef HAVE_AV_CONFIG_H /* only include the following when compiling package */ @@ -243,7 +244,7 @@ static inline void put_bits(PutBitContext *s, int n, unsigned int value) #endif // printf("put_bits=%d %x\n", n, value); assert(n == 32 || value < (1U << n)); - + bit_buf = s->bit_buf; bit_left = s->bit_left; @@ -469,7 +470,13 @@ static inline unsigned int get_bits(GetBitContext *s, int n){ result>>= 32 - n; index+= n; s->index= index; - +#ifdef DUMP_STREAM + while(n){ + printf("%d", (result>>(n-1))&1); + n--; + } + printf(" "); +#endif return result; #endif //!ALIGNED_BITSTREAM #else //ALT_BITSTREAM_READER @@ -496,6 +503,9 @@ static inline unsigned int get_bits1(GetBitContext *s){ index++; s->index= index; +#ifdef DUMP_STREAM + printf("%d ", result); +#endif return result; #else if(s->bit_cnt>0){ @@ -593,6 +603,14 @@ static inline int show_aligned_bits(GetBitContext *s, int offset, int n) static inline void skip_bits(GetBitContext *s, int n){ #ifdef ALT_BITSTREAM_READER s->index+= n; +#ifdef DUMP_STREAM + { + int result; + s->index-= n; + result= get_bits(s, n); + } +#endif + #else if(s->bit_cnt>=n){ /* most common case here */ @@ -610,6 +628,10 @@ static inline void skip_bits(GetBitContext *s, int n){ static inline void skip_bits1(GetBitContext *s){ #ifdef ALT_BITSTREAM_READER s->index++; +#ifdef DUMP_STREAM + s->index--; + printf("%d ", get_bits1(s)); +#endif #else if(s->bit_cnt>0){ /* most common case here */ @@ -735,6 +757,13 @@ static inline int get_vlc(GetBitContext *s, VLC *vlc) if (n > 0) { /* most common case (90%)*/ FLUSH_BITS(n); +#ifdef DUMP_STREAM + { + int n= bit_cnt - s->index; + skip_bits(s, n); + RESTORE_BITS(s); + } +#endif RESTORE_BITS(s); return code; } else if (n == 0) { @@ -769,6 +798,13 @@ static inline int get_vlc(GetBitContext *s, VLC *vlc) table_bits = vlc->table_bits + code; } } +#ifdef DUMP_STREAM + { + int n= bit_cnt - s->index; + skip_bits(s, n); + RESTORE_BITS(s); + } +#endif RESTORE_BITS(s); return code; }