]> granicus.if.org Git - libass/commitdiff
Fix crazy VSFilter behavior for \move tag
authorwm4 <wm4@nowhere>
Wed, 20 Mar 2013 01:10:32 +0000 (02:10 +0100)
committerwm4 <wm4@nowhere>
Wed, 20 Mar 2013 01:10:32 +0000 (02:10 +0100)
Fixes issue 90 (both cases).

libass/ass_parse.c

index 3dcdf4818ce34453ab3aada26bcb3ff598a0dba6..712cd96c0a6d3408d710e2af56e462381066ce8a 100644 (file)
@@ -418,6 +418,7 @@ char *parse_tag(ASS_Renderer *render_priv, char *p, double pwr)
         mystrtod(&p, &x2);
         skip(',');
         mystrtod(&p, &y2);
+        t1 = t2 = 0;
         if (*p == ',') {
             skip(',');
             mystrtoll(&p, &t1);
@@ -427,7 +428,14 @@ char *parse_tag(ASS_Renderer *render_priv, char *p, double pwr)
                    "movement6: (%f, %f) -> (%f, %f), (%" PRId64 " .. %"
                    PRId64 ")\n", x1, y1, x2, y2, (int64_t) t1,
                    (int64_t) t2);
-        } else {
+            // VSFilter
+            if (t1 > t2) {
+                double tmp = t2;
+                t2 = t1;
+                t1 = tmp;
+            }
+        }
+        if (t1 <= 0 && t2 <= 0) {
             t1 = 0;
             t2 = render_priv->state.event->Duration;
             ass_msg(render_priv->library, MSGL_DBG2,