libbluray | branch: master | hpi1 <[email protected]> | Mon Feb 1 13:02:51 2016 +0200| [f387c8f14870d399c93dc5c20ae629e29ed0b459] | committer: hpi1
navigation: split chapter mark counting to separate function > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=f387c8f14870d399c93dc5c20ae629e29ed0b459 --- src/libbluray/bdnav/navigation.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/libbluray/bdnav/navigation.c b/src/libbluray/bdnav/navigation.c index 39be4b7..cfd7739 100644 --- a/src/libbluray/bdnav/navigation.c +++ b/src/libbluray/bdnav/navigation.c @@ -174,6 +174,21 @@ _pl_duration(MPLS_PL *pl) return duration; } +static uint32_t +_pl_chapter_count(MPLS_PL *pl) +{ + unsigned ii, chapters = 0; + + // Count the number of "entry" marks (skipping "link" marks) + // This is the the number of chapters + for (ii = 0; ii < pl->mark_count; ii++) { + if (pl->play_mark[ii].mark_type == BD_MARK_ENTRY) { + chapters++; + } + } + return chapters; +} + NAV_TITLE_LIST* nav_get_title_list(BD_DISC *disc, uint32_t flags, uint32_t min_title_length) { BD_DIR_H *dir; @@ -446,7 +461,7 @@ static void _fill_clip(NAV_TITLE *title, NAV_TITLE* nav_title_open(BD_DISC *disc, const char *playlist, unsigned angle) { NAV_TITLE *title = NULL; - unsigned ii, ss, chapters = 0; + unsigned ii, ss; uint32_t pos = 0; uint32_t time = 0; @@ -506,15 +521,8 @@ NAV_TITLE* nav_title_open(BD_DISC *disc, const char *playlist, unsigned angle) } } - // Count the number of "entry" marks (skipping "link" marks) - // This is the the number of chapters - for (ii = 0; ii < title->pl->mark_count; ii++) { - if (title->pl->play_mark[ii].mark_type == BD_MARK_ENTRY) { - chapters++; - } - } - title->chap_list.count = chapters; - title->chap_list.mark = calloc(chapters, sizeof(NAV_MARK)); + title->chap_list.count = _pl_chapter_count(title->pl); + title->chap_list.mark = calloc(title->chap_list.count, sizeof(NAV_MARK)); title->mark_list.count = title->pl->mark_count; title->mark_list.mark = calloc(title->pl->mark_count, sizeof(NAV_MARK)); _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
