diff options
Diffstat (limited to 'xbmc')
10 files changed, 106 insertions, 55 deletions
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h index 07fd8ce..0c5e617 100644 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h | |||
| @@ -43,6 +43,9 @@ | |||
| 43 | #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) | 43 | #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) |
| 44 | #define ATTRIBUTE_PACKED __attribute__ ((packed)) | 44 | #define ATTRIBUTE_PACKED __attribute__ ((packed)) |
| 45 | #define PRAGMA_PACK 0 | 45 | #define PRAGMA_PACK 0 |
| 46 | #if __GNUC__ >= 4 | ||
| 47 | #define ATTRIBUTE_HIDDEN __attribute__ ((visibility ("hidden"))) | ||
| 48 | #endif | ||
| 46 | #endif | 49 | #endif |
| 47 | #endif | 50 | #endif |
| 48 | 51 | ||
| @@ -51,6 +54,10 @@ | |||
| 51 | #define PRAGMA_PACK 1 | 54 | #define PRAGMA_PACK 1 |
| 52 | #endif | 55 | #endif |
| 53 | 56 | ||
| 57 | #if !defined(ATTRIBUTE_HIDDEN) | ||
| 58 | #define ATTRIBUTE_HIDDEN | ||
| 59 | #endif | ||
| 60 | |||
| 54 | #include "versions.h" | 61 | #include "versions.h" |
| 55 | 62 | ||
| 56 | namespace kodi { namespace addon { class CAddonBase; }} | 63 | namespace kodi { namespace addon { class CAddonBase; }} |
| @@ -234,7 +241,7 @@ namespace addon { | |||
| 234 | class IAddonInstance | 241 | class IAddonInstance |
| 235 | { | 242 | { |
| 236 | public: | 243 | public: |
| 237 | IAddonInstance(ADDON_TYPE type) : m_type(type) { } | 244 | explicit IAddonInstance(ADDON_TYPE type) : m_type(type) { } |
| 238 | virtual ~IAddonInstance() = default; | 245 | virtual ~IAddonInstance() = default; |
| 239 | 246 | ||
| 240 | virtual ADDON_STATUS CreateInstance(int instanceType, std::string instanceID, KODI_HANDLE instance, KODI_HANDLE& addonInstance) | 247 | virtual ADDON_STATUS CreateInstance(int instanceType, std::string instanceID, KODI_HANDLE instance, KODI_HANDLE& addonInstance) |
| @@ -254,7 +261,7 @@ namespace kodi { | |||
| 254 | class CSettingValue | 261 | class CSettingValue |
| 255 | { | 262 | { |
| 256 | public: | 263 | public: |
| 257 | CSettingValue(const void *settingValue) : m_settingValue(settingValue) {} | 264 | explicit CSettingValue(const void *settingValue) : m_settingValue(settingValue) {} |
| 258 | 265 | ||
| 259 | bool empty() const { return (m_settingValue == nullptr) ? true : false; } | 266 | bool empty() const { return (m_settingValue == nullptr) ? true : false; } |
| 260 | std::string GetString() const { return (char*)m_settingValue; } | 267 | std::string GetString() const { return (char*)m_settingValue; } |
| @@ -273,7 +280,7 @@ private: | |||
| 273 | namespace kodi { | 280 | namespace kodi { |
| 274 | namespace addon { | 281 | namespace addon { |
| 275 | /// Add-on main instance class. | 282 | /// Add-on main instance class. |
| 276 | class CAddonBase | 283 | class ATTRIBUTE_HIDDEN CAddonBase |
| 277 | { | 284 | { |
| 278 | public: | 285 | public: |
| 279 | CAddonBase() | 286 | CAddonBase() |
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/AudioEngine.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/AudioEngine.h index 380e5e2..1265dcd 100644 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/AudioEngine.h +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/AudioEngine.h | |||
| @@ -175,10 +175,10 @@ extern "C" | |||
| 175 | void (*AEStream_SetVolume)(void *kodiBase, AEStreamHandle *handle, float Volume); | 175 | void (*AEStream_SetVolume)(void *kodiBase, AEStreamHandle *handle, float Volume); |
| 176 | float (*AEStream_GetAmplification)(void *kodiBase, AEStreamHandle *handle); | 176 | float (*AEStream_GetAmplification)(void *kodiBase, AEStreamHandle *handle); |
| 177 | void (*AEStream_SetAmplification)(void *kodiBase, AEStreamHandle *handle, float Amplify); | 177 | void (*AEStream_SetAmplification)(void *kodiBase, AEStreamHandle *handle, float Amplify); |
| 178 | const unsigned int (*AEStream_GetFrameSize)(void *kodiBase, AEStreamHandle *handle); | 178 | unsigned int (*AEStream_GetFrameSize)(void *kodiBase, AEStreamHandle *handle); |
| 179 | const unsigned int (*AEStream_GetChannelCount)(void *kodiBase, AEStreamHandle *handle); | 179 | unsigned int (*AEStream_GetChannelCount)(void *kodiBase, AEStreamHandle *handle); |
| 180 | const unsigned int (*AEStream_GetSampleRate)(void *kodiBase, AEStreamHandle *handle); | 180 | unsigned int (*AEStream_GetSampleRate)(void *kodiBase, AEStreamHandle *handle); |
| 181 | const AEDataFormat (*AEStream_GetDataFormat)(void *kodiBase, AEStreamHandle *handle); | 181 | AEDataFormat (*AEStream_GetDataFormat)(void *kodiBase, AEStreamHandle *handle); |
| 182 | double (*AEStream_GetResampleRatio)(void *kodiBase, AEStreamHandle *handle); | 182 | double (*AEStream_GetResampleRatio)(void *kodiBase, AEStreamHandle *handle); |
| 183 | void (*AEStream_SetResampleRatio)(void *kodiBase, AEStreamHandle *handle, double Ratio); | 183 | void (*AEStream_SetResampleRatio)(void *kodiBase, AEStreamHandle *handle, double Ratio); |
| 184 | } AddonToKodiFuncTable_kodi_audioengine; | 184 | } AddonToKodiFuncTable_kodi_audioengine; |
| @@ -269,8 +269,8 @@ namespace audioengine | |||
| 269 | : m_kodiBase(::kodi::addon::CAddonBase::m_interface->toKodi->kodiBase), | 269 | : m_kodiBase(::kodi::addon::CAddonBase::m_interface->toKodi->kodiBase), |
| 270 | m_cb(::kodi::addon::CAddonBase::m_interface->toKodi->kodi_audioengine) | 270 | m_cb(::kodi::addon::CAddonBase::m_interface->toKodi->kodi_audioengine) |
| 271 | { | 271 | { |
| 272 | AEStreamHandle *streamHandle = m_cb->MakeStream(m_kodiBase, format, options); | 272 | m_StreamHandle = m_cb->MakeStream(m_kodiBase, format, options); |
| 273 | if (streamHandle == nullptr) | 273 | if (m_StreamHandle == nullptr) |
| 274 | { | 274 | { |
| 275 | kodi::Log(ADDON_LOG_FATAL, "CAddonAEStream: MakeStream failed!"); | 275 | kodi::Log(ADDON_LOG_FATAL, "CAddonAEStream: MakeStream failed!"); |
| 276 | } | 276 | } |
| @@ -483,7 +483,7 @@ namespace audioengine | |||
| 483 | /// | 483 | /// |
| 484 | /// @return The size in bytes of one frame | 484 | /// @return The size in bytes of one frame |
| 485 | /// | 485 | /// |
| 486 | const unsigned int GetFrameSize() const | 486 | unsigned int GetFrameSize() const |
| 487 | { | 487 | { |
| 488 | return m_cb->AEStream_GetFrameSize(m_kodiBase, m_StreamHandle); | 488 | return m_cb->AEStream_GetFrameSize(m_kodiBase, m_StreamHandle); |
| 489 | } | 489 | } |
| @@ -495,7 +495,7 @@ namespace audioengine | |||
| 495 | /// | 495 | /// |
| 496 | /// @return The channel count | 496 | /// @return The channel count |
| 497 | /// | 497 | /// |
| 498 | const unsigned int GetChannelCount() const | 498 | unsigned int GetChannelCount() const |
| 499 | { | 499 | { |
| 500 | return m_cb->AEStream_GetChannelCount(m_kodiBase, m_StreamHandle); | 500 | return m_cb->AEStream_GetChannelCount(m_kodiBase, m_StreamHandle); |
| 501 | } | 501 | } |
| @@ -509,7 +509,7 @@ namespace audioengine | |||
| 509 | /// | 509 | /// |
| 510 | /// @return The stream's sample rate (eg, 48000) | 510 | /// @return The stream's sample rate (eg, 48000) |
| 511 | /// | 511 | /// |
| 512 | const unsigned int GetSampleRate() const | 512 | unsigned int GetSampleRate() const |
| 513 | { | 513 | { |
| 514 | return m_cb->AEStream_GetSampleRate(m_kodiBase, m_StreamHandle); | 514 | return m_cb->AEStream_GetSampleRate(m_kodiBase, m_StreamHandle); |
| 515 | } | 515 | } |
| @@ -521,7 +521,7 @@ namespace audioengine | |||
| 521 | /// | 521 | /// |
| 522 | /// @return The stream's data format (eg, AUDIOENGINE_FMT_S16LE) | 522 | /// @return The stream's data format (eg, AUDIOENGINE_FMT_S16LE) |
| 523 | /// | 523 | /// |
| 524 | const AEDataFormat GetDataFormat() const | 524 | AEDataFormat GetDataFormat() const |
| 525 | { | 525 | { |
| 526 | return m_cb->AEStream_GetDataFormat(m_kodiBase, m_StreamHandle); | 526 | return m_cb->AEStream_GetDataFormat(m_kodiBase, m_StreamHandle); |
| 527 | } | 527 | } |
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioDSP.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioDSP.h index c508f80..3587a33 100644 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioDSP.h +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioDSP.h | |||
| @@ -580,7 +580,7 @@ namespace addon { | |||
| 580 | /// add-on CreateInstance call with instance | 580 | /// add-on CreateInstance call with instance |
| 581 | /// id ADDON_INSTANCE_ADSP. | 581 | /// id ADDON_INSTANCE_ADSP. |
| 582 | /// | 582 | /// |
| 583 | CInstanceAudioDSP(KODI_HANDLE instance) | 583 | explicit CInstanceAudioDSP(KODI_HANDLE instance) |
| 584 | : IAddonInstance(ADDON_INSTANCE_ADSP) | 584 | : IAddonInstance(ADDON_INSTANCE_ADSP) |
| 585 | { | 585 | { |
| 586 | if (CAddonBase::m_interface->globalSingleInstance != nullptr) | 586 | if (CAddonBase::m_interface->globalSingleInstance != nullptr) |
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Peripheral.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Peripheral.h index 631b9b4..045a925 100644 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Peripheral.h +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Peripheral.h | |||
| @@ -210,6 +210,8 @@ extern "C" | |||
| 210 | JOYSTICK_FEATURE_TYPE_ANALOG_STICK, | 210 | JOYSTICK_FEATURE_TYPE_ANALOG_STICK, |
| 211 | JOYSTICK_FEATURE_TYPE_ACCELEROMETER, | 211 | JOYSTICK_FEATURE_TYPE_ACCELEROMETER, |
| 212 | JOYSTICK_FEATURE_TYPE_MOTOR, | 212 | JOYSTICK_FEATURE_TYPE_MOTOR, |
| 213 | JOYSTICK_FEATURE_TYPE_RELPOINTER, | ||
| 214 | JOYSTICK_FEATURE_TYPE_ABSPOINTER, | ||
| 213 | } JOYSTICK_FEATURE_TYPE; | 215 | } JOYSTICK_FEATURE_TYPE; |
| 214 | 216 | ||
| 215 | typedef enum JOYSTICK_FEATURE_PRIMITIVE | 217 | typedef enum JOYSTICK_FEATURE_PRIMITIVE |
| @@ -257,6 +259,7 @@ extern "C" | |||
| 257 | void (*trigger_scan)(void* kodiInstance); | 259 | void (*trigger_scan)(void* kodiInstance); |
| 258 | void (*refresh_button_maps)(void* kodiInstance, const char* device_name, const char* controller_id); | 260 | void (*refresh_button_maps)(void* kodiInstance, const char* device_name, const char* controller_id); |
| 259 | unsigned int (*feature_count)(void* kodiInstance, const char* controller_id, JOYSTICK_FEATURE_TYPE type); | 261 | unsigned int (*feature_count)(void* kodiInstance, const char* controller_id, JOYSTICK_FEATURE_TYPE type); |
| 262 | JOYSTICK_FEATURE_TYPE (*feature_type)(void* kodiInstance, const char* controller_id, const char* feature_name); | ||
| 260 | } AddonToKodiFuncTable_Peripheral; | 263 | } AddonToKodiFuncTable_Peripheral; |
| 261 | 264 | ||
| 262 | //! @todo Mouse, light gun, multitouch | 265 | //! @todo Mouse, light gun, multitouch |
| @@ -545,6 +548,20 @@ namespace addon | |||
| 545 | return m_instanceData->toKodi.feature_count(m_instanceData->toKodi.kodiInstance, strControllerId.c_str(), type); | 548 | return m_instanceData->toKodi.feature_count(m_instanceData->toKodi.kodiInstance, strControllerId.c_str(), type); |
| 546 | } | 549 | } |
| 547 | 550 | ||
| 551 | /*! | ||
| 552 | * @brief Return the type of the feature | ||
| 553 | * | ||
| 554 | * @param controllerId The controller ID to check | ||
| 555 | * @param featureName The feature to check | ||
| 556 | * | ||
| 557 | * @return The type of the specified feature, or JOYSTICK_FEATURE_TYPE_UNKNOWN | ||
| 558 | * if unknown | ||
| 559 | */ | ||
| 560 | JOYSTICK_FEATURE_TYPE FeatureType(const std::string& strControllerId, const std::string &featureName) | ||
| 561 | { | ||
| 562 | return m_instanceData->toKodi.feature_type(m_instanceData->toKodi.kodiInstance, strControllerId.c_str(), featureName.c_str()); | ||
| 563 | } | ||
| 564 | |||
| 548 | private: | 565 | private: |
| 549 | void SetAddonStruct(KODI_HANDLE instance) | 566 | void SetAddonStruct(KODI_HANDLE instance) |
| 550 | { | 567 | { |
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/PeripheralUtils.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/PeripheralUtils.h index 8cfa91b..721da35 100644 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/PeripheralUtils.h +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/PeripheralUtils.h | |||
| @@ -580,10 +580,14 @@ namespace addon | |||
| 580 | * 2) analog stick | 580 | * 2) analog stick |
| 581 | * 3) accelerometer | 581 | * 3) accelerometer |
| 582 | * 4) motor | 582 | * 4) motor |
| 583 | * 5) relative pointer[2] | ||
| 583 | * | 584 | * |
| 584 | * [1] All three driver primitives (buttons, hats and axes) have a state that | 585 | * [1] All three driver primitives (buttons, hats and axes) have a state that |
| 585 | * can be represented using a single scalar value. For this reason, | 586 | * can be represented using a single scalar value. For this reason, |
| 586 | * features that map to a single primitive are called "scalar features". | 587 | * features that map to a single primitive are called "scalar features". |
| 588 | * | ||
| 589 | * [2] Relative pointers are similar to analog sticks, but they use | ||
| 590 | * relative distances instead of positions. | ||
| 587 | */ | 591 | */ |
| 588 | class JoystickFeature | 592 | class JoystickFeature |
| 589 | { | 593 | { |
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h index b9d37b4..870a646 100644 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h | |||
| @@ -107,14 +107,14 @@ | |||
| 107 | #define ADDON_INSTANCE_VERSION_INPUTSTREAM_XML_ID "kodi.binary.instance.inputstream" | 107 | #define ADDON_INSTANCE_VERSION_INPUTSTREAM_XML_ID "kodi.binary.instance.inputstream" |
| 108 | #define ADDON_INSTANCE_VERSION_INPUTSTREAM_DEPENDS "addon-instance/Inputstream.h" | 108 | #define ADDON_INSTANCE_VERSION_INPUTSTREAM_DEPENDS "addon-instance/Inputstream.h" |
| 109 | 109 | ||
| 110 | #define ADDON_INSTANCE_VERSION_PERIPHERAL "1.3.3" | 110 | #define ADDON_INSTANCE_VERSION_PERIPHERAL "1.3.4" |
| 111 | #define ADDON_INSTANCE_VERSION_PERIPHERAL_MIN "1.3.3" | 111 | #define ADDON_INSTANCE_VERSION_PERIPHERAL_MIN "1.3.4" |
| 112 | #define ADDON_INSTANCE_VERSION_PERIPHERAL_XML_ID "kodi.binary.instance.peripheral" | 112 | #define ADDON_INSTANCE_VERSION_PERIPHERAL_XML_ID "kodi.binary.instance.peripheral" |
| 113 | #define ADDON_INSTANCE_VERSION_PERIPHERAL_DEPENDS "addon-instance/Peripheral.h" \ | 113 | #define ADDON_INSTANCE_VERSION_PERIPHERAL_DEPENDS "addon-instance/Peripheral.h" \ |
| 114 | "addon-instance/PeripheralUtils.h" | 114 | "addon-instance/PeripheralUtils.h" |
| 115 | 115 | ||
| 116 | #define ADDON_INSTANCE_VERSION_PVR "5.3.0" | 116 | #define ADDON_INSTANCE_VERSION_PVR "5.6.0" |
| 117 | #define ADDON_INSTANCE_VERSION_PVR_MIN "5.3.0" | 117 | #define ADDON_INSTANCE_VERSION_PVR_MIN "5.6.0" |
| 118 | #define ADDON_INSTANCE_VERSION_PVR_XML_ID "kodi.binary.instance.pvr" | 118 | #define ADDON_INSTANCE_VERSION_PVR_XML_ID "kodi.binary.instance.pvr" |
| 119 | #define ADDON_INSTANCE_VERSION_PVR_DEPENDS "xbmc_pvr_dll.h" \ | 119 | #define ADDON_INSTANCE_VERSION_PVR_DEPENDS "xbmc_pvr_dll.h" \ |
| 120 | "xbmc_pvr_types.h" \ | 120 | "xbmc_pvr_types.h" \ |
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_epg_types.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_epg_types.h index b6200bf..c2b5458 100644 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_epg_types.h +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_epg_types.h | |||
| @@ -116,6 +116,7 @@ extern "C" { | |||
| 116 | int iEpisodePartNumber; /*!< @brief (optional) episode part number */ | 116 | int iEpisodePartNumber; /*!< @brief (optional) episode part number */ |
| 117 | const char * strEpisodeName; /*!< @brief (optional) episode name */ | 117 | const char * strEpisodeName; /*!< @brief (optional) episode name */ |
| 118 | unsigned int iFlags; /*!< @brief (optional) bit field of independent flags associated with the EPG entry */ | 118 | unsigned int iFlags; /*!< @brief (optional) bit field of independent flags associated with the EPG entry */ |
| 119 | const char * strSeriesLink; /*!< @brief (optional) series link for this event */ | ||
| 119 | } ATTRIBUTE_PACKED EPG_TAG; | 120 | } ATTRIBUTE_PACKED EPG_TAG; |
| 120 | 121 | ||
| 121 | #ifdef __cplusplus | 122 | #ifdef __cplusplus |
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h index 11e39f8..3dbf1c8 100644 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h | |||
| @@ -410,14 +410,6 @@ extern "C" | |||
| 410 | long long LengthLiveStream(void); | 410 | long long LengthLiveStream(void); |
| 411 | 411 | ||
| 412 | /*! | 412 | /*! |
| 413 | * Switch to another channel. Only to be called when a live stream has already been opened. | ||
| 414 | * @param channel The channel to switch to. | ||
| 415 | * @return True if the switch was successful, false otherwise. | ||
| 416 | * @remarks Required if bHandlesInputStream or bHandlesDemuxing is set to true. Return false if this add-on won't provide this function. | ||
| 417 | */ | ||
| 418 | bool SwitchChannel(const PVR_CHANNEL& channel); | ||
| 419 | |||
| 420 | /*! | ||
| 421 | * Get the signal status of the stream that's currently open. | 413 | * Get the signal status of the stream that's currently open. |
| 422 | * @param signalStatus The signal status. | 414 | * @param signalStatus The signal status. |
| 423 | * @return True if the signal status has been read successfully, false otherwise. | 415 | * @return True if the signal status has been read successfully, false otherwise. |
| @@ -434,12 +426,24 @@ extern "C" | |||
| 434 | PVR_ERROR GetDescrambleInfo(PVR_DESCRAMBLE_INFO* descrambleInfo); | 426 | PVR_ERROR GetDescrambleInfo(PVR_DESCRAMBLE_INFO* descrambleInfo); |
| 435 | 427 | ||
| 436 | /*! | 428 | /*! |
| 437 | * Get the stream URL for a channel from the backend. Used by the MediaPortal add-on. | 429 | * Get the stream properties for a channel from the backend. |
| 438 | * @param channel The channel to get the stream URL for. | 430 | * @param[in] channel The channel to get the stream properties for. |
| 439 | * @return The requested URL. | 431 | * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream. |
| 440 | * @remarks Optional, and only used if bHandlesInputStream is set to true. Return NULL if this add-on won't provide this function. | 432 | * @param[inout] iPropertiesCount: in the size of the properties array, out: the number of properties returned. |
| 433 | * @return PVR_ERROR_NO_ERROR if the stream is available. | ||
| 434 | * @remarks Required if PVR_ADDON_CAPABILITIES::bSupportsTV or PVR_ADDON_CAPABILITIES::bSupportsRadio are set to true and PVR_ADDON_CAPABILITIES::bHandlesInputStream is set to false. In this case the implementation must fill the property PVR_STREAM_PROPERTY_STREAMURL with the URL Kodi should resolve to playback the channel. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 435 | */ | ||
| 436 | PVR_ERROR GetChannelStreamProperties(const PVR_CHANNEL* channel, PVR_NAMED_VALUE* properties, unsigned int* iPropertiesCount); | ||
| 437 | |||
| 438 | /*! | ||
| 439 | * Get the stream properties for a recording from the backend. | ||
| 440 | * @param[in] channel The recording to get the stream properties for. | ||
| 441 | * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream. | ||
| 442 | * @param[inout] iPropertiesCount: in the size of the properties array, out: the number of properties returned. | ||
| 443 | * @return PVR_ERROR_NO_ERROR if the stream is available. | ||
| 444 | * @remarks Required if PVR_ADDON_CAPABILITIES::bSupportsRecordings is set to true and the add-on does not implement recording stream functions (OpenRecordedStream, ...). In this case your implementation must fill the property PVR_STREAM_PROPERTY_STREAMURL with the URL Kodi should resolve to playback the recording. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 441 | */ | 445 | */ |
| 442 | const char* GetLiveStreamURL(const PVR_CHANNEL& channel); | 446 | PVR_ERROR GetRecordingStreamProperties(const PVR_RECORDING* recording, PVR_NAMED_VALUE* properties, unsigned int* iPropertiesCount); |
| 443 | 447 | ||
| 444 | /*! | 448 | /*! |
| 445 | * Get the stream properties of the stream that's currently being read. | 449 | * Get the stream properties of the stream that's currently being read. |
| @@ -537,14 +541,6 @@ extern "C" | |||
| 537 | //@} | 541 | //@} |
| 538 | 542 | ||
| 539 | /*! | 543 | /*! |
| 540 | * Delay to use when using switching channels for add-ons not providing an input stream. | ||
| 541 | * If the add-on does provide an input stream, then this method will not be called. | ||
| 542 | * Those add-ons can do that in OpenLiveStream() if needed. | ||
| 543 | * @return The delay in milliseconds. | ||
| 544 | */ | ||
| 545 | unsigned int GetChannelSwitchDelay(void); | ||
| 546 | |||
| 547 | /*! | ||
| 548 | * Check if the backend support pausing the currently playing stream | 544 | * Check if the backend support pausing the currently playing stream |
| 549 | * This will enable/disable the pause button in XBMC based on the return value | 545 | * This will enable/disable the pause button in XBMC based on the return value |
| 550 | * @return false if the PVR addon/backend does not support pausing, true if possible | 546 | * @return false if the PVR addon/backend does not support pausing, true if possible |
| @@ -638,6 +634,11 @@ extern "C" | |||
| 638 | void OnPowerSavingDeactivated(); | 634 | void OnPowerSavingDeactivated(); |
| 639 | 635 | ||
| 640 | /*! | 636 | /*! |
| 637 | * Get stream times. Intermediate, will be moved to inputstream | ||
| 638 | */ | ||
| 639 | PVR_ERROR GetStreamTimes(PVR_STREAM_TIMES *times); | ||
| 640 | |||
| 641 | /*! | ||
| 641 | * Called by XBMC to assign the function pointers of this add-on to pClient. | 642 | * Called by XBMC to assign the function pointers of this add-on to pClient. |
| 642 | * @param ptr The struct to assign the function pointers to. | 643 | * @param ptr The struct to assign the function pointers to. |
| 643 | */ | 644 | */ |
| @@ -695,11 +696,10 @@ extern "C" | |||
| 695 | pClient->toAddon.SeekLiveStream = SeekLiveStream; | 696 | pClient->toAddon.SeekLiveStream = SeekLiveStream; |
| 696 | pClient->toAddon.PositionLiveStream = PositionLiveStream; | 697 | pClient->toAddon.PositionLiveStream = PositionLiveStream; |
| 697 | pClient->toAddon.LengthLiveStream = LengthLiveStream; | 698 | pClient->toAddon.LengthLiveStream = LengthLiveStream; |
| 698 | pClient->toAddon.SwitchChannel = SwitchChannel; | ||
| 699 | pClient->toAddon.SignalStatus = SignalStatus; | 699 | pClient->toAddon.SignalStatus = SignalStatus; |
| 700 | pClient->toAddon.GetDescrambleInfo = GetDescrambleInfo; | 700 | pClient->toAddon.GetDescrambleInfo = GetDescrambleInfo; |
| 701 | pClient->toAddon.GetLiveStreamURL = GetLiveStreamURL; | 701 | pClient->toAddon.GetChannelStreamProperties = GetChannelStreamProperties; |
| 702 | pClient->toAddon.GetChannelSwitchDelay = GetChannelSwitchDelay; | 702 | pClient->toAddon.GetRecordingStreamProperties = GetRecordingStreamProperties; |
| 703 | pClient->toAddon.CanPauseStream = CanPauseStream; | 703 | pClient->toAddon.CanPauseStream = CanPauseStream; |
| 704 | pClient->toAddon.PauseStream = PauseStream; | 704 | pClient->toAddon.PauseStream = PauseStream; |
| 705 | pClient->toAddon.CanSeekStream = CanSeekStream; | 705 | pClient->toAddon.CanSeekStream = CanSeekStream; |
| @@ -733,6 +733,6 @@ extern "C" | |||
| 733 | pClient->toAddon.OnSystemWake = OnSystemWake; | 733 | pClient->toAddon.OnSystemWake = OnSystemWake; |
| 734 | pClient->toAddon.OnPowerSavingActivated = OnPowerSavingActivated; | 734 | pClient->toAddon.OnPowerSavingActivated = OnPowerSavingActivated; |
| 735 | pClient->toAddon.OnPowerSavingDeactivated = OnPowerSavingDeactivated; | 735 | pClient->toAddon.OnPowerSavingDeactivated = OnPowerSavingDeactivated; |
| 736 | pClient->toAddon.GetStreamTimes = GetStreamTimes; | ||
| 736 | }; | 737 | }; |
| 737 | }; | 738 | }; |
| 738 | |||
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_types.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_types.h index e7fed7b..9a64f92 100644 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_types.h +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_types.h | |||
| @@ -77,6 +77,10 @@ struct DemuxPacket; | |||
| 77 | #define XBMC_INVALID_CODEC_ID 0 | 77 | #define XBMC_INVALID_CODEC_ID 0 |
| 78 | #define XBMC_INVALID_CODEC { XBMC_CODEC_TYPE_UNKNOWN, XBMC_INVALID_CODEC_ID } | 78 | #define XBMC_INVALID_CODEC { XBMC_CODEC_TYPE_UNKNOWN, XBMC_INVALID_CODEC_ID } |
| 79 | 79 | ||
| 80 | /* defines for GetChannelStreamProperties and GetRecordingStreamProperties */ | ||
| 81 | #define PVR_STREAM_MAX_PROPERTIES 20 | ||
| 82 | #define PVR_STREAM_PROPERTY_STREAMURL "streamurl" | ||
| 83 | |||
| 80 | /* using the default avformat's MAX_STREAMS value to be safe */ | 84 | /* using the default avformat's MAX_STREAMS value to be safe */ |
| 81 | #define PVR_STREAM_MAX_STREAMS 20 | 85 | #define PVR_STREAM_MAX_STREAMS 20 |
| 82 | 86 | ||
| @@ -155,10 +159,11 @@ extern "C" { | |||
| 155 | const unsigned int PVR_TIMER_TYPE_SUPPORTS_START_ANYTIME = 0x00040000; /*!< @brief enables an 'Any Time' over-ride option for startTime (using PVR_TIMER.bStartAnyTime) */ | 159 | const unsigned int PVR_TIMER_TYPE_SUPPORTS_START_ANYTIME = 0x00040000; /*!< @brief enables an 'Any Time' over-ride option for startTime (using PVR_TIMER.bStartAnyTime) */ |
| 156 | const unsigned int PVR_TIMER_TYPE_SUPPORTS_END_ANYTIME = 0x00080000; /*!< @brief enables a separate 'Any Time' over-ride for endTime (using PVR_TIMER.bEndAnyTime) */ | 160 | const unsigned int PVR_TIMER_TYPE_SUPPORTS_END_ANYTIME = 0x00080000; /*!< @brief enables a separate 'Any Time' over-ride for endTime (using PVR_TIMER.bEndAnyTime) */ |
| 157 | const unsigned int PVR_TIMER_TYPE_SUPPORTS_MAX_RECORDINGS = 0x00100000; /*!< @brief this type supports specifying a maximum recordings setting' (PVR_TIMER.iMaxRecordings) */ | 161 | const unsigned int PVR_TIMER_TYPE_SUPPORTS_MAX_RECORDINGS = 0x00100000; /*!< @brief this type supports specifying a maximum recordings setting' (PVR_TIMER.iMaxRecordings) */ |
| 158 | const unsigned int PVR_TIMER_TYPE_REQUIRES_EPG_TAG_ON_CREATE = 0x00200000; /*!< @brief this type shold not appear on any create menus which don't provide an associated EPG tag */ | 162 | const unsigned int PVR_TIMER_TYPE_REQUIRES_EPG_TAG_ON_CREATE = 0x00200000; /*!< @brief this type should not appear on any create menus which don't provide an associated EPG tag */ |
| 159 | const unsigned int PVR_TIMER_TYPE_FORBIDS_EPG_TAG_ON_CREATE = 0x00400000; /*!< @brief this type should not appear on any create menus which provide an associated EPG tag */ | 163 | const unsigned int PVR_TIMER_TYPE_FORBIDS_EPG_TAG_ON_CREATE = 0x00400000; /*!< @brief this type should not appear on any create menus which provide an associated EPG tag */ |
| 160 | const unsigned int PVR_TIMER_TYPE_REQUIRES_EPG_SERIES_ON_CREATE = 0x00800000; /*!< @brief this type should not appear on any create menus unless associated with an EPG tag with 'series' attributes (EPG_TAG.iFlags & EPG_TAG_FLAG_IS_SERIES || EPG_TAG.iSeriesNumber > 0 || EPG_TAG.iEpisodeNumber > 0 || EPG_TAG.iEpisodePartNumber > 0). Implies PVR_TIMER_TYPE_REQUIRES_EPG_TAG_ON_CREATE */ | 164 | const unsigned int PVR_TIMER_TYPE_REQUIRES_EPG_SERIES_ON_CREATE = 0x00800000; /*!< @brief this type should not appear on any create menus unless associated with an EPG tag with 'series' attributes (EPG_TAG.iFlags & EPG_TAG_FLAG_IS_SERIES || EPG_TAG.iSeriesNumber > 0 || EPG_TAG.iEpisodeNumber > 0 || EPG_TAG.iEpisodePartNumber > 0). Implies PVR_TIMER_TYPE_REQUIRES_EPG_TAG_ON_CREATE */ |
| 161 | const unsigned int PVR_TIMER_TYPE_SUPPORTS_ANY_CHANNEL = 0x01000000; /*!< @brief this type supports 'any channel', for example when defining a timer rule that should match any channel instaed of a particular channel */ | 165 | const unsigned int PVR_TIMER_TYPE_SUPPORTS_ANY_CHANNEL = 0x01000000; /*!< @brief this type supports 'any channel', for example when defining a timer rule that should match any channel instaed of a particular channel */ |
| 166 | const unsigned int PVR_TIMER_TYPE_REQUIRES_EPG_SERIESLINK_ON_CREATE = 0x02000000; /*!< @brief this type should not appear on any create menus which don't provide an associated EPG tag with a series link */ | ||
| 162 | 167 | ||
| 163 | /*! | 168 | /*! |
| 164 | * @brief PVR timer weekdays (PVR_TIMER.iWeekdays values) | 169 | * @brief PVR timer weekdays (PVR_TIMER.iWeekdays values) |
| @@ -265,6 +270,14 @@ extern "C" { | |||
| 265 | } PVR_RECORDING_CHANNEL_TYPE; | 270 | } PVR_RECORDING_CHANNEL_TYPE; |
| 266 | 271 | ||
| 267 | /*! | 272 | /*! |
| 273 | * @brief Representation of a named value | ||
| 274 | */ | ||
| 275 | typedef struct PVR_NAMED_VALUE { | ||
| 276 | char strName[PVR_ADDON_NAME_STRING_LENGTH]; /*!< @brief (required) name */ | ||
| 277 | char strValue[PVR_ADDON_NAME_STRING_LENGTH]; /*!< @brief (required) value */ | ||
| 278 | } ATTRIBUTE_PACKED PVR_NAMED_VALUE; | ||
| 279 | |||
| 280 | /*! | ||
| 268 | * @brief Properties passed to the Create() method of an add-on. | 281 | * @brief Properties passed to the Create() method of an add-on. |
| 269 | */ | 282 | */ |
| 270 | typedef struct PVR_PROPERTIES | 283 | typedef struct PVR_PROPERTIES |
| @@ -334,8 +347,8 @@ extern "C" { | |||
| 334 | int iBlockAlign; /*!< @brief (required) block alignment */ | 347 | int iBlockAlign; /*!< @brief (required) block alignment */ |
| 335 | int iBitRate; /*!< @brief (required) bit rate */ | 348 | int iBitRate; /*!< @brief (required) bit rate */ |
| 336 | int iBitsPerSample; /*!< @brief (required) bits per sample */ | 349 | int iBitsPerSample; /*!< @brief (required) bits per sample */ |
| 337 | } stream[PVR_STREAM_MAX_STREAMS]; /*!< @brief (required) the streams */ | 350 | } stream[PVR_STREAM_MAX_STREAMS]; /*!< @brief (required) the streams */ |
| 338 | } ATTRIBUTE_PACKED PVR_STREAM_PROPERTIES; | 351 | } ATTRIBUTE_PACKED PVR_STREAM_PROPERTIES; |
| 339 | 352 | ||
| 340 | /*! | 353 | /*! |
| 341 | * @brief Signal status information | 354 | * @brief Signal status information |
| @@ -392,9 +405,6 @@ extern "C" { | |||
| 392 | char strChannelName[PVR_ADDON_NAME_STRING_LENGTH]; /*!< @brief (optional) channel name given to this channel */ | 405 | char strChannelName[PVR_ADDON_NAME_STRING_LENGTH]; /*!< @brief (optional) channel name given to this channel */ |
| 393 | char strInputFormat[PVR_ADDON_INPUT_FORMAT_STRING_LENGTH]; /*!< @brief (optional) input format type. types can be found in ffmpeg/libavformat/allformats.c | 406 | char strInputFormat[PVR_ADDON_INPUT_FORMAT_STRING_LENGTH]; /*!< @brief (optional) input format type. types can be found in ffmpeg/libavformat/allformats.c |
| 394 | leave empty if unknown */ | 407 | leave empty if unknown */ |
| 395 | char strStreamURL[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) the URL to use to access this channel. | ||
| 396 | leave empty to use this add-on to access the stream. | ||
| 397 | set to a path that's supported by XBMC otherwise. */ | ||
| 398 | unsigned int iEncryptionSystem; /*!< @brief (optional) the encryption ID or CaID of this channel */ | 408 | unsigned int iEncryptionSystem; /*!< @brief (optional) the encryption ID or CaID of this channel */ |
| 399 | char strIconPath[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) path to the channel icon (if present) */ | 409 | char strIconPath[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) path to the channel icon (if present) */ |
| 400 | bool bIsHidden; /*!< @brief (optional) true if this channel is marked as hidden */ | 410 | bool bIsHidden; /*!< @brief (optional) true if this channel is marked as hidden */ |
| @@ -508,6 +518,8 @@ extern "C" { | |||
| 508 | unsigned int iMarginEnd; /*!< @brief (optional) if set, the backend ends the recording iMarginEnd minutes after endTime. */ | 518 | unsigned int iMarginEnd; /*!< @brief (optional) if set, the backend ends the recording iMarginEnd minutes after endTime. */ |
| 509 | int iGenreType; /*!< @brief (optional) genre type */ | 519 | int iGenreType; /*!< @brief (optional) genre type */ |
| 510 | int iGenreSubType; /*!< @brief (optional) genre sub type */ | 520 | int iGenreSubType; /*!< @brief (optional) genre sub type */ |
| 521 | char strSeriesLink[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) series link for this timer. If set for an epg-based timer rule, matching events will be found by checking strSeriesLink instead of strTitle (and bFullTextEpgSearch) */ | ||
| 522 | |||
| 511 | } ATTRIBUTE_PACKED PVR_TIMER; | 523 | } ATTRIBUTE_PACKED PVR_TIMER; |
| 512 | 524 | ||
| 513 | /*! | 525 | /*! |
| @@ -520,7 +532,6 @@ extern "C" { | |||
| 520 | int iSeriesNumber; /*!< @brief (optional) series number (usually called season). Set to "0" for specials/pilot. For 'invalid' see iEpisodeNumber or set to -1 */ | 532 | int iSeriesNumber; /*!< @brief (optional) series number (usually called season). Set to "0" for specials/pilot. For 'invalid' see iEpisodeNumber or set to -1 */ |
| 521 | int iEpisodeNumber; /*!< @brief (optional) episode number within the "iSeriesNumber" season. For 'invalid' set to -1 or iSeriesNumber=iEpisodeNumber=0 to show both are invalid */ | 533 | int iEpisodeNumber; /*!< @brief (optional) episode number within the "iSeriesNumber" season. For 'invalid' set to -1 or iSeriesNumber=iEpisodeNumber=0 to show both are invalid */ |
| 522 | int iYear; /*!< @brief (optional) year of first release (use to identify a specific movie re-make) / first airing for TV shows. Set to '0' for invalid. */ | 534 | int iYear; /*!< @brief (optional) year of first release (use to identify a specific movie re-make) / first airing for TV shows. Set to '0' for invalid. */ |
| 523 | char strStreamURL[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (required) stream URL to access this recording */ | ||
| 524 | char strDirectory[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) directory of this recording on the client */ | 535 | char strDirectory[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) directory of this recording on the client */ |
| 525 | char strPlotOutline[PVR_ADDON_DESC_STRING_LENGTH]; /*!< @brief (optional) plot outline */ | 536 | char strPlotOutline[PVR_ADDON_DESC_STRING_LENGTH]; /*!< @brief (optional) plot outline */ |
| 526 | char strPlot[PVR_ADDON_DESC_STRING_LENGTH]; /*!< @brief (optional) plot */ | 537 | char strPlot[PVR_ADDON_DESC_STRING_LENGTH]; /*!< @brief (optional) plot */ |
| @@ -575,6 +586,17 @@ extern "C" { | |||
| 575 | } data; | 586 | } data; |
| 576 | } ATTRIBUTE_PACKED PVR_MENUHOOK_DATA; | 587 | } ATTRIBUTE_PACKED PVR_MENUHOOK_DATA; |
| 577 | 588 | ||
| 589 | /*! | ||
| 590 | * @brief times of playing stream | ||
| 591 | */ | ||
| 592 | typedef struct PVR_STREAM_TIMES | ||
| 593 | { | ||
| 594 | time_t startTime; /*!< @brief time (UTC) time elapsed refers to. Ideally start of tv show */ | ||
| 595 | int64_t ptsStart; /*!< @brief pts of startTime */ | ||
| 596 | int64_t ptsBegin; /*!< @brief erliest pts player can seek back */ | ||
| 597 | int64_t ptsEnd; /*!< @brief latest pts player can seek forward */ | ||
| 598 | } ATTRIBUTE_PACKED PVR_STREAM_TIMES; | ||
| 599 | |||
| 578 | typedef struct AddonToKodiFuncTable_PVR | 600 | typedef struct AddonToKodiFuncTable_PVR |
| 579 | { | 601 | { |
| 580 | KODI_HANDLE kodiInstance; | 602 | KODI_HANDLE kodiInstance; |
| @@ -596,7 +618,7 @@ extern "C" { | |||
| 596 | 618 | ||
| 597 | void (*FreeDemuxPacket)(void* kodiInstance, DemuxPacket* pPacket); | 619 | void (*FreeDemuxPacket)(void* kodiInstance, DemuxPacket* pPacket); |
| 598 | DemuxPacket* (*AllocateDemuxPacket)(void* kodiInstance, int iDataSize); | 620 | DemuxPacket* (*AllocateDemuxPacket)(void* kodiInstance, int iDataSize); |
| 599 | 621 | ||
| 600 | void (*ConnectionStateChange)(void* kodiInstance, const char* strConnectionString, PVR_CONNECTION_STATE newState, const char *strMessage); | 622 | void (*ConnectionStateChange)(void* kodiInstance, const char* strConnectionString, PVR_CONNECTION_STATE newState, const char *strMessage); |
| 601 | void (*EpgEventStateChange)(void* kodiInstance, EPG_TAG* tag, unsigned int iUniqueChannelId, EPG_EVENT_STATE newState); | 623 | void (*EpgEventStateChange)(void* kodiInstance, EPG_TAG* tag, unsigned int iUniqueChannelId, EPG_EVENT_STATE newState); |
| 602 | 624 | ||
| @@ -652,10 +674,10 @@ extern "C" { | |||
| 652 | long long (__cdecl* SeekLiveStream)(long long, int); | 674 | long long (__cdecl* SeekLiveStream)(long long, int); |
| 653 | long long (__cdecl* PositionLiveStream)(void); | 675 | long long (__cdecl* PositionLiveStream)(void); |
| 654 | long long (__cdecl* LengthLiveStream)(void); | 676 | long long (__cdecl* LengthLiveStream)(void); |
| 655 | bool (__cdecl* SwitchChannel)(const PVR_CHANNEL&); | ||
| 656 | PVR_ERROR (__cdecl* SignalStatus)(PVR_SIGNAL_STATUS&); | 677 | PVR_ERROR (__cdecl* SignalStatus)(PVR_SIGNAL_STATUS&); |
| 657 | PVR_ERROR (__cdecl* GetDescrambleInfo)(PVR_DESCRAMBLE_INFO*); | 678 | PVR_ERROR (__cdecl* GetDescrambleInfo)(PVR_DESCRAMBLE_INFO*); |
| 658 | const char* (__cdecl* GetLiveStreamURL)(const PVR_CHANNEL&); | 679 | PVR_ERROR (__cdecl* GetChannelStreamProperties)(const PVR_CHANNEL*, PVR_NAMED_VALUE*, unsigned int*); |
| 680 | PVR_ERROR (__cdecl* GetRecordingStreamProperties)(const PVR_RECORDING*, PVR_NAMED_VALUE*, unsigned int*); | ||
| 659 | bool (__cdecl* OpenRecordedStream)(const PVR_RECORDING&); | 681 | bool (__cdecl* OpenRecordedStream)(const PVR_RECORDING&); |
| 660 | void (__cdecl* CloseRecordedStream)(void); | 682 | void (__cdecl* CloseRecordedStream)(void); |
| 661 | int (__cdecl* ReadRecordedStream)(unsigned char*, unsigned int); | 683 | int (__cdecl* ReadRecordedStream)(unsigned char*, unsigned int); |
| @@ -666,7 +688,6 @@ extern "C" { | |||
| 666 | void (__cdecl* DemuxAbort)(void); | 688 | void (__cdecl* DemuxAbort)(void); |
| 667 | void (__cdecl* DemuxFlush)(void); | 689 | void (__cdecl* DemuxFlush)(void); |
| 668 | DemuxPacket* (__cdecl* DemuxRead)(void); | 690 | DemuxPacket* (__cdecl* DemuxRead)(void); |
| 669 | unsigned int (__cdecl* GetChannelSwitchDelay)(void); | ||
| 670 | bool (__cdecl* CanPauseStream)(void); | 691 | bool (__cdecl* CanPauseStream)(void); |
| 671 | void (__cdecl* PauseStream)(bool); | 692 | void (__cdecl* PauseStream)(bool); |
| 672 | bool (__cdecl* CanSeekStream)(void); | 693 | bool (__cdecl* CanSeekStream)(void); |
| @@ -683,6 +704,7 @@ extern "C" { | |||
| 683 | void (__cdecl* OnSystemWake)(void); | 704 | void (__cdecl* OnSystemWake)(void); |
| 684 | void (__cdecl* OnPowerSavingActivated)(void); | 705 | void (__cdecl* OnPowerSavingActivated)(void); |
| 685 | void (__cdecl* OnPowerSavingDeactivated)(void); | 706 | void (__cdecl* OnPowerSavingDeactivated)(void); |
| 707 | PVR_ERROR (__cdecl* GetStreamTimes)(PVR_STREAM_TIMES*); | ||
| 686 | } KodiToAddonFuncTable_PVR; | 708 | } KodiToAddonFuncTable_PVR; |
| 687 | 709 | ||
| 688 | typedef struct AddonInstance_PVR | 710 | typedef struct AddonInstance_PVR |
| @@ -695,4 +717,3 @@ extern "C" { | |||
| 695 | #ifdef __cplusplus | 717 | #ifdef __cplusplus |
| 696 | } | 718 | } |
| 697 | #endif | 719 | #endif |
| 698 | |||
diff --git a/xbmc/input/ActionIDs.h b/xbmc/input/ActionIDs.h index 14b8927..b88df78 100644 --- a/xbmc/input/ActionIDs.h +++ b/xbmc/input/ActionIDs.h | |||
| @@ -288,6 +288,7 @@ | |||
| 288 | #define ACTION_GESTURE_ZOOM 502 //!< sendaction with point and currentPinchScale (fingers together < 1.0 -> fingers apart > 1.0) | 288 | #define ACTION_GESTURE_ZOOM 502 //!< sendaction with point and currentPinchScale (fingers together < 1.0 -> fingers apart > 1.0) |
| 289 | #define ACTION_GESTURE_ROTATE 503 | 289 | #define ACTION_GESTURE_ROTATE 503 |
| 290 | #define ACTION_GESTURE_PAN 504 | 290 | #define ACTION_GESTURE_PAN 504 |
| 291 | #define ACTION_GESTURE_ABORT 505 //!< gesture was interrupted in unspecified state | ||
| 291 | 292 | ||
| 292 | #define ACTION_GESTURE_SWIPE_LEFT 511 | 293 | #define ACTION_GESTURE_SWIPE_LEFT 511 |
| 293 | #define ACTION_GESTURE_SWIPE_LEFT_TEN 520 | 294 | #define ACTION_GESTURE_SWIPE_LEFT_TEN 520 |
