Merge pull request #4852 from FernetMenta/aefixes
[vuplus_xbmc] / lib / DllLibbluray.h
index 4ab8d47..428d603 100644 (file)
@@ -1,6 +1,6 @@
 /*
- *      Copyright (C) 2005-2009 Team XBMC
- *      http://www.xbmc.org
+ *      Copyright (C) 2005-2013 Team XBMC
+ *      http://xbmc.org
  *
  *  This Program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -13,9 +13,8 @@
  *  GNU General Public License for more details.
  *
  *  You should have received a copy of the GNU General Public License
- *  along with XBMC; see the file COPYING.  If not, write to
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
+ *  along with XBMC; see the file COPYING.  If not, see
+ *  <http://www.gnu.org/licenses/>.
  *
  */
 #pragma once
@@ -29,9 +28,9 @@ extern "C"
 {
 #include <libbluray/bluray.h>
 #include <libbluray/filesystem.h>
-#ifndef HAVE_LIBBLURAY_NOLOGCONTROL
 #include <libbluray/log_control.h>
-#endif
+#include <libbluray/keys.h>
+#include <libbluray/overlay.h>
 }
 
 class DllLibblurayInterface
@@ -63,25 +62,31 @@ public:
   virtual BD_FILE_OPEN bd_register_file(BD_FILE_OPEN p)=0;
   virtual BD_DIR_OPEN bd_register_dir(BD_DIR_OPEN p)=0;
 
-#ifndef HAVE_LIBBLURAY_NOLOGCONTROL
   virtual void     bd_set_debug_handler(BD_LOG_FUNC)=0;
   virtual void     bd_set_debug_mask(uint32_t mask)=0;
   virtual uint32_t bd_get_debug_mask(void)=0;
+  virtual const BLURAY_DISC_INFO *bd_get_disc_info(BLURAY *bd)=0;
+
+  virtual int      bd_get_event                 (BLURAY *bd, BD_EVENT *event)=0;
+  virtual int      bd_play                      (BLURAY *bd)=0;
+  virtual int      bd_read_ext                  (BLURAY *bd, unsigned char *buf, int len, BD_EVENT *event)=0;
+  virtual int      bd_read_skip_still           (BLURAY *bd)=0;
+  virtual int      bd_user_input                (BLURAY *bd, int64_t pts, uint32_t key)=0;
+  virtual int      bd_set_player_setting        (BLURAY *bd, uint32_t idx, uint32_t value)=0;
+  virtual int      bd_set_player_setting_str    (BLURAY *bd, uint32_t idx, const char *s)=0;
+  virtual void     bd_register_overlay_proc     (BLURAY *bd, void *handle, bd_overlay_proc_f func)=0;
+#ifdef HAVE_LIBBLURAY_BDJ
+  virtual void     bd_register_argb_overlay_proc(BLURAY *bd, void *handle, bd_argb_overlay_proc_f func, struct bd_argb_buffer_s *buf)=0;
 #endif
