Expose get_title_string and get_serial_string through DVDInputStreamNavigator
authorVoyager1 <voyager@xbmc.org>
Sun, 14 Jul 2013 04:51:12 +0000 (06:51 +0200)
committerVoyager1 <voyager@xbmc.org>
Thu, 18 Jul 2013 06:29:01 +0000 (08:29 +0200)
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h
xbmc/cores/dvdplayer/DVDInputStreams/DllDvdNav.h

index dc13a04..e5e0fba 100644 (file)
@@ -1412,3 +1412,21 @@ int CDVDInputStreamNavigator::ConvertSubtitleStreamId_ExternalToXBMC(int id)
     return 0;
   }
 }
+
+bool CDVDInputStreamNavigator::GetDVDTitleString(std::string& titleStr)
+{
+  if (!m_dvdnav) return false;
+  const char* str = NULL;
+  m_dll.dvdnav_get_title_string(m_dvdnav, &str);
+  titleStr.assign(str);
+  return true;
+}
+
+bool CDVDInputStreamNavigator::GetDVDSerialString(std::string& serialStr)
+{
+  if (!m_dvdnav) return false;
+  const char* str = NULL;
+  m_dll.dvdnav_get_serial_string(m_dvdnav, &str);
+  serialStr.assign(str);
+  return true;
+}
index 3364505..3e711c0 100644 (file)
@@ -137,6 +137,10 @@ public:
   bool SeekTime(int iTimeInMsec); //seek within current pg(c)
 
   double GetTimeStampCorrection() { return (double)(m_iVobUnitCorrection * 1000) / 90; }
+
+  bool GetDVDTitleString(std::string& titleStr);
+  bool GetDVDSerialString(std::string& serialStr);
+
 protected:
 
   int ProcessBlock(uint8_t* buffer, int* read);
index 5f36999..5b4fe41 100644 (file)
@@ -108,6 +108,8 @@ public:
   virtual dvdnav_status_t dvdnav_get_angle_info(dvdnav_t *self, int32_t *current_angle,int32_t *number_of_angles)=0;
   virtual dvdnav_status_t dvdnav_mouse_activate(dvdnav_t *self, pci_t *pci, int32_t x, int32_t y)=0;
   virtual dvdnav_status_t dvdnav_mouse_select(dvdnav_t *self, pci_t *pci, int32_t x, int32_t y)=0;
+  virtual dvdnav_status_t dvdnav_get_title_string(dvdnav_t *self, const char **title_str)=0;
+  virtual dvdnav_status_t dvdnav_get_serial_string(dvdnav_t *self, const char **serial_str)=0;
 };
 
 #if (defined USE_STATIC_LIBDVDNAV)
@@ -237,6 +239,10 @@ public:
         { return ::dvdnav_mouse_activate(self, pci, x, y); }
     virtual dvdnav_status_t dvdnav_mouse_select(dvdnav_t *self, pci_t *pci, int32_t x, int32_t y)
         { return ::dvdnav_mouse_select(self, pci, x, y); }
+    virtual dvdnav_status_t dvdnav_get_title_string(dvdnav_t *self, const char **title_str)
+        { return ::dvdnav_get_title_string(self, title_str); }
+    virtual dvdnav_status_t dvdnav_get_serial_string(dvdnav_t *self, const char **serial_str)
+        { return ::dvdnav_get_serial_string(self, serial_str); }
 
     // DLL faking.
     virtual bool ResolveExports() { return true; }
@@ -310,6 +316,8 @@ class DllDvdNav : public DllDynamic, DllDvdNavInterface
   DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_angle_info, (dvdnav_t *p1, int32_t *p2,int32_t *p3))
   DEFINE_METHOD4(dvdnav_status_t, dvdnav_mouse_activate, (dvdnav_t *p1, pci_t *p2, int32_t p3, int32_t p4))
   DEFINE_METHOD4(dvdnav_status_t, dvdnav_mouse_select, (dvdnav_t *p1, pci_t *p2, int32_t p3, int32_t p4))
+  DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_title_string, (dvdnav_t *p1, const char **p2))
+  DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_serial_string, (dvdnav_t *p1, const char **p2))
   BEGIN_METHOD_RESOLVE()
     RESOLVE_METHOD(dvdnav_open)
     RESOLVE_METHOD(dvdnav_close)
@@ -371,6 +379,8 @@ class DllDvdNav : public DllDynamic, DllDvdNavInterface
     RESOLVE_METHOD(dvdnav_get_angle_info)
     RESOLVE_METHOD(dvdnav_mouse_activate)
     RESOLVE_METHOD(dvdnav_mouse_select)
+    RESOLVE_METHOD(dvdnav_get_title_string)
+    RESOLVE_METHOD(dvdnav_get_serial_string)
 END_METHOD_RESOLVE()
 };