# HG changeset patch # User michael # Date 1265599337 0 # Node ID a82b9c88682f25e0bf99dff0149e5f86ddc2eacd # Parent 7c89ba8c0fd7c11d50b5fff0f9de51e572c8213e Branchless calculation of ref_offset. 7 cpu cycles faster. diff -r 7c89ba8c0fd7 -r a82b9c88682f h264_direct.c --- a/h264_direct.c Mon Feb 08 02:10:59 2010 +0000 +++ b/h264_direct.c Mon Feb 08 03:22:17 2010 +0000 @@ -361,15 +361,14 @@ }else{ /* direct temporal mv pred */ const int *map_col_to_list0[2] = {h->map_col_to_list0[0], h->map_col_to_list0[1]}; const int *dist_scale_factor = h->dist_scale_factor; - int ref_offset= 0; + int ref_offset; if(FRAME_MBAFF && IS_INTERLACED(*mb_type)){ map_col_to_list0[0] = h->map_col_to_list0_field[s->mb_y&1][0]; map_col_to_list0[1] = h->map_col_to_list0_field[s->mb_y&1][1]; dist_scale_factor =h->dist_scale_factor_field[s->mb_y&1]; } - if(h->ref_list[1][0].mbaff && IS_INTERLACED(mb_type_col[0])) - ref_offset += 16; + ref_offset = (h->ref_list[1][0].mbaff<<4) & (mb_type_col[0]>>3); //if(h->ref_list[1][0].mbaff && IS_INTERLACED(mb_type_col[0])) ref_offset=16 else 0 if(IS_INTERLACED(*mb_type) != IS_INTERLACED(mb_type_col[0])){ int y_shift = 2*!IS_INTERLACED(*mb_type);