@ -39,12 +39,11 @@
# define ALT_BITSTREAM_READER
# endif
# if !defined(LIBMPEG2_BITSTREAM_READER) && !defined( A32_BITSTREAM_READER) && !defined(ALT_BITSTREAM_READER)
# if !defined(A32_BITSTREAM_READER) && !defined(ALT_BITSTREAM_READER)
# if ARCH_ARM && !HAVE_FAST_UNALIGNED
# define A32_BITSTREAM_READER
# else
# define ALT_BITSTREAM_READER
//#define LIBMPEG2_BITSTREAM_READER
//#define A32_BITSTREAM_READER
# endif
# endif
@ -55,10 +54,6 @@ 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 ;
@ -189,66 +184,6 @@ 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 ( const 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
@ -356,8 +291,7 @@ static inline int get_sbits(GetBitContext *s, int n){
}
/**
* reads 1 - 17 bits .
* Note , the alt bitstream reader can read up to 25 bits , but the libmpeg2 reader can ' t
* Read 1 - 25 bits .
*/
static inline unsigned int get_bits ( GetBitContext * s , int n ) {
register int tmp ;
@ -370,8 +304,7 @@ static inline unsigned int get_bits(GetBitContext *s, int n){
}
/**
* shows 1 - 17 bits .
* Note , the alt bitstream reader can read up to 25 bits , but the libmpeg2 reader can ' t
* Shows 1 - 25 bits .
*/
static inline unsigned int show_bits ( GetBitContext * s , int n ) {
register int tmp ;
@ -484,10 +417,6 @@ static inline void init_get_bits(GetBitContext *s,
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 ) ;