mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
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
This commit is contained in:
parent
727c236a6b
commit
5a7bd28335
@ -73,12 +73,6 @@ unsigned int show_bits_long(GetBitContext *s, int n){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
int check_marker(GetBitContext *s, const char *msg)
|
||||||
{
|
{
|
||||||
int bit= get_bits1(s);
|
int bit= get_bits1(s);
|
||||||
|
@ -444,6 +444,11 @@ static inline int unaligned32_le(const void *v)
|
|||||||
static inline int get_bits_count(GetBitContext *s){
|
static inline int get_bits_count(GetBitContext *s){
|
||||||
return s->index;
|
return s->index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void skip_bits_long(GetBitContext *s, int n){
|
||||||
|
s->index + n;
|
||||||
|
}
|
||||||
|
|
||||||
#elif defined LIBMPEG2_BITSTREAM_READER
|
#elif defined LIBMPEG2_BITSTREAM_READER
|
||||||
//libmpeg2 like 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;
|
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
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -720,8 +741,13 @@ static inline void init_get_bits(GetBitContext *s,
|
|||||||
#endif
|
#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);
|
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,
|
int init_vlc(VLC *vlc, int nb_bits, int nb_codes,
|
||||||
const void *bits, int bits_wrap, int bits_size,
|
const void *bits, int bits_wrap, int bits_size,
|
||||||
const void *codes, int codes_wrap, int codes_size,
|
const void *codes, int codes_wrap, int codes_size,
|
||||||
|
Loading…
Reference in New Issue
Block a user