aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/common.h
diff options
context:
space:
mode:
authorArpi <arpi@thot.banki.hu>2001-08-03 23:09:15 +0000
committerArpi <arpi@thot.banki.hu>2001-08-03 23:09:15 +0000
commit2931ecb90f5518361460805a6b7fbc9690d364cc (patch)
treef8c0c43bd1f2745e2c5a58ebedbe8c8b06743e17 /libavcodec/common.h
parent4af7bcc1857e8abfa7ae9a8e3c54c93723219438 (diff)
downloadffmpeg-2931ecb90f5518361460805a6b7fbc9690d364cc.tar.gz
inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
Originally committed as revision 31 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/common.h')
-rw-r--r--libavcodec/common.h25
1 files changed, 20 insertions, 5 deletions
diff --git a/libavcodec/common.h b/libavcodec/common.h
index e6cb5fbe81..90af1e3df9 100644
--- a/libavcodec/common.h
+++ b/libavcodec/common.h
@@ -25,9 +25,9 @@ struct PutBitContext;
typedef void (*WriteDataFunc)(void *, UINT8 *, int);
typedef struct PutBitContext {
- UINT8 *buf, *buf_ptr, *buf_end;
- int bit_cnt;
UINT32 bit_buf;
+ int bit_cnt;
+ UINT8 *buf, *buf_ptr, *buf_end;
long long data_out_size; /* in bytes */
void *opaque;
WriteDataFunc write_data;
@@ -49,9 +49,9 @@ void jflush_put_bits(PutBitContext *s);
/* bit input */
typedef struct GetBitContext {
- UINT8 *buf, *buf_ptr, *buf_end;
- int bit_cnt;
UINT32 bit_buf;
+ int bit_cnt;
+ UINT8 *buf, *buf_ptr, *buf_end;
} GetBitContext;
typedef struct VLC {
@@ -64,7 +64,22 @@ typedef struct VLC {
void init_get_bits(GetBitContext *s,
UINT8 *buffer, int buffer_size);
-unsigned int get_bits(GetBitContext *s, int n);
+unsigned int get_bits_long(GetBitContext *s, int n);
+
+static inline unsigned int get_bits(GetBitContext *s, int n){
+ if(s->bit_cnt>=n){
+ /* most common case here */
+ unsigned int val = s->bit_buf >> (32 - n);
+ s->bit_buf <<= n;
+ s->bit_cnt -= n;
+#ifdef STATS
+ st_bit_counts[st_current_index] += n;
+#endif
+ return val;
+ }
+ return get_bits_long(s,n);
+}
+
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,