libbluray | branch: master | hpi1 <[email protected]> | Wed Oct 9 11:46:31 2013 +0300| [4a73fca74e2c208e07bcff84eb9f5b02dc95bbda] | committer: hpi1
Improved libbluray_test. Use only public API. > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=4a73fca74e2c208e07bcff84eb9f5b02dc95bbda --- src/examples/Makefile.am | 2 +- src/examples/libbluray_test.c | 94 +++++++++++++++++++++++------------------ 2 files changed, 54 insertions(+), 42 deletions(-) diff --git a/src/examples/Makefile.am b/src/examples/Makefile.am index 53371a8..fa40954 100644 --- a/src/examples/Makefile.am +++ b/src/examples/Makefile.am @@ -63,7 +63,7 @@ mobj_dump_SOURCES = \ ../libbluray/hdmv/mobj_print.c libbluray_test_SOURCES = \ - libbluray_test.c ../util/logging.c + libbluray_test.c libbluray_test_LDADD = $(BLURAY_LIB) diff --git a/src/examples/libbluray_test.c b/src/examples/libbluray_test.c index 47e3014..83642d7 100644 --- a/src/examples/libbluray_test.c +++ b/src/examples/libbluray_test.c @@ -1,6 +1,7 @@ /* * This file is part of libbluray * Copyright (C) 2009-2010 Obliter0n + * Copyright (C) 2013 VideoLAN * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -22,73 +23,84 @@ #endif #include "libbluray/bluray.h" -#include "util/logging.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <inttypes.h> -#define HEX_PRINT(X,Y) { int zz; for(zz = 0; zz < Y; zz++) fprintf(stderr, "%02X", X[zz]); fprintf(stderr, "\n"); } - int main(int argc, char *argv[]) { - if (argc == 4) { - BLURAY *bd = bd_open(argv[1], argv[2]); - int count, ii; - - //bd_get_titles(bd, 0); + BLURAY *bd; + int ii, num_titles; - BD_DEBUG(DBG_BLURAY,"\nListing titles:\n"); + if (argc < 3) { + fprintf(stderr, "Usage:\n %s <media_path> [<title_number>]\n\n", argv[0]); + } + if (argc < 2) { + return -1; + } - count = bd_get_titles(bd, TITLES_RELEVANT, 0); - for (ii = 0; ii < count; ii++) - { - BLURAY_TITLE_INFO* ti; - ti = bd_get_title_info(bd, ii, 0); - BD_DEBUG(DBG_BLURAY, - "index: %d duration: %02"PRIu64":%02"PRIu64":%02"PRIu64" chapters: %d\n", - ii, - (ti->duration / 90000) / (3600), - ((ti->duration / 90000) % 3600) / 60, - ((ti->duration / 90000) % 60), - ti->chapter_count); + /* open disc */ + bd = bd_open(argv[1], NULL); + if (!bd) { + fprintf(stderr, "Error opening %s\n", argv[1]); + return -1; } - bd_select_title(bd, atoi(argv[3])); + /* get titles */ + num_titles = bd_get_titles(bd, TITLES_RELEVANT, 0); + + /* list titles */ + if (argc < 3) { + printf("Listing titles:\n"); + + for (ii = 0; ii < num_titles; ii++) { + BLURAY_TITLE_INFO* ti; + ti = bd_get_title_info(bd, ii, 0); + printf("index: %d duration: %02"PRIu64":%02"PRIu64":%02"PRIu64" chapters: %d\n", + ii, + (ti->duration / 90000) / (3600), + ((ti->duration / 90000) % 3600) / 60, + ((ti->duration / 90000) % 60), + ti->chapter_count); + } - unsigned char *buf = malloc(6144); - memset(buf,0,6144); + bd_close(bd); + return 0; + } -#if 0 - bd_read(bd, buf, 2048); - bd_read(bd, buf, 2048); - bd_read(bd, buf, 2048); - bd_read(bd, buf, 6144); -#else + /* select title */ + if (bd_select_title(bd, atoi(argv[2])) <= 0) { + fprintf(stderr, "Error opening title #%s\n", argv[2]); + bd_close(bd); + return -1; + } + /* dump */ FILE *fd = fopen("streamdump.m2ts", "wb"); if (fd) { + printf("Writing to streamdump.m2ts\n"); + ii = 0; while (1) { + unsigned char buf[6144]; int len = bd_read(bd, buf, 6144); if (len <= 0) break; - if (fwrite(buf, len, 1, fd) < 1) - break; - if (!(ii % 1000)) { - BD_DEBUG(DBG_BLURAY, - "%d\r", ii); + if (fwrite(buf, len, 1, fd) < 1) { + fprintf(stderr, "Write error\n"); + break; } - + if (!(ii % 100)) { + printf("Block %d\r", ii); + } + ii++; } fclose(fd); + } else { + printf("Error opening streamdump.m2ts\n"); } -#endif - bd_close(bd); - } else { - printf("\nUsage:\n %s <media_path> <keyfile_path> <title_number>\n\n", argv[0]); - } return 0; } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
