libbluray | branch: master | hpi1 <[email protected]> | Thu Mar 27 12:51:17 2014 +0200| [5c67d1a73f8fbb1786bc7ead1860140fbc8bebf8] | committer: hpi1
rewrite index_dump using public API > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=5c67d1a73f8fbb1786bc7ead1860140fbc8bebf8 --- src/Makefile.am | 16 +----- src/examples/bd_info.c | 2 +- src/examples/index_dump.c | 118 ++++++++++++++++----------------------------- 3 files changed, 45 insertions(+), 91 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 3709b39..31176b3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -241,20 +241,8 @@ clpi_dump_SOURCES = \ examples/util.h clpi_dump_LDADD = libbluray.la -index_dump_CFLAGS = $(AM_CFLAGS) -index_dump_SOURCES = \ - examples/index_dump.c \ - file/file.c \ - libbluray/bdnav/index_parse.c \ - util/bits.c \ - util/logging.c -if HAVE_WIN32 -index_dump_SOURCES += \ - file/file_win32.c -else -index_dump_SOURCES += \ - file/file_posix.c -endif +index_dump_SOURCES = examples/index_dump.c +index_dump_LDADD = libbluray.la mobj_dump_CFLAGS = $(AM_CFLAGS) mobj_dump_SOURCES = \ diff --git a/src/examples/bd_info.c b/src/examples/bd_info.c index cbd94d8..aefdadc 100644 --- a/src/examples/bd_info.c +++ b/src/examples/bd_info.c @@ -137,7 +137,7 @@ static void _print_app_info(const BLURAY_DISC_INFO *info) "59.94 Hz" }; - printf("Application info:\n"); + printf("\nApplication info:\n"); printf(" initial mode preference : %s\n", info->initial_output_mode_preference ? "3D" : "2D"); printf(" 3D content exists : %s\n", info->content_exist_3D ? "Yes" : "No"); printf(" video format : %s (0x%x)\n", video_format_str[info->video_format & 0xf], info->video_format); diff --git a/src/examples/index_dump.c b/src/examples/index_dump.c index aaa5da7..ddb54ed 100644 --- a/src/examples/index_dump.c +++ b/src/examples/index_dump.c @@ -17,110 +17,76 @@ * <http://www.gnu.org/licenses/>. */ -#include "libbluray/bdnav/index_parse.h" +#include "libbluray/bluray.h" #include <stdio.h> -static void _indx_print_app_info(INDX_APP_INFO *app_info) +static void _indx_print_title(const BLURAY_TITLE *title, int normal_title) { - const char video_format_str[16][8] = { - "ignored", "480i", "576i", "480p", "1080i", "720p", "1080p", "576p" - }; - - const char frame_rate_str[16][16] = { - "ignored", - "23.976 Hz", - "24 Hz", - "25 Hz", - "29.97 Hz", - "reserved", - "50 Hz", - "59.94 Hz" - }; - - printf(" initial mode : %s\n", app_info->initial_output_mode_preference ? "3D" : "2D"); - printf(" content exists: %s\n", app_info->content_exist_flag ? "Yes" : "No"); - printf(" video format : %s (0x%x)\n", video_format_str[app_info->video_format], app_info->video_format); - printf(" frame rate : %s (0x%x)\n", frame_rate_str[app_info->frame_rate], app_info->frame_rate); - printf(" provider data : %32s\n", app_info->user_data); -} - -static void _indx_print_hdmv_obj(INDX_HDMV_OBJ *hdmv) -{ - const char *const playback_types[] = {"Movie", "Interactive", "???", "???"}; - - printf(" object type : HDMV\n"); - printf(" playback type : %s\n", playback_types[hdmv->playback_type]); - printf(" id_ref : %u\n", hdmv->id_ref); -} - -static void _indx_print_bdj_obj(INDX_BDJ_OBJ *bdj) -{ - const char * const playback_types[] = {"???", "???", "Movie", "Interactive"}; - - printf(" object type : BD-J\n"); - printf(" playback type : %s\n", playback_types[bdj->playback_type]); - printf(" name : %s\n", bdj->name); -} - -static void _indx_print_play_item(INDX_PLAY_ITEM *title) -{ - if (title->object_type == 1) { - _indx_print_hdmv_obj(&title->hdmv); - } else { - _indx_print_bdj_obj(&title->bdj); - } -} - -static void _indx_print_title(INDX_TITLE *title) -{ - if (title->object_type == 1) { - _indx_print_hdmv_obj(&title->hdmv); - } else { - _indx_print_bdj_obj(&title->bdj); + printf(" object type : %s\n", title->bdj ? "BD-J" : "HDMV"); + printf(" playback type : %s\n", title->interactive ? "Interactive" : "Movie"); + printf(title->bdj ? + " name : %05d.bdjo\n" : + " id_ref : %u\n", + title->id_ref); + + if (normal_title) { + printf(" access type : %s%s\n", title->accessible ? "Accessible" : "Prohibited", title->hidden ? ", Hidden" : ""); } - printf(" access type : %d\n", title->access_type); } -static void _indx_print(INDX_ROOT *index) +static void _indx_print(const BLURAY_DISC_INFO *info) { uint32_t i; - printf("Application info:\n"); - _indx_print_app_info(&index->app_info); - printf("\nFirst playback:\n"); - _indx_print_play_item(&index->first_play); + if (info->first_play) { + _indx_print_title(info->first_play, 0); + } else { + printf(" (not present)\n"); + } printf("\nTop menu:\n"); - _indx_print_play_item(&index->top_menu); + if (info->top_menu) { + _indx_print_title(info->titles[0], 0); + } else { + printf(" (not present)\n"); + } - printf("\nTitles: %d\n", index->num_titles); - for (i = 0; i < index->num_titles; i++) { - printf("%02d", i); - _indx_print_title(&index->titles[i]); + printf("\nTitles: %d\n", info->num_titles); + for (i = 1; i <= info->num_titles; i++) { + printf("%02d %s\n", i, info->titles[i]->name ? info->titles[i]->name : ""); + _indx_print_title(info->titles[i], 1); } } int main(int argc, const char *argv[]) { - char file[1024]; - INDX_ROOT *index; + BLURAY *bd; + const BLURAY_DISC_INFO *info; if (argc != 2) { fprintf(stderr, "usage: %s <disc_root>\n", argv[0]); return 1; } - sprintf(file, "%s/BDMV/index.bdmv", argv[1]); - - index = indx_parse(file); + bd = bd_open(argv[1], NULL); + if (!bd) { + fprintf(stderr, "error opening BD disc %s\n", argv[1]); + return -1; + } - if (index) { - _indx_print(index); + info = bd_get_disc_info(bd); - indx_free(&index); + if (!info->bluray_detected) { + fprintf(stderr, "no BD disc detected in %s\n", argv[1]); + bd_close(bd); + return -1; } + _indx_print(info); + + bd_close(bd); + return 0; } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
