[libbluray-devel] [PATCH] Add the possibility to set the persistent/cache root path via bd_set_player_setting_str().

Andreas Zelend ace at kodi.tv
Mon Sep 29 23:49:30 CEST 2014


Updated.

>From 7b3b41a62ac7c39e93dd0ba6421cd8fa04484b61 Mon Sep 17 00:00:00 2001
From: ace20022 <ace20022 at ymail.com>
Date: Fri, 19 Sep 2014 16:00:06 +0200
Subject: [PATCH] Add the possibility to set the persistent/cache root path
via
 bd_set_player_setting_str().

---
 src/libbluray/bdj/bdj.c | 22 +++++++++++++++-------
 src/libbluray/bdj/bdj.h |  8 +++++++-
 src/libbluray/bluray.c  | 47
++++++++++++++++++++++++++++++++++++++++++++++-
 src/libbluray/bluray.h  |  2 ++
 4 files changed, 70 insertions(+), 9 deletions(-)

diff --git a/src/libbluray/bdj/bdj.c b/src/libbluray/bdj/bdj.c
index c54e7ee..f94b94e 100644
--- a/src/libbluray/bdj/bdj.c
+++ b/src/libbluray/bdj/bdj.c
@@ -254,7 +254,7 @@ static const char *_find_libbluray_jar(void)
     return classpath;
 }

-static const char *_bdj_persistent_root(void)
+static const char *_bdj_persistent_root(BDJ_STORAGE *storage)
 {
     static const char *root = NULL;

@@ -262,6 +262,10 @@ static const char *_bdj_persistent_root(void)
         return root;
     }

+    if (storage && storage->persistent_root) {
+        return storage->persistent_root;
+    }
+
     root = getenv("LIBBLURAY_PERSISTENT_ROOT");
     if (root) {
         return root;
@@ -278,7 +282,7 @@ static const char *_bdj_persistent_root(void)
     return root;
 }

-static const char *_bdj_buda_root(void)
+static const char *_bdj_buda_root(BDJ_STORAGE *storage)
 {
     static const char *root = NULL;

@@ -286,6 +290,10 @@ static const char *_bdj_buda_root(void)
         return root;
     }

+    if (storage && storage->cache_root) {
+        return storage->cache_root;
+    }
+
     root = getenv("LIBBLURAY_CACHE_ROOT");
     if (root) {
         return root;
@@ -383,7 +391,7 @@ static int _find_jvm(void *jvm_lib, JNIEnv **env,
JavaVM **jvm)
     return 0;
 }

