libbluray | branch: master | hpi1 <[email protected]> | Tue May 10 15:10:48 2011 +0300| [11edeefad7a9e50d35770c2c2753c3ba0103fddc] | committer: hpi1
Added initial title to nav_title_open() > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=11edeefad7a9e50d35770c2c2753c3ba0103fddc --- src/libbluray/bdnav/navigation.c | 9 +++++++-- src/libbluray/bdnav/navigation.h | 2 +- src/libbluray/bluray.c | 10 +++++----- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/libbluray/bdnav/navigation.c b/src/libbluray/bdnav/navigation.c index 61fddae..b656d7b 100644 --- a/src/libbluray/bdnav/navigation.c +++ b/src/libbluray/bdnav/navigation.c @@ -440,7 +440,7 @@ static void _fill_clip(NAV_TITLE *title, *time += clip->out_time - clip->in_time; } -NAV_TITLE* nav_title_open(const char *root, const char *playlist) +NAV_TITLE* nav_title_open(const char *root, const char *playlist, unsigned angle) { NAV_TITLE *title = NULL; char *path; @@ -459,7 +459,7 @@ NAV_TITLE* nav_title_open(const char *root, const char *playlist) path = str_printf("%s" DIR_SEP "BDMV" DIR_SEP "PLAYLIST" DIR_SEP "%s", root, playlist); title->angle_count = 0; - title->angle = 0; + title->angle = angle; title->pl = mpls_parse(path, 0); if (title->pl == NULL) { BD_DEBUG(DBG_NAV, "Fail: Playlist parse %s\n", path); @@ -521,6 +521,11 @@ NAV_TITLE* nav_title_open(const char *root, const char *playlist) title->mark_list.mark = calloc(title->pl->mark_count, sizeof(NAV_MARK)); _extrapolate_title(title); + + if (title->angle >= title->angle_count) { + title->angle = 0; + } + return title; } diff --git a/src/libbluray/bdnav/navigation.h b/src/libbluray/bdnav/navigation.h index 88caa56..fa2abf9 100644 --- a/src/libbluray/bdnav/navigation.h +++ b/src/libbluray/bdnav/navigation.h @@ -137,7 +137,7 @@ struct nav_title_list_s BD_PRIVATE uint8_t nav_lookup_aspect(NAV_CLIP *clip, int pid); BD_PRIVATE char* nav_find_main_title(const char *root); -BD_PRIVATE NAV_TITLE* nav_title_open(const char *root, const char *playlist); +BD_PRIVATE NAV_TITLE* nav_title_open(const char *root, const char *playlist, unsigned angle); BD_PRIVATE void nav_title_close(NAV_TITLE *title); BD_PRIVATE NAV_CLIP* nav_next_clip(NAV_TITLE *title, NAV_CLIP *clip); BD_PRIVATE NAV_CLIP* nav_packet_search(NAV_TITLE *title, uint32_t pkt, uint32_t *clip_pkt, diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index c470862..f989307 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -1309,11 +1309,11 @@ static void _close_playlist(BLURAY *bd) } } -static int _open_playlist(BLURAY *bd, const char *f_name) +static int _open_playlist(BLURAY *bd, const char *f_name, unsigned angle) { _close_playlist(bd); - bd->title = nav_title_open(bd->device_path, f_name); + bd->title = nav_title_open(bd->device_path, f_name, angle); if (bd->title == NULL) { BD_DEBUG(DBG_BLURAY | DBG_CRIT, "Unable to open title %s! (%p)\n", f_name, bd); @@ -1357,7 +1357,7 @@ int bd_select_playlist(BLURAY *bd, uint32_t playlist) } } - result = _open_playlist(bd, f_name); + result = _open_playlist(bd, f_name, 0); X_FREE(f_name); return result; @@ -1383,7 +1383,7 @@ int bd_select_title(BLURAY *bd, uint32_t title_idx) bd->title_idx = title_idx; f_name = bd->title_list->title_info[title_idx].name; - return _open_playlist(bd, f_name); + return _open_playlist(bd, f_name, 0); } uint32_t bd_get_current_title(BLURAY *bd) @@ -1533,7 +1533,7 @@ static BLURAY_TITLE_INFO *_get_title_info(BLURAY *bd, uint32_t title_idx, uint32 NAV_TITLE *title; BLURAY_TITLE_INFO *title_info; - title = nav_title_open(bd->device_path, mpls_name); + title = nav_title_open(bd->device_path, mpls_name, 0); if (title == NULL) { BD_DEBUG(DBG_BLURAY | DBG_CRIT, "Unable to open title %s! (%p)\n", mpls_name, bd); _______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
