diff options
Diffstat (limited to 'xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h')
| -rw-r--r-- | xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h | 784 |
1 files changed, 0 insertions, 784 deletions
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 deleted file mode 100644 index 26e9099..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h +++ /dev/null | |||
| @@ -1,784 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2005-2018 Team Kodi | ||
| 3 | * This file is part of Kodi - https://kodi.tv | ||
| 4 | * | ||
| 5 | * SPDX-License-Identifier: GPL-2.0-or-later | ||
| 6 | * See LICENSES/README.md for more information. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #pragma once | ||
| 10 | |||
| 11 | #include "xbmc_addon_dll.h" | ||
| 12 | #include "xbmc_pvr_types.h" | ||
| 13 | |||
| 14 | /*! | ||
| 15 | * Functions that the PVR client add-on must implement, but some can be empty. | ||
| 16 | * | ||
| 17 | * The 'remarks' field indicates which methods should be implemented, and which ones are optional. | ||
| 18 | */ | ||
| 19 | |||
| 20 | extern "C" | ||
| 21 | { | ||
| 22 | /*! @name PVR add-on methods */ | ||
| 23 | //@{ | ||
| 24 | /*! | ||
| 25 | * Get the list of features that this add-on provides. | ||
| 26 | * Called by Kodi to query the add-on's capabilities. | ||
| 27 | * Used to check which options should be presented in the UI, which methods to call, etc. | ||
| 28 | * All capabilities that the add-on supports should be set to true. | ||
| 29 | * @param pCapabilities The add-on's capabilities. | ||
| 30 | * @return PVR_ERROR_NO_ERROR if the properties were fetched successfully. | ||
| 31 | * @remarks Valid implementation required. | ||
| 32 | */ | ||
| 33 | PVR_ERROR GetAddonCapabilities(PVR_ADDON_CAPABILITIES *pCapabilities); | ||
| 34 | |||
| 35 | /*! | ||
| 36 | * @return The name reported by the backend that will be displayed in the UI. | ||
| 37 | * @remarks Valid implementation required. | ||
| 38 | */ | ||
| 39 | const char* GetBackendName(void); | ||
| 40 | |||
| 41 | /*! | ||
| 42 | * @return The version string reported by the backend that will be displayed in the UI. | ||
| 43 | * @remarks Valid implementation required. | ||
| 44 | */ | ||
| 45 | const char* GetBackendVersion(void); | ||
| 46 | |||
| 47 | /*! | ||
| 48 | * @return The connection string reported by the backend that will be displayed in the UI. | ||
| 49 | * @remarks Valid implementation required. | ||
| 50 | */ | ||
| 51 | const char* GetConnectionString(void); | ||
| 52 | |||
| 53 | /*! | ||
| 54 | * Get the disk space reported by the backend (if supported). | ||
| 55 | * @param iTotal The total disk space in bytes. | ||
| 56 | * @param iUsed The used disk space in bytes. | ||
| 57 | * @return PVR_ERROR_NO_ERROR if the drive space has been fetched successfully. | ||
| 58 | * @remarks Optional. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 59 | */ | ||
| 60 | PVR_ERROR GetDriveSpace(long long* iTotal, long long* iUsed); | ||
| 61 | |||
| 62 | /*! | ||
| 63 | * Call one of the menu hooks (if supported). | ||
| 64 | * Supported PVR_MENUHOOK instances have to be added in ADDON_Create(), by calling AddMenuHook() on the callback. | ||
| 65 | * @param menuhook The hook to call. | ||
| 66 | * @param item The selected item for which the hook was called. | ||
| 67 | * @return PVR_ERROR_NO_ERROR if the hook was called successfully. | ||
| 68 | * @remarks Optional. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 69 | */ | ||
| 70 | PVR_ERROR CallMenuHook(const PVR_MENUHOOK& menuhook, const PVR_MENUHOOK_DATA &item); | ||
| 71 | //@} | ||
| 72 | |||
| 73 | /*! @name PVR EPG methods | ||
| 74 | * @remarks Only used by Kodi if bSupportsEPG is set to true. | ||
| 75 | */ | ||
| 76 | //@{ | ||
| 77 | /*! | ||
| 78 | * Request the EPG for a channel from the backend. | ||
| 79 | * EPG entries are added to Kodi by calling TransferEpgEntry() on the callback. | ||
| 80 | * @param handle Handle to pass to the callback method. | ||
| 81 | * @param iChannelUid The UID of the channel to get the EPG table for. | ||
| 82 | * @param iStart Get events after this time (UTC). | ||
| 83 | * @param iEnd Get events before this time (UTC). | ||
| 84 | * @return PVR_ERROR_NO_ERROR if the table has been fetched successfully. | ||
| 85 | * @remarks Required if bSupportsEPG is set to true. | ||
| 86 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 87 | */ | ||
| 88 | PVR_ERROR GetEPGForChannel(ADDON_HANDLE handle, int iChannelUid, time_t iStart, time_t iEnd); | ||
| 89 | |||
| 90 | /* | ||
| 91 | * Check if the given EPG tag can be recorded. | ||
| 92 | * @param tag the epg tag to check. | ||
| 93 | * @param [out] bIsRecordable Set to true if the tag can be recorded. | ||
| 94 | * @return PVR_ERROR_NO_ERROR if bIsRecordable has been set successfully. | ||
| 95 | * @remarks Optional, return PVR_ERROR_NOT_IMPLEMENTED to let Kodi decide. | ||
| 96 | */ | ||
| 97 | PVR_ERROR IsEPGTagRecordable(const EPG_TAG* tag, bool* bIsRecordable); | ||
| 98 | |||
| 99 | /* | ||
| 100 | * Check if the given EPG tag can be played. | ||
| 101 | * @param tag the epg tag to check. | ||
| 102 | * @param [out] bIsPlayable Set to true if the tag can be played. | ||
| 103 | * @return PVR_ERROR_NO_ERROR if bIsPlayable has been set successfully. | ||
| 104 | * @remarks Required if add-on supports playing epg tags. | ||
| 105 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 106 | */ | ||
| 107 | PVR_ERROR IsEPGTagPlayable(const EPG_TAG* tag, bool* bIsPlayable); | ||
| 108 | |||
| 109 | /*! | ||
| 110 | * Retrieve the edit decision list (EDL) of an EPG tag on the backend. | ||
| 111 | * @param epgTag The EPG tag. | ||
| 112 | * @param edl out: The function has to write the EDL into this array. | ||
| 113 | * @param size in: The maximum size of the EDL, out: the actual size of the EDL. | ||
| 114 | * @return PVR_ERROR_NO_ERROR if the EDL was successfully read or no EDL exists. | ||
| 115 | * @remarks Required if bSupportsEpgEdl is set to true. | ||
| 116 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 117 | */ | ||
| 118 | PVR_ERROR GetEPGTagEdl(const EPG_TAG* epgTag, PVR_EDL_ENTRY edl[], int *size); | ||
| 119 | |||
| 120 | /*! | ||
| 121 | * Get the stream properties for an epg tag from the backend. | ||
| 122 | * @param[in] tag The epg tag to get the stream properties for. | ||
| 123 | * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream. | ||
| 124 | * @param[inout] iPropertiesCount in: the size of the properties array, out: the number of properties returned. | ||
| 125 | * @return PVR_ERROR_NO_ERROR if the stream is available. | ||
| 126 | * @remarks Required if add-on supports playing epg tags. | ||
| 127 | * In this case your implementation must fill the property PVR_STREAM_PROPERTY_STREAMURL with the URL Kodi should resolve to playback the epg tag. | ||
| 128 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 129 | */ | ||
| 130 | PVR_ERROR GetEPGTagStreamProperties(const EPG_TAG* tag, PVR_NAMED_VALUE* properties, unsigned int* iPropertiesCount); | ||
| 131 | |||
| 132 | //@} | ||
| 133 | |||
| 134 | /*! @name PVR channel group methods | ||
| 135 | * @remarks Only used by Kodi if bSupportsChannelGroups is set to true. | ||
| 136 | * If a group or one of the group members changes after the initial import, or if a new one was added, then the add-on | ||
| 137 | * should call TriggerChannelGroupsUpdate() | ||
| 138 | */ | ||
| 139 | //@{ | ||
| 140 | /*! | ||
| 141 | * Get the total amount of channel groups on the backend if it supports channel groups. | ||
| 142 | * @return The amount of channels, or -1 on error. | ||
| 143 | * @remarks Required if bSupportsChannelGroups is set to true. | ||
| 144 | * Return -1 if this add-on won't provide this function. | ||
| 145 | */ | ||
| 146 | int GetChannelGroupsAmount(void); | ||
| 147 | |||
| 148 | /*! | ||
| 149 | * Request the list of all channel groups from the backend if it supports channel groups. | ||
| 150 | * Channel group entries are added to Kodi by calling TransferChannelGroup() on the callback. | ||
| 151 | * @param handle Handle to pass to the callback method. | ||
| 152 | * @param bRadio True to get the radio channel groups, false to get the TV channel groups. | ||
| 153 | * @return PVR_ERROR_NO_ERROR if the list has been fetched successfully. | ||
| 154 | * @remarks Required if bSupportsChannelGroups is set to true. | ||
| 155 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 156 | */ | ||
| 157 | PVR_ERROR GetChannelGroups(ADDON_HANDLE handle, bool bRadio); | ||
| 158 | |||
| 159 | /*! | ||
| 160 | * Request the list of all group members of a group from the backend if it supports channel groups. | ||
| 161 | * Member entries are added to Kodi by calling TransferChannelGroupMember() on the callback. | ||
| 162 | * @param handle Handle to pass to the callback method. | ||
| 163 | * @param group The group to get the members for. | ||
| 164 | * @return PVR_ERROR_NO_ERROR if the list has been fetched successfully. | ||
| 165 | * @remarks Required if bSupportsChannelGroups is set to true. | ||
| 166 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 167 | */ | ||
| 168 | PVR_ERROR GetChannelGroupMembers(ADDON_HANDLE handle, const PVR_CHANNEL_GROUP& group); | ||
| 169 | //@} | ||
| 170 | |||
| 171 | /** @name PVR channel methods | ||
| 172 | * @remarks Either bSupportsTV or bSupportsRadio is required to be set to true. | ||
| 173 | * If a channel changes after the initial import, or if a new one was added, then the add-on | ||
| 174 | * should call TriggerChannelUpdate() | ||
| 175 | */ | ||
| 176 | //@{ | ||
| 177 | /*! | ||
| 178 | * Show the channel scan dialog if this backend supports it. | ||
| 179 | * @return PVR_ERROR_NO_ERROR if the dialog was displayed successfully. | ||
| 180 | * @remarks Required if bSupportsChannelScan is set to true. | ||
| 181 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 182 | * @note see libKODI_guilib.h about related parts | ||
| 183 | */ | ||
| 184 | PVR_ERROR OpenDialogChannelScan(void); | ||
| 185 | |||
| 186 | /*! | ||
| 187 | * @return The total amount of channels on the backend, or -1 on error. | ||
| 188 | * @remarks Valid implementation required. | ||
| 189 | */ | ||
| 190 | int GetChannelsAmount(void); | ||
| 191 | |||
| 192 | /*! | ||
| 193 | * Request the list of all channels from the backend. | ||
| 194 | * Channel entries are added to Kodi by calling TransferChannelEntry() on the callback. | ||
| 195 | * @param handle Handle to pass to the callback method. | ||
| 196 | * @param bRadio True to get the radio channels, false to get the TV channels. | ||
| 197 | * @return PVR_ERROR_NO_ERROR if the list has been fetched successfully. | ||
| 198 | * @remarks If bSupportsTV is set to true, a valid result set needs to be provided for bRadio = false. | ||
| 199 | * If bSupportsRadio is set to true, a valid result set needs to be provided for bRadio = true. | ||
| 200 | * At least one of these two must provide a valid result set. | ||
| 201 | */ | ||
| 202 | PVR_ERROR GetChannels(ADDON_HANDLE handle, bool bRadio); | ||
| 203 | |||
| 204 | /*! | ||
| 205 | * Delete a channel from the backend. | ||
| 206 | * @param channel The channel to delete. | ||
| 207 | * @return PVR_ERROR_NO_ERROR if the channel has been deleted successfully. | ||
| 208 | * @remarks Required if bSupportsChannelSettings is set to true. | ||
| 209 | */ | ||
| 210 | PVR_ERROR DeleteChannel(const PVR_CHANNEL& channel); | ||
| 211 | |||
| 212 | /*! | ||
| 213 | * Rename a channel on the backend. | ||
| 214 | * @param channel The channel to rename, containing the new channel name. | ||
| 215 | * @return PVR_ERROR_NO_ERROR if the channel has been renamed successfully. | ||
| 216 | * @remarks Optional, and only used if bSupportsChannelSettings is set to true. | ||
| 217 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 218 | */ | ||
| 219 | PVR_ERROR RenameChannel(const PVR_CHANNEL& channel); | ||
| 220 | |||
| 221 | /*! | ||
| 222 | * Show the channel settings dialog, if supported by the backend. | ||
| 223 | * @param channel The channel to show the dialog for. | ||
| 224 | * @return PVR_ERROR_NO_ERROR if the dialog has been displayed successfully. | ||
| 225 | * @remarks Required if bSupportsChannelSettings is set to true. | ||
| 226 | * @note see libKODI_guilib.h about related parts | ||
| 227 | */ | ||
| 228 | PVR_ERROR OpenDialogChannelSettings(const PVR_CHANNEL& channel); | ||
| 229 | |||
| 230 | /*! | ||
| 231 | * Show the dialog to add a channel on the backend, if supported by the backend. | ||
| 232 | * @param channel The channel to add. | ||
| 233 | * @return PVR_ERROR_NO_ERROR if the channel has been added successfully. | ||
| 234 | * @remarks Required if bSupportsChannelSettings is set to true. | ||
| 235 | * @note see libKODI_guilib.h about related parts | ||
| 236 | */ | ||
| 237 | PVR_ERROR OpenDialogChannelAdd(const PVR_CHANNEL& channel); | ||
| 238 | //@} | ||
| 239 | |||
| 240 | /** @name PVR recording methods | ||
| 241 | * @remarks Only used by Kodi if bSupportsRecordings is set to true. | ||
| 242 | * If a recording changes after the initial import, or if a new one was added, | ||
| 243 | * then the add-on should call TriggerRecordingUpdate() | ||
| 244 | */ | ||
| 245 | //@{ | ||
| 246 | /*! | ||
| 247 | * @return The total amount of recordings on the backend or -1 on error. | ||
| 248 | * @param deleted if set return deleted recording (called if bSupportsRecordingsUndelete set to true) | ||
| 249 | * @remarks Required if bSupportsRecordings is set to true. Return -1 if this add-on won't provide this function. | ||
| 250 | */ | ||
| 251 | int GetRecordingsAmount(bool deleted); | ||
| 252 | |||
| 253 | /*! | ||
| 254 | * Request the list of all recordings from the backend, if supported. | ||
| 255 | * Recording entries are added to Kodi by calling TransferRecordingEntry() on the callback. | ||
| 256 | * @param handle Handle to pass to the callback method. | ||
| 257 | * @param deleted if set return deleted recording (called if bSupportsRecordingsUndelete set to true) | ||
| 258 | * @return PVR_ERROR_NO_ERROR if the recordings have been fetched successfully. | ||
| 259 | * @remarks Required if bSupportsRecordings is set to true. | ||
| 260 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 261 | */ | ||
| 262 | PVR_ERROR GetRecordings(ADDON_HANDLE handle, bool deleted); | ||
| 263 | |||
| 264 | /*! | ||
| 265 | * Delete a recording on the backend. | ||
| 266 | * @param recording The recording to delete. | ||
| 267 | * @return PVR_ERROR_NO_ERROR if the recording has been deleted successfully. | ||
| 268 | * @remarks Optional, and only used if bSupportsRecordings is set to true. | ||
| 269 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 270 | */ | ||
| 271 | PVR_ERROR DeleteRecording(const PVR_RECORDING& recording); | ||
| 272 | |||
| 273 | /*! | ||
| 274 | * Undelete a recording on the backend. | ||
| 275 | * @param recording The recording to undelete. | ||
| 276 | * @return PVR_ERROR_NO_ERROR if the recording has been undeleted successfully. | ||
| 277 | * @remarks Optional, and only used if bSupportsRecordingsUndelete is set to true. | ||
| 278 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 279 | */ | ||
| 280 | PVR_ERROR UndeleteRecording(const PVR_RECORDING& recording); | ||
| 281 | |||
| 282 | /*! | ||
| 283 | * @brief Delete all recordings permanent which in the deleted folder on the backend. | ||
| 284 | * @return PVR_ERROR_NO_ERROR if the recordings has been deleted successfully. | ||
| 285 | */ | ||
| 286 | PVR_ERROR DeleteAllRecordingsFromTrash(); | ||
| 287 | |||
| 288 | /*! | ||
| 289 | * Rename a recording on the backend. | ||
| 290 | * @param recording The recording to rename, containing the new name. | ||
| 291 | * @return PVR_ERROR_NO_ERROR if the recording has been renamed successfully. | ||
| 292 | * @remarks Optional, and only used if bSupportsRecordings is set to true. | ||
| 293 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 294 | */ | ||
| 295 | PVR_ERROR RenameRecording(const PVR_RECORDING& recording); | ||
| 296 | |||
| 297 | /*! | ||
| 298 | * Set the lifetime of a recording on the backend. | ||
| 299 | * @param recording The recording to change the lifetime for. recording.iLifetime contains the new lieftime value. | ||
| 300 | * @return PVR_ERROR_NO_ERROR if the recording's lifetime has been set successfully. | ||
| 301 | * @remarks Required if bSupportsRecordingsLifetimeChange is set to true. | ||
| 302 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 303 | */ | ||
| 304 | PVR_ERROR SetRecordingLifetime(const PVR_RECORDING* recording); | ||
| 305 | |||
| 306 | /*! | ||
| 307 | * Set the play count of a recording on the backend. | ||
| 308 | * @param recording The recording to change the play count. | ||
| 309 | * @param count Play count. | ||
| 310 | * @return PVR_ERROR_NO_ERROR if the recording's play count has been set successfully. | ||
| 311 | * @remarks Required if bSupportsRecordingPlayCount is set to true. | ||
| 312 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 313 | */ | ||
| 314 | PVR_ERROR SetRecordingPlayCount(const PVR_RECORDING& recording, int count); | ||
| 315 | |||
| 316 | /*! | ||
| 317 | * Set the last watched position of a recording on the backend. | ||
| 318 | * @param recording The recording. | ||
| 319 | * @param lastplayedposition The last watched position in seconds | ||
| 320 | * @return PVR_ERROR_NO_ERROR if the position has been stored successfully. | ||
| 321 | * @remarks Required if bSupportsLastPlayedPosition is set to true. | ||
| 322 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 323 | */ | ||
| 324 | PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING& recording, int lastplayedposition); | ||
| 325 | |||
| 326 | /*! | ||
| 327 | * Retrieve the last watched position of a recording on the backend. | ||
| 328 | * @param recording The recording. | ||
| 329 | * @return The last watched position in seconds or -1 on error | ||
| 330 | * @remarks Required if bSupportsRecordingPlayCount is set to true. | ||
| 331 | * Return -1 if this add-on won't provide this function. | ||
| 332 | */ | ||
| 333 | int GetRecordingLastPlayedPosition(const PVR_RECORDING& recording); | ||
| 334 | |||
| 335 | /*! | ||
| 336 | * Retrieve the edit decision list (EDL) of a recording on the backend. | ||
| 337 | * @param recording The recording. | ||
| 338 | * @param edl out: The function has to write the EDL into this array. | ||
| 339 | * @param size in: The maximum size of the EDL, out: the actual size of the EDL. | ||
| 340 | * @return PVR_ERROR_NO_ERROR if the EDL was successfully read or no EDL exists. | ||
| 341 | * @remarks Required if bSupportsRecordingEdl is set to true. | ||
| 342 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 343 | */ | ||
| 344 | PVR_ERROR GetRecordingEdl(const PVR_RECORDING& recording, PVR_EDL_ENTRY edl[], int *size); | ||
| 345 | |||
| 346 | /*! | ||
| 347 | * Retrieve the timer types supported by the backend. | ||
| 348 | * @param types out: The function has to write the definition of the supported timer types into this array. | ||
| 349 | * @param typesCount in: The maximum size of the list, out: the actual size of the list. default: PVR_ADDON_TIMERTYPE_ARRAY_SIZE | ||
| 350 | * @return PVR_ERROR_NO_ERROR if the types were successfully written to the array. | ||
| 351 | * @remarks Required if bSupportsTimers is set to true. | ||
| 352 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 353 | */ | ||
| 354 | PVR_ERROR GetTimerTypes(PVR_TIMER_TYPE types[], int *typesCount); | ||
| 355 | |||
| 356 | //@} | ||
| 357 | /** @name PVR timer methods | ||
| 358 | * @remarks Only used by Kodi if bSupportsTimers is set to true. | ||
| 359 | * If a timer changes after the initial import, or if a new one was added, | ||
| 360 | * then the add-on should call TriggerTimerUpdate() | ||
| 361 | */ | ||
| 362 | //@{ | ||
| 363 | /*! | ||
| 364 | * @return The total amount of timers on the backend or -1 on error. | ||
| 365 | * @remarks Required if bSupportsTimers is set to true. Return -1 if this add-on won't provide this function. | ||
| 366 | */ | ||
| 367 | int GetTimersAmount(void); | ||
| 368 | |||
| 369 | /*! | ||
| 370 | * Request the list of all timers from the backend if supported. | ||
| 371 | * Timer entries are added to Kodi by calling TransferTimerEntry() on the callback. | ||
| 372 | * @param handle Handle to pass to the callback method. | ||
| 373 | * @return PVR_ERROR_NO_ERROR if the list has been fetched successfully. | ||
| 374 | * @remarks Required if bSupportsTimers is set to true. | ||
| 375 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 376 | */ | ||
| 377 | PVR_ERROR GetTimers(ADDON_HANDLE handle); | ||
| 378 | |||
| 379 | /*! | ||
| 380 | * Add a timer on the backend. | ||
| 381 | * @param timer The timer to add. | ||
| 382 | * @return PVR_ERROR_NO_ERROR if the timer has been added successfully. | ||
| 383 | * @remarks Required if bSupportsTimers is set to true. | ||
| 384 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 385 | */ | ||
| 386 | PVR_ERROR AddTimer(const PVR_TIMER& timer); | ||
| 387 | |||
| 388 | /*! | ||
| 389 | * Delete a timer on the backend. | ||
| 390 | * @param timer The timer to delete. | ||
| 391 | * @param bForceDelete Set to true to delete a timer that is currently recording a program. | ||
| 392 | * @return PVR_ERROR_NO_ERROR if the timer has been deleted successfully. | ||
| 393 | * @remarks Required if bSupportsTimers is set to true. | ||
| 394 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 395 | */ | ||
| 396 | PVR_ERROR DeleteTimer(const PVR_TIMER& timer, bool bForceDelete); | ||
| 397 | |||
| 398 | /*! | ||
| 399 | * Update the timer information on the backend. | ||
| 400 | * @param timer The timer to update. | ||
| 401 | * @return PVR_ERROR_NO_ERROR if the timer has been updated successfully. | ||
| 402 | * @remarks Required if bSupportsTimers is set to true. | ||
| 403 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 404 | */ | ||
| 405 | PVR_ERROR UpdateTimer(const PVR_TIMER& timer); | ||
| 406 | |||
| 407 | //@} | ||
| 408 | |||
| 409 | /** @name PVR live stream methods, used to open and close a stream to a channel, and optionally perform read operations on the stream */ | ||
| 410 | //@{ | ||
| 411 | /*! | ||
| 412 | * Open a live stream on the backend. | ||
| 413 | * @param channel The channel to stream. | ||
| 414 | * @return True if the stream has been opened successfully, false otherwise. | ||
| 415 | * @remarks Required if bHandlesInputStream or bHandlesDemuxing is set to true. | ||
| 416 | * CloseLiveStream() will always be called by Kodi prior to calling this function. | ||
| 417 | * Return false if this add-on won't provide this function. | ||
| 418 | */ | ||
| 419 | bool OpenLiveStream(const PVR_CHANNEL& channel); | ||
| 420 | |||
| 421 | /*! | ||
| 422 | * Close an open live stream. | ||
| 423 | * @remarks Required if bHandlesInputStream or bHandlesDemuxing is set to true. | ||
| 424 | */ | ||
| 425 | void CloseLiveStream(void); | ||
| 426 | |||
| 427 | /*! | ||
| 428 | * Read from an open live stream. | ||
| 429 | * @param pBuffer The buffer to store the data in. | ||
| 430 | * @param iBufferSize The amount of bytes to read. | ||
| 431 | * @return The amount of bytes that were actually read from the stream. | ||
| 432 | * @remarks Required if bHandlesInputStream is set to true. | ||
| 433 | * Return -1 if this add-on won't provide this function. | ||
| 434 | */ | ||
| 435 | int ReadLiveStream(unsigned char* pBuffer, unsigned int iBufferSize); | ||
| 436 | |||
| 437 | /*! | ||
| 438 | * Seek in a live stream on a backend that supports timeshifting. | ||
| 439 | * @param iPosition The position to seek to. | ||
| 440 | * @param iWhence ? | ||
| 441 | * @return The new position. | ||
| 442 | * @remarks Optional, and only used if bHandlesInputStream is set to true. | ||
| 443 | * Return -1 if this add-on won't provide this function. | ||
| 444 | */ | ||
| 445 | long long SeekLiveStream(long long iPosition, int iWhence = SEEK_SET); | ||
| 446 | |||
| 447 | /*! | ||
| 448 | * Obtain the length of a live stream. | ||
| 449 | * @return The total length of the stream that's currently being read. | ||
| 450 | * @remarks Optional, and only used if bHandlesInputStream is set to true. | ||
| 451 | * Return -1 if this add-on won't provide this function. | ||
| 452 | */ | ||
| 453 | long long LengthLiveStream(void); | ||
| 454 | |||
| 455 | /*! | ||
| 456 | * Get the signal status of the stream that's currently open. | ||
| 457 | * @param signalStatus The signal status. | ||
| 458 | * @return PVR_ERROR_NO_ERROR if the signal status has been read successfully, false otherwise. | ||
| 459 | * @remarks Optional, and only used if PVR_ADDON_CAPABILITIES::bHandlesInputStream or PVR_ADDON_CAPABILITIES::bHandlesDemuxing is set to true. | ||
| 460 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 461 | */ | ||
| 462 | PVR_ERROR SignalStatus(PVR_SIGNAL_STATUS& signalStatus); | ||
| 463 | |||
| 464 | /*! | ||
| 465 | * Get the descramble information of the stream that's currently open. | ||
| 466 | * @param [out] descrambleInfo The descramble information. | ||
| 467 | * @return PVR_ERROR_NO_ERROR if the descramble information has been read successfully, false otherwise. | ||
| 468 | * @remarks Optional, and only used if PVR_ADDON_CAPABILITIES::bSupportsDescrambleInfo is set to true. | ||
| 469 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 470 | */ | ||
| 471 | PVR_ERROR GetDescrambleInfo(PVR_DESCRAMBLE_INFO* descrambleInfo); | ||
| 472 | |||
| 473 | /*! | ||
| 474 | * Get the stream properties for a channel from the backend. | ||
| 475 | * @param[in] channel The channel to get the stream properties for. | ||
| 476 | * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream. | ||
| 477 | * @param[inout] iPropertiesCount in: the size of the properties array, out: the number of properties returned. | ||
| 478 | * @return PVR_ERROR_NO_ERROR if the stream is available. | ||
| 479 | * @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. | ||
| 480 | * In this case the implementation must fill the property PVR_STREAM_PROPERTY_STREAMURL with the URL Kodi should resolve to playback the channel. | ||
| 481 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 482 | */ | ||
| 483 | PVR_ERROR GetChannelStreamProperties(const PVR_CHANNEL* channel, PVR_NAMED_VALUE* properties, unsigned int* iPropertiesCount); | ||
| 484 | |||
| 485 | /*! | ||
| 486 | * Get the stream properties for a recording from the backend. | ||
| 487 | * @param[in] recording The recording to get the stream properties for. | ||
| 488 | * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream. | ||
| 489 | * @param[inout] iPropertiesCount in: the size of the properties array, out: the number of properties returned. | ||
| 490 | * @return PVR_ERROR_NO_ERROR if the stream is available. | ||
| 491 | * @remarks Required if PVR_ADDON_CAPABILITIES::bSupportsRecordings is set to true and the add-on does not implement recording stream functions (OpenRecordedStream, ...). | ||
| 492 | * In this case your implementation must fill the property PVR_STREAM_PROPERTY_STREAMURL with the URL Kodi should resolve to playback the recording. | ||
| 493 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 494 | */ | ||
| 495 | PVR_ERROR GetRecordingStreamProperties(const PVR_RECORDING* recording, PVR_NAMED_VALUE* properties, unsigned int* iPropertiesCount); | ||
| 496 | |||
| 497 | /*! | ||
| 498 | * Get the stream properties of the stream that's currently being read. | ||
| 499 | * @param pProperties The properties of the currently playing stream. | ||
| 500 | * @return PVR_ERROR_NO_ERROR if the properties have been fetched successfully. | ||
| 501 | * @remarks Required if bHandlesDemuxing is set to true. | ||
| 502 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 503 | */ | ||
| 504 | PVR_ERROR GetStreamProperties(PVR_STREAM_PROPERTIES* pProperties); | ||
| 505 | //@} | ||
| 506 | |||
| 507 | /** @name PVR recording stream methods, used to open and close a stream to a recording, and perform read operations on the stream. | ||
| 508 | * @remarks This will only be used if the backend doesn't provide a direct URL in the recording tag. | ||
| 509 | */ | ||
| 510 | //@{ | ||
| 511 | /*! | ||
| 512 | * Obtain the chunk size to use when reading streams. | ||
| 513 | * @param chunksize must be filled with the chunk size in bytes. | ||
| 514 | * @return PVR_ERROR_NO_ERROR if the chunk size has been fetched successfully. | ||
| 515 | * @remarks Optional, and only used if not reading from demuxer (=> DemuxRead) and | ||
| 516 | * PVR_ADDON_CAPABILITIES::bSupportsRecordings is true (=> ReadRecordedStream) or | ||
| 517 | * PVR_ADDON_CAPABILITIES::bHandlesInputStream is true (=> ReadLiveStream). | ||
| 518 | * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. In this case Kodi will decide on the chunk size to use. | ||
| 519 | */ | ||
| 520 | PVR_ERROR GetStreamReadChunkSize(int* chunksize); | ||
| 521 | |||
| 522 | /*! | ||
| 523 | * Open a stream to a recording on the backend. | ||
| 524 | * @param recording The recording to open. | ||
| 525 | * @return True if the stream has been opened successfully, false otherwise. | ||
| 526 | * @remarks Optional, and only used if bSupportsRecordings is set to true. | ||
| 527 | * CloseRecordedStream() will always be called by Kodi prior to calling this function. | ||
| 528 | * Return false if this add-on won't provide this function. | ||
| 529 | */ | ||
| 530 | bool OpenRecordedStream(const PVR_RECORDING& recording); | ||
| 531 | |||
| 532 | /*! | ||
| 533 | * Close an open stream from a recording. | ||
| 534 | * @remarks Optional, and only used if bSupportsRecordings is set to true. | ||
| 535 | */ | ||
| 536 | void CloseRecordedStream(void); | ||
| 537 | |||
| 538 | /*! | ||
| 539 | * Read from a recording. | ||
| 540 | * @param pBuffer The buffer to store the data in. | ||
| 541 | * @param iBufferSize The amount of bytes to read. | ||
| 542 | * @return The amount of bytes that were actually read from the stream. | ||
| 543 | * @remarks Optional, and only used if bSupportsRecordings is set to true, but required if OpenRecordedStream() is implemented. | ||
| 544 | * Return -1 if this add-on won't provide this function. | ||
| 545 | */ | ||
| 546 | int ReadRecordedStream(unsigned char* pBuffer, unsigned int iBufferSize); | ||
| 547 | |||
| 548 | /*! | ||
| 549 | * Seek in a recorded stream. | ||
| 550 | * @param iPosition The position to seek to. | ||
| 551 | * @param iWhence ? | ||
| 552 | * @return The new position. | ||
| 553 | * @remarks Optional, and only used if bSupportsRecordings is set to true. | ||
| 554 | * Return -1 if this add-on won't provide this function. | ||
| 555 | */ | ||
| 556 | long long SeekRecordedStream(long long iPosition, int iWhence = SEEK_SET); | ||
| 557 | |||
| 558 | /*! | ||
| 559 | * Obtain the length of a recorded stream. | ||
| 560 | * @return The total length of the stream that's currently being read. | ||
| 561 | * @remarks Optional, and only used if bSupportsRecordings is set to true. | ||
| 562 | * Return -1 if this add-on won't provide this function. | ||
| 563 | */ | ||
| 564 | long long LengthRecordedStream(void); | ||
| 565 | |||
| 566 | //@} | ||
| 567 | |||
| 568 | /** @name PVR demultiplexer methods | ||
| 569 | * @remarks Only used by Kodi if bHandlesDemuxing is set to true. | ||
| 570 | */ | ||
| 571 | //@{ | ||
| 572 | /*! | ||
| 573 | * Reset the demultiplexer in the add-on. | ||
| 574 | * @remarks Required if bHandlesDemuxing is set to true. | ||
| 575 | */ | ||
| 576 | void DemuxReset(void); | ||
| 577 | |||
| 578 | /*! | ||
| 579 | * Abort the demultiplexer thread in the add-on. | ||
| 580 | * @remarks Required if bHandlesDemuxing is set to true. | ||
| 581 | */ | ||
| 582 | void DemuxAbort(void); | ||
| 583 | |||
| 584 | /*! | ||
| 585 | * Flush all data that's currently in the demultiplexer buffer in the add-on. | ||
| 586 | * @remarks Required if bHandlesDemuxing is set to true. | ||
| 587 | */ | ||
| 588 | void DemuxFlush(void); | ||
| 589 | |||
| 590 | /*! | ||
| 591 | * Read the next packet from the demultiplexer, if there is one. | ||
| 592 | * @return The next packet. | ||
| 593 | * If there is no next packet, then the add-on should return the | ||
| 594 | * packet created by calling AllocateDemuxPacket(0) on the callback. | ||
| 595 | * If the stream changed and Kodi's player needs to be reinitialised, | ||
| 596 | * then, the add-on should call AllocateDemuxPacket(0) on the | ||
| 597 | * callback, and set the streamid to DMX_SPECIALID_STREAMCHANGE and | ||
| 598 | * return the value. | ||
| 599 | * The add-on should return NULL if an error occured. | ||
| 600 | * @remarks Required if bHandlesDemuxing is set to true. | ||
| 601 | * Return NULL if this add-on won't provide this function. | ||
| 602 | */ | ||
| 603 | DemuxPacket* DemuxRead(void); | ||
| 604 | //@} | ||
| 605 | |||
| 606 | /*! | ||
| 607 | * Check if the backend support pausing the currently playing stream | ||
| 608 | * This will enable/disable the pause button in Kodi based on the return value | ||
| 609 | * @return false if the PVR addon/backend does not support pausing, true if possible | ||
| 610 | */ | ||
| 611 | bool CanPauseStream(); | ||
| 612 | |||
| 613 | /*! | ||
| 614 | * Check if the backend supports seeking for the currently playing stream | ||
| 615 | * This will enable/disable the rewind/forward buttons in Kodi based on the return value | ||
| 616 | * @return false if the PVR addon/backend does not support seeking, true if possible | ||
| 617 | */ | ||
| 618 | bool CanSeekStream(); | ||
| 619 | |||
| 620 | /*! | ||
| 621 | * @brief Notify the pvr addon that Kodi (un)paused the currently playing stream | ||
| 622 | */ | ||
| 623 | void PauseStream(bool bPaused); | ||
| 624 | |||
| 625 | /*! | ||
| 626 | * Notify the pvr addon/demuxer that Kodi wishes to seek the stream by time | ||
| 627 | * @param time The absolute time since stream start | ||
| 628 | * @param backwards True to seek to keyframe BEFORE time, else AFTER | ||
| 629 | * @param startpts can be updated to point to where display should start | ||
| 630 | * @return True if the seek operation was possible | ||
| 631 | * @remarks Optional, and only used if addon has its own demuxer. | ||
| 632 | * Return False if this add-on won't provide this function. | ||
| 633 | */ | ||
| 634 | bool SeekTime(double time, bool backwards, double *startpts); | ||
| 635 | |||
| 636 | /*! | ||
| 637 | * Notify the pvr addon/demuxer that Kodi wishes to change playback speed | ||
| 638 | * @param speed The requested playback speed | ||
| 639 | * @remarks Optional, and only used if addon has its own demuxer. | ||
| 640 | */ | ||
| 641 | void SetSpeed(int speed); | ||
| 642 | |||
| 643 | /*! | ||
| 644 | * Notify the pvr addon/demuxer that Kodi wishes to fill demux queue | ||
| 645 | * @param mode The requested filling mode | ||
| 646 | * @remarks Optional, and only used if addon has its own demuxer. | ||
| 647 | */ | ||
| 648 | void FillBuffer(bool mode); | ||
| 649 | |||
| 650 | /*! | ||
| 651 | * Get the hostname of the pvr backend server | ||
| 652 | * @return hostname as ip address or alias. If backend does not utilize a server, return empty string. | ||
| 653 | */ | ||
| 654 | const char* GetBackendHostname(); | ||
| 655 | |||
| 656 | /*! | ||
| 657 | * Check for real-time streaming | ||
| 658 | * @return true if current stream is real-time | ||
| 659 | */ | ||
| 660 | bool IsRealTimeStream(); | ||
| 661 | |||
| 662 | /*! | ||
| 663 | * Tell the client the time frame to use when notifying epg events back to Kodi. The client might push epg events asynchronously | ||
| 664 | * to Kodi using the callback function EpgEventStateChange. To be able to only push events that are actually of interest for Kodi, | ||
| 665 | * client needs to know about the epg time frame Kodi uses. Kodi supplies the current epg time frame value in PVR_PROPERTIES.iEpgMaxDays | ||
| 666 | * when creating the addon and calls SetEPGTimeFrame later whenever Kodi's epg time frame value changes. | ||
| 667 | * @param iDays number of days from "now". EPG_TIMEFRAME_UNLIMITED means that Kodi is interested in all epg events, regardless of event times. | ||
| 668 | * @return PVR_ERROR_NO_ERROR if new value was successfully set. | ||
| 669 | * @remarks Required if bSupportsEPG is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. | ||
| 670 | */ | ||
| 671 | PVR_ERROR SetEPGTimeFrame(int iDays); | ||
| 672 | |||
| 673 | /*! | ||
| 674 | * Notify the pvr addon for power management events | ||
| 675 | */ | ||
| 676 | void OnSystemSleep(); | ||
| 677 | void OnSystemWake(); | ||
| 678 | void OnPowerSavingActivated(); | ||
| 679 | void OnPowerSavingDeactivated(); | ||
| 680 | |||
| 681 | /*! | ||
| 682 | * Get stream times. | ||
| 683 | * @param times A pointer to the data to be filled by the implementation. | ||
| 684 | * @return PVR_ERROR_NO_ERROR on success. | ||
| 685 | */ | ||
| 686 | PVR_ERROR GetStreamTimes(PVR_STREAM_TIMES *times); | ||
| 687 | |||
| 688 | /*! | ||
| 689 | * Called by Kodi to assign the function pointers of this add-on to pClient. | ||
| 690 | * @param ptr The struct to assign the function pointers to. | ||
| 691 | */ | ||
| 692 | void __declspec(dllexport) get_addon(void* ptr) | ||
| 693 | { | ||
| 694 | AddonInstance_PVR* pClient = static_cast<AddonInstance_PVR*>(ptr); | ||
| 695 | |||
| 696 | pClient->toAddon.addonInstance = nullptr; // used in future | ||
| 697 | |||
| 698 | pClient->toAddon.GetAddonCapabilities = GetAddonCapabilities; | ||
| 699 | pClient->toAddon.GetStreamProperties = GetStreamProperties; | ||
| 700 | pClient->toAddon.GetConnectionString = GetConnectionString; | ||
| 701 | pClient->toAddon.GetBackendName = GetBackendName; | ||
| 702 | pClient->toAddon.GetBackendVersion = GetBackendVersion; | ||
| 703 | pClient->toAddon.GetDriveSpace = GetDriveSpace; | ||
| 704 | pClient->toAddon.OpenDialogChannelScan = OpenDialogChannelScan; | ||
| 705 | pClient->toAddon.MenuHook = CallMenuHook; | ||
| 706 | |||
| 707 | pClient->toAddon.GetEPGForChannel = GetEPGForChannel; | ||
| 708 | pClient->toAddon.IsEPGTagRecordable = IsEPGTagRecordable; | ||
| 709 | pClient->toAddon.IsEPGTagPlayable = IsEPGTagPlayable; | ||
| 710 | pClient->toAddon.GetEPGTagEdl = GetEPGTagEdl; | ||
| 711 | pClient->toAddon.GetEPGTagStreamProperties = GetEPGTagStreamProperties; | ||
| 712 | |||
| 713 | pClient->toAddon.GetChannelGroupsAmount = GetChannelGroupsAmount; | ||
| 714 | pClient->toAddon.GetChannelGroups = GetChannelGroups; | ||
| 715 | pClient->toAddon.GetChannelGroupMembers = GetChannelGroupMembers; | ||
| 716 | |||
| 717 | pClient->toAddon.GetChannelsAmount = GetChannelsAmount; | ||
| 718 | pClient->toAddon.GetChannels = GetChannels; | ||
| 719 | pClient->toAddon.DeleteChannel = DeleteChannel; | ||
| 720 | pClient->toAddon.RenameChannel = RenameChannel; | ||
| 721 | pClient->toAddon.OpenDialogChannelSettings = OpenDialogChannelSettings; | ||
| 722 | pClient->toAddon.OpenDialogChannelAdd = OpenDialogChannelAdd; | ||
| 723 | |||
| 724 | pClient->toAddon.GetRecordingsAmount = GetRecordingsAmount; | ||
| 725 | pClient->toAddon.GetRecordings = GetRecordings; | ||
| 726 | pClient->toAddon.DeleteRecording = DeleteRecording; | ||
| 727 | pClient->toAddon.UndeleteRecording = UndeleteRecording; | ||
| 728 | pClient->toAddon.DeleteAllRecordingsFromTrash = DeleteAllRecordingsFromTrash; | ||
| 729 | pClient->toAddon.RenameRecording = RenameRecording; | ||
| 730 | pClient->toAddon.SetRecordingLifetime = SetRecordingLifetime; | ||
| 731 | pClient->toAddon.SetRecordingPlayCount = SetRecordingPlayCount; | ||
| 732 | pClient->toAddon.SetRecordingLastPlayedPosition = SetRecordingLastPlayedPosition; | ||
| 733 | pClient->toAddon.GetRecordingLastPlayedPosition = GetRecordingLastPlayedPosition; | ||
| 734 | pClient->toAddon.GetRecordingEdl = GetRecordingEdl; | ||
| 735 | |||
| 736 | pClient->toAddon.GetTimerTypes = GetTimerTypes; | ||
| 737 | pClient->toAddon.GetTimersAmount = GetTimersAmount; | ||
| 738 | pClient->toAddon.GetTimers = GetTimers; | ||
| 739 | pClient->toAddon.AddTimer = AddTimer; | ||
| 740 | pClient->toAddon.DeleteTimer = DeleteTimer; | ||
| 741 | pClient->toAddon.UpdateTimer = UpdateTimer; | ||
| 742 | |||
| 743 | pClient->toAddon.OpenLiveStream = OpenLiveStream; | ||
| 744 | pClient->toAddon.CloseLiveStream = CloseLiveStream; | ||
| 745 | pClient->toAddon.ReadLiveStream = ReadLiveStream; | ||
| 746 | pClient->toAddon.SeekLiveStream = SeekLiveStream; | ||
| 747 | pClient->toAddon.LengthLiveStream = LengthLiveStream; | ||
| 748 | pClient->toAddon.SignalStatus = SignalStatus; | ||
| 749 | pClient->toAddon.GetDescrambleInfo = GetDescrambleInfo; | ||
| 750 | pClient->toAddon.GetChannelStreamProperties = GetChannelStreamProperties; | ||
| 751 | pClient->toAddon.GetRecordingStreamProperties = GetRecordingStreamProperties; | ||
| 752 | pClient->toAddon.CanPauseStream = CanPauseStream; | ||
| 753 | pClient->toAddon.PauseStream = PauseStream; | ||
| 754 | pClient->toAddon.CanSeekStream = CanSeekStream; | ||
| 755 | pClient->toAddon.SeekTime = SeekTime; | ||
| 756 | pClient->toAddon.SetSpeed = SetSpeed; | ||
| 757 | pClient->toAddon.FillBuffer = FillBuffer; | ||
| 758 | |||
| 759 | pClient->toAddon.OpenRecordedStream = OpenRecordedStream; | ||
| 760 | pClient->toAddon.CloseRecordedStream = CloseRecordedStream; | ||
| 761 | pClient->toAddon.ReadRecordedStream = ReadRecordedStream; | ||
| 762 | pClient->toAddon.SeekRecordedStream = SeekRecordedStream; | ||
| 763 | pClient->toAddon.LengthRecordedStream = LengthRecordedStream; | ||
| 764 | |||
| 765 | pClient->toAddon.DemuxReset = DemuxReset; | ||
| 766 | pClient->toAddon.DemuxAbort = DemuxAbort; | ||
| 767 | pClient->toAddon.DemuxFlush = DemuxFlush; | ||
| 768 | pClient->toAddon.DemuxRead = DemuxRead; | ||
| 769 | |||
| 770 | pClient->toAddon.GetBackendHostname = GetBackendHostname; | ||
| 771 | |||
| 772 | pClient->toAddon.IsRealTimeStream = IsRealTimeStream; | ||
| 773 | |||
| 774 | pClient->toAddon.SetEPGTimeFrame = SetEPGTimeFrame; | ||
| 775 | |||
| 776 | pClient->toAddon.OnSystemSleep = OnSystemSleep; | ||
| 777 | pClient->toAddon.OnSystemWake = OnSystemWake; | ||
| 778 | pClient->toAddon.OnPowerSavingActivated = OnPowerSavingActivated; | ||
| 779 | pClient->toAddon.OnPowerSavingDeactivated = OnPowerSavingDeactivated; | ||
| 780 | pClient->toAddon.GetStreamTimes = GetStreamTimes; | ||
| 781 | |||
| 782 | pClient->toAddon.GetStreamReadChunkSize = GetStreamReadChunkSize; | ||
| 783 | }; | ||
| 784 | }; | ||
