PVR API changes (add-on authors: read this!)

  Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Thread Closed
opdenkamp Offline
Team-XBMC PVR Developer
Posts: 2,274
Joined: Feb 2009
Reputation: 29
Location: Heerlen, The Netherlands
Post: #31
great, thanks.
if you encounter any (more) bugs in lib/platform, let me know and I'll get it fixed.

opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
find
opdenkamp Offline
Team-XBMC PVR Developer
Posts: 2,274
Joined: Feb 2009
Reputation: 29
Location: Heerlen, The Netherlands
Post: #32
iClientId has been removed from PVR_PROPERTIES. more changes will follow soon.

https://github.com/opdenkamp/xbmc/commit...3577cd797b

opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
find
opdenkamp Offline
Team-XBMC PVR Developer
Posts: 2,274
Joined: Feb 2009
Reputation: 29
Location: Heerlen, The Netherlands
Post: #33
removed bSupportsChannelSettings and bSupportsTimeshift from PVR_ADDON_CAPABILITIES
https://github.com/opdenkamp/xbmc/commit...d06038f987

opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
(This post was last modified: 2012-08-13 12:29 by opdenkamp.)
find
opdenkamp Offline
Team-XBMC PVR Developer
Posts: 2,274
Joined: Feb 2009
Reputation: 29
Location: Heerlen, The Netherlands
Post: #34
moved and renamed PVR_HANDLE from xbmc_pvr_types.h to ADDON_HANDLE in xbmc_addon_types.h

https://github.com/opdenkamp/xbmc/commit...ad0c0af9c2

opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
find
opdenkamp Offline
Team-XBMC PVR Developer
Posts: 2,274
Joined: Feb 2009
Reputation: 29
Location: Heerlen, The Netherlands
Post: #35
epg related types have been extracted from xbmc_pvr_types.h and been moved to xbmc_epg_types.h

https://github.com/opdenkamp/xbmc/commit...39ab17245f

opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
find
opdenkamp Offline
Team-XBMC PVR Developer
Posts: 2,274
Joined: Feb 2009
Reputation: 29
Location: Heerlen, The Netherlands
Post: #36
added XBMC_PVR_API_VERSION to xbmc_pvr_types.h.

Every add-on must implement the method const char* GetPVRAPIVersion(), that returns the value of XBMC_PVR_API_VERSION that was used to compile the add-on

https://github.com/opdenkamp/xbmc/commit...4bd03e9839 (there's a typo in the method name in the commit note)

opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
(This post was last modified: 2012-08-20 01:11 by opdenkamp.)
find
opdenkamp Offline
Team-XBMC PVR Developer
Posts: 2,274
Joined: Feb 2009
Reputation: 29
Location: Heerlen, The Netherlands
Post: #37
not directly an interface change, but related: https://github.com/opdenkamp/xbmc/pull/622

i'm going to remove all add-ons from the pvr tree soon.

opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
find
opdenkamp Offline
Team-XBMC PVR Developer
Posts: 2,274
Joined: Feb 2009
Reputation: 29
Location: Heerlen, The Netherlands
Post: #38
changed PVR_ERROR:
PVR_ERROR_NOT_SYNC has been removed
PVR_ERROR_NOT_DELETED and PVR_ERROR_NOT_SAVED have been replaced by PVR_ERROR_FAILED
PVR_ERROR_NOT_POSSIBLE has been replaced by PVR_ERROR_REJECTED
PVR_ERROR_INVALID_PARAMETERS has been added

enum values were changed

https://github.com/opdenkamp/xbmc/commit...c84f131e8a

all PVR add-ons have now been removed from the tree. you can find an explanation in https://github.com/opdenkamp/xbmc/blob/m...README.pvr

opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
find
opdenkamp Offline
Team-XBMC PVR Developer
Posts: 2,274
Joined: Feb 2009
Reputation: 29
Location: Heerlen, The Netherlands
Post: #39
forgot to post about the latest interface changes here.

each add-on must implement "unsigned int GetChannelSwitchDelay()". Delay to use when using switching channels for add-ons not providing an input stream.
-> https://github.com/opdenkamp/xbmc-pvr-ad...fe55fcf598

changed some PVR_STREAM_PROPERTIES to int instead of unsigned, to match the field types in XBMC
-> https://github.com/opdenkamp/xbmc-pvr-ad...8a7758fb44

each add-on must implement "const char* GetMininumPVRAPIVersion(void)" and return the value of XBMC_PVR_MIN_API_VERSION that was used to compile the add-on
-> https://github.com/opdenkamp/xbmc-pvr-ad...afbeb65bd6

PVR API version has been bumped to 1.2.0

opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
find
opdenkamp Offline
Team-XBMC PVR Developer
Posts: 2,274
Joined: Feb 2009
Reputation: 29
Location: Heerlen, The Netherlands
Post: #40
the following PR exposes CFile methods to PVR add-ons: https://github.com/xbmc/xbmc/pull/1432
PVR add-ons cannot use external libs like curl or smbclient (or any other lib, unless it's linked into the add-on). I've updated most of the add-on code to use these new methods: https://github.com/opdenkamp/xbmc-pvr-addons/pull/35. That PR will be merged in after 1432 has been merged.

opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
find
Nirvana Offline
Junior Member
Posts: 16
Joined: Feb 2010
Reputation: 0
Post: #41
Shouldn't timeshift be rather a funtionality in xbmc instead of the backend? In my opinion that is a generic challenge which needs to be solved also for Livestreams / other video addons.
find
dteirney Offline
Team-XBMC Developer
Posts: 838
Joined: Jul 2007
Reputation: 6
Location: New Zealand
Post: #42
(2012-10-07 18:36)Nirvana Wrote:  Shouldn't timeshift be rather a funtionality in xbmc instead of the backend? In my opinion that is a generic challenge which needs to be solved also for Livestreams / other video addons.

Some PVR backends already support time-shifting, e.g. MythTV, which streams LiveTV to disk on the backend and it is streamed from there.

The generic challenge also comes with generic problems, e.g. how many minutes get buffered before too much memory is consumed and it has to be spooled to disk. How much disk should be used? When should that content be deleted if the stream is closed? Should it be available to watch again? How would the user access that? What if the XBMC installation is on a lightweight front end client that doesn't have access to writable storage to cope with the 6-8Gb per hour that is need for HD Live TV streams.

If a PVR backend already addresses a number of these questions then it seems reasonable to expose that functionality rather than not having time-shifting. For PVR backends that don't support time-shifting perhaps someone will create a generic solution that can be used by those.

Use MythTV for recording TV? Try the integrated MythTV support in XBMC Media Center. Now with commercial skip support built-in and integration with the Movie database!
find
opdenkamp Offline
Team-XBMC PVR Developer
Posts: 2,274
Joined: Feb 2009
Reputation: 29
Location: Heerlen, The Netherlands
Post: #43
Forgot to post about the API changes again, sorry.

callback sigs were changed (v1.3.0):
https://github.com/opdenkamp/xbmc-pvr-ad...fc0e5b0669

the following strings were added to PVR_RECORDING: strIconPath, strThumbnailPath and strFanartPath (v1.4.0):
https://github.com/opdenkamp/xbmc-pvr-ad...2dd2d2aa53

every add-on must implement the (stubs for) methods CanPauseStream, CanSeekStream and PauseStream (v1.5.0):
https://github.com/opdenkamp/xbmc-pvr-ad...24804e347b

following PVR_TIMER_STATE's were added: PVR_TIMER_STATE_CONFLICT_OK, PVR_TIMER_STATE_CONFLICT_NOK, PVR_TIMER_STATE_ERROR (v1.5.0)
https://github.com/opdenkamp/xbmc-pvr-ad...627fb13562

add-ons must return ADDON_STATUS_PERMANENT_FAILURE when a call to RegisterMe() in ADDON_Create() fails (v1.5.0):
https://github.com/opdenkamp/xbmc-pvr-ad...756544d4cc

opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
find
opdenkamp Offline
Team-XBMC PVR Developer
Posts: 2,274
Joined: Feb 2009
Reputation: 29
Location: Heerlen, The Netherlands
Post: #44
as jdembski already noticed, i forgot to mention 1 new callback method:

TriggerEpgUpdate() can be used in the add-on to request XBMC to update the EPG for a channel:
https://github.com/opdenkamp/xbmc-pvr-ad...pvr.h#L255

opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
find
opdenkamp Offline
Team-XBMC PVR Developer
Posts: 2,274
Joined: Feb 2009
Reputation: 29
Location: Heerlen, The Netherlands
Post: #45
iStreamIndex has been removed from PVR_PROPERTIES

menu hooks got a new field: category, of type PVR_MENUHOOK_CAT
https://github.com/opdenkamp/xbmc-pvr-ad...pes.h#L117

the following methods have been added for pvr add-ons that use the demux code:
bool SeekTime(int,bool,double*)
https://github.com/opdenkamp/xbmc-pvr-ad...dll.h#L534

void SetSpeed(int)
https://github.com/opdenkamp/xbmc-pvr-ad...dll.h#L544

UnknownToUTF8(), GetLocalizedString() and GetDVDMenuLanguage() now return char*, that must be freed by calling a new API method: FreeString()
https://github.com/opdenkamp/xbmc-pvr-ad...don.h#L298

full set of changes: https://github.com/opdenkamp/xbmc-pvr-ad...13456c2e0c

opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
find