From b3c2b31e71b5d4e64954146658ef58be7d459e19 Mon Sep 17 00:00:00 2001 From: Oleg Oshmyan Date: Thu, 1 May 2014 00:32:50 +0100 Subject: Make \be animatable VSFilter has supported this since version 2.39. Use the raw floating-point value of the \be argument in the animation formula, like xy-VSFilter has done since version 3.0.0.45 (404301a3). --- libass/ass_parse.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libass/ass_parse.c b/libass/ass_parse.c index c572955..b8c2547 100644 --- a/libass/ass_parse.c +++ b/libass/ass_parse.c @@ -730,8 +730,11 @@ char *parse_tag(ASS_Renderer *render_priv, char *p, double pwr) } else reset_render_context(render_priv, NULL); } else if (mystrcmp(&p, "be")) { - int val; - if (mystrtoi(&p, &val)) { + double dval; + if (mystrtod(&p, &dval)) { + int val; + // VSFilter always adds +0.5, even if the value is negative + val = (int) (render_priv->state.be * (1 - pwr) + dval * pwr + 0.5); // Clamp to a safe upper limit, since high values need excessive CPU val = (val < 0) ? 0 : val; val = (val > MAX_BE) ? MAX_BE : val; -- cgit v1.2.3