Skip to content
Browse files

Merge branch 'pvrapi_1_7_0'

  • Loading branch information...
2 parents 3314f92 + b6f41c7 commit bab06e226885669dd54659ca580609b61254deb3 @opdenkamp committed Mar 7, 2013
Showing with 497 additions and 17 deletions.
  1. +17 −0 addons/pvr.argustv/src/client.cpp
  2. +1 −0 addons/pvr.argustv/src/client.h
  3. +17 −0 addons/pvr.demo/src/client.cpp
  4. +1 −0 addons/pvr.demo/src/client.h
  5. +17 −0 addons/pvr.dvbviewer/src/client.cpp
  6. +1 −0 addons/pvr.dvbviewer/src/client.h
  7. +17 −0 addons/pvr.hts/src/client.cpp
  8. +17 −0 addons/pvr.mediaportal.tvserver/src/client.cpp
  9. +1 −0 addons/pvr.mediaportal.tvserver/src/client.h
  10. +41 −0 addons/pvr.mythtv.cmyth/src/client.cpp
  11. +38 −0 addons/pvr.mythtv.cmyth/src/cppmyth/MythConnection.cpp
  12. +7 −0 addons/pvr.mythtv.cmyth/src/cppmyth/MythConnection.h
  13. +23 −0 addons/pvr.mythtv.cmyth/src/cppmyth/MythEventHandler.cpp
  14. +3 −0 addons/pvr.mythtv.cmyth/src/cppmyth/MythEventHandler.h
  15. +73 −0 addons/pvr.mythtv.cmyth/src/pvrclient-mythtv.cpp
  16. +3 −0 addons/pvr.mythtv.cmyth/src/pvrclient-mythtv.h
  17. +17 −0 addons/pvr.nextpvr/src/client.cpp
  18. +1 −0 addons/pvr.nextpvr/src/client.h
  19. +18 −0 addons/pvr.njoy/src/client.cpp
  20. +1 −0 addons/pvr.njoy/src/client.h
  21. +17 −0 addons/pvr.vdr.vnsi/src/client.cpp
  22. +1 −1 addons/pvr.vdr.vnsi/src/client.h
  23. +17 −0 addons/pvr.vuplus/src/client.cpp
  24. +1 −0 addons/pvr.vuplus/src/client.h
  25. +6 −0 configure.ac
  26. +1 −1 xbmc/DVDDemuxPacket.h
  27. +16 −1 xbmc/libXBMC_addon.h
  28. +56 −1 xbmc/libXBMC_gui.h
  29. +1 −1 xbmc/libXBMC_pvr.h
  30. +1 −1 xbmc/xbmc_addon_cpp_dll.h
  31. +2 −1 xbmc/xbmc_addon_dll.h
  32. +1 −1 xbmc/xbmc_addon_types.h
  33. +1 −1 xbmc/xbmc_epg_types.h
  34. +30 −1 xbmc/xbmc_pvr_dll.h
  35. +28 −3 xbmc/xbmc_pvr_types.h
  36. +1 −1 xbmc/xbmc_scr_dll.h
  37. +1 −1 xbmc/xbmc_scr_types.h
  38. +1 −1 xbmc/xbmc_vis_dll.h
  39. +1 −1 xbmc/xbmc_vis_types.h
