summaryrefslogtreecommitdiffstats
path: root/libass
diff options
context:
space:
mode:
authoraurel <aurel@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-05-31 19:10:57 +0000
committeraurel <aurel@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-05-31 19:10:57 +0000
commite123aecb4825db7da60e67eae3a01d9222593d95 (patch)
treefb749ecf477b0c21500210a9a84b10d79c2e131b /libass
parentc071c9e805e6180e40df15f7d5e4028982789596 (diff)
downloadmpv-e123aecb4825db7da60e67eae3a01d9222593d95.tar.bz2
mpv-e123aecb4825db7da60e67eae3a01d9222593d95.tar.xz
backport ass_flush_events() from upstream libass and make use of it
This fixes subtitles duplication when seeking back in ass stream formated with the "standard" format FFmpeg uses. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31293 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass')
-rw-r--r--libass/ass.c14
-rw-r--r--libass/ass.h6
2 files changed, 20 insertions, 0 deletions
diff --git a/libass/ass.c b/libass/ass.c
index 6becb39e8e..1e8cddd00d 100644
--- a/libass/ass.c
+++ b/libass/ass.c
@@ -909,6 +909,20 @@ void ass_process_chunk(ASS_Track *track, char *data, int size,
free(str);
}
+/**
+ * \brief Flush buffered events.
+ * \param track track
+*/
+void ass_flush_events(ASS_Track *track)
+{
+ if (track->events) {
+ int eid;
+ for (eid = 0; eid < track->n_events; eid++)
+ ass_free_event(track, eid);
+ track->n_events = 0;
+ }
+}
+
#ifdef CONFIG_ICONV
/** \brief recode buffer to utf-8
* constraint: codepage != 0
diff --git a/libass/ass.h b/libass/ass.h
index e7674a736c..03b690c063 100644
--- a/libass/ass.h
+++ b/libass/ass.h
@@ -317,6 +317,12 @@ void ass_process_chunk(ASS_Track *track, char *data, int size,
long long timecode, long long duration);
/**
+ * \brief Flush buffered events.
+ * \param track track
+*/
+void ass_flush_events(ASS_Track *track);
+
+/**
* \brief Read subtitles from file.
* \param library library handle
* \param fname file name