avcodec/dvbsubdec: Split best score computation out of loop in compute_default_clut()
authorMichael Niedermayer <michael@niedermayer.cc>
Sun, 1 Oct 2017 16:10:36 +0000 (18:10 +0200)
committerMichael Niedermayer <michael@niedermayer.cc>
Sat, 14 Oct 2017 21:23:25 +0000 (23:23 +0200)
3% faster

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/dvbsubdec.c

index ef581a9..85a59f3 100644 (file)
@@ -680,14 +680,17 @@ static void compute_default_clut(AVSubtitleRect *rect, int w, int h)
                 int l_r = x+1<w ? L( 1, 0) : 1;
                 int l_t = y     ? L( 0,-1) : 1;
                 int l_b = y+1<h ? L( 0, 1) : 1;
-                int score;
                 if (l_m)
                     continue;
                 scoretab[v] += l_l + l_r + l_t + l_b;
-                score = 1024LL*scoretab[v] / counttab[v];
+            }
+        }
+        for (x = 0; x < 256; x++) {
+            if (scoretab[x]) {
+                int score = 1024LL*scoretab[x] / counttab[x];
                 if (score > bestscore) {
                     bestscore = score;
-                    bestv = v;
+                    bestv = x;
                 }
             }
         }