diff options
author | uau <uau@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-02-06 00:18:35 +0000 |
---|---|---|
committer | uau <uau@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-02-06 00:18:35 +0000 |
commit | b5c470a029f9d008f63b4b26dc461ac9366eee53 (patch) | |
tree | 22b204282cc142df82e4992bef4c4f8003a857e0 /mplayer.c | |
parent | d524405f5c644a225caaeca2a2a1758c1a52165d (diff) | |
download | mpv-b5c470a029f9d008f63b4b26dc461ac9366eee53.tar.bz2 mpv-b5c470a029f9d008f63b4b26dc461ac9366eee53.tar.xz |
Fix multiple appearing or appearing+disappearing subs in the same frame
in non-ASS mode. The latter is common (old sub replaced by new) and
resulted in an incorrect frame where both appeared simultaneously.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22162 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mplayer.c')
-rw-r--r-- | mplayer.c | 11 |
1 files changed, 5 insertions, 6 deletions
@@ -2966,17 +2966,14 @@ static void update_subtitles(void) } else if (dvdsub_id >= 0 && type == 't') { static subtitle subs; double curpts = sh_video->pts + sub_delay; - double pts = MP_NOPTS_VALUE; double endpts; vo_sub = &subs; while (d_dvdsub->first) { - double nextpts = ds_get_next_pts(d_dvdsub); - if (nextpts == MP_NOPTS_VALUE || nextpts > curpts) + double pts = ds_get_next_pts(d_dvdsub); + if (pts > curpts) break; endpts = d_dvdsub->first->endpts; len = ds_get_packet_sub(d_dvdsub, &packet); - pts = nextpts; - } #ifdef USE_ASS if (ass_enabled) { static ass_track_t *global_ass_track = NULL; @@ -2998,7 +2995,9 @@ static void update_subtitles(void) sub_clear_text(&subs, MP_NOPTS_VALUE); sub_add_text(&subs, packet, len, endpts); vo_osd_changed(OSDTYPE_SUBTITLE); - } else if (sub_clear_text(&subs, curpts)) + } + } + if (sub_clear_text(&subs, curpts)) vo_osd_changed(OSDTYPE_SUBTITLE); } current_module=NULL; |