libbluray | branch: master | hpi1 <[email protected]> | Fri Mar 8 16:00:13 2013 +0200| [10ca64d6947ec2a044beb39b2fc14c5a7f28abee] | committer: hpi1
Implement sending BD-J PlaybackMarkEvent events Fixes Ratatouille menus not showing up > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=10ca64d6947ec2a044beb39b2fc14c5a7f28abee --- src/libbluray/bdj/java/org/videolan/Libbluray.java | 4 ++++ .../java/org/videolan/media/content/BDHandler.java | 8 ++++++++ .../videolan/media/content/playlist/Handler.java | 4 ++++ .../media/content/playlist/PlaybackControlImpl.java | 19 +++++++++++++++++++ 4 files changed, 35 insertions(+) diff --git a/src/libbluray/bdj/java/org/videolan/Libbluray.java b/src/libbluray/bdj/java/org/videolan/Libbluray.java index 85f21ae..3f012f2 100644 --- a/src/libbluray/bdj/java/org/videolan/Libbluray.java +++ b/src/libbluray/bdj/java/org/videolan/Libbluray.java @@ -308,6 +308,9 @@ public class Libbluray { case BDJ_EVENT_CHAPTER: BDHandler.onChapterReach(param); break; + case BDJ_EVENT_MARK: + BDHandler.onMarkReach(param); + break; case BDJ_EVENT_PLAYITEM: BDHandler.onPlayItemReach(param); break; @@ -366,6 +369,7 @@ public class Libbluray { private static final int BDJ_EVENT_END_OF_PLAYLIST = 6; private static final int BDJ_EVENT_PTS = 7; private static final int BDJ_EVENT_VK_KEY = 8; + private static final int BDJ_EVENT_MARK = 9; public static final int PSR_IG_STREAM_ID = 0; public static final int PSR_PRIMARY_AUDIO_ID = 1; 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 0c720bc..1177e6a 100644 --- a/src/libbluray/bdj/java/org/videolan/media/content/BDHandler.java +++ b/src/libbluray/bdj/java/org/videolan/media/content/BDHandler.java @@ -300,6 +300,13 @@ public abstract class BDHandler implements Player, ServiceContentHandler { } } + public static void onMarkReach(int param) { + synchronized (BDHandler.class) { + if (activePlayer != null) + activePlayer.doMarkReach(param); + } + } + public static void onPlayItemReach(int param) { synchronized (BDHandler.class) { if (activePlayer != null) @@ -329,6 +336,7 @@ public abstract class BDHandler implements Player, ServiceContentHandler { } protected abstract void doChapterReach(int param); + protected abstract void doMarkReach(int param); protected abstract void doPlayItemReach(int param); protected abstract void doAngleChange(int param); protected abstract void doSubtitleChange(int param); 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 8521b3c..0cdf2b2 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 @@ -186,9 +186,13 @@ public class Handler extends BDHandler { protected void doChapterReach(int param) { ((PlaybackControlImpl)controls[9]).onChapterReach(param); } + protected void doMarkReach(int param) { + ((PlaybackControlImpl)controls[9]).onMarkReach(param); + } protected void doPlayItemReach(int param) { ((PlaybackControlImpl)controls[9]).onPlayItemReach(param); + ((UOMaskTableControlImpl)controls[16]).onPlayItemReach(param); } protected void doAngleChange(int param) { diff --git a/src/libbluray/bdj/java/org/videolan/media/content/playlist/PlaybackControlImpl.java b/src/libbluray/bdj/java/org/videolan/media/content/playlist/PlaybackControlImpl.java index 0a1f83e..a5a2902 100644 --- a/src/libbluray/bdj/java/org/videolan/media/content/playlist/PlaybackControlImpl.java +++ b/src/libbluray/bdj/java/org/videolan/media/content/playlist/PlaybackControlImpl.java @@ -121,6 +121,25 @@ public class PlaybackControlImpl implements PlaybackControl { } } + protected void onMarkReach(int mark) { + if (mark < 0) { + return; + } + PlaylistInfo pi = player.getPlaylistInfo(); + if (pi == null) { + return; + } + TIMark[] marks = pi.getMarks(); + if (marks == null) { + return; + } + if (mark >= marks.length) { + return; + } + + notifyListeners(new PlaybackMarkEvent(this, mark)); + } + protected void onPlayItemReach(int param) { notifyListeners(new PlaybackPlayItemEvent(this, param)); } _______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
