Browse Source

Optimize get_dct8x8_allowed().

30 cpu cycles faster on pentium dual.

Originally committed as revision 16248 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Michael Niedermayer 17 years ago
parent
commit
66c07ca96f
2 changed files with 5 additions and 8 deletions
  1. +4
    -7
      libavcodec/h264.c
  2. +1
    -1
      libavcodec/h264.h

+ 4
- 7
libavcodec/h264.c View File

@@ -4039,13 +4039,10 @@ static inline int get_level_prefix(GetBitContext *gb){
}

static inline int get_dct8x8_allowed(H264Context *h){
int i;
for(i=0; i<4; i++){
if(!IS_SUB_8X8(h->sub_mb_type[i])
|| (!h->sps.direct_8x8_inference_flag && IS_DIRECT(h->sub_mb_type[i])))
return 0;
}
return 1;
if(h->sps.direct_8x8_inference_flag)
return !(*(uint64_t*)h->sub_mb_type & ((MB_TYPE_16x8|MB_TYPE_8x16|MB_TYPE_8x8 )*0x0001000100010001ULL));
else
return !(*(uint64_t*)h->sub_mb_type & ((MB_TYPE_16x8|MB_TYPE_8x16|MB_TYPE_8x8|MB_TYPE_DIRECT2)*0x0001000100010001ULL));
}

/**


+ 1
- 1
libavcodec/h264.h View File

@@ -339,7 +339,7 @@ typedef struct H264Context{
int mb_field_decoding_flag;
int mb_mbaff; ///< mb_aff_frame && mb_field_decoding_flag

unsigned int sub_mb_type[4];
uint16_t sub_mb_type[4];

//POC stuff
int poc_lsb;


Loading…
Cancel
Save