# HG changeset patch # User stefano # Date 1239639626 0 # Node ID 0dce4fe6e6f34c9072c210d568d4e0b0f9db406e # Parent 4c1fb772341241ec0ff6ada9376041ee8e9ab985 Rename bitstream.h to get_bits.h. diff -r 4c1fb7723412 -r 0dce4fe6e6f3 4xm.c --- a/4xm.c Mon Apr 13 15:11:40 2009 +0000 +++ b/4xm.c Mon Apr 13 16:20:26 2009 +0000 @@ -27,7 +27,7 @@ #include "libavutil/intreadwrite.h" #include "avcodec.h" #include "dsputil.h" -#include "bitstream.h" +#include "get_bits.h" #include "bytestream.h" //#undef NDEBUG diff -r 4c1fb7723412 -r 0dce4fe6e6f3 aac.c --- a/aac.c Mon Apr 13 15:11:40 2009 +0000 +++ b/aac.c Mon Apr 13 16:20:26 2009 +0000 @@ -78,7 +78,7 @@ #include "avcodec.h" #include "internal.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "lpc.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 aac_parser.c --- a/aac_parser.c Mon Apr 13 15:11:40 2009 +0000 +++ b/aac_parser.c Mon Apr 13 16:20:26 2009 +0000 @@ -23,7 +23,7 @@ #include "parser.h" #include "aac_ac3_parser.h" #include "aac_parser.h" -#include "bitstream.h" +#include "get_bits.h" #include "mpeg4audio.h" #define AAC_HEADER_SIZE 7 diff -r 4c1fb7723412 -r 0dce4fe6e6f3 aac_parser.h --- a/aac_parser.h Mon Apr 13 15:11:40 2009 +0000 +++ b/aac_parser.h Mon Apr 13 16:20:26 2009 +0000 @@ -25,7 +25,7 @@ #include #include "aac_ac3_parser.h" -#include "bitstream.h" +#include "get_bits.h" typedef struct { uint32_t sample_rate; diff -r 4c1fb7723412 -r 0dce4fe6e6f3 aacenc.c --- a/aacenc.c Mon Apr 13 15:11:40 2009 +0000 +++ b/aacenc.c Mon Apr 13 16:20:26 2009 +0000 @@ -32,7 +32,7 @@ ***********************************/ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "mpeg4audio.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 ac3.c --- a/ac3.c Mon Apr 13 15:11:40 2009 +0000 +++ b/ac3.c Mon Apr 13 16:20:26 2009 +0000 @@ -26,7 +26,7 @@ #include "avcodec.h" #include "ac3.h" -#include "bitstream.h" +#include "get_bits.h" static uint8_t band_start_tab[51]; static uint8_t bin_to_band_tab[253]; diff -r 4c1fb7723412 -r 0dce4fe6e6f3 ac3_parser.c --- a/ac3_parser.c Mon Apr 13 15:11:40 2009 +0000 +++ b/ac3_parser.c Mon Apr 13 16:20:26 2009 +0000 @@ -23,7 +23,7 @@ #include "parser.h" #include "ac3_parser.h" #include "aac_ac3_parser.h" -#include "bitstream.h" +#include "get_bits.h" #define AC3_HEADER_SIZE 7 diff -r 4c1fb7723412 -r 0dce4fe6e6f3 ac3_parser.h --- a/ac3_parser.h Mon Apr 13 15:11:40 2009 +0000 +++ b/ac3_parser.h Mon Apr 13 16:20:26 2009 +0000 @@ -24,7 +24,7 @@ #define AVCODEC_AC3_PARSER_H #include "ac3.h" -#include "bitstream.h" +#include "get_bits.h" /** * Parses AC-3 frame header. diff -r 4c1fb7723412 -r 0dce4fe6e6f3 ac3dec.h --- a/ac3dec.h Mon Apr 13 15:11:40 2009 +0000 +++ b/ac3dec.h Mon Apr 13 16:20:26 2009 +0000 @@ -30,7 +30,7 @@ #include "libavutil/internal.h" #include "libavutil/lfg.h" #include "ac3.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" /* override ac3.h to include coupling channel */ diff -r 4c1fb7723412 -r 0dce4fe6e6f3 ac3enc.c --- a/ac3enc.c Mon Apr 13 15:11:40 2009 +0000 +++ b/ac3enc.c Mon Apr 13 16:20:26 2009 +0000 @@ -27,7 +27,7 @@ //#define DEBUG_BITALLOC #include "libavutil/crc.h" #include "avcodec.h" -#include "bitstream.h" // for ff_reverse +#include "get_bits.h" // for ff_reverse #include "put_bits.h" #include "ac3.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 adpcm.c --- a/adpcm.c Mon Apr 13 15:11:40 2009 +0000 +++ b/adpcm.c Mon Apr 13 16:20:26 2009 +0000 @@ -19,7 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "put_bits.h" #include "bytestream.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 alac.c --- a/alac.c Mon Apr 13 15:11:40 2009 +0000 +++ b/alac.c Mon Apr 13 16:20:26 2009 +0000 @@ -53,7 +53,7 @@ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "bytestream.h" #include "unary.h" #include "mathops.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 alacenc.c --- a/alacenc.c Mon Apr 13 15:11:40 2009 +0000 +++ b/alacenc.c Mon Apr 13 16:20:26 2009 +0000 @@ -20,7 +20,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "put_bits.h" #include "dsputil.h" #include "lpc.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 apedec.c --- a/apedec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/apedec.c Mon Apr 13 16:20:26 2009 +0000 @@ -23,7 +23,7 @@ #define ALT_BITSTREAM_READER_LE #include "avcodec.h" #include "dsputil.h" -#include "bitstream.h" +#include "get_bits.h" #include "bytestream.h" /** diff -r 4c1fb7723412 -r 0dce4fe6e6f3 asv1.c --- a/asv1.c Mon Apr 13 15:11:40 2009 +0000 +++ b/asv1.c Mon Apr 13 16:20:26 2009 +0000 @@ -25,7 +25,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "put_bits.h" #include "dsputil.h" #include "mpeg12data.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 atrac3.c --- a/atrac3.c Mon Apr 13 15:11:40 2009 +0000 +++ b/atrac3.c Mon Apr 13 16:20:26 2009 +0000 @@ -37,7 +37,7 @@ #include #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "bytestream.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 avs.c --- a/avs.c Mon Apr 13 15:11:40 2009 +0000 +++ b/avs.c Mon Apr 13 16:20:26 2009 +0000 @@ -20,7 +20,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" typedef struct { diff -r 4c1fb7723412 -r 0dce4fe6e6f3 bitstream.c --- a/bitstream.c Mon Apr 13 15:11:40 2009 +0000 +++ b/bitstream.c Mon Apr 13 16:20:26 2009 +0000 @@ -28,7 +28,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "put_bits.h" const uint8_t ff_log2_run[32]={ diff -r 4c1fb7723412 -r 0dce4fe6e6f3 bitstream.h --- a/bitstream.h Mon Apr 13 15:11:40 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,705 +0,0 @@ -/* - * copyright (c) 2004 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file libavcodec/bitstream.h - * bitstream api header. - */ - -#ifndef AVCODEC_BITSTREAM_H -#define AVCODEC_BITSTREAM_H - -#include -#include -#include -#include "libavutil/bswap.h" -#include "libavutil/common.h" -#include "libavutil/intreadwrite.h" -#include "libavutil/log.h" -#include "mathops.h" - -#if defined(ALT_BITSTREAM_READER_LE) && !defined(ALT_BITSTREAM_READER) -# define ALT_BITSTREAM_READER -#endif - -#if !defined(LIBMPEG2_BITSTREAM_READER) && !defined(A32_BITSTREAM_READER) && !defined(ALT_BITSTREAM_READER) -# if ARCH_ARM -# define A32_BITSTREAM_READER -# else -# define ALT_BITSTREAM_READER -//#define LIBMPEG2_BITSTREAM_READER -//#define A32_BITSTREAM_READER -# endif -#endif - -extern const uint8_t ff_reverse[256]; - -#if ARCH_X86 -// avoid +32 for shift optimization (gcc should do that ...) -static inline int32_t NEG_SSR32( int32_t a, int8_t s){ - __asm__ ("sarl %1, %0\n\t" - : "+r" (a) - : "ic" ((uint8_t)(-s)) - ); - return a; -} -static inline uint32_t NEG_USR32(uint32_t a, int8_t s){ - __asm__ ("shrl %1, %0\n\t" - : "+r" (a) - : "ic" ((uint8_t)(-s)) - ); - return a; -} -#else -# define NEG_SSR32(a,s) ((( int32_t)(a))>>(32-(s))) -# define NEG_USR32(a,s) (((uint32_t)(a))>>(32-(s))) -#endif - -/* bit input */ -/* buffer, buffer_end and size_in_bits must be present and used by every reader */ -typedef struct GetBitContext { - const uint8_t *buffer, *buffer_end; -#ifdef ALT_BITSTREAM_READER - int index; -#elif defined LIBMPEG2_BITSTREAM_READER - uint8_t *buffer_ptr; - uint32_t cache; - int bit_count; -#elif defined A32_BITSTREAM_READER - uint32_t *buffer_ptr; - uint32_t cache0; - uint32_t cache1; - int bit_count; -#endif - int size_in_bits; -} GetBitContext; - -#define VLC_TYPE int16_t - -typedef struct VLC { - int bits; - VLC_TYPE (*table)[2]; ///< code, bits - int table_size, table_allocated; -} VLC; - -typedef struct RL_VLC_ELEM { - int16_t level; - int8_t len; - uint8_t run; -} RL_VLC_ELEM; - -/* Bitstream reader API docs: -name - arbitrary name which is used as prefix for the internal variables - -gb - getbitcontext - -OPEN_READER(name, gb) - loads gb into local variables - -CLOSE_READER(name, gb) - stores local vars in gb - -UPDATE_CACHE(name, gb) - refills the internal cache from the bitstream - after this call at least MIN_CACHE_BITS will be available, - -GET_CACHE(name, gb) - will output the contents of the internal cache, next bit is MSB of 32 or 64 bit (FIXME 64bit) - -SHOW_UBITS(name, gb, num) - will return the next num bits - -SHOW_SBITS(name, gb, num) - will return the next num bits and do sign extension - -SKIP_BITS(name, gb, num) - will skip over the next num bits - note, this is equivalent to SKIP_CACHE; SKIP_COUNTER - -SKIP_CACHE(name, gb, num) - will remove the next num bits from the cache (note SKIP_COUNTER MUST be called before UPDATE_CACHE / CLOSE_READER) - -SKIP_COUNTER(name, gb, num) - will increment the internal bit counter (see SKIP_CACHE & SKIP_BITS) - -LAST_SKIP_CACHE(name, gb, num) - will remove the next num bits from the cache if it is needed for UPDATE_CACHE otherwise it will do nothing - -LAST_SKIP_BITS(name, gb, num) - is equivalent to SKIP_LAST_CACHE; SKIP_COUNTER - -for examples see get_bits, show_bits, skip_bits, get_vlc -*/ - -#ifdef ALT_BITSTREAM_READER -# define MIN_CACHE_BITS 25 - -# define OPEN_READER(name, gb)\ - int name##_index= (gb)->index;\ - int name##_cache= 0;\ - -# define CLOSE_READER(name, gb)\ - (gb)->index= name##_index;\ - -# ifdef ALT_BITSTREAM_READER_LE -# define UPDATE_CACHE(name, gb)\ - name##_cache= AV_RL32( ((const uint8_t *)(gb)->buffer)+(name##_index>>3) ) >> (name##_index&0x07);\ - -# define SKIP_CACHE(name, gb, num)\ - name##_cache >>= (num); -# else -# define UPDATE_CACHE(name, gb)\ - name##_cache= AV_RB32( ((const uint8_t *)(gb)->buffer)+(name##_index>>3) ) << (name##_index&0x07);\ - -# define SKIP_CACHE(name, gb, num)\ - name##_cache <<= (num); -# endif - -// FIXME name? -# define SKIP_COUNTER(name, gb, num)\ - name##_index += (num);\ - -# define SKIP_BITS(name, gb, num)\ - {\ - SKIP_CACHE(name, gb, num)\ - SKIP_COUNTER(name, gb, num)\ - }\ - -# define LAST_SKIP_BITS(name, gb, num) SKIP_COUNTER(name, gb, num) -# define LAST_SKIP_CACHE(name, gb, num) ; - -# ifdef ALT_BITSTREAM_READER_LE -# define SHOW_UBITS(name, gb, num)\ - ((name##_cache) & (NEG_USR32(0xffffffff,num))) - -# define SHOW_SBITS(name, gb, num)\ - NEG_SSR32((name##_cache)<<(32-(num)), num) -# else -# define SHOW_UBITS(name, gb, num)\ - NEG_USR32(name##_cache, num) - -# define SHOW_SBITS(name, gb, num)\ - NEG_SSR32(name##_cache, num) -# endif - -# define GET_CACHE(name, gb)\ - ((uint32_t)name##_cache) - -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 - -# define MIN_CACHE_BITS 17 - -# define OPEN_READER(name, gb)\ - int name##_bit_count=(gb)->bit_count;\ - int name##_cache= (gb)->cache;\ - uint8_t * name##_buffer_ptr=(gb)->buffer_ptr;\ - -# define CLOSE_READER(name, gb)\ - (gb)->bit_count= name##_bit_count;\ - (gb)->cache= name##_cache;\ - (gb)->buffer_ptr= name##_buffer_ptr;\ - -# define UPDATE_CACHE(name, gb)\ - if(name##_bit_count >= 0){\ - name##_cache+= AV_RB16(name##_buffer_ptr) << name##_bit_count; \ - name##_buffer_ptr+=2;\ - name##_bit_count-= 16;\ - }\ - -# define SKIP_CACHE(name, gb, num)\ - name##_cache <<= (num);\ - -# define SKIP_COUNTER(name, gb, num)\ - name##_bit_count += (num);\ - -# define SKIP_BITS(name, gb, num)\ - {\ - SKIP_CACHE(name, gb, num)\ - SKIP_COUNTER(name, gb, num)\ - }\ - -# define LAST_SKIP_BITS(name, gb, num) SKIP_BITS(name, gb, num) -# define LAST_SKIP_CACHE(name, gb, num) SKIP_CACHE(name, gb, num) - -# define SHOW_UBITS(name, gb, num)\ - NEG_USR32(name##_cache, num) - -# define SHOW_SBITS(name, gb, num)\ - NEG_SSR32(name##_cache, num) - -# define GET_CACHE(name, gb)\ - ((uint32_t)name##_cache) - -static inline int get_bits_count(GetBitContext *s){ - return (s->buffer_ptr - s->buffer)*8 - 16 + s->bit_count; -} - -static inline void skip_bits_long(GetBitContext *s, int n){ - OPEN_READER(re, s) - re_bit_count += n; - re_buffer_ptr += 2*(re_bit_count>>4); - re_bit_count &= 15; - re_cache = ((re_buffer_ptr[-2]<<8) + re_buffer_ptr[-1]) << (16+re_bit_count); - UPDATE_CACHE(re, s) - CLOSE_READER(re, s) -} - -#elif defined A32_BITSTREAM_READER - -# define MIN_CACHE_BITS 32 - -# define OPEN_READER(name, gb)\ - int name##_bit_count=(gb)->bit_count;\ - uint32_t name##_cache0= (gb)->cache0;\ - uint32_t name##_cache1= (gb)->cache1;\ - uint32_t * name##_buffer_ptr=(gb)->buffer_ptr;\ - -# define CLOSE_READER(name, gb)\ - (gb)->bit_count= name##_bit_count;\ - (gb)->cache0= name##_cache0;\ - (gb)->cache1= name##_cache1;\ - (gb)->buffer_ptr= name##_buffer_ptr;\ - -# define UPDATE_CACHE(name, gb)\ - if(name##_bit_count > 0){\ - const uint32_t next= be2me_32( *name##_buffer_ptr );\ - name##_cache0 |= NEG_USR32(next,name##_bit_count);\ - name##_cache1 |= next<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 += re_bit_count>>5; - re_bit_count &= 31; - re_cache0 = be2me_32( re_buffer_ptr[-1] ) << re_bit_count; - re_cache1 = 0; - UPDATE_CACHE(re, s) - CLOSE_READER(re, s) -} - -#endif - -/** - * 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 sign; - register int32_t cache; - OPEN_READER(re, s) - UPDATE_CACHE(re, s) - cache = GET_CACHE(re,s); - sign=(~cache)>>31; - LAST_SKIP_BITS(re, s, n) - CLOSE_READER(re, s) - return (NEG_USR32(sign ^ cache, n) ^ sign) - sign; -} - -static inline int get_sbits(GetBitContext *s, int n){ - register int tmp; - OPEN_READER(re, s) - UPDATE_CACHE(re, s) - tmp= SHOW_SBITS(re, s, n); - LAST_SKIP_BITS(re, s, n) - CLOSE_READER(re, s) - return tmp; -} - -/** - * reads 1-17 bits. - * Note, the alt bitstream reader can read up to 25 bits, but the libmpeg2 reader can't - */ -static inline unsigned int get_bits(GetBitContext *s, int n){ - register int tmp; - OPEN_READER(re, s) - UPDATE_CACHE(re, s) - tmp= SHOW_UBITS(re, s, n); - LAST_SKIP_BITS(re, s, n) - CLOSE_READER(re, s) - return tmp; -} - -/** - * shows 1-17 bits. - * Note, the alt bitstream reader can read up to 25 bits, but the libmpeg2 reader can't - */ -static inline unsigned int show_bits(GetBitContext *s, int n){ - register int tmp; - OPEN_READER(re, s) - UPDATE_CACHE(re, s) - tmp= SHOW_UBITS(re, s, n); -// CLOSE_READER(re, s) - return tmp; -} - -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) - UPDATE_CACHE(re, s) - LAST_SKIP_BITS(re, s, n) - CLOSE_READER(re, s) -} - -static inline unsigned int get_bits1(GetBitContext *s){ -#ifdef ALT_BITSTREAM_READER - int index= s->index; - uint8_t result= s->buffer[ index>>3 ]; -#ifdef ALT_BITSTREAM_READER_LE - result>>= (index&0x07); - result&= 1; -#else - result<<= (index&0x07); - result>>= 8 - 1; -#endif - index++; - s->index= index; - - return result; -#else - return get_bits(s, 1); -#endif -} - -static inline unsigned int show_bits1(GetBitContext *s){ - return show_bits(s, 1); -} - -static inline void skip_bits1(GetBitContext *s){ - skip_bits(s, 1); -} - -/** - * reads 0-32 bits. - */ -static inline unsigned int get_bits_long(GetBitContext *s, int n){ - if(n<=17) return get_bits(s, n); - else{ -#ifdef ALT_BITSTREAM_READER_LE - int ret= get_bits(s, 16); - return ret | (get_bits(s, n-16) << 16); -#else - int ret= get_bits(s, 16) << (n-16); - return ret | get_bits(s, n-16); -#endif - } -} - -/** - * reads 0-32 bits as a signed integer. - */ -static inline int get_sbits_long(GetBitContext *s, int n) { - return sign_extend(get_bits_long(s, n), n); -} - -/** - * shows 0-32 bits. - */ -static inline unsigned int show_bits_long(GetBitContext *s, int n){ - if(n<=17) return show_bits(s, n); - else{ - GetBitContext gb= *s; - return get_bits_long(&gb, n); - } -} - -static inline int check_marker(GetBitContext *s, const char *msg) -{ - int bit= get_bits1(s); - if(!bit) - av_log(NULL, AV_LOG_INFO, "Marker bit missing %s\n", msg); - - return bit; -} - -/** - * init GetBitContext. - * @param buffer bitstream buffer, must be FF_INPUT_BUFFER_PADDING_SIZE bytes larger then the actual read bits - * because some optimized bitstream readers read 32 or 64 bit at once and could read over the end - * @param bit_size the size of the buffer in bits - */ -static inline void init_get_bits(GetBitContext *s, - const uint8_t *buffer, int bit_size) -{ - int buffer_size= (bit_size+7)>>3; - if(buffer_size < 0 || bit_size < 0) { - buffer_size = bit_size = 0; - buffer = NULL; - } - - s->buffer= buffer; - s->size_in_bits= bit_size; - s->buffer_end= buffer + buffer_size; -#ifdef ALT_BITSTREAM_READER - s->index=0; -#elif defined LIBMPEG2_BITSTREAM_READER - s->buffer_ptr = (uint8_t*)((intptr_t)buffer&(~1)); - s->bit_count = 16 + 8*((intptr_t)buffer&1); - skip_bits_long(s, 0); -#elif defined A32_BITSTREAM_READER - s->buffer_ptr = (uint32_t*)((intptr_t)buffer&(~3)); - s->bit_count = 32 + 8*((intptr_t)buffer&3); - skip_bits_long(s, 0); -#endif -} - -static inline void align_get_bits(GetBitContext *s) -{ - int n= (-get_bits_count(s)) & 7; - if(n) skip_bits(s, n); -} - -#define init_vlc(vlc, nb_bits, nb_codes,\ - bits, bits_wrap, bits_size,\ - codes, codes_wrap, codes_size,\ - flags)\ - init_vlc_sparse(vlc, nb_bits, nb_codes,\ - bits, bits_wrap, bits_size,\ - codes, codes_wrap, codes_size,\ - NULL, 0, 0, flags) - -int init_vlc_sparse(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, - const void *symbols, int symbols_wrap, int symbols_size, - int flags); -#define INIT_VLC_USE_STATIC 1 ///< VERY strongly deprecated and forbidden -#define INIT_VLC_LE 2 -#define INIT_VLC_USE_NEW_STATIC 4 -void free_vlc(VLC *vlc); - -#define INIT_VLC_STATIC(vlc, bits, a,b,c,d,e,f,g, static_size)\ -{\ - static VLC_TYPE table[static_size][2];\ - (vlc)->table= table;\ - (vlc)->table_allocated= static_size;\ - init_vlc(vlc, bits, a,b,c,d,e,f,g, INIT_VLC_USE_NEW_STATIC);\ -} - - -/** - * - * if the vlc code is invalid and max_depth=1 than no bits will be removed - * if the vlc code is invalid and max_depth>1 than the number of bits removed - * is undefined - */ -#define GET_VLC(code, name, gb, table, bits, max_depth)\ -{\ - int n, index, nb_bits;\ -\ - index= SHOW_UBITS(name, gb, bits);\ - code = table[index][0];\ - n = table[index][1];\ -\ - if(max_depth > 1 && n < 0){\ - LAST_SKIP_BITS(name, gb, bits)\ - UPDATE_CACHE(name, gb)\ -\ - nb_bits = -n;\ -\ - index= SHOW_UBITS(name, gb, nb_bits) + code;\ - code = table[index][0];\ - n = table[index][1];\ - if(max_depth > 2 && n < 0){\ - LAST_SKIP_BITS(name, gb, nb_bits)\ - UPDATE_CACHE(name, gb)\ -\ - nb_bits = -n;\ -\ - index= SHOW_UBITS(name, gb, nb_bits) + code;\ - code = table[index][0];\ - n = table[index][1];\ - }\ - }\ - SKIP_BITS(name, gb, n)\ -} - -#define GET_RL_VLC(level, run, name, gb, table, bits, max_depth, need_update)\ -{\ - int n, index, nb_bits;\ -\ - index= SHOW_UBITS(name, gb, bits);\ - level = table[index].level;\ - n = table[index].len;\ -\ - if(max_depth > 1 && n < 0){\ - SKIP_BITS(name, gb, bits)\ - if(need_update){\ - UPDATE_CACHE(name, gb)\ - }\ -\ - nb_bits = -n;\ -\ - index= SHOW_UBITS(name, gb, nb_bits) + level;\ - level = table[index].level;\ - n = table[index].len;\ - }\ - run= table[index].run;\ - SKIP_BITS(name, gb, n)\ -} - - -/** - * parses a vlc code, faster then get_vlc() - * @param bits is the number of bits which will be read at once, must be - * identical to nb_bits in init_vlc() - * @param max_depth is the number of times bits bits must be read to completely - * read the longest vlc code - * = (max_vlc_length + bits - 1) / bits - */ -static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE (*table)[2], - int bits, int max_depth) -{ - int code; - - OPEN_READER(re, s) - UPDATE_CACHE(re, s) - - GET_VLC(code, re, s, table, bits, max_depth) - - CLOSE_READER(re, s) - return code; -} - -//#define TRACE - -#ifdef TRACE -static inline void print_bin(int bits, int n){ - int i; - - for(i=n-1; i>=0; i--){ - av_log(NULL, AV_LOG_DEBUG, "%d", (bits>>i)&1); - } - for(i=n; i<24; i++) - av_log(NULL, AV_LOG_DEBUG, " "); -} - -static inline int get_bits_trace(GetBitContext *s, int n, char *file, const char *func, int line){ - int r= get_bits(s, n); - - print_bin(r, n); - av_log(NULL, AV_LOG_DEBUG, "%5d %2d %3d bit @%5d in %s %s:%d\n", r, n, r, get_bits_count(s)-n, file, func, line); - return r; -} -static inline int get_vlc_trace(GetBitContext *s, VLC_TYPE (*table)[2], int bits, int max_depth, char *file, const char *func, int line){ - int show= show_bits(s, 24); - int pos= get_bits_count(s); - int r= get_vlc2(s, table, bits, max_depth); - int len= get_bits_count(s) - pos; - int bits2= show>>(24-len); - - print_bin(bits2, len); - - av_log(NULL, AV_LOG_DEBUG, "%5d %2d %3d vlc @%5d in %s %s:%d\n", bits2, len, r, pos, file, func, line); - return r; -} -static inline int get_xbits_trace(GetBitContext *s, int n, char *file, const char *func, int line){ - int show= show_bits(s, n); - int r= get_xbits(s, n); - - print_bin(show, n); - av_log(NULL, AV_LOG_DEBUG, "%5d %2d %3d xbt @%5d in %s %s:%d\n", show, n, r, get_bits_count(s)-n, file, func, line); - return r; -} - -#define get_bits(s, n) get_bits_trace(s, n, __FILE__, __PRETTY_FUNCTION__, __LINE__) -#define get_bits1(s) get_bits_trace(s, 1, __FILE__, __PRETTY_FUNCTION__, __LINE__) -#define get_xbits(s, n) get_xbits_trace(s, n, __FILE__, __PRETTY_FUNCTION__, __LINE__) -#define get_vlc(s, vlc) get_vlc_trace(s, (vlc)->table, (vlc)->bits, 3, __FILE__, __PRETTY_FUNCTION__, __LINE__) -#define get_vlc2(s, tab, bits, max) get_vlc_trace(s, tab, bits, max, __FILE__, __PRETTY_FUNCTION__, __LINE__) - -#define tprintf(p, ...) av_log(p, AV_LOG_DEBUG, __VA_ARGS__) - -#else //TRACE -#define tprintf(p, ...) {} -#endif - -static inline int decode012(GetBitContext *gb){ - int n; - n = get_bits1(gb); - if (n == 0) - return 0; - else - return get_bits1(gb) + 1; -} - -static inline int decode210(GetBitContext *gb){ - if (get_bits1(gb)) - return 0; - else - return 2 - get_bits1(gb); -} - -#endif /* AVCODEC_BITSTREAM_H */ diff -r 4c1fb7723412 -r 0dce4fe6e6f3 cabac.c --- a/cabac.c Mon Apr 13 15:11:40 2009 +0000 +++ b/cabac.c Mon Apr 13 16:20:26 2009 +0000 @@ -27,7 +27,7 @@ #include #include "libavutil/common.h" -#include "bitstream.h" +#include "get_bits.h" #include "cabac.h" static const uint8_t lps_range[64][4]= { diff -r 4c1fb7723412 -r 0dce4fe6e6f3 cavs.c --- a/cavs.c Mon Apr 13 15:11:40 2009 +0000 +++ b/cavs.c Mon Apr 13 16:20:26 2009 +0000 @@ -26,7 +26,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "golomb.h" #include "mathops.h" #include "cavs.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 cavsdec.c --- a/cavsdec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/cavsdec.c Mon Apr 13 16:20:26 2009 +0000 @@ -26,7 +26,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "golomb.h" #include "cavs.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 cljr.c --- a/cljr.c Mon Apr 13 15:11:40 2009 +0000 +++ b/cljr.c Mon Apr 13 16:20:26 2009 +0000 @@ -26,7 +26,7 @@ #include "avcodec.h" #include "dsputil.h" -#include "bitstream.h" +#include "get_bits.h" /* Disable the encoder. */ #undef CONFIG_CLJR_ENCODER diff -r 4c1fb7723412 -r 0dce4fe6e6f3 cook.c --- a/cook.c Mon Apr 13 15:11:40 2009 +0000 +++ b/cook.c Mon Apr 13 16:20:26 2009 +0000 @@ -49,7 +49,7 @@ #include "libavutil/lfg.h" #include "libavutil/random_seed.h" #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "bytestream.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 dca.c --- a/dca.c Mon Apr 13 15:11:40 2009 +0000 +++ b/dca.c Mon Apr 13 16:20:26 2009 +0000 @@ -32,7 +32,7 @@ #include "avcodec.h" #include "dsputil.h" -#include "bitstream.h" +#include "get_bits.h" #include "put_bits.h" #include "dcadata.h" #include "dcahuff.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 dnxhddec.c --- a/dnxhddec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/dnxhddec.c Mon Apr 13 16:20:26 2009 +0000 @@ -23,7 +23,7 @@ //#define DEBUG #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dnxhddata.h" #include "dsputil.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 dv.c --- a/dv.c Mon Apr 13 15:11:40 2009 +0000 +++ b/dv.c Mon Apr 13 16:20:26 2009 +0000 @@ -40,7 +40,7 @@ #define ALT_BITSTREAM_READER #include "avcodec.h" #include "dsputil.h" -#include "bitstream.h" +#include "get_bits.h" #include "put_bits.h" #include "simple_idct.h" #include "dvdata.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 dvbsub_parser.c --- a/dvbsub_parser.c Mon Apr 13 15:11:40 2009 +0000 +++ b/dvbsub_parser.c Mon Apr 13 16:20:26 2009 +0000 @@ -20,7 +20,7 @@ */ #include "avcodec.h" #include "dsputil.h" -#include "bitstream.h" +#include "get_bits.h" //#define DEBUG //#define DEBUG_PACKET_CONTENTS diff -r 4c1fb7723412 -r 0dce4fe6e6f3 dvbsubdec.c --- a/dvbsubdec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/dvbsubdec.c Mon Apr 13 16:20:26 2009 +0000 @@ -20,7 +20,7 @@ */ #include "avcodec.h" #include "dsputil.h" -#include "bitstream.h" +#include "get_bits.h" #include "colorspace.h" //#define DEBUG diff -r 4c1fb7723412 -r 0dce4fe6e6f3 dvdsubdec.c --- a/dvdsubdec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/dvdsubdec.c Mon Apr 13 16:20:26 2009 +0000 @@ -19,7 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "colorspace.h" #include "dsputil.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 eatgq.c --- a/eatgq.c Mon Apr 13 15:11:40 2009 +0000 +++ b/eatgq.c Mon Apr 13 16:20:26 2009 +0000 @@ -30,7 +30,7 @@ #include "avcodec.h" #define ALT_BITSTREAM_READER_LE -#include "bitstream.h" +#include "get_bits.h" #include "bytestream.h" #include "dsputil.h" #include "aandcttab.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 eatgv.c --- a/eatgv.c Mon Apr 13 15:11:40 2009 +0000 +++ b/eatgv.c Mon Apr 13 16:20:26 2009 +0000 @@ -30,7 +30,7 @@ #include "avcodec.h" #define ALT_BITSTREAM_READER_LE -#include "bitstream.h" +#include "get_bits.h" #include "libavutil/lzo.h" #define EA_PREAMBLE_SIZE 8 diff -r 4c1fb7723412 -r 0dce4fe6e6f3 eatqi.c --- a/eatqi.c Mon Apr 13 15:11:40 2009 +0000 +++ b/eatqi.c Mon Apr 13 16:20:26 2009 +0000 @@ -29,7 +29,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "aandcttab.h" #include "mpeg12.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 escape124.c --- a/escape124.c Mon Apr 13 15:11:40 2009 +0000 +++ b/escape124.c Mon Apr 13 16:20:26 2009 +0000 @@ -22,7 +22,7 @@ #include "avcodec.h" #define ALT_BITSTREAM_READER_LE -#include "bitstream.h" +#include "get_bits.h" typedef union MacroBlock { uint16_t pixels[4]; diff -r 4c1fb7723412 -r 0dce4fe6e6f3 faxcompr.c --- a/faxcompr.c Mon Apr 13 15:11:40 2009 +0000 +++ b/faxcompr.c Mon Apr 13 16:20:26 2009 +0000 @@ -25,7 +25,7 @@ * @author Konstantin Shishkov */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "put_bits.h" #include "faxcompr.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 ffv1.c --- a/ffv1.c Mon Apr 13 15:11:40 2009 +0000 +++ b/ffv1.c Mon Apr 13 16:20:26 2009 +0000 @@ -26,7 +26,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "put_bits.h" #include "dsputil.h" #include "rangecoder.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 flacdec.c --- a/flacdec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/flacdec.c Mon Apr 13 16:20:26 2009 +0000 @@ -38,7 +38,7 @@ #include "libavutil/crc.h" #include "avcodec.h" #include "internal.h" -#include "bitstream.h" +#include "get_bits.h" #include "bytestream.h" #include "golomb.h" #include "flac.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 flacenc.c --- a/flacenc.c Mon Apr 13 15:11:40 2009 +0000 +++ b/flacenc.c Mon Apr 13 16:20:26 2009 +0000 @@ -23,7 +23,7 @@ #include "libavutil/lls.h" #include "libavutil/md5.h" #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "golomb.h" #include "lpc.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 flashsv.c --- a/flashsv.c Mon Apr 13 15:11:40 2009 +0000 +++ b/flashsv.c Mon Apr 13 16:20:26 2009 +0000 @@ -51,7 +51,7 @@ #include #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include diff -r 4c1fb7723412 -r 0dce4fe6e6f3 fraps.c --- a/fraps.c Mon Apr 13 15:11:40 2009 +0000 +++ b/fraps.c Mon Apr 13 16:20:26 2009 +0000 @@ -32,7 +32,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "huffman.h" #include "bytestream.h" #include "dsputil.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 g726.c --- a/g726.c Mon Apr 13 15:11:40 2009 +0000 +++ b/g726.c Mon Apr 13 16:20:26 2009 +0000 @@ -23,7 +23,7 @@ */ #include #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "put_bits.h" /** diff -r 4c1fb7723412 -r 0dce4fe6e6f3 g729dec.c --- a/g729dec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/g729dec.c Mon Apr 13 16:20:26 2009 +0000 @@ -28,7 +28,7 @@ #include "avcodec.h" #include "libavutil/avutil.h" -#include "bitstream.h" +#include "get_bits.h" #include "g729.h" #include "lsp.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 get_bits.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/get_bits.h Mon Apr 13 16:20:26 2009 +0000 @@ -0,0 +1,705 @@ +/* + * copyright (c) 2004 Michael Niedermayer + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file libavcodec/get_bits.h + * bitstream reader API header. + */ + +#ifndef AVCODEC_GET_BITS_H +#define AVCODEC_GET_BITS_H + +#include +#include +#include +#include "libavutil/bswap.h" +#include "libavutil/common.h" +#include "libavutil/intreadwrite.h" +#include "libavutil/log.h" +#include "mathops.h" + +#if defined(ALT_BITSTREAM_READER_LE) && !defined(ALT_BITSTREAM_READER) +# define ALT_BITSTREAM_READER +#endif + +#if !defined(LIBMPEG2_BITSTREAM_READER) && !defined(A32_BITSTREAM_READER) && !defined(ALT_BITSTREAM_READER) +# if ARCH_ARM +# define A32_BITSTREAM_READER +# else +# define ALT_BITSTREAM_READER +//#define LIBMPEG2_BITSTREAM_READER +//#define A32_BITSTREAM_READER +# endif +#endif + +extern const uint8_t ff_reverse[256]; + +#if ARCH_X86 +// avoid +32 for shift optimization (gcc should do that ...) +static inline int32_t NEG_SSR32( int32_t a, int8_t s){ + __asm__ ("sarl %1, %0\n\t" + : "+r" (a) + : "ic" ((uint8_t)(-s)) + ); + return a; +} +static inline uint32_t NEG_USR32(uint32_t a, int8_t s){ + __asm__ ("shrl %1, %0\n\t" + : "+r" (a) + : "ic" ((uint8_t)(-s)) + ); + return a; +} +#else +# define NEG_SSR32(a,s) ((( int32_t)(a))>>(32-(s))) +# define NEG_USR32(a,s) (((uint32_t)(a))>>(32-(s))) +#endif + +/* bit input */ +/* buffer, buffer_end and size_in_bits must be present and used by every reader */ +typedef struct GetBitContext { + const uint8_t *buffer, *buffer_end; +#ifdef ALT_BITSTREAM_READER + int index; +#elif defined LIBMPEG2_BITSTREAM_READER + uint8_t *buffer_ptr; + uint32_t cache; + int bit_count; +#elif defined A32_BITSTREAM_READER + uint32_t *buffer_ptr; + uint32_t cache0; + uint32_t cache1; + int bit_count; +#endif + int size_in_bits; +} GetBitContext; + +#define VLC_TYPE int16_t + +typedef struct VLC { + int bits; + VLC_TYPE (*table)[2]; ///< code, bits + int table_size, table_allocated; +} VLC; + +typedef struct RL_VLC_ELEM { + int16_t level; + int8_t len; + uint8_t run; +} RL_VLC_ELEM; + +/* Bitstream reader API docs: +name + arbitrary name which is used as prefix for the internal variables + +gb + getbitcontext + +OPEN_READER(name, gb) + loads gb into local variables + +CLOSE_READER(name, gb) + stores local vars in gb + +UPDATE_CACHE(name, gb) + refills the internal cache from the bitstream + after this call at least MIN_CACHE_BITS will be available, + +GET_CACHE(name, gb) + will output the contents of the internal cache, next bit is MSB of 32 or 64 bit (FIXME 64bit) + +SHOW_UBITS(name, gb, num) + will return the next num bits + +SHOW_SBITS(name, gb, num) + will return the next num bits and do sign extension + +SKIP_BITS(name, gb, num) + will skip over the next num bits + note, this is equivalent to SKIP_CACHE; SKIP_COUNTER + +SKIP_CACHE(name, gb, num) + will remove the next num bits from the cache (note SKIP_COUNTER MUST be called before UPDATE_CACHE / CLOSE_READER) + +SKIP_COUNTER(name, gb, num) + will increment the internal bit counter (see SKIP_CACHE & SKIP_BITS) + +LAST_SKIP_CACHE(name, gb, num) + will remove the next num bits from the cache if it is needed for UPDATE_CACHE otherwise it will do nothing + +LAST_SKIP_BITS(name, gb, num) + is equivalent to SKIP_LAST_CACHE; SKIP_COUNTER + +for examples see get_bits, show_bits, skip_bits, get_vlc +*/ + +#ifdef ALT_BITSTREAM_READER +# define MIN_CACHE_BITS 25 + +# define OPEN_READER(name, gb)\ + int name##_index= (gb)->index;\ + int name##_cache= 0;\ + +# define CLOSE_READER(name, gb)\ + (gb)->index= name##_index;\ + +# ifdef ALT_BITSTREAM_READER_LE +# define UPDATE_CACHE(name, gb)\ + name##_cache= AV_RL32( ((const uint8_t *)(gb)->buffer)+(name##_index>>3) ) >> (name##_index&0x07);\ + +# define SKIP_CACHE(name, gb, num)\ + name##_cache >>= (num); +# else +# define UPDATE_CACHE(name, gb)\ + name##_cache= AV_RB32( ((const uint8_t *)(gb)->buffer)+(name##_index>>3) ) << (name##_index&0x07);\ + +# define SKIP_CACHE(name, gb, num)\ + name##_cache <<= (num); +# endif + +// FIXME name? +# define SKIP_COUNTER(name, gb, num)\ + name##_index += (num);\ + +# define SKIP_BITS(name, gb, num)\ + {\ + SKIP_CACHE(name, gb, num)\ + SKIP_COUNTER(name, gb, num)\ + }\ + +# define LAST_SKIP_BITS(name, gb, num) SKIP_COUNTER(name, gb, num) +# define LAST_SKIP_CACHE(name, gb, num) ; + +# ifdef ALT_BITSTREAM_READER_LE +# define SHOW_UBITS(name, gb, num)\ + ((name##_cache) & (NEG_USR32(0xffffffff,num))) + +# define SHOW_SBITS(name, gb, num)\ + NEG_SSR32((name##_cache)<<(32-(num)), num) +# else +# define SHOW_UBITS(name, gb, num)\ + NEG_USR32(name##_cache, num) + +# define SHOW_SBITS(name, gb, num)\ + NEG_SSR32(name##_cache, num) +# endif + +# define GET_CACHE(name, gb)\ + ((uint32_t)name##_cache) + +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 + +# define MIN_CACHE_BITS 17 + +# define OPEN_READER(name, gb)\ + int name##_bit_count=(gb)->bit_count;\ + int name##_cache= (gb)->cache;\ + uint8_t * name##_buffer_ptr=(gb)->buffer_ptr;\ + +# define CLOSE_READER(name, gb)\ + (gb)->bit_count= name##_bit_count;\ + (gb)->cache= name##_cache;\ + (gb)->buffer_ptr= name##_buffer_ptr;\ + +# define UPDATE_CACHE(name, gb)\ + if(name##_bit_count >= 0){\ + name##_cache+= AV_RB16(name##_buffer_ptr) << name##_bit_count; \ + name##_buffer_ptr+=2;\ + name##_bit_count-= 16;\ + }\ + +# define SKIP_CACHE(name, gb, num)\ + name##_cache <<= (num);\ + +# define SKIP_COUNTER(name, gb, num)\ + name##_bit_count += (num);\ + +# define SKIP_BITS(name, gb, num)\ + {\ + SKIP_CACHE(name, gb, num)\ + SKIP_COUNTER(name, gb, num)\ + }\ + +# define LAST_SKIP_BITS(name, gb, num) SKIP_BITS(name, gb, num) +# define LAST_SKIP_CACHE(name, gb, num) SKIP_CACHE(name, gb, num) + +# define SHOW_UBITS(name, gb, num)\ + NEG_USR32(name##_cache, num) + +# define SHOW_SBITS(name, gb, num)\ + NEG_SSR32(name##_cache, num) + +# define GET_CACHE(name, gb)\ + ((uint32_t)name##_cache) + +static inline int get_bits_count(GetBitContext *s){ + return (s->buffer_ptr - s->buffer)*8 - 16 + s->bit_count; +} + +static inline void skip_bits_long(GetBitContext *s, int n){ + OPEN_READER(re, s) + re_bit_count += n; + re_buffer_ptr += 2*(re_bit_count>>4); + re_bit_count &= 15; + re_cache = ((re_buffer_ptr[-2]<<8) + re_buffer_ptr[-1]) << (16+re_bit_count); + UPDATE_CACHE(re, s) + CLOSE_READER(re, s) +} + +#elif defined A32_BITSTREAM_READER + +# define MIN_CACHE_BITS 32 + +# define OPEN_READER(name, gb)\ + int name##_bit_count=(gb)->bit_count;\ + uint32_t name##_cache0= (gb)->cache0;\ + uint32_t name##_cache1= (gb)->cache1;\ + uint32_t * name##_buffer_ptr=(gb)->buffer_ptr;\ + +# define CLOSE_READER(name, gb)\ + (gb)->bit_count= name##_bit_count;\ + (gb)->cache0= name##_cache0;\ + (gb)->cache1= name##_cache1;\ + (gb)->buffer_ptr= name##_buffer_ptr;\ + +# define UPDATE_CACHE(name, gb)\ + if(name##_bit_count > 0){\ + const uint32_t next= be2me_32( *name##_buffer_ptr );\ + name##_cache0 |= NEG_USR32(next,name##_bit_count);\ + name##_cache1 |= next<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 += re_bit_count>>5; + re_bit_count &= 31; + re_cache0 = be2me_32( re_buffer_ptr[-1] ) << re_bit_count; + re_cache1 = 0; + UPDATE_CACHE(re, s) + CLOSE_READER(re, s) +} + +#endif + +/** + * 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 sign; + register int32_t cache; + OPEN_READER(re, s) + UPDATE_CACHE(re, s) + cache = GET_CACHE(re,s); + sign=(~cache)>>31; + LAST_SKIP_BITS(re, s, n) + CLOSE_READER(re, s) + return (NEG_USR32(sign ^ cache, n) ^ sign) - sign; +} + +static inline int get_sbits(GetBitContext *s, int n){ + register int tmp; + OPEN_READER(re, s) + UPDATE_CACHE(re, s) + tmp= SHOW_SBITS(re, s, n); + LAST_SKIP_BITS(re, s, n) + CLOSE_READER(re, s) + return tmp; +} + +/** + * reads 1-17 bits. + * Note, the alt bitstream reader can read up to 25 bits, but the libmpeg2 reader can't + */ +static inline unsigned int get_bits(GetBitContext *s, int n){ + register int tmp; + OPEN_READER(re, s) + UPDATE_CACHE(re, s) + tmp= SHOW_UBITS(re, s, n); + LAST_SKIP_BITS(re, s, n) + CLOSE_READER(re, s) + return tmp; +} + +/** + * shows 1-17 bits. + * Note, the alt bitstream reader can read up to 25 bits, but the libmpeg2 reader can't + */ +static inline unsigned int show_bits(GetBitContext *s, int n){ + register int tmp; + OPEN_READER(re, s) + UPDATE_CACHE(re, s) + tmp= SHOW_UBITS(re, s, n); +// CLOSE_READER(re, s) + return tmp; +} + +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) + UPDATE_CACHE(re, s) + LAST_SKIP_BITS(re, s, n) + CLOSE_READER(re, s) +} + +static inline unsigned int get_bits1(GetBitContext *s){ +#ifdef ALT_BITSTREAM_READER + int index= s->index; + uint8_t result= s->buffer[ index>>3 ]; +#ifdef ALT_BITSTREAM_READER_LE + result>>= (index&0x07); + result&= 1; +#else + result<<= (index&0x07); + result>>= 8 - 1; +#endif + index++; + s->index= index; + + return result; +#else + return get_bits(s, 1); +#endif +} + +static inline unsigned int show_bits1(GetBitContext *s){ + return show_bits(s, 1); +} + +static inline void skip_bits1(GetBitContext *s){ + skip_bits(s, 1); +} + +/** + * reads 0-32 bits. + */ +static inline unsigned int get_bits_long(GetBitContext *s, int n){ + if(n<=17) return get_bits(s, n); + else{ +#ifdef ALT_BITSTREAM_READER_LE + int ret= get_bits(s, 16); + return ret | (get_bits(s, n-16) << 16); +#else + int ret= get_bits(s, 16) << (n-16); + return ret | get_bits(s, n-16); +#endif + } +} + +/** + * reads 0-32 bits as a signed integer. + */ +static inline int get_sbits_long(GetBitContext *s, int n) { + return sign_extend(get_bits_long(s, n), n); +} + +/** + * shows 0-32 bits. + */ +static inline unsigned int show_bits_long(GetBitContext *s, int n){ + if(n<=17) return show_bits(s, n); + else{ + GetBitContext gb= *s; + return get_bits_long(&gb, n); + } +} + +static inline int check_marker(GetBitContext *s, const char *msg) +{ + int bit= get_bits1(s); + if(!bit) + av_log(NULL, AV_LOG_INFO, "Marker bit missing %s\n", msg); + + return bit; +} + +/** + * init GetBitContext. + * @param buffer bitstream buffer, must be FF_INPUT_BUFFER_PADDING_SIZE bytes larger then the actual read bits + * because some optimized bitstream readers read 32 or 64 bit at once and could read over the end + * @param bit_size the size of the buffer in bits + */ +static inline void init_get_bits(GetBitContext *s, + const uint8_t *buffer, int bit_size) +{ + int buffer_size= (bit_size+7)>>3; + if(buffer_size < 0 || bit_size < 0) { + buffer_size = bit_size = 0; + buffer = NULL; + } + + s->buffer= buffer; + s->size_in_bits= bit_size; + s->buffer_end= buffer + buffer_size; +#ifdef ALT_BITSTREAM_READER + s->index=0; +#elif defined LIBMPEG2_BITSTREAM_READER + s->buffer_ptr = (uint8_t*)((intptr_t)buffer&(~1)); + s->bit_count = 16 + 8*((intptr_t)buffer&1); + skip_bits_long(s, 0); +#elif defined A32_BITSTREAM_READER + s->buffer_ptr = (uint32_t*)((intptr_t)buffer&(~3)); + s->bit_count = 32 + 8*((intptr_t)buffer&3); + skip_bits_long(s, 0); +#endif +} + +static inline void align_get_bits(GetBitContext *s) +{ + int n= (-get_bits_count(s)) & 7; + if(n) skip_bits(s, n); +} + +#define init_vlc(vlc, nb_bits, nb_codes,\ + bits, bits_wrap, bits_size,\ + codes, codes_wrap, codes_size,\ + flags)\ + init_vlc_sparse(vlc, nb_bits, nb_codes,\ + bits, bits_wrap, bits_size,\ + codes, codes_wrap, codes_size,\ + NULL, 0, 0, flags) + +int init_vlc_sparse(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, + const void *symbols, int symbols_wrap, int symbols_size, + int flags); +#define INIT_VLC_USE_STATIC 1 ///< VERY strongly deprecated and forbidden +#define INIT_VLC_LE 2 +#define INIT_VLC_USE_NEW_STATIC 4 +void free_vlc(VLC *vlc); + +#define INIT_VLC_STATIC(vlc, bits, a,b,c,d,e,f,g, static_size)\ +{\ + static VLC_TYPE table[static_size][2];\ + (vlc)->table= table;\ + (vlc)->table_allocated= static_size;\ + init_vlc(vlc, bits, a,b,c,d,e,f,g, INIT_VLC_USE_NEW_STATIC);\ +} + + +/** + * + * if the vlc code is invalid and max_depth=1 than no bits will be removed + * if the vlc code is invalid and max_depth>1 than the number of bits removed + * is undefined + */ +#define GET_VLC(code, name, gb, table, bits, max_depth)\ +{\ + int n, index, nb_bits;\ +\ + index= SHOW_UBITS(name, gb, bits);\ + code = table[index][0];\ + n = table[index][1];\ +\ + if(max_depth > 1 && n < 0){\ + LAST_SKIP_BITS(name, gb, bits)\ + UPDATE_CACHE(name, gb)\ +\ + nb_bits = -n;\ +\ + index= SHOW_UBITS(name, gb, nb_bits) + code;\ + code = table[index][0];\ + n = table[index][1];\ + if(max_depth > 2 && n < 0){\ + LAST_SKIP_BITS(name, gb, nb_bits)\ + UPDATE_CACHE(name, gb)\ +\ + nb_bits = -n;\ +\ + index= SHOW_UBITS(name, gb, nb_bits) + code;\ + code = table[index][0];\ + n = table[index][1];\ + }\ + }\ + SKIP_BITS(name, gb, n)\ +} + +#define GET_RL_VLC(level, run, name, gb, table, bits, max_depth, need_update)\ +{\ + int n, index, nb_bits;\ +\ + index= SHOW_UBITS(name, gb, bits);\ + level = table[index].level;\ + n = table[index].len;\ +\ + if(max_depth > 1 && n < 0){\ + SKIP_BITS(name, gb, bits)\ + if(need_update){\ + UPDATE_CACHE(name, gb)\ + }\ +\ + nb_bits = -n;\ +\ + index= SHOW_UBITS(name, gb, nb_bits) + level;\ + level = table[index].level;\ + n = table[index].len;\ + }\ + run= table[index].run;\ + SKIP_BITS(name, gb, n)\ +} + + +/** + * parses a vlc code, faster then get_vlc() + * @param bits is the number of bits which will be read at once, must be + * identical to nb_bits in init_vlc() + * @param max_depth is the number of times bits bits must be read to completely + * read the longest vlc code + * = (max_vlc_length + bits - 1) / bits + */ +static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE (*table)[2], + int bits, int max_depth) +{ + int code; + + OPEN_READER(re, s) + UPDATE_CACHE(re, s) + + GET_VLC(code, re, s, table, bits, max_depth) + + CLOSE_READER(re, s) + return code; +} + +//#define TRACE + +#ifdef TRACE +static inline void print_bin(int bits, int n){ + int i; + + for(i=n-1; i>=0; i--){ + av_log(NULL, AV_LOG_DEBUG, "%d", (bits>>i)&1); + } + for(i=n; i<24; i++) + av_log(NULL, AV_LOG_DEBUG, " "); +} + +static inline int get_bits_trace(GetBitContext *s, int n, char *file, const char *func, int line){ + int r= get_bits(s, n); + + print_bin(r, n); + av_log(NULL, AV_LOG_DEBUG, "%5d %2d %3d bit @%5d in %s %s:%d\n", r, n, r, get_bits_count(s)-n, file, func, line); + return r; +} +static inline int get_vlc_trace(GetBitContext *s, VLC_TYPE (*table)[2], int bits, int max_depth, char *file, const char *func, int line){ + int show= show_bits(s, 24); + int pos= get_bits_count(s); + int r= get_vlc2(s, table, bits, max_depth); + int len= get_bits_count(s) - pos; + int bits2= show>>(24-len); + + print_bin(bits2, len); + + av_log(NULL, AV_LOG_DEBUG, "%5d %2d %3d vlc @%5d in %s %s:%d\n", bits2, len, r, pos, file, func, line); + return r; +} +static inline int get_xbits_trace(GetBitContext *s, int n, char *file, const char *func, int line){ + int show= show_bits(s, n); + int r= get_xbits(s, n); + + print_bin(show, n); + av_log(NULL, AV_LOG_DEBUG, "%5d %2d %3d xbt @%5d in %s %s:%d\n", show, n, r, get_bits_count(s)-n, file, func, line); + return r; +} + +#define get_bits(s, n) get_bits_trace(s, n, __FILE__, __PRETTY_FUNCTION__, __LINE__) +#define get_bits1(s) get_bits_trace(s, 1, __FILE__, __PRETTY_FUNCTION__, __LINE__) +#define get_xbits(s, n) get_xbits_trace(s, n, __FILE__, __PRETTY_FUNCTION__, __LINE__) +#define get_vlc(s, vlc) get_vlc_trace(s, (vlc)->table, (vlc)->bits, 3, __FILE__, __PRETTY_FUNCTION__, __LINE__) +#define get_vlc2(s, tab, bits, max) get_vlc_trace(s, tab, bits, max, __FILE__, __PRETTY_FUNCTION__, __LINE__) + +#define tprintf(p, ...) av_log(p, AV_LOG_DEBUG, __VA_ARGS__) + +#else //TRACE +#define tprintf(p, ...) {} +#endif + +static inline int decode012(GetBitContext *gb){ + int n; + n = get_bits1(gb); + if (n == 0) + return 0; + else + return get_bits1(gb) + 1; +} + +static inline int decode210(GetBitContext *gb){ + if (get_bits1(gb)) + return 0; + else + return 2 - get_bits1(gb); +} + +#endif /* AVCODEC_GET_BITS_H */ diff -r 4c1fb7723412 -r 0dce4fe6e6f3 golomb.h --- a/golomb.h Mon Apr 13 15:11:40 2009 +0000 +++ b/golomb.h Mon Apr 13 16:20:26 2009 +0000 @@ -31,7 +31,7 @@ #define AVCODEC_GOLOMB_H #include -#include "bitstream.h" +#include "get_bits.h" #include "put_bits.h" #define INVALID_VLC 0x80000000 diff -r 4c1fb7723412 -r 0dce4fe6e6f3 h264enc.c --- a/h264enc.c Mon Apr 13 15:11:40 2009 +0000 +++ b/h264enc.c Mon Apr 13 16:20:26 2009 +0000 @@ -20,7 +20,7 @@ #include "libavutil/common.h" -#include "bitstream.h" +#include "get_bits.h" #include "mpegvideo.h" #include "h264data.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 huffman.c --- a/huffman.c Mon Apr 13 15:11:40 2009 +0000 +++ b/huffman.c Mon Apr 13 16:20:26 2009 +0000 @@ -21,7 +21,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "huffman.h" /* symbol for Huffman tree node */ diff -r 4c1fb7723412 -r 0dce4fe6e6f3 huffman.h --- a/huffman.h Mon Apr 13 15:11:40 2009 +0000 +++ b/huffman.h Mon Apr 13 16:20:26 2009 +0000 @@ -24,7 +24,7 @@ #define AVCODEC_HUFFMAN_H #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" typedef struct { int16_t sym; diff -r 4c1fb7723412 -r 0dce4fe6e6f3 huffyuv.c --- a/huffyuv.c Mon Apr 13 15:11:40 2009 +0000 +++ b/huffyuv.c Mon Apr 13 16:20:26 2009 +0000 @@ -29,7 +29,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "put_bits.h" #include "dsputil.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 imc.c --- a/imc.c Mon Apr 13 15:11:40 2009 +0000 +++ b/imc.c Mon Apr 13 16:20:26 2009 +0000 @@ -36,7 +36,7 @@ #define ALT_BITSTREAM_READER #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "imcdata.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 indeo2.c --- a/indeo2.c Mon Apr 13 15:11:40 2009 +0000 +++ b/indeo2.c Mon Apr 13 16:20:26 2009 +0000 @@ -25,7 +25,7 @@ */ #define ALT_BITSTREAM_READER_LE #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "indeo2data.h" typedef struct Ir2Context{ diff -r 4c1fb7723412 -r 0dce4fe6e6f3 intrax8.c --- a/intrax8.c Mon Apr 13 15:11:40 2009 +0000 +++ b/intrax8.c Mon Apr 13 16:20:26 2009 +0000 @@ -22,7 +22,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "mpegvideo.h" #include "msmpeg4data.h" #include "intrax8huf.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 intrax8.h --- a/intrax8.h Mon Apr 13 15:11:40 2009 +0000 +++ b/intrax8.h Mon Apr 13 16:20:26 2009 +0000 @@ -19,7 +19,7 @@ #ifndef AVCODEC_INTRAX8_H #define AVCODEC_INTRAX8_H -#include "bitstream.h" +#include "get_bits.h" #include "mpegvideo.h" typedef struct{ diff -r 4c1fb7723412 -r 0dce4fe6e6f3 jpeglsdec.c --- a/jpeglsdec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/jpeglsdec.c Mon Apr 13 16:20:26 2009 +0000 @@ -26,7 +26,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "golomb.h" #include "mathops.h" #include "mjpeg.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 jpeglsenc.c --- a/jpeglsenc.c Mon Apr 13 15:11:40 2009 +0000 +++ b/jpeglsenc.c Mon Apr 13 16:20:26 2009 +0000 @@ -26,7 +26,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "golomb.h" #include "mathops.h" #include "dsputil.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 lcldec.c --- a/lcldec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/lcldec.c Mon Apr 13 16:20:26 2009 +0000 @@ -42,7 +42,7 @@ #include #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "lcl.h" #if CONFIG_ZLIB diff -r 4c1fb7723412 -r 0dce4fe6e6f3 loco.c --- a/loco.c Mon Apr 13 15:11:40 2009 +0000 +++ b/loco.c Mon Apr 13 16:20:26 2009 +0000 @@ -25,7 +25,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "golomb.h" #include "mathops.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 lzw.h --- a/lzw.h Mon Apr 13 15:11:40 2009 +0000 +++ b/lzw.h Mon Apr 13 16:20:26 2009 +0000 @@ -30,7 +30,7 @@ #ifndef AVCODEC_LZW_H #define AVCODEC_LZW_H -#include "bitstream.h" +#include "get_bits.h" enum FF_LZW_MODES{ FF_LZW_GIF, diff -r 4c1fb7723412 -r 0dce4fe6e6f3 mimic.c --- a/mimic.c Mon Apr 13 15:11:40 2009 +0000 +++ b/mimic.c Mon Apr 13 16:20:26 2009 +0000 @@ -24,7 +24,7 @@ #include #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "bytestream.h" #include "dsputil.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 mjpegdec.h --- a/mjpegdec.h Mon Apr 13 15:11:40 2009 +0000 +++ b/mjpegdec.h Mon Apr 13 16:20:26 2009 +0000 @@ -30,7 +30,7 @@ #define AVCODEC_MJPEGDEC_H #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #define MAX_COMPONENTS 4 diff -r 4c1fb7723412 -r 0dce4fe6e6f3 mlp_parser.c --- a/mlp_parser.c Mon Apr 13 15:11:40 2009 +0000 +++ b/mlp_parser.c Mon Apr 13 16:20:26 2009 +0000 @@ -27,7 +27,7 @@ #include #include "libavutil/crc.h" -#include "bitstream.h" +#include "get_bits.h" #include "parser.h" #include "mlp_parser.h" #include "mlp.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 mlp_parser.h --- a/mlp_parser.h Mon Apr 13 15:11:40 2009 +0000 +++ b/mlp_parser.h Mon Apr 13 16:20:26 2009 +0000 @@ -27,7 +27,7 @@ #ifndef AVCODEC_MLP_PARSER_H #define AVCODEC_MLP_PARSER_H -#include "bitstream.h" +#include "get_bits.h" typedef struct MLPHeaderInfo { diff -r 4c1fb7723412 -r 0dce4fe6e6f3 mlpdec.c --- a/mlpdec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/mlpdec.c Mon Apr 13 16:20:26 2009 +0000 @@ -28,7 +28,7 @@ #include "avcodec.h" #include "libavutil/intreadwrite.h" -#include "bitstream.h" +#include "get_bits.h" #include "libavutil/crc.h" #include "parser.h" #include "mlp_parser.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 motionpixels.c --- a/motionpixels.c Mon Apr 13 15:11:40 2009 +0000 +++ b/motionpixels.c Mon Apr 13 16:20:26 2009 +0000 @@ -20,7 +20,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #define MAX_HUFF_CODES 16 diff -r 4c1fb7723412 -r 0dce4fe6e6f3 mpc.c --- a/mpc.c Mon Apr 13 15:11:40 2009 +0000 +++ b/mpc.c Mon Apr 13 16:20:26 2009 +0000 @@ -26,7 +26,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "mpegaudio.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 mpc.h --- a/mpc.h Mon Apr 13 15:11:40 2009 +0000 +++ b/mpc.h Mon Apr 13 16:20:26 2009 +0000 @@ -30,7 +30,7 @@ #include "libavutil/lfg.h" #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "mpegaudio.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 mpc7.c --- a/mpc7.c Mon Apr 13 15:11:40 2009 +0000 +++ b/mpc7.c Mon Apr 13 16:20:26 2009 +0000 @@ -27,7 +27,7 @@ #include "libavutil/lfg.h" #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "mpegaudio.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 mpc8.c --- a/mpc8.c Mon Apr 13 15:11:40 2009 +0000 +++ b/mpc8.c Mon Apr 13 16:20:26 2009 +0000 @@ -27,7 +27,7 @@ #include "libavutil/lfg.h" #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "mpegaudio.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 mpeg4audio.c --- a/mpeg4audio.c Mon Apr 13 15:11:40 2009 +0000 +++ b/mpeg4audio.c Mon Apr 13 16:20:26 2009 +0000 @@ -19,7 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "bitstream.h" +#include "get_bits.h" #include "mpeg4audio.h" const int ff_mpeg4audio_sample_rates[16] = { diff -r 4c1fb7723412 -r 0dce4fe6e6f3 mpegaudio.h --- a/mpegaudio.h Mon Apr 13 15:11:40 2009 +0000 +++ b/mpegaudio.h Mon Apr 13 16:20:26 2009 +0000 @@ -27,7 +27,7 @@ #define AVCODEC_MPEGAUDIO_H #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #define CONFIG_AUDIO_NONSHORT 0 diff -r 4c1fb7723412 -r 0dce4fe6e6f3 mpegaudiodec.c --- a/mpegaudiodec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/mpegaudiodec.c Mon Apr 13 16:20:26 2009 +0000 @@ -25,7 +25,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" /* diff -r 4c1fb7723412 -r 0dce4fe6e6f3 mpegvideo.h --- a/mpegvideo.h Mon Apr 13 15:11:40 2009 +0000 +++ b/mpegvideo.h Mon Apr 13 16:20:26 2009 +0000 @@ -29,7 +29,7 @@ #define AVCODEC_MPEGVIDEO_H #include "dsputil.h" -#include "bitstream.h" +#include "get_bits.h" #include "put_bits.h" #include "ratecontrol.h" #include "parser.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 msmpeg4data.h --- a/msmpeg4data.h Mon Apr 13 15:11:40 2009 +0000 +++ b/msmpeg4data.h Mon Apr 13 16:20:26 2009 +0000 @@ -31,7 +31,7 @@ #define AVCODEC_MSMPEG4DATA_H #include "libavutil/common.h" -#include "bitstream.h" +#include "get_bits.h" #include "rl.h" /* motion vector table */ diff -r 4c1fb7723412 -r 0dce4fe6e6f3 nellymoser.c --- a/nellymoser.c Mon Apr 13 15:11:40 2009 +0000 +++ b/nellymoser.c Mon Apr 13 16:20:26 2009 +0000 @@ -36,7 +36,7 @@ #include "dsputil.h" #define ALT_BITSTREAM_READER_LE -#include "bitstream.h" +#include "get_bits.h" const float ff_nelly_dequantization_table[127] = { 0.0000000000, diff -r 4c1fb7723412 -r 0dce4fe6e6f3 nellymoserdec.c --- a/nellymoserdec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/nellymoserdec.c Mon Apr 13 16:20:26 2009 +0000 @@ -38,7 +38,7 @@ #include "dsputil.h" #define ALT_BITSTREAM_READER_LE -#include "bitstream.h" +#include "get_bits.h" typedef struct NellyMoserDecodeContext { diff -r 4c1fb7723412 -r 0dce4fe6e6f3 pcm.c --- a/pcm.c Mon Apr 13 15:11:40 2009 +0000 +++ b/pcm.c Mon Apr 13 16:20:26 2009 +0000 @@ -25,7 +25,7 @@ */ #include "avcodec.h" -#include "bitstream.h" // for ff_reverse +#include "get_bits.h" // for ff_reverse #include "bytestream.h" #define MAX_CHANNELS 64 diff -r 4c1fb7723412 -r 0dce4fe6e6f3 pcx.c --- a/pcx.c Mon Apr 13 15:11:40 2009 +0000 +++ b/pcx.c Mon Apr 13 16:20:26 2009 +0000 @@ -24,7 +24,7 @@ #include "avcodec.h" #include "bytestream.h" -#include "bitstream.h" +#include "get_bits.h" typedef struct PCXContext { AVFrame picture; diff -r 4c1fb7723412 -r 0dce4fe6e6f3 pixdesc.h --- a/pixdesc.h Mon Apr 13 15:11:40 2009 +0000 +++ b/pixdesc.h Mon Apr 13 16:20:26 2009 +0000 @@ -22,7 +22,7 @@ #include #include "libavutil/intreadwrite.h" -#include "libavcodec/bitstream.h" +#include "libavcodec/get_bits.h" typedef struct AVComponentDescriptor{ uint16_t plane :2; ///< which of the 4 planes contains the component diff -r 4c1fb7723412 -r 0dce4fe6e6f3 qcelpdec.c --- a/qcelpdec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/qcelpdec.c Mon Apr 13 16:20:26 2009 +0000 @@ -31,7 +31,7 @@ #include "avcodec.h" #include "internal.h" -#include "bitstream.h" +#include "get_bits.h" #include "qcelpdata.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 qdm2.c --- a/qdm2.c Mon Apr 13 15:11:40 2009 +0000 +++ b/qdm2.c Mon Apr 13 16:20:26 2009 +0000 @@ -36,7 +36,7 @@ #define ALT_BITSTREAM_READER_LE #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "mpegaudio.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 ra144.c --- a/ra144.c Mon Apr 13 15:11:40 2009 +0000 +++ b/ra144.c Mon Apr 13 16:20:26 2009 +0000 @@ -23,7 +23,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "ra144.h" #include "celp_filters.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 ra288.c --- a/ra288.c Mon Apr 13 15:11:40 2009 +0000 +++ b/ra288.c Mon Apr 13 16:20:26 2009 +0000 @@ -21,7 +21,7 @@ #include "avcodec.h" #define ALT_BITSTREAM_READER_LE -#include "bitstream.h" +#include "get_bits.h" #include "ra288.h" #include "lpc.h" #include "celp_math.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 rl.h --- a/rl.h Mon Apr 13 15:11:40 2009 +0000 +++ b/rl.h Mon Apr 13 16:20:26 2009 +0000 @@ -28,7 +28,7 @@ #define AVCODEC_RL_H #include -#include "bitstream.h" +#include "get_bits.h" /* run length table */ #define MAX_RUN 64 diff -r 4c1fb7723412 -r 0dce4fe6e6f3 rtjpeg.c --- a/rtjpeg.c Mon Apr 13 15:11:40 2009 +0000 +++ b/rtjpeg.c Mon Apr 13 16:20:26 2009 +0000 @@ -19,7 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "libavutil/common.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "rtjpeg.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 shorten.c --- a/shorten.c Mon Apr 13 15:11:40 2009 +0000 +++ b/shorten.c Mon Apr 13 16:20:26 2009 +0000 @@ -29,7 +29,7 @@ #define DEBUG #include #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "golomb.h" #define MAX_CHANNELS 8 diff -r 4c1fb7723412 -r 0dce4fe6e6f3 smacker.c --- a/smacker.c Mon Apr 13 15:11:40 2009 +0000 +++ b/smacker.c Mon Apr 13 16:20:26 2009 +0000 @@ -34,7 +34,7 @@ #include "avcodec.h" #define ALT_BITSTREAM_READER_LE -#include "bitstream.h" +#include "get_bits.h" #include "bytestream.h" #define SMKTREE_BITS 9 diff -r 4c1fb7723412 -r 0dce4fe6e6f3 sonic.c --- a/sonic.c Mon Apr 13 15:11:40 2009 +0000 +++ b/sonic.c Mon Apr 13 16:20:26 2009 +0000 @@ -19,7 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "golomb.h" /** diff -r 4c1fb7723412 -r 0dce4fe6e6f3 tiertexseqv.c --- a/tiertexseqv.c Mon Apr 13 15:11:40 2009 +0000 +++ b/tiertexseqv.c Mon Apr 13 16:20:26 2009 +0000 @@ -26,7 +26,7 @@ #include "avcodec.h" #define ALT_BITSTREAM_READER_LE -#include "bitstream.h" +#include "get_bits.h" typedef struct SeqVideoContext { diff -r 4c1fb7723412 -r 0dce4fe6e6f3 truemotion2.c --- a/truemotion2.c Mon Apr 13 15:11:40 2009 +0000 +++ b/truemotion2.c Mon Apr 13 16:20:26 2009 +0000 @@ -25,7 +25,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #define TM2_ESCAPE 0x80000000 diff -r 4c1fb7723412 -r 0dce4fe6e6f3 tta.c --- a/tta.c Mon Apr 13 15:11:40 2009 +0000 +++ b/tta.c Mon Apr 13 16:20:26 2009 +0000 @@ -31,7 +31,7 @@ //#define DEBUG #include #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #define FORMAT_INT 1 #define FORMAT_FLOAT 3 diff -r 4c1fb7723412 -r 0dce4fe6e6f3 unary.h --- a/unary.h Mon Apr 13 15:11:40 2009 +0000 +++ b/unary.h Mon Apr 13 16:20:26 2009 +0000 @@ -21,7 +21,7 @@ #ifndef AVCODEC_UNARY_H #define AVCODEC_UNARY_H -#include "bitstream.h" +#include "get_bits.h" /** * Get unary code of limited length diff -r 4c1fb7723412 -r 0dce4fe6e6f3 vc1data.h --- a/vc1data.h Mon Apr 13 15:11:40 2009 +0000 +++ b/vc1data.h Mon Apr 13 16:20:26 2009 +0000 @@ -30,7 +30,7 @@ #include #include "libavutil/rational.h" -#include "bitstream.h" +#include "get_bits.h" /** Table for conversion between TTBLK and TTMB */ extern const int ff_vc1_ttblk_to_tt[3][8]; diff -r 4c1fb7723412 -r 0dce4fe6e6f3 vorbis.c --- a/vorbis.c Mon Apr 13 15:11:40 2009 +0000 +++ b/vorbis.c Mon Apr 13 16:20:26 2009 +0000 @@ -25,7 +25,7 @@ #define ALT_BITSTREAM_READER_LE #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "vorbis.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 vorbis_dec.c --- a/vorbis_dec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/vorbis_dec.c Mon Apr 13 16:20:26 2009 +0000 @@ -28,7 +28,7 @@ #define ALT_BITSTREAM_READER_LE #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "dsputil.h" #include "vorbis.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 vp3.c --- a/vp3.c Mon Apr 13 15:11:40 2009 +0000 +++ b/vp3.c Mon Apr 13 16:20:26 2009 +0000 @@ -36,7 +36,7 @@ #include "avcodec.h" #include "dsputil.h" -#include "bitstream.h" +#include "get_bits.h" #include "vp3data.h" #include "xiph.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 vp5.c --- a/vp5.c Mon Apr 13 15:11:40 2009 +0000 +++ b/vp5.c Mon Apr 13 16:20:26 2009 +0000 @@ -26,7 +26,7 @@ #include "avcodec.h" #include "dsputil.h" -#include "bitstream.h" +#include "get_bits.h" #include "vp56.h" #include "vp56data.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 vp56.h --- a/vp56.h Mon Apr 13 15:11:40 2009 +0000 +++ b/vp56.h Mon Apr 13 16:20:26 2009 +0000 @@ -26,7 +26,7 @@ #include "vp56data.h" #include "dsputil.h" -#include "bitstream.h" +#include "get_bits.h" #include "bytestream.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 vp6.c --- a/vp6.c Mon Apr 13 15:11:40 2009 +0000 +++ b/vp6.c Mon Apr 13 16:20:26 2009 +0000 @@ -29,7 +29,7 @@ #include "avcodec.h" #include "dsputil.h" -#include "bitstream.h" +#include "get_bits.h" #include "huffman.h" #include "vp56.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 wavpack.c --- a/wavpack.c Mon Apr 13 15:11:40 2009 +0000 +++ b/wavpack.c Mon Apr 13 16:20:26 2009 +0000 @@ -20,7 +20,7 @@ */ #define ALT_BITSTREAM_READER_LE #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "unary.h" /** diff -r 4c1fb7723412 -r 0dce4fe6e6f3 wma.h --- a/wma.h Mon Apr 13 15:11:40 2009 +0000 +++ b/wma.h Mon Apr 13 16:20:26 2009 +0000 @@ -22,7 +22,7 @@ #ifndef AVCODEC_WMA_H #define AVCODEC_WMA_H -#include "bitstream.h" +#include "get_bits.h" #include "put_bits.h" #include "dsputil.h" diff -r 4c1fb7723412 -r 0dce4fe6e6f3 wnv1.c --- a/wnv1.c Mon Apr 13 15:11:40 2009 +0000 +++ b/wnv1.c Mon Apr 13 16:20:26 2009 +0000 @@ -25,7 +25,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" typedef struct WNV1Context{ diff -r 4c1fb7723412 -r 0dce4fe6e6f3 xsubdec.c --- a/xsubdec.c Mon Apr 13 15:11:40 2009 +0000 +++ b/xsubdec.c Mon Apr 13 16:20:26 2009 +0000 @@ -19,7 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "bytestream.h" static av_cold int decode_init(AVCodecContext *avctx) {