libbluray | branch: master | hpi1 <[email protected]> | Fri Mar 20 14:46:19 2015 +0200| [da324c9abc045e3059936ef2dcb620fdc7ceb5b1] | committer: hpi1
split bd_open() > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=da324c9abc045e3059936ef2dcb620fdc7ceb5b1 --- src/libbluray/bluray.c | 48 ++++++++++++++++++++++++++++++++++++++---------- src/libbluray/bluray.h | 24 ++++++++++++++++++++++-- 2 files changed, 60 insertions(+), 12 deletions(-) diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index e05b61d..738c0ec 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -1275,17 +1275,10 @@ static void _storage_free(BLURAY *bd) * open / close */ -BLURAY *bd_open(const char *device_path, const char *keyfile_path) +BLURAY *bd_init(void) { - BD_ENC_INFO enc_info; - BD_DEBUG(DBG_BLURAY, "libbluray version "BLURAY_VERSION_STRING"\n"); - if (!device_path) { - BD_DEBUG(DBG_BLURAY | DBG_CRIT, "No device path provided!\n"); - return NULL; - } - BLURAY *bd = calloc(1, sizeof(BLURAY)); if (!bd) { @@ -1305,17 +1298,52 @@ BLURAY *bd_open(const char *device_path, const char *keyfile_path) bd_mutex_init(&bd->argb_buffer_mutex); #endif + BD_DEBUG(DBG_BLURAY, "BLURAY initialized!\n"); + + return bd; +} + +int bd_open_disc(BLURAY *bd, const char *device_path, const char *keyfile_path) +{ + BD_ENC_INFO enc_info; + + if (!bd) { + return 0; + } + + if (!device_path) { + BD_DEBUG(DBG_BLURAY | DBG_CRIT, "No device path provided!\n"); + return 0; + } + + if (bd->disc) { + BD_DEBUG(DBG_BLURAY | DBG_CRIT, "Disc already open\n"); + return 0; + } + bd->disc = disc_open(device_path, &enc_info, keyfile_path, (void*)bd->regs, (void*)bd_psr_read, (void*)bd_psr_write); if (!bd->disc) { - return bd; + return 0; } _fill_disc_info(bd, &enc_info); - BD_DEBUG(DBG_BLURAY, "BLURAY initialized!\n"); + return bd->disc_info.bluray_detected; +} + +BLURAY *bd_open(const char *device_path, const char *keyfile_path) +{ + BLURAY *bd; + + bd = bd_init(); + if (!bd) { + return NULL; + } + + bd_open_disc(bd, device_path, keyfile_path); return bd; } diff --git a/src/libbluray/bluray.h b/src/libbluray/bluray.h index c089d07..c4e4b9d 100644 --- a/src/libbluray/bluray.h +++ b/src/libbluray/bluray.h @@ -285,7 +285,6 @@ typedef struct bd_sound_effect { */ void bd_get_version(int *major, int *minor, int *micro); - /* * Disc functions */ @@ -293,13 +292,34 @@ void bd_get_version(int *major, int *minor, int *micro); /** * Open BluRay disc * - * @param device_path path to mounted Blu-ray disc or device + * Shortcut for bd_open_disc(bd_init(), device_path, keyfile_path) + * + * @param device_path path to mounted Blu-ray disc, device or image file * @param keyfile_path path to KEYDB.cfg (may be NULL) * @return allocated BLURAY object, NULL if error */ BLURAY *bd_open(const char *device_path, const char *keyfile_path); /** + * Initialize BLURAY object + * + * Resulting object can be passed to following bd_open_??? functions. + * + * @return allocated BLURAY object, NULL if error + */ +BLURAY *bd_init(void); + +/** + * Open BluRay disc + * + * @param bd BLURAY object + * @param device_path path to mounted Blu-ray disc, device or image file + * @param keyfile_path path to KEYDB.cfg (may be NULL) + * @return 1 on success, 0 if error + */ +int bd_open_disc(BLURAY *bd, const char *device_path, const char *keyfile_path); + +/** * Close BluRay disc * * @param bd BLURAY object _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
