Mercurial > libavcodec.hg
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; |