libbluray | branch: master | hpi1 <[email protected]> | Mon Nov 17 11:36:43 2014 +0200| [72d1c7fc0cb41834d67f6bdb4025a3ab62c8c22b] | committer: hpi1
Store BD-J uo mask in bluray.c > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=72d1c7fc0cb41834d67f6bdb4025a3ab62c8c22b --- src/libbluray/bdj/bdj.c | 9 --------- src/libbluray/bdj/bdj.h | 5 ----- src/libbluray/bdj/bdj_private.h | 2 -- src/libbluray/bdj/native/org_videolan_Libbluray.c | 2 +- src/libbluray/bluray.c | 14 ++++++++++++-- src/libbluray/bluray_internal.h | 6 ++++++ 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/libbluray/bdj/bdj.c b/src/libbluray/bdj/bdj.c index 6b23add..73a8e0d 100644 --- a/src/libbluray/bdj/bdj.c +++ b/src/libbluray/bdj/bdj.c @@ -630,12 +630,3 @@ int bdj_process_event(BDJAVA *bdjava, unsigned ev, unsigned param) return result; } - -int bdj_get_uo_mask(BDJAVA *bdjava) -{ - if (!bdjava) { - return 0; - } - - return bdjava->uo_mask; -} diff --git a/src/libbluray/bdj/bdj.h b/src/libbluray/bdj/bdj.h index 7226932..bc3c147 100644 --- a/src/libbluray/bdj/bdj.h +++ b/src/libbluray/bdj/bdj.h @@ -47,10 +47,6 @@ typedef struct { char *cache_root; } BDJ_STORAGE; -/* bdj_get_uo_mask() */ -#define BDJ_MENU_CALL_MASK 0x01 -#define BDJ_TITLE_SEARCH_MASK 0x02 - typedef struct bdjava_s BDJAVA; struct bluray; @@ -59,7 +55,6 @@ BD_PRIVATE BDJAVA* bdj_open(const char *path, struct bluray *bd, const char *bdj_disc_id, BDJ_STORAGE *storage); BD_PRIVATE void bdj_close(BDJAVA *bdjava); BD_PRIVATE int bdj_process_event(BDJAVA *bdjava, unsigned ev, unsigned param); -BD_PRIVATE int bdj_get_uo_mask(BDJAVA *bdjava); BD_PRIVATE int bdj_jvm_available(void); /* 0: no. 1: only jvm. 2: jvm + libbluray.jar. */ diff --git a/src/libbluray/bdj/bdj_private.h b/src/libbluray/bdj/bdj_private.h index c48095b..bc4a161 100644 --- a/src/libbluray/bdj/bdj_private.h +++ b/src/libbluray/bdj/bdj_private.h @@ -34,8 +34,6 @@ struct bdjava_s { // JNI JavaVM* jvm; - - unsigned uo_mask; /* UO masks from bdjo */ }; #endif diff --git a/src/libbluray/bdj/native/org_videolan_Libbluray.c b/src/libbluray/bdj/native/org_videolan_Libbluray.c index c0ca8e5..04bc587 100644 --- a/src/libbluray/bdj/native/org_videolan_Libbluray.c +++ b/src/libbluray/bdj/native/org_videolan_Libbluray.c @@ -205,7 +205,7 @@ JNIEXPORT jlong JNICALL Java_org_videolan_Libbluray_getUOMaskN(JNIEnv * env, JNIEXPORT void JNICALL Java_org_videolan_Libbluray_setUOMaskN(JNIEnv * env, jclass cls, jlong np, jboolean menuCallMask, jboolean titleSearchMask) { BDJAVA* bdj = (BDJAVA*)(intptr_t)np; - bdj->uo_mask = ((!!menuCallMask) * BDJ_MENU_CALL_MASK) | ((!!titleSearchMask) * BDJ_TITLE_SEARCH_MASK); + bd_set_bdj_uo_mask(bdj->bd, ((!!menuCallMask) * BDJ_MENU_CALL_MASK) | ((!!titleSearchMask) * BDJ_TITLE_SEARCH_MASK)); } JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_getTitlesN(JNIEnv * env, diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index 62bf8a1..b19e7c8 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -184,6 +184,7 @@ struct bluray { bd_argb_overlay_proc_f argb_overlay_proc; BD_ARGB_BUFFER *argb_buffer; BD_MUTEX argb_buffer_mutex; + BD_UO_MASK bdj_uo_mask; #endif }; @@ -1114,6 +1115,14 @@ static void _fill_disc_info(BLURAY *bd) */ #ifdef USING_BDJAVA +void bd_set_bdj_uo_mask(BLURAY *bd, unsigned mask) +{ + bd->bdj_uo_mask.title_search = !!(mask & BDJ_TITLE_SEARCH_MASK); + bd->bdj_uo_mask.menu_call = !!(mask & BDJ_MENU_CALL_MASK); +} +#endif + +#ifdef USING_BDJAVA uint64_t bd_get_uo_mask(BLURAY *bd) { /* internal function. Used by BD-J. */ @@ -2959,6 +2968,7 @@ static int _play_bdj(BLURAY *bd, unsigned title) int result; bd->title_type = title_bdj; + memset(&bd->bdj_uo_mask, 0, sizeof(BD_UO_MASK)); result = _start_bdj(bd, title); if (result <= 0) { @@ -3132,7 +3142,7 @@ static int _try_play_title(BLURAY *bd, unsigned title) #ifdef USING_BDJAVA if (bd->title_type == title_bdj) { - if (bdj_get_uo_mask(bd->bdjava) & BDJ_TITLE_SEARCH_MASK) { + if (bd->bdj_uo_mask.title_search) { BD_DEBUG(DBG_BLURAY | DBG_CRIT, "title search masked by BD-J\n"); return 0; } @@ -3180,7 +3190,7 @@ static int _try_menu_call(BLURAY *bd, int64_t pts) #ifdef USING_BDJAVA if (bd->title_type == title_bdj) { - if (bdj_get_uo_mask(bd->bdjava) & BDJ_MENU_CALL_MASK) { + if (bd->bdj_uo_mask.menu_call) { BD_DEBUG(DBG_BLURAY | DBG_CRIT, "menu call masked by BD-J\n"); return 0; } diff --git a/src/libbluray/bluray_internal.h b/src/libbluray/bluray_internal.h index d69650b..c3cbda7 100644 --- a/src/libbluray/bluray_internal.h +++ b/src/libbluray/bluray_internal.h @@ -28,7 +28,13 @@ BD_PRIVATE const uint8_t *bd_get_aacs_data(BLURAY *bd, int type); +/* bd_set_bdj_uo_mask() */ +#define BDJ_MENU_CALL_MASK 0x01 +#define BDJ_TITLE_SEARCH_MASK 0x02 + BD_PRIVATE uint64_t bd_get_uo_mask(BLURAY *bd); +BD_PRIVATE void bd_set_bdj_uo_mask(struct bluray *bd, unsigned mask); + BD_PRIVATE int bd_play_title_internal(BLURAY *bd, unsigned title); BD_PRIVATE uint32_t bd_reg_read(BLURAY *bd, int psr, int reg); _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
