# HG changeset patch # User conrad # Date 1274935152 0 # Node ID a617365c7c6f4bf94ff2e4b6f30644b54664de61 # Parent 22b17f922f2b548510cd7727182a8259f31a9501 vp3: Skip the loop filter when strength is 0 or when requested diff -r 22b17f922f2b -r a617365c7c6f vp3.c --- a/vp3.c Thu May 27 04:25:50 2010 +0000 +++ b/vp3.c Thu May 27 04:39:12 2010 +0000 @@ -136,6 +136,7 @@ DSPContext dsp; int flipped_image; int last_slice_end; + int skip_loop_filter; int qps[3]; int nqps; @@ -1494,7 +1495,8 @@ } // Filter up to the last row in the superblock row - apply_loop_filter(s, plane, 4*sb_y - !!sb_y, FFMIN(4*sb_y+3, fragment_height-1)); + if (!s->skip_loop_filter) + apply_loop_filter(s, plane, 4*sb_y - !!sb_y, FFMIN(4*sb_y+3, fragment_height-1)); } } @@ -1749,6 +1751,9 @@ s->keyframe?"key":"", counter, s->qps[0]); counter++; + s->skip_loop_filter = !s->filter_limit_values[s->qps[0]] || + avctx->skip_loop_filter >= (s->keyframe ? AVDISCARD_ALL : AVDISCARD_NONKEY); + if (s->qps[0] != s->last_qps[0]) init_loop_filter(s);