vlc | branch: master | Francois Cartegnie <[email protected]> | Tue May 8 15:24:46 2018 +0200| [61a6647c1155a5ca2d1f4f47dddb1c32a693655e] | committer: Francois Cartegnie
access: bluray: enforce seamless timestamps between clips > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=61a6647c1155a5ca2d1f4f47dddb1c32a693655e --- modules/access/Makefile.am | 3 ++- modules/access/bluray.c | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/modules/access/Makefile.am b/modules/access/Makefile.am index 222aa16c6b..5abe3a1a5f 100644 --- a/modules/access/Makefile.am +++ b/modules/access/Makefile.am @@ -244,7 +244,8 @@ endif access_LTLIBRARIES += $(LTLIBdvdnav) EXTRA_LTLIBRARIES += libdvdnav_plugin.la -libdvdread_plugin_la_SOURCES = access/dvdread.c demux/mpeg/ps.h demux/mpeg/pes.h +libdvdread_plugin_la_SOURCES = access/dvdread.c demux/mpeg/ps.h demux/mpeg/pes.h \ + demux/moving_avg.h demux/timestamps_filter.h libdvdread_plugin_la_CFLAGS = $(AM_CFLAGS) $(DVDREAD_CFLAGS) libdvdread_plugin_la_LIBADD = $(DVDREAD_LIBS) libdvdread_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(accessdir)' diff --git a/modules/access/bluray.c b/modules/access/bluray.c index 9163bfd801..49833890d2 100644 --- a/modules/access/bluray.c +++ b/modules/access/bluray.c @@ -52,6 +52,7 @@ #include <vlc_fs.h> #include "../demux/mpeg/timestamps.h" +#include "../demux/timestamps_filter.h" /* FIXME we should find a better way than including that */ #include "../../src/text/iso-639_def.h" @@ -207,6 +208,7 @@ typedef struct es_out_id_t *p_video_es; /* TS stream */ + es_out_t *p_tf_out; es_out_t *p_out; bool b_spu_enable; /* enabled / disabled */ vlc_demux_chained_t *p_parser; @@ -936,7 +938,11 @@ static int blurayOpen(vlc_object_t *object) } } - p_sys->p_out = esOutNew(VLC_OBJECT(p_demux), p_demux->out, p_demux); + p_sys->p_tf_out = timestamps_filter_es_out_New(p_demux->out); + if(unlikely(!p_sys->p_tf_out)) + goto error; + + p_sys->p_out = esOutNew(VLC_OBJECT(p_demux), p_sys->p_tf_out, p_demux); if (unlikely(p_sys->p_out == NULL)) goto error; @@ -994,7 +1000,11 @@ static void blurayClose(vlc_object_t *object) if (p_sys->p_parser) vlc_demux_chained_Delete(p_sys->p_parser); - es_out_Delete(p_sys->p_out); + + if (p_sys->p_out != NULL) + es_out_Delete(p_sys->p_out); + if(p_sys->p_tf_out) + timestamps_filter_es_out_Delete(p_sys->p_tf_out); /* Titles */ for (unsigned int i = 0; i < p_sys->i_title; i++) @@ -1968,6 +1978,9 @@ static void blurayRestartParser(demux_t *p_demux, bool b_flush) if (p_sys->p_parser) vlc_demux_chained_Delete(p_sys->p_parser); + if(b_flush) + es_out_Control(p_sys->p_tf_out, ES_OUT_TF_FILTER_RESET); + p_sys->p_parser = vlc_demux_chained_New(VLC_OBJECT(p_demux), "ts", p_sys->p_out); if (!p_sys->p_parser) msg_Err(p_demux, "Failed to create TS demuxer"); @@ -2565,6 +2578,7 @@ static void blurayHandleEvent(demux_t *p_demux, const BD_EVENT *e) p_sys->b_pl_playing = true; break; case BD_EVENT_PLAYITEM: + notifyDiscontinuityToParser(p_sys); blurayUpdateCurrentClip(p_demux, e->param); break; case BD_EVENT_CHAPTER: _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