+  virtual int      bd_menu_call                 (BLURAY *bd, int64_t pts)=0;
 };
 
 class DllLibbluray : public DllDynamic, DllLibblurayInterface
 {
   DECLARE_DLL_WRAPPER(DllLibbluray, DLL_PATH_LIBBLURAY)
-#ifdef HAVE_LIBBBLURAY_HAVE_LIBBLURAY_NOANGLE
-  DEFINE_METHOD3(uint32_t,            bd_get_titles,          (BLURAY *p1, uint8_t p2))
-  DEFINE_METHOD3(BLURAY_TITLE_INFO*,  bd_get_title_info,      (BLURAY *p1, uint32_t p2))
-  DEFINE_METHOD3(BLURAY_TITLE_INFO*,  bd_get_playlist_info,   (BLURAY *p1, uint32_t p2))
-#else
   DEFINE_METHOD3(uint32_t,            bd_get_titles,          (BLURAY *p1, uint8_t p2, uint32_t p3))
   DEFINE_METHOD3(BLURAY_TITLE_INFO*,  bd_get_title_info,      (BLURAY *p1, uint32_t p2, unsigned p3))
   DEFINE_METHOD3(BLURAY_TITLE_INFO*,  bd_get_playlist_info,   (BLURAY *p1, uint32_t p2, unsigned p3))
-#endif
   DEFINE_METHOD1(void,                bd_free_title_info,     (BLURAY_TITLE_INFO *p1))
   DEFINE_METHOD2(BLURAY*,             bd_open,                (const char* p1, const char* p2))
   DEFINE_METHOD1(void,                bd_close,               (BLURAY *p1))
@@ -104,11 +109,23 @@ class DllLibbluray : public DllDynamic, DllLibblurayInterface
   DEFINE_METHOD1(BD_FILE_OPEN,        bd_register_file,       (BD_FILE_OPEN p1))
   DEFINE_METHOD1(BD_DIR_OPEN,         bd_register_dir,        (BD_DIR_OPEN p1))
 
-#ifndef HAVE_LIBBLURAY_NOLOGCONTROL
   DEFINE_METHOD1(void,                bd_set_debug_handler,   (BD_LOG_FUNC p1))
   DEFINE_METHOD1(void,                bd_set_debug_mask,      (uint32_t p1))
   DEFINE_METHOD0(uint32_t,            bd_get_debug_mask)
+  DEFINE_METHOD1(const BLURAY_DISC_INFO*, bd_get_disc_info,      (BLURAY *p1))
+
+  DEFINE_METHOD2(int,                 bd_get_event,              (BLURAY *p1, BD_EVENT *p2))
+  DEFINE_METHOD1(int,                 bd_play,                   (BLURAY *p1))
+  DEFINE_METHOD4(int,                 bd_read_ext,               (BLURAY *p1, unsigned char *p2, int p3, BD_EVENT *p4))
+  DEFINE_METHOD1(int,                 bd_read_skip_still,        (BLURAY *p1))
+  DEFINE_METHOD3(int,                 bd_user_input,             (BLURAY *p1, int64_t p2, uint32_t p3))
+  DEFINE_METHOD3(int,                 bd_set_player_setting,     (BLURAY *p1, uint32_t p2, uint32_t p3))
+  DEFINE_METHOD3(int,                 bd_set_player_setting_str, (BLURAY *p1, uint32_t p2, const char *p3))
+  DEFINE_METHOD3(void,                bd_register_overlay_proc,  (BLURAY *p1, void *p2, bd_overlay_proc_f p3))
+#ifdef HAVE_LIBBLURAY_BDJ
+  DEFINE_METHOD4(void,                bd_register_argb_overlay_proc, (BLURAY *p1, void *p2, bd_argb_overlay_proc_f p3, struct bd_argb_buffer_s *p4))
 #endif
+  DEFINE_METHOD2(int,                 bd_menu_call,              (BLURAY *p1, int64_t p2))
 
   BEGIN_METHOD_RESOLVE()
     RESOLVE_METHOD(bd_get_titles)
@@ -138,21 +155,21 @@ class DllLibbluray : public DllDynamic, DllLibblurayInterface
     RESOLVE_METHOD(bd_set_debug_handler)
     RESOLVE_METHOD(bd_set_debug_mask)
     RESOLVE_METHOD(bd_get_debug_mask)
-#ifndef HAVE_LIBBLURAY_NOLOGCONTROL
-    RESOLVE_METHOD(bd_set_debug_handler)
-    RESOLVE_METHOD(bd_set_debug_mask)
-    RESOLVE_METHOD(bd_get_debug_mask)
-#endif
-  END_METHOD_RESOLVE()
+    RESOLVE_METHOD(bd_get_disc_info)
 
-#ifdef HAVE_LIBBBLURAY_HAVE_LIBBLURAY_NOANGLE
-  uint32_t bd_get_titles(BLURAY *bd, uint8_t flags, uint32_t min_title_length)
-      {return bd_get_titles_noangle(bd, flags);           }
-  BLURAY_TITLE_INFO* bd_get_title_info(BLURAY *bd, uint32_t title_idx, unsigned angle)
-      {return bd_get_title_info_noangle(bd, title_idx);   }
-  BLURAY_TITLE_INFO* bd_get_playlist_info(BLURAY *bd, uint32_t playlist, unsigned angle)
-      {return bd_get_playlist_info_noangle(bd, playlist); }
+    RESOLVE_METHOD(bd_get_event)
+    RESOLVE_METHOD(bd_play)
+    RESOLVE_METHOD(bd_read_ext)
+    RESOLVE_METHOD(bd_read_skip_still)
+    RESOLVE_METHOD(bd_user_input)
+    RESOLVE_METHOD(bd_set_player_setting)
+    RESOLVE_METHOD(bd_set_player_setting_str)
+    RESOLVE_METHOD(bd_register_overlay_proc)
+#ifdef HAVE_LIBBLURAY_BDJ
+    RESOLVE_METHOD(bd_register_argb_overlay_proc)
 #endif
+    RESOLVE_METHOD(bd_menu_call)
+  END_METHOD_RESOLVE()
 
 public:
   static void       file_close(BD_FILE_H *file);