avfilter/vf_pullup: 2nd try to workaround gcc 4.4.3 bug on arm

The first try failed to work with some build flags

The gcc version affected is very old and unmaintained AFAIK thus i made no
attempt to report this to the gcc developers.

The workaround is pushed as it may still affect users and does affect one
fate client

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2014-08-01 14:06:42 +02:00
parent a80191379b
commit 9e052df86d

View File

@ -67,7 +67,7 @@ static int query_formats(AVFilterContext *ctx)
return 0; return 0;
} }
#define ABS(a) ((a) > 0 ? (a) : -(a)) #define ABS(a) (((a) ^ ((a) >> 31)) - ((a) >> 31))
static int diff_c(const uint8_t *a, const uint8_t *b, ptrdiff_t s) static int diff_c(const uint8_t *a, const uint8_t *b, ptrdiff_t s)
{ {
@ -389,8 +389,8 @@ static void compute_affinity(PullupContext *s, PullupField *f)
int v = f->vars[i]; int v = f->vars[i];
int lv = f->prev->vars[i]; int lv = f->prev->vars[i];
int rv = f->next->vars[i]; int rv = f->next->vars[i];
int lc = f->combs[i] - (v + lv) + ABS(v - lv); int lc = f-> combs[i] - 2*(v < lv ? v : lv);
int rc = f->next->combs[i] - (v + rv) + ABS(v - rv); int rc = f->next->combs[i] - 2*(v < rv ? v : rv);
lc = FFMAX(lc, 0); lc = FFMAX(lc, 0);
rc = FFMAX(rc, 0); rc = FFMAX(rc, 0);