comparison h264_loopfilter.c @ 10901:2a5c3d89201d libavcodec

Another microopt, 4 cpu cycles for avoidance of FFABS().
author michael
date Sat, 16 Jan 2010 16:14:32 +0000
parents 28ac79270704
children 1e41e6ab9a18
comparison
equal deleted inserted replaced
10900:a69d6f292f95 10901:2a5c3d89201d
553 int bn_idx= b_idx - (dir ? 8:1); 553 int bn_idx= b_idx - (dir ? 8:1);
554 int v = 0; 554 int v = 0;
555 555
556 for( l = 0; !v && l < 1 + (h->slice_type_nos == FF_B_TYPE); l++ ) { 556 for( l = 0; !v && l < 1 + (h->slice_type_nos == FF_B_TYPE); l++ ) {
557 v |= ref2frm[l][h->ref_cache[l][b_idx]] != ref2frmn[l][h->ref_cache[l][bn_idx]] | 557 v |= ref2frm[l][h->ref_cache[l][b_idx]] != ref2frmn[l][h->ref_cache[l][bn_idx]] |
558 FFABS( h->mv_cache[l][b_idx][0] - h->mv_cache[l][bn_idx][0] ) >= 4 | 558 h->mv_cache[l][b_idx][0] - h->mv_cache[l][bn_idx][0] + 3 >= 7U |
559 FFABS( h->mv_cache[l][b_idx][1] - h->mv_cache[l][bn_idx][1] ) >= mvy_limit; 559 FFABS( h->mv_cache[l][b_idx][1] - h->mv_cache[l][bn_idx][1] ) >= mvy_limit;
560 } 560 }
561 561
562 if(h->slice_type_nos == FF_B_TYPE && v){ 562 if(h->slice_type_nos == FF_B_TYPE && v){
563 v=0; 563 v=0;
564 for( l = 0; !v && l < 2; l++ ) { 564 for( l = 0; !v && l < 2; l++ ) {
565 int ln= 1-l; 565 int ln= 1-l;
566 v |= ref2frm[l][h->ref_cache[l][b_idx]] != ref2frmn[ln][h->ref_cache[ln][bn_idx]] | 566 v |= ref2frm[l][h->ref_cache[l][b_idx]] != ref2frmn[ln][h->ref_cache[ln][bn_idx]] |
567 FFABS( h->mv_cache[l][b_idx][0] - h->mv_cache[ln][bn_idx][0] ) >= 4 | 567 h->mv_cache[l][b_idx][0] - h->mv_cache[ln][bn_idx][0] + 3 >= 7U |
568 FFABS( h->mv_cache[l][b_idx][1] - h->mv_cache[ln][bn_idx][1] ) >= mvy_limit; 568 FFABS( h->mv_cache[l][b_idx][1] - h->mv_cache[ln][bn_idx][1] ) >= mvy_limit;
569 } 569 }
570 } 570 }
571 571
572 bS[0] = bS[1] = bS[2] = bS[3] = v; 572 bS[0] = bS[1] = bS[2] = bS[3] = v;