diff options
author | Oleg Oshmyan <chortos@inbox.lv> | 2020-10-16 16:42:32 +0300 |
---|---|---|
committer | Oleg Oshmyan <chortos@inbox.lv> | 2020-10-27 01:24:13 +0200 |
commit | 34cbd0f865bf4db3dbe335a3ae90b6aafd1c3192 (patch) | |
tree | 052abb4a756e0d9d051e5512eac6643f1d928008 | |
parent | cf73dd7cf0c58dfce800906ae74489d307860cdb (diff) | |
download | libass-34cbd0f865bf4db3dbe335a3ae90b6aafd1c3192.tar.bz2 libass-34cbd0f865bf4db3dbe335a3ae90b6aafd1c3192.tar.xz |
process_karaoke_effects: use long long for timestamps
Our frame timestamps are long long. Don't truncate them to int here.
This also avoids overflow in (tm_end - tm_start) if \k... tag arguments
are big, although, of course, parse_tags still reads them in as doubles
to begin with and their conversion from double may still be undefined.
-rw-r--r-- | libass/ass_parse.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libass/ass_parse.c b/libass/ass_parse.c index e500046..11d7f1b 100644 --- a/libass/ass_parse.c +++ b/libass/ass_parse.c @@ -972,7 +972,7 @@ void apply_transition_effects(ASS_Renderer *render_priv, ASS_Event *event) */ void process_karaoke_effects(ASS_Renderer *render_priv) { - int tm_current = render_priv->time - render_priv->state.event->Start; + long long tm_current = render_priv->time - render_priv->state.event->Start; int timing = 0; Effect effect_type = EF_NONE; @@ -993,8 +993,8 @@ void process_karaoke_effects(ASS_Renderer *render_priv) if (effect_type == EF_NONE) continue; - int tm_start = timing + start->effect_skip_timing; - int tm_end = tm_start + start->effect_timing; + long long tm_start = timing + start->effect_skip_timing; + long long tm_end = tm_start + start->effect_timing; timing = tm_end; if (effect_type != EF_KARAOKE_KF) |