vlc | branch: master | Francois Cartegnie <[email protected]> | Thu Nov 8 21:53:25 2018 +0100| [6b146206086881599894f74eb5b8e1062a778ec3] | committer: Francois Cartegnie
access: bluray: avoid being spammed with menu chapters > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6b146206086881599894f74eb5b8e1062a778ec3 --- modules/access/bluray.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/modules/access/bluray.c b/modules/access/bluray.c index 3d60dfba42..de0fbc320e 100644 --- a/modules/access/bluray.c +++ b/modules/access/bluray.c @@ -2052,6 +2052,37 @@ static void bluraySendOverlayToVout(demux_t *p_demux, bluray_overlay_t *p_ov) p_ov->status = Outdated; } +static bool blurayTitleIsRepeating(BLURAY_TITLE_INFO *title_info, + unsigned repeats, unsigned ratio) +{ + char clip_id[6] = {0}; + unsigned maxrepeats = 0; + unsigned sequence = 0; + if(!title_info->chapter_count) + return false; + + for (unsigned int j = 0; j < title_info->chapter_count; j++) + { + 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)) + { + sequence = 0; + memcpy(clip_id, title_info->clips[i].clip_id, 6); + continue; + } + else + { + if(maxrepeats < sequence++) + maxrepeats = sequence; + } + } + } + return (maxrepeats > repeats && + (100 * maxrepeats / title_info->chapter_count) >= ratio); +} + static void blurayUpdateTitleInfo(input_title_t *t, BLURAY_TITLE_INFO *title_info) { t->i_length = FROM_SCALE_NZ(title_info->duration); @@ -2060,6 +2091,10 @@ static void blurayUpdateTitleInfo(input_title_t *t, BLURAY_TITLE_INFO *title_inf vlc_seekpoint_Delete( t->seekpoint[i] ); TAB_CLEAN(t->i_seekpoint, t->seekpoint); + /* FIXME: have libbluray expose repeating titles */ + if(blurayTitleIsRepeating(title_info, 10, 90)) + return; + for (unsigned int j = 0; j < title_info->chapter_count; j++) { seekpoint_t *s = vlc_seekpoint_New(); if (!s) { _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
