summaryrefslogtreecommitdiff
path: root/libavcodec/cabac.h
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2006-10-12 14:49:19 +0000
committerMichael Niedermayer <michaelni@gmx.at>2006-10-12 14:49:19 +0000
commit851ded8918c977d8160c6617b69604f758cabf50 (patch)
tree054c0f0a8b9dfdaa7887edd0792bbe2daffad035 /libavcodec/cabac.h
parent1f6049f5151a43ebb15f4cb09befb30a41fcad3e (diff)
prevent "mb level" get_cabac() calls from being inlined (3% faster decode_mb_cabac() on P3)
Originally committed as revision 6674 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/cabac.h')
-rw-r--r--libavcodec/cabac.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/libavcodec/cabac.h b/libavcodec/cabac.h
index c922126989..afd1ebf37f 100644
--- a/libavcodec/cabac.h
+++ b/libavcodec/cabac.h
@@ -359,7 +359,7 @@ static inline void renorm_cabac_decoder_once(CABACContext *c){
refill(c);
}
-static int get_cabac(CABACContext *c, uint8_t * const state){
+static int always_inline get_cabac_inline(CABACContext *c, uint8_t * const state){
//FIXME gcc generates duplicate load/stores for c->low and c->range
#ifdef ARCH_X86
int bit;
@@ -563,6 +563,14 @@ static int get_cabac(CABACContext *c, uint8_t * const state){
return bit;
}
+static int __attribute((noinline)) get_cabac_noinline(CABACContext *c, uint8_t * const state){
+ return get_cabac_inline(c,state);
+}
+
+static int get_cabac(CABACContext *c, uint8_t * const state){
+ return get_cabac_inline(c,state);
+}
+
static int get_cabac_bypass(CABACContext *c){
c->low += c->low;