vlc | branch: master | Francois Cartegnie <[email protected]> | Fri Nov 9 15:08:45 2018 +0100| [d48d327033b98c15461378dcb6ffecfc12510d38] | committer: Francois Cartegnie
access: bluray: improve loop detection > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d48d327033b98c15461378dcb6ffecfc12510d38 --- modules/access/bluray.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/access/bluray.c b/modules/access/bluray.c index 014179e7d1..6348c64e19 100644 --- a/modules/access/bluray.c +++ b/modules/access/bluray.c @@ -2029,7 +2029,7 @@ static void bluraySendOverlayToVout(demux_t *p_demux, int plane, bluray_overlay_ static bool blurayTitleIsRepeating(BLURAY_TITLE_INFO *title_info, unsigned repeats, unsigned ratio) { - char clip_id[6] = {0}; + const BLURAY_CLIP_INFO *prev = NULL; unsigned maxrepeats = 0; unsigned sequence = 0; if(!title_info->chapter_count) @@ -2040,10 +2040,16 @@ static bool blurayTitleIsRepeating(BLURAY_TITLE_INFO *title_info, unsigned i = title_info->chapters[j].clip_ref; if(i < title_info->clip_count) { - if(memcmp(title_info->clips[i].clip_id, clip_id, 6)) + if(prev == NULL || + /* non repeated does not need start time offset */ + title_info->clips[i].start_time == 0 || + /* repeats occurs on same segment */ + memcmp(title_info->clips[i].clip_id, prev->clip_id, 6) || + prev->in_time != title_info->clips[i].in_time || + prev->pkt_count != title_info->clips[i].pkt_count) { sequence = 0; - memcpy(clip_id, title_info->clips[i].clip_id, 6); + prev = &title_info->clips[i]; continue; } else @@ -2066,7 +2072,7 @@ static void blurayUpdateTitleInfo(input_title_t *t, BLURAY_TITLE_INFO *title_inf TAB_CLEAN(t->i_seekpoint, t->seekpoint); /* FIXME: have libbluray expose repeating titles */ - if(blurayTitleIsRepeating(title_info, 10, 90)) + if(blurayTitleIsRepeating(title_info, 50, 90)) return; for (unsigned int j = 0; j < title_info->chapter_count; j++) { _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
