libbluray | branch: master | hpi1 <[email protected]> | Fri Apr 17 21:22:30 2015 +0300| [9084ba6397ca88753f75c9c67c115cfb3b395430] | committer: hpi1
Notify BD-J when UO is denied (masked) > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=9084ba6397ca88753f75c9c67c115cfb3b395430 --- src/libbluray/bdj/bdj.c | 1 + src/libbluray/bdj/bdj.h | 1 + src/libbluray/bdj/java/org/videolan/Libbluray.java | 2 ++ src/libbluray/bdj/java/org/videolan/media/content/BDHandler.java | 4 ++++ .../bdj/java/org/videolan/media/content/playlist/Handler.java | 4 ++++ .../videolan/media/content/playlist/UOMaskTableControlImpl.java | 1 - src/libbluray/bdnav/uo_mask_table.h | 5 +++++ src/libbluray/bluray.c | 4 ++++ 8 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/libbluray/bdj/bdj.c b/src/libbluray/bdj/bdj.c index 4e03cef..3465c69 100644 --- a/src/libbluray/bdj/bdj.c +++ b/src/libbluray/bdj/bdj.c @@ -630,6 +630,7 @@ int bdj_process_event(BDJAVA *bdjava, unsigned ev, unsigned param) "RATE", "AUDIO_STREAM", "SECONDARY_STREAM", + "UO_MASKED", }; JNIEnv* env; diff --git a/src/libbluray/bdj/bdj.h b/src/libbluray/bdj/bdj.h index 60fe180..45fbfc5 100644 --- a/src/libbluray/bdj/bdj.h +++ b/src/libbluray/bdj/bdj.h @@ -41,6 +41,7 @@ typedef enum { BDJ_EVENT_RATE, BDJ_EVENT_AUDIO_STREAM, BDJ_EVENT_SECONDARY_STREAM, + BDJ_EVENT_UO_MASKED, } BDJ_EVENT; typedef struct { diff --git a/src/libbluray/bdj/java/org/videolan/Libbluray.java b/src/libbluray/bdj/java/org/videolan/Libbluray.java index add4acb..b2b2cb1 100644 --- a/src/libbluray/bdj/java/org/videolan/Libbluray.java +++ b/src/libbluray/bdj/java/org/videolan/Libbluray.java @@ -487,6 +487,7 @@ public class Libbluray { case BDJ_EVENT_SECONDARY_STREAM: case BDJ_EVENT_END_OF_PLAYLIST: case BDJ_EVENT_PTS: + case BDJ_EVENT_UO_MASKED: PlayerManager.getInstance().onEvent(event, param); break; case BDJ_EVENT_RATE: @@ -560,6 +561,7 @@ public class Libbluray { public static final int BDJ_EVENT_RATE = 13; public static final int BDJ_EVENT_AUDIO_STREAM = 14; public static final int BDJ_EVENT_SECONDARY_STREAM = 15; + public static final int BDJ_EVENT_UO_MASKED = 16; /* TODO: use org/bluray/system/RegisterAccess instead */ public static final int PSR_IG_STREAM_ID = 0; diff --git a/src/libbluray/bdj/java/org/videolan/media/content/BDHandler.java b/src/libbluray/bdj/java/org/videolan/media/content/BDHandler.java index 10d6a98..3d43579 100644 --- a/src/libbluray/bdj/java/org/videolan/media/content/BDHandler.java +++ b/src/libbluray/bdj/java/org/videolan/media/content/BDHandler.java @@ -381,6 +381,7 @@ public abstract class BDHandler implements Player, ServiceContentHandler { protected void doAngleChanged(int angle) {}; protected void doSubtitleChanged(int param) {}; protected void doAudioStreamChanged(int param) {}; + protected void doUOMasked(int position) {}; protected void doSecondaryStreamChanged(int param) {}; /* @@ -648,6 +649,9 @@ public abstract class BDHandler implements Player, ServiceContentHandler { case Libbluray.BDJ_EVENT_SECONDARY_STREAM: player.doSecondaryStreamChanged(param2); break; + case Libbluray.BDJ_EVENT_UO_MASKED: + player.doUOMasked(param2); + break; default: System.err.println("Unknown ACTION_STATUS: id " + param + ", value " + param2); break; diff --git a/src/libbluray/bdj/java/org/videolan/media/content/playlist/Handler.java b/src/libbluray/bdj/java/org/videolan/media/content/playlist/Handler.java index d898e9f..7046b77 100644 --- a/src/libbluray/bdj/java/org/videolan/media/content/playlist/Handler.java +++ b/src/libbluray/bdj/java/org/videolan/media/content/playlist/Handler.java @@ -247,6 +247,10 @@ public class Handler extends BDHandler { } } + protected void doUOMasked(int position) { + ((UOMaskTableControlImpl)controls[16]).onUOMasked(position); + } + protected void doAngleChanged(int param) { ((AngleControlImpl)controls[0]).onAngleChange(param); } diff --git a/src/libbluray/bdj/java/org/videolan/media/content/playlist/UOMaskTableControlImpl.java b/src/libbluray/bdj/java/org/videolan/media/content/playlist/UOMaskTableControlImpl.java index ec33b19..d63f1bc 100644 --- a/src/libbluray/bdj/java/org/videolan/media/content/playlist/UOMaskTableControlImpl.java +++ b/src/libbluray/bdj/java/org/videolan/media/content/playlist/UOMaskTableControlImpl.java @@ -60,7 +60,6 @@ public class UOMaskTableControlImpl implements UOMaskTableControl { } protected void onUOMasked(int position) { - // TODO: this method is not called listeners.putCallback(new UOMaskedEvent(this, position)); } diff --git a/src/libbluray/bdnav/uo_mask_table.h b/src/libbluray/bdnav/uo_mask_table.h index af0eca6..7d15606 100644 --- a/src/libbluray/bdnav/uo_mask_table.h +++ b/src/libbluray/bdnav/uo_mask_table.h @@ -22,6 +22,11 @@ #include <stdint.h> +enum { + UO_MASK_MENU_CALL_INDEX = 0, + UO_MASK_TITLE_SEARCH_INDEX = 1, +}; + typedef struct bd_uo_mask_table_s { unsigned int menu_call : 1; diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index d60ad55..13efcde 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -3122,6 +3122,7 @@ static int _try_play_title(BLURAY *bd, unsigned title) if (bd->st0.uo_mask.title_search) { BD_DEBUG(DBG_BLURAY | DBG_CRIT, "title search masked by stream\n"); + _bdj_event(bd, BDJ_EVENT_UO_MASKED, UO_MASK_TITLE_SEARCH_INDEX); return 0; } @@ -3136,6 +3137,7 @@ static int _try_play_title(BLURAY *bd, unsigned title) if (bd->title_type == title_bdj) { if (bd->bdj_uo_mask.title_search) { BD_DEBUG(DBG_BLURAY | DBG_CRIT, "title search masked by BD-J\n"); + _bdj_event(bd, BDJ_EVENT_UO_MASKED, UO_MASK_TITLE_SEARCH_INDEX); return 0; } } @@ -3166,6 +3168,7 @@ static int _try_menu_call(BLURAY *bd, int64_t pts) if (bd->st0.uo_mask.menu_call) { BD_DEBUG(DBG_BLURAY | DBG_CRIT, "menu call masked by stream\n"); + _bdj_event(bd, BDJ_EVENT_UO_MASKED, UO_MASK_MENU_CALL_INDEX); return 0; } @@ -3184,6 +3187,7 @@ static int _try_menu_call(BLURAY *bd, int64_t pts) if (bd->title_type == title_bdj) { if (bd->bdj_uo_mask.menu_call) { BD_DEBUG(DBG_BLURAY | DBG_CRIT, "menu call masked by BD-J\n"); + _bdj_event(bd, BDJ_EVENT_UO_MASKED, UO_MASK_MENU_CALL_INDEX); return 0; } } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
