1 #include <stdlib.h>
2
Sub3(int a,int b,int c)3 static /*__attribute__ ((noinline))*/ int Sub3(int a, int b, int c) {
4 const int pb = b - c;
5 const int pa = a - c;
6 return abs(pb) - abs(pa);
7 }
8
Select(unsigned a,unsigned b,unsigned c)9 static unsigned Select(unsigned a, unsigned b, unsigned c) {
10 const int pa_minus_pb =
11 Sub3((a >> 24) & 0xff, (b >> 24) & 0xff, (c >> 24) & 0xff) +
12 Sub3((a >> 16) & 0xff, (b >> 16) & 0xff, (c >> 16) & 0xff) +
13 Sub3((a >> 8) & 0xff, (b >> 8) & 0xff, (c >> 8) & 0xff) +
14 Sub3((a >> 0) & 0xff, (b >> 0) & 0xff, (c >> 0) & 0xff);
15 return (pa_minus_pb <= 0) ? a : b;
16 }
17
Predictor11(unsigned left,const unsigned * const top)18 static unsigned Predictor11(unsigned left, const unsigned* const top) {
19 const unsigned pred = Select(top[0], left, top[-1]);
20 return pred;
21 }
22
23 typedef unsigned (*VP8LPredictorFunc)(unsigned left, const unsigned* const top);
24
25 const VP8LPredictorFunc kPredictorsC[] = {
26 Predictor11,
27 };
28