[libbluray-devel] Notify BD-J on stream change

hpi1 git at videolan.org
Wed Apr 15 11:09:10 CEST 2015


libbluray | branch: master | hpi1 <hpi1 at anonymous.org> | Mon Apr  6 15:36:35 2015 +0300| [13408dd1b89cf955aa0ae09961dd270b660e3b3c] | committer: hpi1

Notify BD-J on stream change

> http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=13408dd1b89cf955aa0ae09961dd270b660e3b3c
---

 src/libbluray/bdj/bdj.c                                        |    2 ++
 src/libbluray/bdj/bdj.h                                        |    2 ++
 src/libbluray/bdj/java/org/videolan/Libbluray.java             |    4 +++-
 .../bdj/java/org/videolan/media/content/BDHandler.java         |    8 ++++++++
 src/libbluray/bluray.c                                         |    2 ++
 5 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/libbluray/bdj/bdj.c b/src/libbluray/bdj/bdj.c
index a168860..671d355 100644
--- a/src/libbluray/bdj/bdj.c
+++ b/src/libbluray/bdj/bdj.c
@@ -629,6 +629,8 @@ int bdj_process_event(BDJAVA *bdjava, unsigned ev, unsigned param)
         "STOP",
 
         "RATE",
+        "AUDIO_STREAM",
+        "SECONDARY_STREAM",
     };
 
     JNIEnv* env;
diff --git a/src/libbluray/bdj/bdj.h b/src/libbluray/bdj/bdj.h
index 756395b..c998ceb 100644
--- a/src/libbluray/bdj/bdj.h
+++ b/src/libbluray/bdj/bdj.h
@@ -40,6 +40,8 @@ typedef enum {
     BDJ_EVENT_STOP,
 
     BDJ_EVENT_RATE,
+    BDJ_EVENT_AUDIO_STREAM,
+    BDJ_EVENT_SECONDARY_STREAM,
 } 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 7239318..261d84b 100644
--- a/src/libbluray/bdj/java/org/videolan/Libbluray.java
+++ b/src/libbluray/bdj/java/org/videolan/Libbluray.java
@@ -537,7 +537,7 @@ public class Libbluray {
             }
             break;
         default:
-            System.err.println("Unknown event %d.%d\n", event, param);
+            System.err.println("Unknown event " + event + "." + param);
             result = false;
         }
 
@@ -560,6 +560,8 @@ public class Libbluray {
     private static final int BDJ_EVENT_STOP                     = 13;
 
     public  static final int BDJ_EVENT_RATE                     = 14;
+    public  static final int BDJ_EVENT_AUDIO_STREAM             = 15;
+    public  static final int BDJ_EVENT_SECONDARY_STREAM         = 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 4c92b75..fdc37c6 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,8 @@ public abstract class BDHandler implements Player, ServiceContentHandler {
     protected void doAngleChanged(int angle) {};
     protected void doSubtitleChanged(int param) {};
     protected void doPiPChanged(int param) {};
+    protected void doAudioStreamChanged(int param) {};
+    protected void doSecondaryStreamChanged(int param) {};
 
     /*
      *
@@ -644,6 +646,12 @@ public abstract class BDHandler implements Player, ServiceContentHandler {
                 case Libbluray.BDJ_EVENT_PTS:
                     player.doTimeChanged(param2);
                     break;
+                case Libbluray.BDJ_EVENT_AUDIO_STREAM:
+                    player.doAudioStreamChanged(param2);
+                    break;
+                case Libbluray.BDJ_EVENT_SECONDARY_STREAM:
+                    player.doSecondaryStreamChanged(param2);
+                    break;
                 default:
                     System.err.println("Unknown ACTION_STATUS: id " + param + ", value " + param2);
                     break;
diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c
index 58c9922..817962b 100644
--- a/src/libbluray/bluray.c
+++ b/src/libbluray/bluray.c
@@ -2808,6 +2808,7 @@ static void _process_psr_change_event(BLURAY *bd, BD_PSR_EVENT *ev)
             break;
 
         case PSR_PRIMARY_AUDIO_ID:
+            _bdj_event(bd, BDJ_EVENT_AUDIO_STREAM, ev->new_val);
             _queue_event(bd, BD_EVENT_AUDIO_STREAM, ev->new_val);
             break;
 
@@ -2842,6 +2843,7 @@ static void _process_psr_change_event(BLURAY *bd, BD_PSR_EVENT *ev)
                 _queue_event(bd, BD_EVENT_SECONDARY_AUDIO, !!(ev->new_val & 0x40000000));
                 _queue_event(bd, BD_EVENT_SECONDARY_AUDIO_STREAM, ev->new_val & 0xff);
             }
+            _bdj_event(bd, BDJ_EVENT_SECONDARY_STREAM, ev->new_val);
             break;
 
         /* 3D status */



More information about the libbluray-devel mailing list