View
17 addons/pvr.argustv/src/client.cpp
@@ -285,6 +285,10 @@ void ADDON_FreeSettings()
}
+void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
+{
+}
+
/***********************************************************
* PVR Client AddOn specific public library functions
***********************************************************/
@@ -301,6 +305,18 @@ const char* GetMininumPVRAPIVersion(void)
return strMinApiVersion;
}
+const char* GetGUIAPIVersion(void)
+{
+ static const char *strGuiApiVersion = XBMC_GUI_API_VERSION;
+ return strGuiApiVersion;
+}
+
+const char* GetMininumGUIAPIVersion(void)
+{
+ static const char *strMinGuiApiVersion = XBMC_GUI_MIN_API_VERSION;
+ return strMinGuiApiVersion;
+}
+
//-- GetAddonCapabilities -----------------------------------------------------
// Tell XBMC our requirements
//-----------------------------------------------------------------------------
@@ -627,6 +643,7 @@ DemuxPacket* DemuxRead(void) { return NULL; }
void DemuxAbort(void) {}
void DemuxReset(void) {}
void DemuxFlush(void) {}
+PVR_ERROR GetRecordingEdl(const PVR_RECORDING&, PVR_EDL_ENTRY[], int*) { return PVR_ERROR_NOT_IMPLEMENTED; };
unsigned int GetChannelSwitchDelay(void) { return 0; }
bool SeekTime(int,bool,double*) { return false; }
void SetSpeed(int) {};
View
1 addons/pvr.argustv/src/client.h
@@ -26,6 +26,7 @@
#include "platform/util/StdString.h"
#include "libXBMC_addon.h"
#include "libXBMC_pvr.h"
+#include "libXBMC_gui.h"
#define DEFAULT_HOST "127.0.0.1"
#define DEFAULT_PORT 49943
View
17 addons/pvr.demo/src/client.cpp
@@ -125,6 +125,10 @@ void ADDON_FreeSettings()
{
}
+void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
+{
+}
+
/***********************************************************
* PVR Client AddOn specific public library functions
***********************************************************/
@@ -141,6 +145,18 @@ const char* GetMininumPVRAPIVersion(void)
return strMinApiVersion;
}
+const char* GetGUIAPIVersion(void)
+{
+ static const char *strGuiApiVersion = XBMC_GUI_API_VERSION;
+ return strGuiApiVersion;
+}
+
+const char* GetMininumGUIAPIVersion(void)
+{
+ static const char *strMinGuiApiVersion = XBMC_GUI_MIN_API_VERSION;
+ return strMinGuiApiVersion;
+}
+
PVR_ERROR GetAddonCapabilities(PVR_ADDON_CAPABILITIES* pCapabilities)
{
pCapabilities->bSupportsEPG = true;
@@ -313,6 +329,7 @@ PVR_ERROR RenameRecording(const PVR_RECORDING &recording) { return PVR_ERROR_NOT
PVR_ERROR SetRecordingPlayCount(const PVR_RECORDING &recording, int count) { return PVR_ERROR_NOT_IMPLEMENTED; }
PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING &recording, int lastplayedposition) { return PVR_ERROR_NOT_IMPLEMENTED; }
int GetRecordingLastPlayedPosition(const PVR_RECORDING &recording) { return -1; }
+PVR_ERROR GetRecordingEdl(const PVR_RECORDING&, PVR_EDL_ENTRY[], int*) { return PVR_ERROR_NOT_IMPLEMENTED; };
int GetTimersAmount(void) { return -1; }
PVR_ERROR GetTimers(ADDON_HANDLE handle) { return PVR_ERROR_NOT_IMPLEMENTED; }
PVR_ERROR AddTimer(const PVR_TIMER &timer) { return PVR_ERROR_NOT_IMPLEMENTED; }
View
1 addons/pvr.demo/src/client.h
@@ -22,6 +22,7 @@
#include "libXBMC_addon.h"
#include "libXBMC_pvr.h"
+#include "libXBMC_gui.h"
extern bool m_bCreated;
extern std::string g_strUserPath;
View
17 addons/pvr.dvbviewer/src/client.cpp
@@ -248,6 +248,10 @@ void ADDON_FreeSettings()
{
}
+void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
+{
+}
+
/***********************************************************
* PVR Client AddOn specific public library functions
***********************************************************/
@@ -264,6 +268,18 @@ const char* GetMininumPVRAPIVersion(void)
return strMinApiVersion;
}
+const char* GetGUIAPIVersion(void)
+{
+ static const char *strGuiApiVersion = XBMC_GUI_API_VERSION;
+ return strGuiApiVersion;
+}
+
+const char* GetMininumGUIAPIVersion(void)
+{
+ static const char *strMinGuiApiVersion = XBMC_GUI_MIN_API_VERSION;
+ return strMinGuiApiVersion;
+}
+
PVR_ERROR GetAddonCapabilities(PVR_ADDON_CAPABILITIES* pCapabilities)
{
//pCapabilities->bSupportsChannelSettings = false;
@@ -501,6 +517,7 @@ long long LengthLiveStream(void) { return -1; }
PVR_ERROR SetRecordingPlayCount(const PVR_RECORDING &recording, int count) { return PVR_ERROR_NOT_IMPLEMENTED; }
PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING &recording, int lastplayedposition) { return PVR_ERROR_NOT_IMPLEMENTED; }
int GetRecordingLastPlayedPosition(const PVR_RECORDING &recording) { return -1; }
+PVR_ERROR GetRecordingEdl(const PVR_RECORDING&, PVR_EDL_ENTRY[], int*) { return PVR_ERROR_NOT_IMPLEMENTED; };
unsigned int GetChannelSwitchDelay(void) { return 0; }
void PauseStream(bool bPaused) {}
bool CanPauseStream(void) { return false; }
View
1 addons/pvr.dvbviewer/src/client.h
@@ -22,6 +22,7 @@
#include "libXBMC_addon.h"
#include "libXBMC_pvr.h"
+#include "libXBMC_gui.h"
#define DEFAULT_HOST "127.0.0.1"
#define DEFAULT_CONNECT_TIMEOUT 30
View
17 addons/pvr.hts/src/client.cpp
@@ -354,6 +354,10 @@ void ADDON_FreeSettings()
{
}
+void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
+{
+}
+
/***********************************************************
* PVR Client AddOn specific public library functions
***********************************************************/
@@ -370,6 +374,18 @@ const char* GetMininumPVRAPIVersion(void)
return strMinApiVersion;
}
+const char* GetGUIAPIVersion(void)
+{
+ static const char *strGuiApiVersion = XBMC_GUI_API_VERSION;
+ return strGuiApiVersion;
+}
+
+const char* GetMininumGUIAPIVersion(void)
+{
+ static const char *strMinGuiApiVersion = XBMC_GUI_MIN_API_VERSION;
+ return strMinGuiApiVersion;
+}
+
PVR_ERROR GetAddonCapabilities(PVR_ADDON_CAPABILITIES* pCapabilities)
{
pCapabilities->bSupportsEPG = true;
@@ -710,6 +726,7 @@ const char * GetLiveStreamURL(const PVR_CHANNEL &channel) { return ""; }
PVR_ERROR SetRecordingPlayCount(const PVR_RECORDING &recording, int count) { return PVR_ERROR_NOT_IMPLEMENTED; }
PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING &recording, int lastplayedposition) { return PVR_ERROR_NOT_IMPLEMENTED; }
int GetRecordingLastPlayedPosition(const PVR_RECORDING &recording) { return -1; }
+PVR_ERROR GetRecordingEdl(const PVR_RECORDING&, PVR_EDL_ENTRY[], int*) { return PVR_ERROR_NOT_IMPLEMENTED; };
unsigned int GetChannelSwitchDelay(void) { return 0; }
void PauseStream(bool bPaused) {}
View
17 addons/pvr.mediaportal.tvserver/src/client.cpp
@@ -418,6 +418,10 @@ void ADDON_FreeSettings()
}
+void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
+{
+}
+
/***********************************************************
* PVR Client AddOn specific public library functions
***********************************************************/
@@ -434,6 +438,18 @@ const char* GetMininumPVRAPIVersion(void)
return strMinApiVersion;
}
+const char* GetGUIAPIVersion(void)
+{
+ static const char *strGuiApiVersion = XBMC_GUI_API_VERSION;
+ return strGuiApiVersion;
+}
+
+const char* GetMininumGUIAPIVersion(void)
+{
+ static const char *strMinGuiApiVersion = XBMC_GUI_MIN_API_VERSION;
+ return strMinGuiApiVersion;
+}
+
//-- GetAddonCapabilities -----------------------------------------------------
// Tell XBMC our requirements
//-----------------------------------------------------------------------------
@@ -853,6 +869,7 @@ void DemuxFlush(void) {}
PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING &recording, int lastplayedposition) { return PVR_ERROR_NOT_IMPLEMENTED; }
int GetRecordingLastPlayedPosition(const PVR_RECORDING &recording) { return -1; }
+PVR_ERROR GetRecordingEdl(const PVR_RECORDING&, PVR_EDL_ENTRY[], int*) { return PVR_ERROR_NOT_IMPLEMENTED; };
unsigned int GetChannelSwitchDelay(void) { return 0; }
bool SeekTime(int,bool,double*) { return false; }
void SetSpeed(int) {};
View
1 addons/pvr.mediaportal.tvserver/src/client.h
@@ -26,6 +26,7 @@
#include "platform/util/StdString.h"
#include "libXBMC_addon.h"
#include "libXBMC_pvr.h"
+#include "libXBMC_gui.h"
enum eStreamingMethod
{
View
41 addons/pvr.mythtv.cmyth/src/client.cpp
@@ -316,6 +316,26 @@ void ADDON_Destroy()
m_CurStatus = ADDON_STATUS_UNKNOWN;
}
+void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
+{
+ (void)data;
+ XBMC->Log(LOG_INFO, "Received announcement: %s, %s, %s", flag, sender, message);
+
+ if (g_client == NULL)
+ return;
+
+ if (strcmp("xbmc", sender) == 0)
+ {
+ if (strcmp("System", flag) == 0)
+ {
+ if (strcmp("OnSleep", message) == 0)
+ g_client->OnSleep();
+ else if (strcmp("OnWake", message) == 0)
+ g_client->OnWake();
+ }
+ }
+}
+
ADDON_STATUS ADDON_GetStatus()
{
return m_CurStatus;
@@ -441,6 +461,18 @@ const char* GetMininumPVRAPIVersion(void)
return strMinApiVersion;
}
+const char* GetGUIAPIVersion(void)
+{
+ static const char *strGuiApiVersion = XBMC_GUI_API_VERSION;
+ return strGuiApiVersion;
+}
+
+const char* GetMininumGUIAPIVersion(void)
+{
+ static const char *strMinGuiApiVersion = XBMC_GUI_MIN_API_VERSION;
+ return strMinGuiApiVersion;
+}
+
PVR_ERROR GetAddonCapabilities(PVR_ADDON_CAPABILITIES *pCapabilities)
{
if (g_client != NULL)
@@ -460,6 +492,7 @@ PVR_ERROR GetAddonCapabilities(PVR_ADDON_CAPABILITIES *pCapabilities)
pCapabilities->bSupportsRecordings = true;
pCapabilities->bSupportsRecordingPlayCount = true;
pCapabilities->bSupportsLastPlayedPosition = true;
+ pCapabilities->bSupportsRecordingEdl = true;
return PVR_ERROR_NO_ERROR;
}
else
@@ -653,6 +686,14 @@ int GetRecordingLastPlayedPosition(const PVR_RECORDING &recording)
return g_client->GetRecordingLastPlayedPosition(recording);
}
+PVR_ERROR GetRecordingEdl(const PVR_RECORDING &recording, PVR_EDL_ENTRY entries[], int *size)
+{
+ if (g_client == NULL)
+ return PVR_ERROR_SERVER_ERROR;
+
+ return g_client->GetRecordingEdl(recording, entries, size);
+}
+
/*******************************************/
/** PVR Timer Functions **/
View
38 addons/pvr.mythtv.cmyth/src/cppmyth/MythConnection.cpp
@@ -359,3 +359,41 @@ long long MythConnection::GetBookmark(MythProgramInfo &recording)
CMYTH_CONN_CALL(bookmark, bookmark < 0, cmyth_get_bookmark(*m_conn_t, *recording.m_proginfo_t));
return bookmark;
}
+
+Edl MythConnection::GetCommbreakList(MythProgramInfo &recording)
+{
+ Edl retval;
+ cmyth_commbreaklist_t list = NULL;
+ CMYTH_CONN_CALL(list, list == NULL, cmyth_get_commbreaklist(*m_conn_t, *recording.m_proginfo_t));
+ if (!list)
+ return retval;
+
+ retval.reserve(list->commbreak_count);
+ for (int i = 0; i < list->commbreak_count; ++i)
+ {
+ cmyth_commbreak commbreak = *list->commbreak_list[i];
+ retval.push_back(commbreak);
+ }
+
+ ref_release(list);
+ return retval;
+}
+
+Edl MythConnection::GetCutList(MythProgramInfo &recording)
+{
+ Edl retval;
+ cmyth_commbreaklist_t list = NULL;
+ CMYTH_CONN_CALL(list, list == NULL, cmyth_get_cutlist(*m_conn_t, *recording.m_proginfo_t));
+ if (!list)
+ return retval;
+
+ retval.reserve(list->commbreak_count);
+ for (int i = 0; i < list->commbreak_count; ++i)
+ {
+ cmyth_commbreak commbreak = *list->commbreak_list[i];
+ retval.push_back(commbreak);
+ }
+
+ ref_release(list);
+ return retval;
+}
View
7 addons/pvr.mythtv.cmyth/src/cppmyth/MythConnection.h
@@ -41,6 +41,9 @@ template <class T> class MythPointerThreadSafe;
typedef std::map<CStdString, MythProgramInfo> ProgramInfoMap;
+typedef cmyth_commbreak MythEdlEntry;
+typedef std::vector<MythEdlEntry> Edl;
+
class MythConnection
{
public:
@@ -89,6 +92,10 @@ class MythConnection
long long GetBookmark(MythProgramInfo &recording);
bool SetBookmark(MythProgramInfo &recording, long long bookmark);
+ // Edl
+ Edl GetCutList(MythProgramInfo &recording);
+ Edl GetCommbreakList(MythProgramInfo &recording);
+
private:
boost::shared_ptr<MythPointerThreadSafe<cmyth_conn_t> > m_conn_t;
CStdString m_server;
View
23 addons/pvr.mythtv.cmyth/src/cppmyth/MythEventHandler.cpp
@@ -508,6 +508,29 @@ void MythEventHandler::RegisterObserver(MythEventObserver *observer)
m_imp->m_observer = observer;
}
+void MythEventHandler::Suspend()
+{
+ if (m_imp->IsRunning())
+ {
+ m_imp->StopThread();
+ // We must close the connection to be able to restart properly.
+ // On resume the thread will retry to connect by RetryConnect().
+ // So all recordings will be reloaded after restoring the connection.
+ m_imp->m_hang = true;
+ ref_release(*(m_imp->m_conn_t));
+ *(m_imp->m_conn_t) = NULL;
+ }
+}
+
+void MythEventHandler::Resume()
+{
+ if (m_imp->IsStopped())
+ {
+ m_imp->Clear();
+ m_imp->CreateThread();
+ }
+}
+
void MythEventHandler::PreventLiveChainUpdate()
{
m_imp->Lock();
View
3 addons/pvr.mythtv.cmyth/src/cppmyth/MythEventHandler.h
@@ -51,6 +51,9 @@ class MythEventHandler
MythEventHandler(const CStdString &server, unsigned short port);
void RegisterObserver(MythEventObserver *observer);
+ void Suspend();
+ void Resume();
+
void PreventLiveChainUpdate();
void AllowLiveChainUpdate();
View
73 addons/pvr.mythtv.cmyth/src/pvrclient-mythtv.cpp
@@ -252,6 +252,22 @@ bool PVRClientMythTV::GetDriveSpace(long long *iTotal, long long *iUsed)
return m_con.GetDriveSpace(*iTotal, *iUsed);
}
+void PVRClientMythTV::OnSleep()
+{
+ if (m_pEventHandler)
+ m_pEventHandler->Suspend();
+ if (m_fileOps)
+ m_fileOps->Suspend();
+}
+
+void PVRClientMythTV::OnWake()
+{
+ if (m_pEventHandler)
+ m_pEventHandler->Resume();
+ if (m_fileOps)
+ m_fileOps->Resume();
+}
+
PVR_ERROR PVRClientMythTV::GetEPGForChannel(ADDON_HANDLE handle, const PVR_CHANNEL &channel, time_t iStart, time_t iEnd)
{
if (g_bExtraDebug)
@@ -861,6 +877,63 @@ int PVRClientMythTV::GetRecordingLastPlayedPosition(const PVR_RECORDING &recordi
return bookmark;
}
+PVR_ERROR PVRClientMythTV::GetRecordingEdl(const PVR_RECORDING &recording, PVR_EDL_ENTRY entries[], int *size)
+{
+ if (g_bExtraDebug)
+ {
+ XBMC->Log(LOG_DEBUG, "%s - Reading edl for: %s", __FUNCTION__, recording.strTitle);
+ }
+
+ CLockObject lock(m_recordingsLock);
+ ProgramInfoMap::iterator it = m_recordings.find(recording.strRecordingId);
+ if (it == m_recordings.end())
+ {
+ XBMC->Log(LOG_DEBUG, "%s - Recording %s does not exist", __FUNCTION__, recording.strRecordingId);
+ *size = 0;
+ return PVR_ERROR_FAILED;
+ }
+
+ float frameRate = m_db.GetRecordingFrameRate(it->second) / 1000.0f;
+ if (frameRate <= 0)
+ {
+ XBMC->Log(LOG_DEBUG, "%s - Failed to read framerate for %s", __FUNCTION__, recording.strRecordingId);
+ *size = 0;
+ return PVR_ERROR_FAILED;
+ }
+
+ Edl commbreakList = m_con.GetCommbreakList(it->second);
+ int commbreakCount = commbreakList.size();
+ XBMC->Log(LOG_DEBUG, "%s - Found %d commercial breaks for: %s", __FUNCTION__, commbreakCount, recording.strTitle);
+
+ Edl cutList = m_con.GetCutList(it->second);
+ XBMC->Log(LOG_DEBUG, "%s - Found %d cut list entries for: %s", __FUNCTION__, cutList.size(), recording.strTitle);
+
+ commbreakList.insert(commbreakList.end(), cutList.begin(), cutList.end());
+
+ int index = 0;
+ Edl::const_iterator edlIt;
+ for (edlIt = commbreakList.begin(); edlIt != commbreakList.end(); ++edlIt)
+ {
+ if (index < *size)
+ {
+ PVR_EDL_ENTRY entry;
+ entry.start = (int64_t)(edlIt->start_mark / frameRate * 1000);
+ entry.end = (int64_t)(edlIt->end_mark / frameRate * 1000);
+ entry.type = index < commbreakCount ? PVR_EDL_TYPE_COMBREAK : PVR_EDL_TYPE_CUT;
+ entries[index] = entry;
+ index++;
+ }
+ else
+ {
+ XBMC->Log(LOG_ERROR, "%s - Maximum number of edl entries reached for: %s", __FUNCTION__, recording.strTitle);
+ break;
+ }
+ }
+
+ *size = index;
+ return PVR_ERROR_NO_ERROR;
+}
+
int PVRClientMythTV::GetTimersAmount(void)
{
if (g_bExtraDebug)
View
3 addons/pvr.mythtv.cmyth/src/pvrclient-mythtv.h
@@ -65,6 +65,8 @@ class PVRClientMythTV : public MythEventObserver
const char *GetBackendVersion();
const char *GetConnectionString();
bool GetDriveSpace(long long *iTotal, long long *iUsed);
+ void OnSleep();
+ void OnWake();
// EPG
PVR_ERROR GetEPGForChannel(ADDON_HANDLE handle, const PVR_CHANNEL &channel, time_t iStart, time_t iEnd);
@@ -85,6 +87,7 @@ class PVRClientMythTV : public MythEventObserver
PVR_ERROR SetRecordingPlayCount(const PVR_RECORDING &recording, int count);
PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING &recording, int lastplayedposition);
int GetRecordingLastPlayedPosition(const PVR_RECORDING &recording);
+ PVR_ERROR GetRecordingEdl(const PVR_RECORDING &recording, PVR_EDL_ENTRY entries[], int *size);
// Timers
int GetTimersAmount();
View
17 addons/pvr.nextpvr/src/client.cpp
@@ -251,6 +251,10 @@ void ADDON_FreeSettings()
}
+void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
+{
+}
+
/***********************************************************
* PVR Client AddOn specific public library functions
***********************************************************/
@@ -267,6 +271,18 @@ const char* GetMininumPVRAPIVersion(void)
return strMinApiVersion;
}
+const char* GetGUIAPIVersion(void)
+{
+ static const char *strGuiApiVersion = XBMC_GUI_API_VERSION;
+ return strGuiApiVersion;
+}
+
+const char* GetMininumGUIAPIVersion(void)
+{
+ static const char *strMinGuiApiVersion = XBMC_GUI_MIN_API_VERSION;
+ return strMinGuiApiVersion;
+}
+
//-- GetAddonCapabilities -----------------------------------------------------
// Tell XBMC our requirements
//-----------------------------------------------------------------------------
@@ -676,6 +692,7 @@ void DemuxFlush(void) {}
PVR_ERROR SetRecordingPlayCount(const PVR_RECORDING &recording, int count) { return PVR_ERROR_NOT_IMPLEMENTED; }
PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING &recording, int lastplayedposition) { return PVR_ERROR_NOT_IMPLEMENTED; }
int GetRecordingLastPlayedPosition(const PVR_RECORDING &recording) { return -1; }
+PVR_ERROR GetRecordingEdl(const PVR_RECORDING&, PVR_EDL_ENTRY[], int*) { return PVR_ERROR_NOT_IMPLEMENTED; };
unsigned int GetChannelSwitchDelay(void) { return 0; }
bool SeekTime(int,bool,double*) { return false; }
View
1 addons/pvr.nextpvr/src/client.h
@@ -26,6 +26,7 @@
#include "platform/util/StdString.h"
#include "libXBMC_addon.h"
#include "libXBMC_pvr.h"
+#include "libXBMC_gui.h"
enum eStreamingMethod
{
View
18 addons/pvr.njoy/src/client.cpp
@@ -64,6 +64,18 @@ const char* GetMininumPVRAPIVersion(void)
return strMinApiVersion;
}
+const char* GetGUIAPIVersion(void)
+{
+ static const char *strGuiApiVersion = XBMC_GUI_API_VERSION;
+ return strGuiApiVersion;
+}
+
+const char* GetMininumGUIAPIVersion(void)
+{
+ static const char *strMinGuiApiVersion = XBMC_GUI_MIN_API_VERSION;
+ return strMinGuiApiVersion;
+}
+
ADDON_STATUS ADDON_Create(void* hdl, void* props)
{
if (!props)
@@ -178,6 +190,11 @@ void ADDON_FreeSettings()
return;
}
+void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
+{
+ return;
+}
+
/***********************************************************
* PVR Client AddOn specific public library functions
***********************************************************/
@@ -261,6 +278,7 @@ PVR_ERROR RenameRecording(const PVR_RECORDING &recording) { return PVR_ERROR_NOT
PVR_ERROR SetRecordingPlayCount(const PVR_RECORDING &recording, int count) { return PVR_ERROR_NOT_IMPLEMENTED; }
PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING &recording, int lastplayedposition) { return PVR_ERROR_NOT_IMPLEMENTED; }
int GetRecordingLastPlayedPosition(const PVR_RECORDING &recording) { return -1; }
+PVR_ERROR GetRecordingEdl(const PVR_RECORDING&, PVR_EDL_ENTRY[], int*) { return PVR_ERROR_NOT_IMPLEMENTED; };
int GetTimersAmount(void) { return -1; }
PVR_ERROR GetTimers(ADDON_HANDLE handle) { return PVR_ERROR_NOT_IMPLEMENTED; }
PVR_ERROR AddTimer(const PVR_TIMER &timer) { return PVR_ERROR_NOT_IMPLEMENTED; }
View
1 addons/pvr.njoy/src/client.h
@@ -23,6 +23,7 @@
#include "platform/util/StdString.h"
#include "libXBMC_addon.h"
#include "libXBMC_pvr.h"
+#include "libXBMC_gui.h"
#define DEFAULT_HOST "127.0.0.1"
#define DEFAULT_PORT 80
View
17 addons/pvr.vdr.vnsi/src/client.cpp
@@ -285,6 +285,10 @@ void ADDON_FreeSettings()
}
+void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
+{
+}
+
/***********************************************************
* PVR Client AddOn specific public library functions
***********************************************************/
@@ -301,6 +305,18 @@ const char* GetMininumPVRAPIVersion(void)
return strMinApiVersion;
}
+const char* GetGUIAPIVersion(void)
+{
+ static const char *strGuiApiVersion = XBMC_GUI_API_VERSION;
+ return strGuiApiVersion;
+}
+
+const char* GetMininumGUIAPIVersion(void)
+{
+ static const char *strMinGuiApiVersion = XBMC_GUI_MIN_API_VERSION;
+ return strMinGuiApiVersion;
+}
+
PVR_ERROR GetAddonCapabilities(PVR_ADDON_CAPABILITIES* pCapabilities)
{
pCapabilities->bSupportsEPG = true;
@@ -647,6 +663,7 @@ const char * GetLiveStreamURL(const PVR_CHANNEL &channel) { return ""; }
PVR_ERROR SetRecordingPlayCount(const PVR_RECORDING &recording, int count) { return PVR_ERROR_NOT_IMPLEMENTED; }
PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING &recording, int lastplayedposition) { return PVR_ERROR_NOT_IMPLEMENTED; }
int GetRecordingLastPlayedPosition(const PVR_RECORDING &recording) { return -1; }
+PVR_ERROR GetRecordingEdl(const PVR_RECORDING&, PVR_EDL_ENTRY[], int*) { return PVR_ERROR_NOT_IMPLEMENTED; };
unsigned int GetChannelSwitchDelay(void) { return 0; }
void PauseStream(bool bPaused) {}
bool CanPauseStream(void) { return false; }
View
2 addons/pvr.vdr.vnsi/src/client.h
@@ -21,8 +21,8 @@
*/
#include "libXBMC_addon.h"
-#include "libXBMC_gui.h"
#include "libXBMC_pvr.h"
+#include "libXBMC_gui.h"
#define DEFAULT_HOST "127.0.0.1"
#define DEFAULT_PORT 34890
View
17 addons/pvr.vuplus/src/client.cpp
@@ -327,6 +327,10 @@ void ADDON_FreeSettings()
{
}
+void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
+{
+}
+
/***********************************************************
* PVR Client AddOn specific public library functions
***********************************************************/
@@ -343,6 +347,18 @@ const char* GetMininumPVRAPIVersion(void)
return strMinApiVersion;
}
+const char* GetGUIAPIVersion(void)
+{
+ static const char *strGuiApiVersion = XBMC_GUI_API_VERSION;
+ return strGuiApiVersion;
+}
+
+const char* GetMininumGUIAPIVersion(void)
+{
+ static const char *strMinGuiApiVersion = XBMC_GUI_MIN_API_VERSION;
+ return strMinGuiApiVersion;
+}
+
PVR_ERROR GetAddonCapabilities(PVR_ADDON_CAPABILITIES* pCapabilities)
{
pCapabilities->bSupportsEPG = true;
@@ -588,6 +604,7 @@ long long SeekLiveStream(long long iPosition, int iWhence /* = SEEK_SET */) { re
long long PositionLiveStream(void) { return -1; }
long long LengthLiveStream(void) { return -1; }
PVR_ERROR SetRecordingPlayCount(const PVR_RECORDING &recording, int count) { return PVR_ERROR_NOT_IMPLEMENTED; }
+PVR_ERROR GetRecordingEdl(const PVR_RECORDING&, PVR_EDL_ENTRY[], int*) { return PVR_ERROR_NOT_IMPLEMENTED; };
unsigned int GetChannelSwitchDelay(void) { return 0; }
void PauseStream(bool bPaused) {}
bool CanPauseStream(void) { return false; }
View
1 addons/pvr.vuplus/src/client.h
@@ -22,6 +22,7 @@
#include "libXBMC_addon.h"
#include "libXBMC_pvr.h"
+#include "libXBMC_gui.h"
#define DEFAULT_HOST "127.0.0.1"
#define DEFAULT_CONNECT_TIMEOUT 30
View
6 configure.ac
@@ -138,6 +138,12 @@ if test "$use_external_ffmpeg" = "yes"; then
fi
AC_SUBST(FFMPEG_INCLUDES)
+AC_CHECK_LIB([GL],[main],have_gl=yes, have_gl=no)
+if test "$have_gl" = "yes"; then
+ AC_DEFINE([HAVE_GL],[1],["Define to 1 if we have gl"])
+fi
+echo "GL: $have_gl"
+
### End external Libraries
### Build addons with dependencies
View
2 xbmc/DVDDemuxPacket.h
@@ -1,7 +1,7 @@
#pragma once
/*
- * Copyright (C) 2012 Team XBMC
+ * Copyright (C) 2012-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
View
17 xbmc/libXBMC_addon.h
@@ -1,6 +1,6 @@
#pragma once
/*
- * Copyright (C) 2005-2010 Team XBMC
+ * Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
@@ -158,6 +158,10 @@ namespace ADDON
dlsym(m_libXBMC_addon, "XBMC_queue_notification");
if (XBMC_queue_notification == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+ XBMC_wake_on_lan = (bool (*)(void* HANDLE, void *CB, const char *mac))
+ dlsym(m_libXBMC_addon, "XBMC_wake_on_lan");
+ if (XBMC_wake_on_lan == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
XBMC_unknown_to_utf8 = (char* (*)(void* HANDLE, void* CB, const char* str))
dlsym(m_libXBMC_addon, "XBMC_unknown_to_utf8");
if (XBMC_unknown_to_utf8 == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
@@ -296,6 +300,16 @@ namespace ADDON
}
/*!
+ * @brief Send WakeOnLan magic packet.
+ * @param mac Network address of the host to wake.
+ * @return True if the magic packet was successfully sent, false otherwise.
+ */
+ bool WakeOnLan(const char* mac)
+ {
+ return XBMC_wake_on_lan(m_Handle, m_Callbacks, mac);
+ }
+
+ /*!
* @brief Translate a string with an unknown encoding to UTF8.
* @param str The string to translate.
* @return The string translated to UTF8. Must be freed by calling FreeString() when done.
@@ -541,6 +555,7 @@ namespace ADDON
void (*XBMC_log)(void *HANDLE, void* CB, const addon_log_t loglevel, const char *msg);
bool (*XBMC_get_setting)(void *HANDLE, void* CB, const char* settingName, void *settingValue);
void (*XBMC_queue_notification)(void *HANDLE, void* CB, const queue_msg_t type, const char *msg);
+ bool (*XBMC_wake_on_lan)(void *HANDLE, void* CB, const char* mac);
char* (*XBMC_unknown_to_utf8)(void *HANDLE, void* CB, const char* str);
char* (*XBMC_get_localized_string)(void *HANDLE, void* CB, int dwCode);
char* (*XBMC_get_dvd_menu_language)(void *HANDLE, void* CB);
View
57 xbmc/libXBMC_gui.h
@@ -1,6 +1,6 @@
#pragma once
/*
- * Copyright (C) 2005-2010 Team XBMC
+ * Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
@@ -35,6 +35,12 @@ typedef void* GUIHANDLE;
#define GUI_HELPER_DLL "/library.xbmc.gui/" GUI_HELPER_DLL_NAME
#endif
+/* current ADDONGUI API version */
+#define XBMC_GUI_API_VERSION "1.0.0"
+
+/* min. ADDONGUI API version */
+#define XBMC_GUI_MIN_API_VERSION "1.0.0"
+
#define ADDON_ACTION_PREVIOUS_MENU 10
#define ADDON_ACTION_CLOSE_DIALOG 51
@@ -43,6 +49,7 @@ class CAddonGUISpinControl;
class CAddonGUIRadioButton;
class CAddonGUIProgressControl;
class CAddonListItem;
+class CAddonGUIRenderingControl;
class CHelper_libXBMC_gui
{
@@ -154,6 +161,14 @@ class CHelper_libXBMC_gui
dlsym(m_libXBMC_gui, "GUI_ListItem_destroy");
if (GUI_ListItem_destroy == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+ GUI_control_get_rendering = (CAddonGUIRenderingControl* (*)(void *HANDLE, void *CB, CAddonGUIWindow *window, int controlId))
+ dlsym(m_libXBMC_gui, "GUI_control_get_rendering");
+ if (GUI_control_get_rendering == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ GUI_control_release_rendering = (void (*)(CAddonGUIRenderingControl* p))
+ dlsym(m_libXBMC_gui, "GUI_control_release_rendering");
+ if (GUI_control_release_rendering == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
m_Callbacks = GUI_register_me(m_Handle);
return m_Callbacks != NULL;
@@ -234,6 +249,16 @@ class CHelper_libXBMC_gui
return GUI_ListItem_destroy(p);
}
+ CAddonGUIRenderingControl* Control_getRendering(CAddonGUIWindow *window, int controlId)
+ {
+ return GUI_control_get_rendering(m_Handle, m_Callbacks, window, controlId);
+ }
+
+ void Control_releaseRendering(CAddonGUIRenderingControl* p)
+ {
+ return GUI_control_release_rendering(p);
+ }
+
protected:
void* (*GUI_register_me)(void *HANDLE);
void (*GUI_unregister_me)(void *HANDLE, void* CB);
@@ -252,6 +277,8 @@ class CHelper_libXBMC_gui
void (*GUI_control_release_progress)(CAddonGUIProgressControl* p);
CAddonListItem* (*GUI_ListItem_create)(void *HANDLE, void* CB, const char *label, const char *label2, const char *iconImage, const char *thumbnailImage, const char *path);
void (*GUI_ListItem_destroy)(CAddonListItem* p);
+ CAddonGUIRenderingControl* (*GUI_control_get_rendering)(void *HANDLE, void* CB, CAddonGUIWindow *window, int controlId);
+ void (*GUI_control_release_rendering)(CAddonGUIRenderingControl* p);
private:
void *m_libXBMC_gui;
@@ -355,6 +382,7 @@ class CAddonGUIWindow
friend class CAddonGUISpinControl;
friend class CAddonGUIRadioButton;
friend class CAddonGUIProgressControl;
+friend class CAddonGUIRenderingControl;
public:
CAddonGUIWindow(void *hdl, void *cb, const char *xmlFilename, const char *defaultSkin, bool forceFallback, bool asDialog);
@@ -385,6 +413,7 @@ friend class CAddonGUIProgressControl;
virtual void SetCurrentListPosition(int listPos);
virtual int GetCurrentListPosition();
virtual void SetControlLabel(int controlId, const char *label);
+ virtual void MarkDirtyRegion();
virtual bool OnClick(int controlId);
virtual bool OnFocus(int controlId);
@@ -402,3 +431,29 @@ friend class CAddonGUIProgressControl;
void *m_Handle;
void *m_cb;
};
+
+class CAddonGUIRenderingControl
+{
+public:
+ CAddonGUIRenderingControl(void *hdl, void *cb, CAddonGUIWindow *window, int controlId);
+ virtual ~CAddonGUIRenderingControl();
+ virtual void Init();
+
+ virtual bool Create(int x, int y, int w, int h, void *device);
+ virtual void Render();
+ virtual void Stop();
+ virtual bool Dirty();
+
+ GUIHANDLE m_cbhdl;
+ bool (*CBCreate)(GUIHANDLE cbhdl, int x, int y, int w, int h, void *device);
+ void (*CBRender)(GUIHANDLE cbhdl);
+ void (*CBStop)(GUIHANDLE cbhdl);
+ bool (*CBDirty)(GUIHANDLE cbhdl);
+
+private:
+ CAddonGUIWindow *m_Window;
+ int m_ControlId;
+ GUIHANDLE m_RenderingHandle;
+ void *m_Handle;
+ void *m_cb;
+};
View
2 xbmc/libXBMC_pvr.h
@@ -1,6 +1,6 @@
#pragma once
/*
- * Copyright (C) 2005-2010 Team XBMC
+ * Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
View
2 xbmc/xbmc_addon_cpp_dll.h
@@ -2,7 +2,7 @@
#define __XBMC_ADDON_CPP_H__
/*
- * Copyright (C) 2005-2012 Team XBMC
+ * Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
View
3 xbmc/xbmc_addon_dll.h
@@ -2,7 +2,7 @@
#define __XBMC_ADDON_DLL_H__
/*
- * Copyright (C) 2005-2012 Team XBMC
+ * Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
@@ -46,6 +46,7 @@ extern "C" {
unsigned int __declspec(dllexport) ADDON_GetSettings(ADDON_StructSetting ***sSet);
ADDON_STATUS __declspec(dllexport) ADDON_SetSetting(const char *settingName, const void *settingValue);
void __declspec(dllexport) ADDON_FreeSettings();
+ void __declspec(dllexport) ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data);
#ifdef __cplusplus
};
View
2 xbmc/xbmc_addon_types.h
@@ -2,7 +2,7 @@
#define __XBMC_ADDON_TYPES_H__
/*
- * Copyright (C) 2005-2012 Team XBMC
+ * Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
View
2 xbmc/xbmc_epg_types.h
@@ -1,6 +1,6 @@
#pragma once
/*
- * Copyright (C) 2005-2012 Team XBMC
+ * Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
View
31 xbmc/xbmc_pvr_dll.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2012 Team XBMC
+ * Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
@@ -51,6 +51,22 @@ extern "C"
const char* GetMininumPVRAPIVersion(void);
/*!
+ * Get the XBMC_GUI_API_VERSION that was used to compile this add-on.
+ * Used to check if this add-on is compatible with XBMC.
+ * @return The XBMC_GUI_API_VERSION that was used to compile this add-on.
+ * @remarks Valid implementation required.
+ */
+ const char* GetGUIAPIVersion(void);
+
+ /*!
+ * Get the XBMC_GUI_MIN_API_VERSION that was used to compile this add-on.
+ * Used to check if this add-on is compatible with XBMC.
+ * @return The XBMC_GUI_MIN_API_VERSION that was used to compile this add-on.
+ * @remarks Valid implementation required.
+ */
+ const char* GetMininumGUIAPIVersion(void);
+
+ /*!
* Get the list of features that this add-on provides.
* Called by XBMC to query the add-on's capabilities.
* Used to check which options should be presented in the UI, which methods to call, etc.
@@ -284,6 +300,16 @@ extern "C"
*/
int GetRecordingLastPlayedPosition(const PVR_RECORDING& recording);
+ /*!
+ * Retrieve the edit decision list (EDL) of a recording on the backend.
+ * @param recording The recording.
+ * @param edl out: The function has to write the EDL list into this array.
+ * @param size in: The maximum size of the EDL, out: the actual size of the EDL.
+ * @return PVR_ERROR_NO_ERROR if the EDL was successfully read.
+ * @remarks Required if bSupportsRecordingEdl is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
+ */
+ PVR_ERROR GetRecordingEdl(const PVR_RECORDING&, PVR_EDL_ENTRY edl[], int *size);
+
//@}
/** @name PVR timer methods
* @remarks Only used by XBMC is bSupportsTimers is set to true.
@@ -556,6 +582,8 @@ extern "C"
{
pClient->GetPVRAPIVersion = GetPVRAPIVersion;
pClient->GetMininumPVRAPIVersion = GetMininumPVRAPIVersion;
+ pClient->GetGUIAPIVersion = GetGUIAPIVersion;
+ pClient->GetMininumGUIAPIVersion = GetMininumGUIAPIVersion;
pClient->GetAddonCapabilities = GetAddonCapabilities;
pClient->GetStreamProperties = GetStreamProperties;
pClient->GetConnectionString = GetConnectionString;
@@ -586,6 +614,7 @@ extern "C"
pClient->SetRecordingPlayCount = SetRecordingPlayCount;
pClient->SetRecordingLastPlayedPosition = SetRecordingLastPlayedPosition;
pClient->GetRecordingLastPlayedPosition = GetRecordingLastPlayedPosition;
+ pClient->GetRecordingEdl = GetRecordingEdl;
pClient->GetTimersAmount = GetTimersAmount;
pClient->GetTimers = GetTimers;
View
31 xbmc/xbmc_pvr_types.h
@@ -1,6 +1,6 @@
#pragma once
/*
- * Copyright (C) 2005-2012 Team XBMC
+ * Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
@@ -33,6 +33,7 @@
#endif
#endif
#include <string.h>
+#include <stdint.h>
#include "xbmc_addon_types.h"
#include "xbmc_epg_types.h"
@@ -67,15 +68,16 @@ struct DemuxPacket;
#define PVR_ADDON_URL_STRING_LENGTH 1024
#define PVR_ADDON_DESC_STRING_LENGTH 1024
#define PVR_ADDON_INPUT_FORMAT_STRING_LENGTH 32
+#define PVR_ADDON_EDL_LENGTH 32
/* using the default avformat's MAX_STREAMS value to be safe */
#define PVR_STREAM_MAX_STREAMS 20
/* current PVR API version */
-#define XBMC_PVR_API_VERSION "1.6.0"
+#define XBMC_PVR_API_VERSION "1.7.0"
/* min. PVR API version */
-#define XBMC_PVR_MIN_API_VERSION "1.6.0"
+#define XBMC_PVR_MIN_API_VERSION "1.7.0"
#ifdef __cplusplus
extern "C" {
@@ -154,6 +156,7 @@ extern "C" {
bool bSupportsRecordingFolders; /*!< @brief true if the backend supports timers / recordings in folders. */
bool bSupportsRecordingPlayCount; /*!< @brief true if the backend supports play count for recordings. */
bool bSupportsLastPlayedPosition; /*!< @brief true if the backend supports store/retrieve of last played position for recordings. */
+ bool bSupportsRecordingEdl; /*!< @brief true if the backend supports retrieving an edit decision list for recordings. */
} ATTRIBUTE_PACKED PVR_ADDON_CAPABILITIES;
/*!
@@ -285,15 +288,36 @@ extern "C" {
int iGenreType; /*!< @brief (optional) genre type */
int iGenreSubType; /*!< @brief (optional) genre sub type */
int iPlayCount; /*!< @brief (optional) play count of this recording on the client */
+ int iLastPlayedPosition; /*!< @brief (optional) last played position of this recording on the client */
} ATTRIBUTE_PACKED PVR_RECORDING;
/*!
+ * @brief Edit definition list (EDL)
+ */
+ typedef enum
+ {
+ PVR_EDL_TYPE_CUT = 0, /*!< @brief cut (completly remove content) */
+ PVR_EDL_TYPE_MUTE = 1, /*!< @brief mute audio */
+ PVR_EDL_TYPE_SCENE = 2, /*!< @brief scene markers (chapter seeking) */
+ PVR_EDL_TYPE_COMBREAK = 3 /*!< @brief commercial breaks */
+ } PVR_EDL_TYPE;
+
+ typedef struct PVR_EDL_ENTRY
+ {
+ int64_t start; // ms
+ int64_t end; // ms
+ PVR_EDL_TYPE type;
+ } ATTRIBUTE_PACKED PVR_EDL_ENTRY;
+
+ /*!
* @brief Structure to transfer the methods from xbmc_pvr_dll.h to XBMC
*/
typedef struct PVRClient
{
const char* (__cdecl* GetPVRAPIVersion)(void);
const char* (__cdecl* GetMininumPVRAPIVersion)(void);
+ const char* (__cdecl* GetGUIAPIVersion)(void);
+ const char* (__cdecl* GetMininumGUIAPIVersion)(void);
PVR_ERROR (__cdecl* GetAddonCapabilities)(PVR_ADDON_CAPABILITIES*);
PVR_ERROR (__cdecl* GetStreamProperties)(PVR_STREAM_PROPERTIES*);
const char* (__cdecl* GetBackendName)(void);
@@ -320,6 +344,7 @@ extern "C" {
PVR_ERROR (__cdecl* SetRecordingPlayCount)(const PVR_RECORDING&, int);
PVR_ERROR (__cdecl* SetRecordingLastPlayedPosition)(const PVR_RECORDING&, int);
int (__cdecl* GetRecordingLastPlayedPosition)(const PVR_RECORDING&);
+ PVR_ERROR (__cdecl* GetRecordingEdl)(const PVR_RECORDING&, PVR_EDL_ENTRY[], int*);
int (__cdecl* GetTimersAmount)(void);
PVR_ERROR (__cdecl* GetTimers)(ADDON_HANDLE);
PVR_ERROR (__cdecl* AddTimer)(const PVR_TIMER&);
View
2 xbmc/xbmc_scr_dll.h
@@ -1,6 +1,6 @@
#pragma once
/*
- * Copyright (C) 2005-2012 Team XBMC
+ * Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
View
2 xbmc/xbmc_scr_types.h
@@ -1,6 +1,6 @@
#pragma once
/*
- * Copyright (C) 2005-2012 Team XBMC
+ * Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
View
2 xbmc/xbmc_vis_dll.h
@@ -2,7 +2,7 @@
#define __XBMC_VIS_H__
/*
- * Copyright (C) 2005-2012 Team XBMC
+ * Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
View
2 xbmc/xbmc_vis_types.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2012 Team XBMC
+ * Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify

0 comments on commit bab06e2

Please sign in to comment.
Something went wrong with that request. Please try again.