Mercurial > mplayer.hg
diff libass/ass_parse.c @ 36363:c3aaaf17c721
Update libass to latest git version.
author | reimar |
---|---|
date | Tue, 24 Sep 2013 20:50:02 +0000 |
parents | c7866af24567 |
children |
line wrap: on
line diff
--- a/libass/ass_parse.c Sun Sep 22 09:03:30 2013 +0000 +++ b/libass/ass_parse.c Tue Sep 24 20:50:02 2013 +0000 @@ -311,7 +311,7 @@ int x0, y0, x1, y1; int res = 1; char *start = p; - skipopt('('); + skip('('); res &= mystrtoi(&p, &x0); skipopt(','); res &= mystrtoi(&p, &y0); @@ -418,6 +418,7 @@ mystrtod(&p, &x2); skip(','); mystrtod(&p, &y2); + t1 = t2 = 0; if (*p == ',') { skip(','); mystrtoll(&p, &t1); @@ -427,13 +428,20 @@ "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, "movement: (%f, %f) -> (%f, %f)", x1, y1, x2, y2); } - skip(')'); + skipopt(')'); delta_t = t2 - t1; t = render_priv->time - render_priv->state.event->Start; if (t < t1) @@ -542,7 +550,7 @@ mystrtod(&p, &v1); skip(','); mystrtod(&p, &v2); - skip(')'); + skipopt(')'); ass_msg(render_priv->library, MSGL_DBG2, "pos(%f, %f)", v1, v2); if (render_priv->state.evt_type == EVENT_POSITIONED) { ass_msg(render_priv->library, MSGL_V, "Subtitle has a new \\pos " @@ -586,7 +594,7 @@ skip(','); mystrtoll(&p, &t4); } - skip(')'); + skipopt(')'); if ((render_priv->state.parsed_tags & PARSED_FADE) == 0) { render_priv->state.fade = interpolate_alpha(render_priv->time - @@ -600,7 +608,7 @@ mystrtoi(&p, &v1); skip(','); mystrtoi(&p, &v2); - skip(')'); + skipopt(')'); ass_msg(render_priv->library, MSGL_DBG2, "org(%d, %d)", v1, v2); if (!render_priv->state.have_origin) { render_priv->state.org_x = v1; @@ -617,9 +625,8 @@ double k; skip('('); for (cnt = 0; cnt < 3; ++cnt) { - if (*p == '\\') + if (!mystrtod(&p, &v[cnt])) break; - mystrtod(&p, &v[cnt]); skip(','); } if (cnt == 3) { @@ -654,15 +661,15 @@ assert(delta_t != 0.); k = pow(((double) (t - t1)) / delta_t, v3); } - while (*p == '\\') + while (*p != ')' && *p != '}' && *p != '\0') p = parse_tag(render_priv, p, k); // maybe k*pwr ? no, specs forbid nested \t's skip_to(')'); // in case there is some unknown tag or a comment - skip(')'); + skipopt(')'); } else if (mystrcmp(&p, "clip")) { char *start = p; int x0, y0, x1, y1; int res = 1; - skipopt('('); + skip('('); res &= mystrtoi(&p, &x0); skipopt(','); res &= mystrtoi(&p, &y0);