[FFmpeg-cvslog] avcodec/error_resilience: Factor block parity check out

Michael Niedermayer git at videolan.org
Sun Dec 25 22:05:14 EET 2016


ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Sun Dec 25 20:16:00 2016 +0100| [cafc72bd7bc4fb7672717e0e599405dbc59f3b5d] | committer: Michael Niedermayer

avcodec/error_resilience: Factor block parity check out

This makes the code noticably faster when there are lots of blocks

Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=cafc72bd7bc4fb7672717e0e599405dbc59f3b5d
---

 libavcodec/error_resilience.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/libavcodec/error_resilience.c b/libavcodec/error_resilience.c
index 2790599..79ac75a 100644
--- a/libavcodec/error_resilience.c
+++ b/libavcodec/error_resilience.c
@@ -450,7 +450,7 @@ static void guess_mv(ERContext *s)
 
             changed = 0;
             for (mb_y = 0; mb_y < mb_height; mb_y++) {
-                for (mb_x = 0; mb_x < s->mb_width; mb_x++) {
+                for (mb_x = (mb_y ^ pass) & 1; mb_x < s->mb_width; mb_x+=2) {
                     const int mb_xy        = mb_x + mb_y * s->mb_stride;
                     int mv_predictor[8][2] = { { 0 } };
                     int ref[8]             = { 0 };
@@ -461,9 +461,6 @@ static void guess_mv(ERContext *s)
                     const int mot_index    = (mb_x + mb_y * mot_stride) * mot_step;
                     int prev_x = 0, prev_y = 0, prev_ref = 0;
 
-                    if ((mb_x ^ mb_y ^ pass) & 1)
-                        continue;
-
                     if (fixed[mb_xy] == MV_FROZEN)
                         continue;
                     av_assert1(!IS_INTRA(s->cur_pic.mb_type[mb_xy]));



More information about the ffmpeg-cvslog mailing list