-static int _create_jvm(void *jvm_lib, const char *java_home, JNIEnv **env,
JavaVM **jvm)
+static int _create_jvm(void *jvm_lib, const char *java_home, JNIEnv **env,
JavaVM **jvm, BDJ_STORAGE *storage)
 {
     (void)java_home;  /* used only with J2ME */

@@ -396,8 +404,8 @@ static int _create_jvm(void *jvm_lib, const char
*java_home, JNIEnv **env, JavaV
     JavaVMOption* option = calloc(1, sizeof(JavaVMOption) * 20);
     int n = 0;
     JavaVMInitArgs args;
-    option[n++].optionString = str_printf("-Ddvb.persistent.root=%s",
_bdj_persistent_root());
-    option[n++].optionString = str_printf("-Dbluray.bindingunit.root=%s",
_bdj_buda_root());
+    option[n++].optionString = str_printf("-Ddvb.persistent.root=%s",
_bdj_persistent_root(storage));
+    option[n++].optionString = str_printf("-Dbluray.bindingunit.root=%s",
_bdj_buda_root(storage));

     option[n++].optionString = str_dup
("-Dawt.toolkit=java.awt.BDToolkit");
     option[n++].optionString = str_dup
("-Djava.awt.graphicsenv=java.awt.BDGraphicsEnvironment");
@@ -452,7 +460,7 @@ static int _create_jvm(void *jvm_lib, const char
*java_home, JNIEnv **env, JavaV
 }

 BDJAVA* bdj_open(const char *path, struct bluray *bd,
-                 bdj_overlay_cb osd_cb, struct bd_argb_buffer_s *buf)
+                 bdj_overlay_cb osd_cb, struct bd_argb_buffer_s *buf,
BDJ_STORAGE *storage)
 {
     BD_DEBUG(DBG_BDJ, "bdj_open()\n");

@@ -467,7 +475,7 @@ BDJAVA* bdj_open(const char *path, struct bluray *bd,

     JNIEnv* env = NULL;
     JavaVM *jvm = NULL;
-    if (!_find_jvm(jvm_lib, &env, &jvm) && !_create_jvm(jvm_lib,
java_home, &env, &jvm)) {
+    if (!_find_jvm(jvm_lib, &env, &jvm) && !_create_jvm(jvm_lib,
java_home, &env, &jvm, storage)) {
         dl_dlclose(jvm_lib);
         return NULL;
     }
diff --git a/src/libbluray/bdj/bdj.h b/src/libbluray/bdj/bdj.h
index a177510..721c02f 100644
--- a/src/libbluray/bdj/bdj.h
+++ b/src/libbluray/bdj/bdj.h
@@ -42,6 +42,11 @@ typedef enum {
     BDJ_EVENT_RATE,
 } BDJ_EVENT;

+typedef struct {
+    char *persistent_root;
+    char *cache_root;
+} BDJ_STORAGE;
+
 /* bdj_get_uo_mask() */
 #define BDJ_MENU_CALL_MASK     0x01
 #define BDJ_TITLE_SEARCH_MASK  0x02
@@ -55,7 +60,8 @@ typedef void (*bdj_overlay_cb)(struct bluray *, const
unsigned *, int, int,
                                int, int, int, int);

 BD_PRIVATE BDJAVA* bdj_open(const char *path, struct bluray *bd,
-                            bdj_overlay_cb osd_cb, struct bd_argb_buffer_s
*buf);
+                            bdj_overlay_cb osd_cb, struct bd_argb_buffer_s
*buf,
+                            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);
diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c
index 320f009..68fa674 100644
--- a/src/libbluray/bluray.c
+++ b/src/libbluray/bluray.c
@@ -159,6 +159,7 @@ struct bluray {
     uint8_t        hdmv_suspended;
 #ifdef USING_BDJAVA
     BDJAVA         *bdjava;
+    BDJ_STORAGE    *bdjstorage;
 #endif
     /* delayed sending of BDJ_EVENT_END_OF_PLAYLIST:
      * 1 - message pending. 3 - message sent. */
@@ -1236,7 +1237,7 @@ static int _start_bdj(BLURAY *bd, unsigned title)
 {
 #ifdef USING_BDJAVA
     if (bd->bdjava == NULL) {
-        bd->bdjava = bdj_open(bd->device_path, bd, _bdj_osd_cb,
bd->argb_buffer);
+        bd->bdjava = bdj_open(bd->device_path, bd, _bdj_osd_cb,
bd->argb_buffer, bd->bdjstorage);
         if (!bd->bdjava) {
             return 0;
         }
@@ -1283,6 +1284,19 @@ static void _close_bdj(BLURAY *bd)
 #define _close_bdj(bd) do{}while(0)
 #endif

+#ifdef USING_BDJAVA
+static void _storage_free(BLURAY *bd)
+{
+  if (bd->bdjstorage){
+    X_FREE(bd->bdjstorage->cache_root);
+    X_FREE(bd->bdjstorage->persistent_root);
+    X_FREE(bd->bdjstorage);
+  }
+}
+#else
+#define _storage_free(bd) do{}while(0)
+#endif
+
 #ifdef HAVE_MNTENT_H
 /*
  * Replace device node (/dev/sr0) by mount point
@@ -1423,6 +1437,7 @@ void bd_close(BLURAY *bd)
     _free_event_queue(bd);
     X_FREE(bd->device_path);
     array_free((void**)&bd->titles);
+    _storage_free(bd);

     bd_mutex_destroy(&bd->mutex);

@@ -2588,6 +2603,36 @@ int bd_set_player_setting_str(BLURAY *bd, uint32_t
idx, const char *s)
         case BLURAY_PLAYER_SETTING_COUNTRY_CODE:
             return bd_set_player_setting(bd, idx, str_to_uint32(s, 2));

+#ifdef USING_BDJAVA
+        case BLURAY_PLAYER_CACHE_ROOT:
+        case BLURAY_PLAYER_PERSISTENT_ROOT:
+            if (!bd->bdjstorage) {
+                bd->bdjstorage = calloc(1, sizeof(BDJ_STORAGE));
+            }
+            switch (idx) {
+                case BLURAY_PLAYER_CACHE_ROOT:
+                    if (bd->bdjstorage) {
+                        if (bd->bdjstorage->cache_root)
+                            X_FREE(bd->bdjstorage->cache_root);
+                        bd->bdjstorage->cache_root = str_dup(s);
+                        BD_DEBUG(DBG_BDJ, "Cache root dir set to %s\n",
bd->bdjstorage->cache_root);
+                        return 1;
+                    }
+                    else
+                        return 0;
+
+                case BLURAY_PLAYER_PERSISTENT_ROOT:
+                    if (bd->bdjstorage) {
+                        if (bd->bdjstorage->persistent_root)
+                            X_FREE(bd->bdjstorage->persistent_root);
+                        bd->bdjstorage->persistent_root = str_dup(s);
+                        BD_DEBUG(DBG_BDJ, "Persistent root dir set to
%s\n", bd->bdjstorage->persistent_root);
+                        return 1;
+                    }
+                    else
+                        return 0;
+            }
+#endif /* USING_BDJAVA */
         default:
             return 0;
     }
diff --git a/src/libbluray/bluray.h b/src/libbluray/bluray.h
index 54f4df7..7e991df 100644
--- a/src/libbluray/bluray.h
+++ b/src/libbluray/bluray.h
@@ -561,6 +561,8 @@ typedef enum {
     BLURAY_PLAYER_SETTING_PLAYER_PROFILE = 31,  /* Profile1: 0, Profile1+:
1, Profile2: 3, Profile3: 8 */

     BLURAY_PLAYER_SETTING_DECODE_PG      = 0x100, /* enable/disable PG
(subtitle) decoder */
+    BLURAY_PLAYER_PERSISTENT_ROOT        = 400,  /* Root path (string) to
the BD_J persistent storage location */
+    BLURAY_PLAYER_CACHE_ROOT             = 401,  /* Root path (string) to
the BD_J cache storage location */
 } bd_player_setting;

 /**
-- 
1.9.2.msysgit.0



2014-09-26 12:27 GMT+02:00 Petri Hintukainen <phintuka at users.sourceforge.net
>:

> On ma, 2014-09-22 at 10:21 +0200, Andreas Zelend wrote:
> > From 72b9bb8c2c20e7e2080e16c3129e73fb7acf9933 Mon Sep 17 00:00:00 2001
> > From: ace20022 <ace20022 at ymail.com>
> > Date: Fri, 19 Sep 2014 16:00:06 +0200
> > Subject: [PATCH 1/2] Add the possibility to set the persistent/cache
> > root path
> >  via bd_set_player_setting_str().
> >
> > ---
> >  src/examples/bdj_test.c |  5 ++++-
> >  src/libbluray/bdj/bdj.c | 34 +++++++++++++++++++++++-----------
> >  src/libbluray/bdj/bdj.h |  8 +++++++-
> >  src/libbluray/bluray.c  | 43
> > ++++++++++++++++++++++++++++++++++++++++++-
> >  src/libbluray/bluray.h  |  2 ++
> >  5 files changed, 78 insertions(+), 14 deletions(-)
> >
> > diff --git a/src/examples/bdj_test.c b/src/examples/bdj_test.c
> > index d9ebd16..b258562 100644
> > --- a/src/examples/bdj_test.c
> > +++ b/src/examples/bdj_test.c
> > @@ -31,6 +31,7 @@
> >  #include <unistd.h>
> >
> >  #include "libbluray/bluray.h"
> > +#include "file/dirs.h"
> >
> >  #if defined(_WIN32)
> >  #include <windows.h>
> > @@ -53,7 +54,9 @@ int main(int argc, char** argv)
> >      BLURAY* bd = bd_open(argv[1], NULL);
> >
> >      bd_get_titles(bd, TITLES_ALL, 0);
> > -
> > +
> > +    bd_set_player_setting_str(bd, BLURAY_PLAYER_PERSISTENT_ROOT,
> > file_get_data_home());
> > +    bd_set_player_setting_str(bd, BLURAY_PLAYER_CACHE_ROOT,
> > file_get_cache_home());
>
> file_*() functions are library internal and can't be used in
> applications. Linking bdj_test fails:
>   bdj_test.c:58: undefined reference to `file_get_data_home'
>   bdj_test.c:59: undefined reference to `file_get_cache_home'
>
> Also note that those two directories must be different (I think in
> Windows data and cache home are mapped to the same location).
>
> >      if (!bd_start_bdj(bd, argv[2])) {
> >          printf("Failed to start BD-J application.\n");
> >      } else {
> > diff --git a/src/libbluray/bdj/bdj.c b/src/libbluray/bdj/bdj.c
> > index c54e7ee..b250aa0 100644
> > --- a/src/libbluray/bdj/bdj.c
> > +++ b/src/libbluray/bdj/bdj.c
> > @@ -155,10 +155,10 @@ static void *_load_jvm(const char **p_java_home)
> >      static const char  jvm_lib[]  = "jvm";
> >  # else
> >      static const char *jvm_path[] = {NULL, JDK_HOME,
> > -                                    "/usr/lib/jvm/default-java",
> > -                                    "/usr/lib/jvm/java-6-openjdk",
> > -                                    "/usr/lib/jvm/java-7-openjdk",
> > -
> > "/etc/java-config-2/current-system-vm"};
> > +                     "/usr/lib/jvm/default-java",
> > +                     "/usr/lib/jvm/java-6-openjdk",
> > +                     "/usr/lib/jvm/java-7-openjdk",
> > +                     "/etc/java-config-2/current-system-vm"};
> >      static const char  jvm_dir[]  = "jre/lib/" JAVA_ARCH "/server";
> >      static const char  jvm_lib[]  = "libjvm";
> >  # endif
>
> Unrelated change
>
> > @@ -254,7 +254,7 @@ static const char *_find_libbluray_jar(void)
> >      return classpath;
> >  }
> >
> > -static const char *_bdj_persistent_root(void)
> > +static const char *_bdj_persistent_root(BDJ_STORAGE *storage)
> >  {
> >      static const char *root = NULL;
> >
> > @@ -262,6 +262,12 @@ static const char *_bdj_persistent_root(void)
> >          return root;
> >      }
> >
> > +    if (storage) {
> > +        root = storage->persistent_root;
> > +        if (root)
> > +            return root;
> > +    }
> > +
> >      root = getenv("LIBBLURAY_PERSISTENT_ROOT");
> >      if (root) {
> >          return root;
>
> There's problem with assigning the pointer to
>     static const char *root;
> The string is allocated in bd_set_player_setting_str() and freed in
> bd_close(). When playing second disc, it will use already freed pointer.
>
> Maybe just
>     if (storage && storage->persistent_root) {
>         return storage->persistent_root;
>     }
>
> > @@ -278,7 +284,7 @@ static const char *_bdj_persistent_root(void)
> >      return root;
> >  }
> >
> > -static const char *_bdj_buda_root(void)
> > +static const char *_bdj_buda_root(BDJ_STORAGE *storage)
> >  {
> >      static const char *root = NULL;
> >
> > @@ -286,6 +292,12 @@ static const char *_bdj_buda_root(void)
> >          return root;
> >      }
> >
> > +    if (storage) {
> > +        root = storage->cache_root;
> > +        if (root)
> > +            return root;
> > +    }
> > +
> >      root = getenv("LIBBLURAY_CACHE_ROOT");
> >      if (root) {
> >          return root;
>
> Same here.
>
> > @@ -383,7 +395,7 @@ static int _find_jvm(void *jvm_lib, JNIEnv **env,
> > JavaVM **jvm)
> >      return 0;
> >  }
> >
> > -static int _create_jvm(void *jvm_lib, const char *java_home, JNIEnv
> > **env, JavaVM **jvm)
> > +static int _create_jvm(void *jvm_lib, const char *java_home, JNIEnv
> > **env, JavaVM **jvm, BDJ_STORAGE *storage)
> >  {
> >      (void)java_home;  /* used only with J2ME */
> >
> > @@ -396,8 +408,8 @@ static int _create_jvm(void *jvm_lib, const char
> > *java_home, JNIEnv **env, JavaV
> >      JavaVMOption* option = calloc(1, sizeof(JavaVMOption) * 20);
> >      int n = 0;
> >      JavaVMInitArgs args;
> > -    option[n++].optionString = str_printf("-Ddvb.persistent.root=%s",
> > _bdj_persistent_root());
> > -    option[n++].optionString = str_printf("-Dbluray.bindingunit.root=
> > %s", _bdj_buda_root());
> > +    option[n++].optionString = str_printf("-Ddvb.persistent.root=%s",
> > _bdj_persistent_root(storage));
> > +    option[n++].optionString = str_printf("-Dbluray.bindingunit.root=
> > %s", _bdj_buda_root(storage));
> >
> >      option[n++].optionString = str_dup
> > ("-Dawt.toolkit=java.awt.BDToolkit");
> >      option[n++].optionString = str_dup
> > ("-Djava.awt.graphicsenv=java.awt.BDGraphicsEnvironment");
> > @@ -452,7 +464,7 @@ static int _create_jvm(void *jvm_lib, const char
> > *java_home, JNIEnv **env, JavaV
> >  }
> >
> >  BDJAVA* bdj_open(const char *path, struct bluray *bd,
> > -                 bdj_overlay_cb osd_cb, struct bd_argb_buffer_s *buf)
> > +                 bdj_overlay_cb osd_cb, struct bd_argb_buffer_s *buf,
> > BDJ_STORAGE *storage)
> >  {
> >      BD_DEBUG(DBG_BDJ, "bdj_open()\n");
> >
> > @@ -467,7 +479,7 @@ BDJAVA* bdj_open(const char *path, struct bluray
> > *bd,
> >
> >      JNIEnv* env = NULL;
> >      JavaVM *jvm = NULL;
> > -    if (!_find_jvm(jvm_lib, &env, &jvm) && !_create_jvm(jvm_lib,
> > java_home, &env, &jvm)) {
> > +    if (!_find_jvm(jvm_lib, &env, &jvm) && !_create_jvm(jvm_lib,
> > java_home, &env, &jvm, storage)) {
> >          dl_dlclose(jvm_lib);
> >          return NULL;
> >      }
> > diff --git a/src/libbluray/bdj/bdj.h b/src/libbluray/bdj/bdj.h
> > index a177510..721c02f 100644
> > --- a/src/libbluray/bdj/bdj.h
> > +++ b/src/libbluray/bdj/bdj.h
> > @@ -42,6 +42,11 @@ typedef enum {
> >      BDJ_EVENT_RATE,
> >  } BDJ_EVENT;
> >
> > +typedef struct {
> > +    char *persistent_root;
> > +    char *cache_root;
> > +} BDJ_STORAGE;
> > +
> >  /* bdj_get_uo_mask() */
> >  #define BDJ_MENU_CALL_MASK     0x01
> >  #define BDJ_TITLE_SEARCH_MASK  0x02
> > @@ -55,7 +60,8 @@ typedef void (*bdj_overlay_cb)(struct bluray *,
> > const unsigned *, int, int,
> >                                 int, int, int, int);
> >
> >  BD_PRIVATE BDJAVA* bdj_open(const char *path, struct bluray *bd,
> > -                            bdj_overlay_cb osd_cb, struct
> > bd_argb_buffer_s *buf);
> > +                            bdj_overlay_cb osd_cb, struct
> > bd_argb_buffer_s *buf,
> > +                            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);
> > diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c
> > index 320f009..efca0c4 100644
> > --- a/src/libbluray/bluray.c
> > +++ b/src/libbluray/bluray.c
> > @@ -159,6 +159,7 @@ struct bluray {
> >      uint8_t        hdmv_suspended;
> >  #ifdef USING_BDJAVA
> >      BDJAVA         *bdjava;
> > +    BDJ_STORAGE    *bdjstorage;
> >  #endif
> >      /* delayed sending of BDJ_EVENT_END_OF_PLAYLIST:
> >       * 1 - message pending. 3 - message sent. */
> > @@ -1236,7 +1237,7 @@ static int _start_bdj(BLURAY *bd, unsigned
> > title)
> >  {
> >  #ifdef USING_BDJAVA
> >      if (bd->bdjava == NULL) {
> > -        bd->bdjava = bdj_open(bd->device_path, bd, _bdj_osd_cb,
> > bd->argb_buffer);
> > +        bd->bdjava = bdj_open(bd->device_path, bd, _bdj_osd_cb,
> > bd->argb_buffer, bd->bdjstorage);
> >          if (!bd->bdjava) {
> >              return 0;
> >          }
> > @@ -1283,6 +1284,19 @@ static void _close_bdj(BLURAY *bd)
> >  #define _close_bdj(bd) do{}while(0)
> >  #endif
> >
> > +#ifdef USING_BDJAVA
> > +static void _storage_free(BLURAY *bd)
> > +{
> > +  if (bd->bdjstorage){
> > +    X_FREE(bd->bdjstorage->cache_root);
> > +    X_FREE(bd->bdjstorage->persistent_root);
> > +    X_FREE(bd->bdjstorage);
> > +  }
> > +}
> > +#else
> > +#define _storage_free(bd) do{}while(0)
> > +#endif
> > +
> >  #ifdef HAVE_MNTENT_H
> >  /*
> >   * Replace device node (/dev/sr0) by mount point
> > @@ -1423,6 +1437,7 @@ void bd_close(BLURAY *bd)
> >      _free_event_queue(bd);
> >      X_FREE(bd->device_path);
> >      array_free((void**)&bd->titles);
> > +    _storage_free(bd);
> >
> >      bd_mutex_destroy(&bd->mutex);
> >
> > @@ -2588,6 +2603,32 @@ int bd_set_player_setting_str(BLURAY *bd,
> > uint32_t idx, const char *s)
> >          case BLURAY_PLAYER_SETTING_COUNTRY_CODE:
> >              return bd_set_player_setting(bd, idx, str_to_uint32(s,
> > 2));
> >
> > +#ifdef USING_BDJAVA
> > +        case BLURAY_PLAYER_CACHE_ROOT:
> > +        case BLURAY_PLAYER_PERSISTENT_ROOT:
> > +          if (!bd->bdjstorage) {
> > +            bd->bdjstorage = malloc(sizeof(BDJ_STORAGE*));
>
> Use calloc() or initialize to zero
> (nothing guarantees both strings are set by the app)
>
> > +          }
> > +          switch (idx) {
> > +          case BLURAY_PLAYER_CACHE_ROOT:
> > +            if (bd->bdjstorage) {
> > +              bd->bdjstorage->cache_root = str_dup(s);
>
> This will leak memory if already set
>
> > +              BD_DEBUG(DBG_BDJ, "Cache root dir set to %s\n",
> > bd->bdjstorage->cache_root);
> > +              return 1;
> > +            }
> > +            else
> > +              return 0;
> > +
> > +          case BLURAY_PLAYER_PERSISTENT_ROOT:
> > +            if (bd->bdjstorage) {
> > +              bd->bdjstorage->persistent_root = str_dup(s);
>
> Same
>
> > +              BD_DEBUG(DBG_BDJ, "Persistent root dir set to %s\n",
> > bd->bdjstorage->persistent_root);
> > +              return 1;
> > +            }
> > +            else
> > +              return 0;
> > +          }
> > +#endif /* USING_BDJAVA */
> >          default:
> >              return 0;
> >      }
> > diff --git a/src/libbluray/bluray.h b/src/libbluray/bluray.h
> > index 54f4df7..7e991df 100644
> > --- a/src/libbluray/bluray.h
> > +++ b/src/libbluray/bluray.h
> > @@ -561,6 +561,8 @@ typedef enum {
> >      BLURAY_PLAYER_SETTING_PLAYER_PROFILE = 31,  /* Profile1: 0,
> > Profile1+: 1, Profile2: 3, Profile3: 8 */
> >
> >      BLURAY_PLAYER_SETTING_DECODE_PG      = 0x100, /* enable/disable
> > PG (subtitle) decoder */
> > +    BLURAY_PLAYER_PERSISTENT_ROOT        = 400,  /* Root path
> > (string) to the BD_J persistent storage location */
> > +    BLURAY_PLAYER_CACHE_ROOT             = 401,  /* Root path
> > (string) to the BD_J cache storage location */
> >  } bd_player_setting;
> >
> >  /**
>
>
> _______________________________________________
> libbluray-devel mailing list
> libbluray-devel at videolan.org
> https://mailman.videolan.org/listinfo/libbluray-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/libbluray-devel/attachments/20140929/bf200dbc/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Add-the-possibility-to-set-the-persistent-cache-root.patch
Type: application/octet-stream
Size: 8298 bytes
Desc: not available
URL: <http://mailman.videolan.org/pipermail/libbluray-devel/attachments/20140929/bf200dbc/attachment-0001.obj>


More information about the libbluray-devel mailing list