X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fcabac.h;h=2794626c35dc7c958e8ff6503a9bc4482e973b61;hb=f38e450746ca52c7965146ebdbcdd4cc30ad1fd9;hp=0cc44190ee300e605127dc0c421c882daa4f0094;hpb=e6cfd8fffb0c45ededb667eeabb93224e60e3b4e;p=ffmpeg diff --git a/libavcodec/cabac.h b/libavcodec/cabac.h index 0cc44190ee3..2794626c35d 100644 --- a/libavcodec/cabac.h +++ b/libavcodec/cabac.h @@ -20,20 +20,18 @@ */ /** - * @file cabac.h + * @file libavcodec/cabac.h * Context Adaptive Binary Arithmetic Coder. */ -#ifndef FFMPEG_CABAC_H -#define FFMPEG_CABAC_H +#ifndef AVCODEC_CABAC_H +#define AVCODEC_CABAC_H -#include "bitstream.h" +#include "put_bits.h" //#undef NDEBUG #include -#ifdef ARCH_X86 -#include "x86_cpu.h" -#endif +#include "libavutil/x86_cpu.h" #define CABAC_BITS 16 #define CABAC_MASK ((1<bytestream+= CABAC_BITS/8; } -#if ! ( defined(ARCH_X86) && defined(HAVE_7REGS) && defined(HAVE_EBX_AVAILABLE) && !defined(BROKEN_RELOCATIONS) ) +#if ! ( ARCH_X86 && HAVE_7REGS && HAVE_EBX_AVAILABLE && !defined(BROKEN_RELOCATIONS) ) static void refill2(CABACContext *c){ int i, x; @@ -306,7 +304,7 @@ static inline void renorm_cabac_decoder_once(CABACContext *c){ int temp; #if 0 //P3:683 athlon:475 - asm( + __asm__( "lea -0x100(%0), %2 \n\t" "shr $31, %2 \n\t" //FIXME 31->63 for x86-64 "shl %%cl, %0 \n\t" @@ -315,7 +313,7 @@ static inline void renorm_cabac_decoder_once(CABACContext *c){ ); #elif 0 //P3:680 athlon:474 - asm( + __asm__( "cmp $0x100, %0 \n\t" "setb %%cl \n\t" //FIXME 31->63 for x86-64 "shl %%cl, %0 \n\t" @@ -325,7 +323,7 @@ static inline void renorm_cabac_decoder_once(CABACContext *c){ #elif 1 int temp2; //P3:665 athlon:517 - asm( + __asm__( "lea -0x100(%0), %%eax \n\t" "cltd \n\t" "mov %0, %%eax \n\t" @@ -338,7 +336,7 @@ static inline void renorm_cabac_decoder_once(CABACContext *c){ #elif 0 int temp2; //P3:673 athlon:509 - asm( + __asm__( "cmp $0x100, %0 \n\t" "sbb %%edx, %%edx \n\t" "mov %0, %%eax \n\t" @@ -351,7 +349,7 @@ static inline void renorm_cabac_decoder_once(CABACContext *c){ #else int temp2; //P3:677 athlon:511 - asm( + __asm__( "cmp $0x100, %0 \n\t" "lea (%0, %0), %%eax \n\t" "lea (%1, %1), %%edx \n\t" @@ -374,7 +372,7 @@ static av_always_inline int get_cabac_inline(CABACContext *c, uint8_t * const st //FIXME gcc generates duplicate load/stores for c->low and c->range #define LOW "0" #define RANGE "4" -#ifdef ARCH_X86_64 +#if ARCH_X86_64 #define BYTESTART "16" #define BYTE "24" #define BYTEEND "32" @@ -383,11 +381,11 @@ static av_always_inline int get_cabac_inline(CABACContext *c, uint8_t * const st #define BYTE "16" #define BYTEEND "20" #endif -#if defined(ARCH_X86) && defined(HAVE_7REGS) && defined(HAVE_EBX_AVAILABLE) && !defined(BROKEN_RELOCATIONS) +#if ARCH_X86 && HAVE_7REGS && HAVE_EBX_AVAILABLE && !defined(BROKEN_RELOCATIONS) int bit; #ifndef BRANCHLESS_CABAC_DECODER - asm volatile( + __asm__ volatile( "movzbl (%1), %0 \n\t" "movl "RANGE "(%2), %%ebx \n\t" "movl "RANGE "(%2), %%edx \n\t" @@ -469,7 +467,7 @@ static av_always_inline int get_cabac_inline(CABACContext *c, uint8_t * const st #else /* BRANCHLESS_CABAC_DECODER */ -#if defined HAVE_FAST_CMOV +#if HAVE_FAST_CMOV #define BRANCHLESS_GET_CABAC_UPDATE(ret, cabac, statep, low, lowword, range, tmp, tmpbyte)\ "mov "tmp" , %%ecx \n\t"\ "shl $17 , "tmp" \n\t"\ @@ -526,7 +524,7 @@ static av_always_inline int get_cabac_inline(CABACContext *c, uint8_t * const st "add "tmp" , "low" \n\t"\ "1: \n\t" - asm volatile( + __asm__ volatile( "movl "RANGE "(%2), %%esi \n\t" "movl "LOW "(%2), %%ebx \n\t" BRANCHLESS_GET_CABAC("%0", "%2", "(%1)", "%%ebx", "%%bx", "%%esi", "%%edx", "%%dl") @@ -539,7 +537,7 @@ static av_always_inline int get_cabac_inline(CABACContext *c, uint8_t * const st ); bit&=1; #endif /* BRANCHLESS_CABAC_DECODER */ -#else /* defined(ARCH_X86) && defined(HAVE_7REGS) && defined(HAVE_EBX_AVAILABLE) && !defined(BROKEN_RELOCATIONS) */ +#else /* ARCH_X86 && HAVE_7REGS && HAVE_EBX_AVAILABLE && !defined(BROKEN_RELOCATIONS) */ int s = *state; int RangeLPS= ff_h264_lps_range[2*(c->range&0xC0) + s]; int bit, lps_mask av_unused; @@ -578,22 +576,22 @@ static av_always_inline int get_cabac_inline(CABACContext *c, uint8_t * const st if(!(c->low & CABAC_MASK)) refill2(c); #endif /* BRANCHLESS_CABAC_DECODER */ -#endif /* defined(ARCH_X86) && defined(HAVE_7REGS) && defined(HAVE_EBX_AVAILABLE) && !defined(BROKEN_RELOCATIONS) */ +#endif /* ARCH_X86 && HAVE_7REGS && HAVE_EBX_AVAILABLE && !defined(BROKEN_RELOCATIONS) */ return bit; } -static int av_noinline get_cabac_noinline(CABACContext *c, uint8_t * const state){ +static int av_noinline av_unused 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){ +static int av_unused get_cabac(CABACContext *c, uint8_t * const state){ return get_cabac_inline(c,state); } -static int get_cabac_bypass(CABACContext *c){ +static int av_unused get_cabac_bypass(CABACContext *c){ #if 0 //not faster int bit; - asm volatile( + __asm__ volatile( "movl "RANGE "(%1), %%ebx \n\t" "movl "LOW "(%1), %%eax \n\t" "shl $17, %%ebx \n\t" @@ -639,8 +637,8 @@ static int get_cabac_bypass(CABACContext *c){ static av_always_inline int get_cabac_bypass_sign(CABACContext *c, int val){ -#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__)) - asm volatile( +#if ARCH_X86 && HAVE_EBX_AVAILABLE + __asm__ volatile( "movl "RANGE "(%1), %%ebx \n\t" "movl "LOW "(%1), %%eax \n\t" "shl $17, %%ebx \n\t" @@ -689,7 +687,7 @@ static av_always_inline int get_cabac_bypass_sign(CABACContext *c, int val){ * * @return the number of bytes read or 0 if no end */ -static int get_cabac_terminate(CABACContext *c){ +static int av_unused get_cabac_terminate(CABACContext *c){ c->range -= 2; if(c->low < c->range<<(CABAC_BITS+1)){ renorm_cabac_decoder_once(c); @@ -757,4 +755,4 @@ static int get_cabac_ueg(CABACContext *c, uint8_t * state, int max, int is_signe } #endif /* 0 */ -#endif /* FFMPEG_CABAC_H */ +#endif /* AVCODEC_CABAC_H */