summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/KodiConfig.cmake.in10
-rw-r--r--cmake/README.md20
-rw-r--r--cmake/addons/README.md22
-rw-r--r--cmake/addons/depends/README35
-rw-r--r--cmake/installdata/common/addons.txt1
-rw-r--r--cmake/modules/FindNFS.cmake19
-rw-r--r--cmake/scripts/android/Install.cmake1
-rw-r--r--cmake/scripts/common/AddonHelpers.cmake30
-rw-r--r--cmake/scripts/common/PrepareEnv.cmake47
-rw-r--r--cmake/scripts/ios/ArchSetup.cmake9
-rw-r--r--cmake/treedata/common/retroplayer.txt1
-rw-r--r--version.txt6
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Inputstream.h31
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Peripheral.h15
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h5
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h2
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h4
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h8
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_types.h12
-rw-r--r--xbmc/interfaces/json-rpc/schema/version.txt2
20 files changed, 168 insertions, 112 deletions
diff --git a/cmake/KodiConfig.cmake.in b/cmake/KodiConfig.cmake.in
index 2a572e7..560374d 100644
--- a/cmake/KodiConfig.cmake.in
+++ b/cmake/KodiConfig.cmake.in
@@ -25,12 +25,8 @@ list(APPEND CMAKE_MODULE_PATH @APP_LIB_DIR@ @APP_DATA_DIR@/cmake)
25string(REPLACE ";" " " ARCH_DEFINES "@ARCH_DEFINES@") 25string(REPLACE ";" " " ARCH_DEFINES "@ARCH_DEFINES@")
26add_definitions(${ARCH_DEFINES} -DBUILD_KODI_ADDON) 26add_definitions(${ARCH_DEFINES} -DBUILD_KODI_ADDON)
27 27
28if(NOT CORE_SYSTEM_NAME) 28set(CORE_SYSTEM_NAME @CORE_SYSTEM_NAME@)
29 if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") 29set(PLATFORM @CORE_SYSTEM_NAME@)
30 set(CORE_SYSTEM_NAME "osx") 30set(PLATFORM_TAG @PLATFORM_TAG@)
31 else()
32 string(TOLOWER ${CMAKE_SYSTEM_NAME} CORE_SYSTEM_NAME)
33 endif()
34endif()
35 31
36include(AddonHelpers) 32include(AddonHelpers)
diff --git a/cmake/README.md b/cmake/README.md
index 8637da6..2febe48 100644
--- a/cmake/README.md
+++ b/cmake/README.md
@@ -21,6 +21,26 @@ cmake ... -DENABLE_VAAPI=ON -DENABLE_VDPAU=OFF ...
21 21
22Unfortunately, Kodi's CMake gazillion options are not fully documented yet. For more information and an updated list of options, please check the main **[CMakeLists.txt](../CMakeLists.txt)**. 22Unfortunately, Kodi's CMake gazillion options are not fully documented yet. For more information and an updated list of options, please check the main **[CMakeLists.txt](../CMakeLists.txt)**.
23 23
24## Buildsystem variables
25The buildsystem uses the following variables (which can be passed into it when executing cmake with the -D`<variable-name>=<value>` format) to manipulate the build process (see READMEs in sub-directories for additional variables):
26- `CMAKE_BUILD_TYPE` specifies the type of the build. This can be either *Debug* or *Release* (default is *Release*)
27- `CMAKE_TOOLCHAIN_FILE` can be used to pass a toolchain file
28- `ARCH_DEFINES` specifies the platform-specific C/C++ preprocessor defines (defaults to empty)
29
30## Building
31To trigger the cmake-based buildsystem the following command must be executed with `<path>` set to this directory (absolute or relative) allowing for in-source and out-of-source builds
32
33`cmake <path> -G <generator>`
34
35CMake supports multiple generators. See [here] (https://cmake.org/cmake/help/v3.1/manual/cmake-generators.7.html) for a list.
36
37In case of additional options the call might look like this:
38
39cmake `<path>` [-G `<generator>`] \
40 -DCMAKE_BUILD_TYPE=Release \
41 -DARCH_DEFINES="-DTARGET_LINUX" \
42 -DCMAKE_INSTALL_PREFIX="`<path-to-install-directory`"
43
24## Tests 44## Tests
25Kodi uses Google Test as its testing framework. Each test file is scanned for tests and these are added to CTest, which is the native test driver for CMake. 45Kodi uses Google Test as its testing framework. Each test file is scanned for tests and these are added to CTest, which is the native test driver for CMake.
26 46
diff --git a/cmake/addons/README.md b/cmake/addons/README.md
index e04c834..dd222f5 100644
--- a/cmake/addons/README.md
+++ b/cmake/addons/README.md
@@ -24,21 +24,18 @@ Available platforms are: linux, windows, osx, ios, android, rbpi and freebsd.
24If no add-on definitions could be found, the buildsystem assumes that the bootstrapping of the add-on definition repositories hasn't been performed yet and automatically executes the add-on bootstrapping buildsystem located in the *bootstrap* sub-directory with the default settings (i.e. *all* add-ons from all pre-defined add-on definition repositories are bootstrapped into the directory pointed to by the *ADDONS_DEFINITION_DIR* option). 24If no add-on definitions could be found, the buildsystem assumes that the bootstrapping of the add-on definition repositories hasn't been performed yet and automatically executes the add-on bootstrapping buildsystem located in the *bootstrap* sub-directory with the default settings (i.e. *all* add-ons from all pre-defined add-on definition repositories are bootstrapped into the directory pointed to by the *ADDONS_DEFINITION_DIR* option).
25 25
26## Buildsystem variables 26## Buildsystem variables
27The buildsystem uses the following variables (which can be passed into it when executing cmake with the -D`<variable-name>=<value>` format) to manipulate the build process: 27The buildsystem uses the following addon-related variables (which can be passed into it when executing cmake with the -D`<variable-name>=<value>` format) to manipulate the build process:
28- `ADDONS_TO_BUILD` has two variations, which are tested in order: 28- `ADDONS_TO_BUILD` has two variations, which are tested in order:
29 - a quoted, space delimited list of `<addon-id>s` that you want to build (default is *all*) 29 - a quoted, space delimited list of `<addon-id>s` that you want to build (default is *all*)
30 - a regular expression that every `<addon-id>` is matched against (e.g. `ADDONS_TO_BUILD="pvr.*"`) to build all pvr add-ons 30 - a regular expression that every `<addon-id>` is matched against (e.g. `ADDONS_TO_BUILD="pvr.*"`) to build all pvr add-ons
31- `ADDONS_DEFINITION_DIR` points to the directory containing the definitions for the addons to be built 31- `ADDONS_DEFINITION_DIR` points to the directory containing the definitions for the addons to be built
32- `ADDON_SRC_PREFIX` can be used to override the add-on repository location. It must point to the locally available parent directory of the add-on(s) to build. `<addon-id>` will be appended to this path automatically 32- `ADDON_SRC_PREFIX` can be used to override the add-on repository location. It must point to the locally available parent directory of the add-on(s) to build. `<addon-id>` will be appended to this path automatically
33- `CMAKE_BUILD_TYPE` specifies the type of the build. This can be either *Debug* or *Release* (default is *Release*)
34- `CMAKE_INSTALL_PREFIX` points to the directory where the built add-ons and their additional files (addon.xml, resources, ...) will be installed to (defaults to `<ADDON_DEPENDS_PATH>`) 33- `CMAKE_INSTALL_PREFIX` points to the directory where the built add-ons and their additional files (addon.xml, resources, ...) will be installed to (defaults to `<ADDON_DEPENDS_PATH>`)
35- `CMAKE_TOOLCHAIN_FILE` can be used to pass a toolchain file into the add-on builds
36- `ADDON_DEPENDS_PATH` points to the directory containing the *include* and *lib* directories of the add-ons' dependencies. 34- `ADDON_DEPENDS_PATH` points to the directory containing the *include* and *lib* directories of the add-ons' dependencies.
37- `CORE_SOURCE_DIR` points to the root directory of the project (default is the absolute representation of ../../.. starting from this directory) 35- `CORE_SOURCE_DIR` points to the root directory of the project (default is the absolute representation of ../../.. starting from this directory)
38- `BUILD_DIR` points to the directory where the add-ons and their dependencies will be downloaded and built 36- `BUILD_DIR` points to the directory where the add-ons and their dependencies will be downloaded and built
39- `PACKAGE_ZIP=ON` means that the add-ons will be 'packaged' into a common folder, rather than being placed in `<CMAKE_INSTALL_PREFIX>/lib/kodi/addons` and `<CMAKE_INSTALL_PREFIX>/share/kodi/addons` 37- `PACKAGE_ZIP=ON` means that the add-ons will be 'packaged' into a common folder, rather than being placed in `<CMAKE_INSTALL_PREFIX>/lib/kodi/addons` and `<CMAKE_INSTALL_PREFIX>/share/kodi/addons`
40- `PACKAGE_DIR` points to the directory where the ZIP archived add-ons will be stored after they have been packaged (defaults to `<BUILD_DIR>/zips`) 38- `PACKAGE_DIR` points to the directory where the ZIP archived add-ons will be stored after they have been packaged (defaults to `<BUILD_DIR>/zips`)
41- `ARCH_DEFINES` specifies the platform-specific C/C++ preprocessor defines (defaults to empty)
42- `ADDON_TARBALL_CACHING` specifies whether downloaded add-on source tarballs should be cached or not (defaults to *ON*) 39- `ADDON_TARBALL_CACHING` specifies whether downloaded add-on source tarballs should be cached or not (defaults to *ON*)
43 40
44## Deprecated buildsystem variables 41## Deprecated buildsystem variables
@@ -47,19 +44,4 @@ Buildsystem will print a warning if you use any of the below-listed variables. F
47 44
48## Building 45## Building
49The buildsystem makes some assumptions about the environment which must be met by whoever uses it: 46The buildsystem makes some assumptions about the environment which must be met by whoever uses it:
50- Any dependencies of the add-ons must already be built and their include and library files must be present in the path pointed to by `<CMAKE_PREFIX_PATH>` (in *include* and *lib* sub-directories) 47- Any dependencies of the add-ons must already be built and their include and library files must be present in the path pointed to by `<CMAKE_PREFIX_PATH>` (in *include* and *lib* sub-directories) \ No newline at end of file
51
52To trigger the cmake-based buildsystem the following command must be executed with `<path>` set to this directory (absolute or relative) allowing for in-source and out-of-source builds
53
54`cmake <path> -G <generator>`
55
56CMake supports multiple generators. See [here] (https://cmake.org/cmake/help/v3.1/manual/cmake-generators.7.html) for a list.
57
58In case of additional options the call might look like this:
59
60cmake `<path>` [-G `<generator>`] \
61 -DCMAKE_BUILD_TYPE=Release \
62 -DCORE_SOURCE_DIR="`<path-to-app-root>`" \
63 -DARCH_DEFINES="-DTARGET_LINUX" \
64 -DADDON_DEPENDS_PATH=`<path-to-built-depends>` \
65 -DCMAKE_INSTALL_PREFIX="`<path-to-install-directory`"
diff --git a/cmake/addons/depends/README b/cmake/addons/depends/README
index 584a167..6fcec8f 100644
--- a/cmake/addons/depends/README
+++ b/cmake/addons/depends/README
@@ -25,37 +25,8 @@ are:
25 * flags.txt: additional build flags 25 * flags.txt: additional build flags
26 * deps.txt: whitespace separated list of dependencies of this dependency 26 * deps.txt: whitespace separated list of dependencies of this dependency
27 27
28The buildsystem uses the following variables (which can be passed into it when 28The buildsystem uses the following depends-related variables (which can be passed
29executing cmake with the -D<variable-name>=<value> option) to e.g. access 29into it when executing cmake with the -D<variable-name>=<value> option) to e.g.
30specific paths: 30access specific paths:
31 * CMAKE_BUILD_TYPE specifies the type of the build. This can be either "Debug"
32 or "Release" (default is "Release").
33 * CMAKE_TOOLCHAIN_FILE can be used to pass a toolchain file into the add-on
34 builds.
35 * CORE_SYSTEM_NAME is the name of the platform (e.g. "linux" or "android") in
36 lower-case (defaults to lowercase(CMAKE_SYSTEM_NAME)).
37 * CORE_SOURCE_DIR points to the root directory of the project (default is the
38 absolute representation of ../../.. starting from this directory).
39 * ADDON_DEPENDS_PATH points to the directory where the built dependencies
40 (their include and library file) will be installed to.
41 * ARCH_DEFINES specifies the platform-specific C/C++ preprocessor defines
42 (defaults to empty).
43 * DEPENDS_TO_BUILD is a quoted, space delimited list of <dependency>s that 31 * DEPENDS_TO_BUILD is a quoted, space delimited list of <dependency>s that
44 you want to build (default is "all"). 32 you want to build (default is "all").
45
46To trigger the cmake-based buildsystem the following command must be executed
47with <path> being the path to this directory (absolute or relative, allowing for
48in-source and out-of-source builds).
49
50 cmake <path> -G <generator>
51
52cmake supports multiple generators, see
53http://www.cmake.org/cmake/help/v2.8.8/cmake.html#section_Generators for a list.
54
55In case of additional options the call might look like this
56
57 cmake <path> [-G <generator>] \
58 -DCMAKE_BUILD_TYPE=Release \
59 -DCORE_SOURCE_DIR="<path-to-project-root>" \
60 -DARCH_DEFINES="-DTARGET_LINUX" \
61 -DCMAKE_INSTALL_PREFIX="<path-to-install-directory"
diff --git a/cmake/installdata/common/addons.txt b/cmake/installdata/common/addons.txt
index b8f763c..c0ffb72 100644
--- a/cmake/installdata/common/addons.txt
+++ b/cmake/installdata/common/addons.txt
@@ -1,6 +1,7 @@
1addons/audioencoder.kodi.builtin.aac/* 1addons/audioencoder.kodi.builtin.aac/*
2addons/audioencoder.kodi.builtin.wma/* 2addons/audioencoder.kodi.builtin.wma/*
3addons/game.controller.default/* 3addons/game.controller.default/*
4addons/game.controller.snes/*
4addons/kodi.audiodecoder/* 5addons/kodi.audiodecoder/*
5addons/kodi.game/* 6addons/kodi.game/*
6addons/kodi.imagedecoder/* 7addons/kodi.imagedecoder/*
diff --git a/cmake/modules/FindNFS.cmake b/cmake/modules/FindNFS.cmake
index 36727c0..c2414a1 100644
--- a/cmake/modules/FindNFS.cmake
+++ b/cmake/modules/FindNFS.cmake
@@ -23,20 +23,13 @@ find_path(NFS_INCLUDE_DIR nfsc/libnfs.h
23 23
24set(NFS_VERSION ${PC_NFS_VERSION}) 24set(NFS_VERSION ${PC_NFS_VERSION})
25 25
26find_library(NFS_LIBRARY NAMES nfs libnfs
27 PATHS ${PC_NFS_LIBDIR})
28
26include(FindPackageHandleStandardArgs) 29include(FindPackageHandleStandardArgs)
27if(NOT WIN32) 30find_package_handle_standard_args(NFS
28 find_library(NFS_LIBRARY NAMES nfs 31 REQUIRED_VARS NFS_LIBRARY NFS_INCLUDE_DIR
29 PATHS ${PC_NFS_LIBDIR}) 32 VERSION_VAR NFS_VERSION)
30
31 find_package_handle_standard_args(NFS
32 REQUIRED_VARS NFS_LIBRARY NFS_INCLUDE_DIR
33 VERSION_VAR NFS_VERSION)
34else()
35 # Dynamically loaded DLL
36 find_package_handle_standard_args(NFS
37 REQUIRED_VARS NFS_INCLUDE_DIR
38 VERSION_VAR NFS_VERSION)
39endif()
40 33
41if(NFS_FOUND) 34if(NFS_FOUND)
42 set(NFS_LIBRARIES ${NFS_LIBRARY}) 35 set(NFS_LIBRARIES ${NFS_LIBRARY})
diff --git a/cmake/scripts/android/Install.cmake b/cmake/scripts/android/Install.cmake
index a0fa155..a121295 100644
--- a/cmake/scripts/android/Install.cmake
+++ b/cmake/scripts/android/Install.cmake
@@ -82,6 +82,7 @@ set(package_files strings.xml
82 src/interfaces/XBMCNsdManagerRegistrationListener.java 82 src/interfaces/XBMCNsdManagerRegistrationListener.java
83 src/interfaces/XBMCNsdManagerDiscoveryListener.java 83 src/interfaces/XBMCNsdManagerDiscoveryListener.java
84 src/interfaces/XBMCMediaDrmOnEventListener.java 84 src/interfaces/XBMCMediaDrmOnEventListener.java
85 src/interfaces/XBMCDisplayManagerDisplayListener.java
85 src/model/TVEpisode.java 86 src/model/TVEpisode.java
86 src/model/Movie.java 87 src/model/Movie.java
87 src/model/TVShow.java 88 src/model/TVShow.java
diff --git a/cmake/scripts/common/AddonHelpers.cmake b/cmake/scripts/common/AddonHelpers.cmake
index 4bb4c98..a91e366 100644
--- a/cmake/scripts/common/AddonHelpers.cmake
+++ b/cmake/scripts/common/AddonHelpers.cmake
@@ -21,7 +21,7 @@ macro(add_cpack_workaround target version ext)
21 21
22 add_custom_command(TARGET addon-package POST_BUILD 22 add_custom_command(TARGET addon-package POST_BUILD
23 COMMAND ${CMAKE_COMMAND} -E make_directory ${PACKAGE_DIR} 23 COMMAND ${CMAKE_COMMAND} -E make_directory ${PACKAGE_DIR}
24 COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_PACKAGE_DIRECTORY}/addon-${target}-${version}.${ext} ${PACKAGE_DIR}/${target}-${version}.${ext}) 24 COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_PACKAGE_DIRECTORY}/addon-${target}-${version}-${PLATFORM_TAG}.${ext} ${PACKAGE_DIR}/${target}+${PLATFORM_TAG}/${target}-${version}.${ext})
25endmacro() 25endmacro()
26 26
27# Grab the version from a given add-on's addon.xml 27# Grab the version from a given add-on's addon.xml
@@ -153,7 +153,7 @@ macro (build_addon target prefix libs)
153 endif() 153 endif()
154 endforeach() 154 endforeach()
155 155
156 add_library(${target} ${${prefix}_SOURCES}) 156 add_library(${target} ${${prefix}_SOURCES} ${${prefix}_HEADERS})
157 target_link_libraries(${target} ${${libs}}) 157 target_link_libraries(${target} ${${libs}})
158 set_target_properties(${target} PROPERTIES VERSION ${${prefix}_VERSION} 158 set_target_properties(${target} PROPERTIES VERSION ${${prefix}_VERSION}
159 SOVERSION ${APP_VERSION_MAJOR}.${APP_VERSION_MINOR} 159 SOVERSION ${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}
@@ -187,7 +187,6 @@ macro (build_addon target prefix libs)
187 # if there's an addon.xml.in we need to generate the addon.xml 187 # if there's an addon.xml.in we need to generate the addon.xml
188 if(EXISTS ${PROJECT_SOURCE_DIR}/${target}/addon.xml.in) 188 if(EXISTS ${PROJECT_SOURCE_DIR}/${target}/addon.xml.in)
189 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/${target}/addon.xml.in) 189 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/${target}/addon.xml.in)
190 set(PLATFORM ${CORE_SYSTEM_NAME})
191 190
192 file(READ ${PROJECT_SOURCE_DIR}/${target}/addon.xml.in addon_file) 191 file(READ ${PROJECT_SOURCE_DIR}/${target}/addon.xml.in addon_file)
193 192
@@ -199,6 +198,9 @@ macro (build_addon target prefix libs)
199 endif() 198 endif()
200 endif() 199 endif()
201 200
201 # TODO: remove this hack after v18
202 string(REPLACE "<platform>\@PLATFORM\@</platform>" "<platform>@PLATFORM_TAG@</platform>" addon_file "${addon_file}")
203
202 string(CONFIGURE "${addon_file}" addon_file_conf @ONLY) 204 string(CONFIGURE "${addon_file}" addon_file_conf @ONLY)
203 file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${target}/addon.xml CONTENT "${addon_file_conf}") 205 file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${target}/addon.xml CONTENT "${addon_file_conf}")
204 if(${APP_NAME_UC}_BUILD_DIR) 206 if(${APP_NAME_UC}_BUILD_DIR)
@@ -209,7 +211,6 @@ macro (build_addon target prefix libs)
209 # if there's an settings.xml.in we need to generate the settings.xml 211 # if there's an settings.xml.in we need to generate the settings.xml
210 if(EXISTS ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml.in) 212 if(EXISTS ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml.in)
211 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml.in) 213 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml.in)
212 set(PLATFORM ${CORE_SYSTEM_NAME})
213 214
214 file(READ ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml.in settings_file) 215 file(READ ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml.in settings_file)
215 string(CONFIGURE "${settings_file}" settings_file_conf @ONLY) 216 string(CONFIGURE "${settings_file}" settings_file_conf @ONLY)
@@ -234,10 +235,10 @@ macro (build_addon target prefix libs)
234 endif() 235 endif()
235 set(CPACK_ARCHIVE_COMPONENT_INSTALL ON) 236 set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
236 set(CPACK_COMPONENTS_IGNORE_GROUPS 1) 237 set(CPACK_COMPONENTS_IGNORE_GROUPS 1)
237 list(APPEND CPACK_COMPONENTS_ALL ${target}-${${prefix}_VERSION}) 238 list(APPEND CPACK_COMPONENTS_ALL ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
238 # Pack files together to create an archive 239 # Pack files together to create an archive
239 install(DIRECTORY ${target} ${CMAKE_CURRENT_BINARY_DIR}/${target} DESTINATION ./ 240 install(DIRECTORY ${target} ${CMAKE_CURRENT_BINARY_DIR}/${target} DESTINATION ./
240 COMPONENT ${target}-${${prefix}_VERSION} 241 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG}
241 REGEX ".+\\.xml\\.in(clude)?$" EXCLUDE) 242 REGEX ".+\\.xml\\.in(clude)?$" EXCLUDE)
242 if(WIN32) 243 if(WIN32)
243 if(NOT CPACK_PACKAGE_DIRECTORY) 244 if(NOT CPACK_PACKAGE_DIRECTORY)
@@ -256,21 +257,24 @@ macro (build_addon target prefix libs)
256 if(${prefix}_SOURCES) 257 if(${prefix}_SOURCES)
257 # install the generated DLL file 258 # install the generated DLL file
258 install(PROGRAMS ${LIBRARY_LOCATION} DESTINATION ${target} 259 install(PROGRAMS ${LIBRARY_LOCATION} DESTINATION ${target}
259 COMPONENT ${target}-${${prefix}_VERSION}) 260 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
260 261
261 # for debug builds also install the PDB file 262 # for debug builds also install the PDB file
262 install(FILES $<TARGET_PDB_FILE:${target}> DESTINATION ${target} 263 install(FILES $<TARGET_PDB_FILE:${target}> DESTINATION ${target}
263 CONFIGURATIONS Debug RelWithDebInfo 264 CONFIGURATIONS Debug RelWithDebInfo
264 COMPONENT ${target}-${${prefix}_VERSION}) 265 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
265 endif() 266 endif()
266 if(${prefix}_CUSTOM_BINARY) 267 if(${prefix}_CUSTOM_BINARY)
267 install(FILES ${LIBRARY_LOCATION} DESTINATION ${target} RENAME ${LIBRARY_FILENAME}) 268 install(FILES ${LIBRARY_LOCATION} DESTINATION ${target} RENAME ${LIBRARY_FILENAME}
269 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
268 endif() 270 endif()
269 if(${prefix}_CUSTOM_DATA) 271 if(${prefix}_CUSTOM_DATA)
270 install(DIRECTORY ${${prefix}_CUSTOM_DATA} DESTINATION ${target}/resources) 272 install(DIRECTORY ${${prefix}_CUSTOM_DATA} DESTINATION ${target}/resources
273 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
271 endif() 274 endif()
272 if(${prefix}_ADDITIONAL_BINARY) 275 if(${prefix}_ADDITIONAL_BINARY)
273 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${target}) 276 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${target}
277 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
274 endif() 278 endif()
275 else() # NOT WIN32 279 else() # NOT WIN32
276 if(NOT CPACK_PACKAGE_DIRECTORY) 280 if(NOT CPACK_PACKAGE_DIRECTORY)
@@ -278,11 +282,11 @@ macro (build_addon target prefix libs)
278 endif() 282 endif()
279 if(${prefix}_SOURCES) 283 if(${prefix}_SOURCES)
280 install(TARGETS ${target} DESTINATION ${target} 284 install(TARGETS ${target} DESTINATION ${target}
281 COMPONENT ${target}-${${prefix}_VERSION}) 285 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
282 endif() 286 endif()
283 if(${prefix}_CUSTOM_BINARY) 287 if(${prefix}_CUSTOM_BINARY)
284 install(FILES ${LIBRARY_LOCATION} DESTINATION ${target} RENAME ${LIBRARY_FILENAME} 288 install(FILES ${LIBRARY_LOCATION} DESTINATION ${target} RENAME ${LIBRARY_FILENAME}
285 COMPONENT ${target}-${${prefix}_VERSION}) 289 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
286 endif() 290 endif()
287 if(${prefix}_CUSTOM_DATA) 291 if(${prefix}_CUSTOM_DATA)
288 install(DIRECTORY ${${prefix}_CUSTOM_DATA} DESTINATION ${target}/resources) 292 install(DIRECTORY ${${prefix}_CUSTOM_DATA} DESTINATION ${target}/resources)
diff --git a/cmake/scripts/common/PrepareEnv.cmake b/cmake/scripts/common/PrepareEnv.cmake
index 1426148..20dbaf6 100644
--- a/cmake/scripts/common/PrepareEnv.cmake
+++ b/cmake/scripts/common/PrepareEnv.cmake
@@ -32,6 +32,53 @@ if(NOT WIN32)
32 endif() 32 endif()
33endif() 33endif()
34 34
35if(NOT CORE_SYSTEM_NAME)
36 if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
37 set(CORE_SYSTEM_NAME "osx")
38 else()
39 string(TOLOWER ${CMAKE_SYSTEM_NAME} CORE_SYSTEM_NAME)
40 endif()
41endif()
42
43set(PLATFORM_TAG ${CORE_SYSTEM_NAME})
44
45if(CORE_SYSTEM_NAME STREQUAL android)
46 if (CPU MATCHES "v7a")
47 set(PLATFORM_TAG ${PLATFORM_TAG}-armv7)
48 elseif (CPU MATCHES "arm64")
49 set(PLATFORM_TAG ${PLATFORM_TAG}-aarch64)
50 elseif (CPU MATCHES "i686")
51 set(PLATFORM_TAG ${PLATFORM_TAG}-i686)
52 else()
53 message(FATAL_ERROR "Unsupported architecture")
54 endif()
55elseif(CORE_SYSTEM_NAME STREQUAL ios)
56 if (CPU MATCHES armv7)
57 set(PLATFORM_TAG ${PLATFORM_TAG}-armv7)
58 elseif (CPU MATCHES arm64)
59 set(PLATFORM_TAG ${PLATFORM_TAG}-aarch64)
60 else()
61 message(FATAL_ERROR "Unsupported architecture")
62 endif()
63elseif(CORE_SYSTEM_NAME STREQUAL osx)
64 set(PLATFORM_TAG ${PLATFORM_TAG}-${CPU})
65elseif(CORE_SYSTEM_NAME STREQUAL windows)
66 include(CheckSymbolExists)
67 check_symbol_exists(_X86_ "Windows.h" _X86_)
68 check_symbol_exists(_AMD64_ "Windows.h" _AMD64_)
69
70 if(_X86_)
71 set(PLATFORM_TAG ${PLATFORM_TAG}-i686)
72 elseif(_AMD64_)
73 set(PLATFORM_TAG ${PLATFORM_TAG}-x86_64)
74 else()
75 message(FATAL_ERROR "Unsupported architecture")
76 endif()
77
78 unset(_X86_)
79 unset(_AMD64_)
80endif()
81
35# generate the proper KodiConfig.cmake file 82# generate the proper KodiConfig.cmake file
36configure_file(${CORE_SOURCE_DIR}/cmake/KodiConfig.cmake.in ${APP_LIB_DIR}/KodiConfig.cmake @ONLY) 83configure_file(${CORE_SOURCE_DIR}/cmake/KodiConfig.cmake.in ${APP_LIB_DIR}/KodiConfig.cmake @ONLY)
37 84
diff --git a/cmake/scripts/ios/ArchSetup.cmake b/cmake/scripts/ios/ArchSetup.cmake
index bec8a7c..6b053dc 100644
--- a/cmake/scripts/ios/ArchSetup.cmake
+++ b/cmake/scripts/ios/ArchSetup.cmake
@@ -12,9 +12,13 @@ set(CMAKE_SYSTEM_NAME Darwin)
12if(WITH_ARCH) 12if(WITH_ARCH)
13 set(ARCH ${WITH_ARCH}) 13 set(ARCH ${WITH_ARCH})
14else() 14else()
15 if(CPU STREQUAL armv7 OR CPU STREQUAL arm64) 15 if(CPU STREQUAL armv7)
16 set(CMAKE_OSX_ARCHITECTURES ${CPU}) 16 set(CMAKE_OSX_ARCHITECTURES ${CPU})
17 set(ARCH arm-osx) 17 set(ARCH arm)
18 set(NEON True)
19 elseif(CPU STREQUAL arm64)
20 set(CMAKE_OSX_ARCHITECTURES ${CPU})
21 set(ARCH aarch64)
18 set(NEON True) 22 set(NEON True)
19 else() 23 else()
20 message(SEND_ERROR "Unknown CPU: ${CPU}") 24 message(SEND_ERROR "Unknown CPU: ${CPU}")
@@ -36,7 +40,6 @@ list(APPEND DEPLIBS "-framework CoreFoundation" "-framework CoreVideo"
36 "-framework CoreMedia" "-framework AVFoundation" 40 "-framework CoreMedia" "-framework AVFoundation"
37 "-framework VideoToolbox") 41 "-framework VideoToolbox")
38 42
39set(ENABLE_DVDCSS OFF CACHE BOOL "" FORCE)
40set(ENABLE_OPTICAL OFF CACHE BOOL "" FORCE) 43set(ENABLE_OPTICAL OFF CACHE BOOL "" FORCE)
41 44
42set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "9.0") 45set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "9.0")
diff --git a/cmake/treedata/common/retroplayer.txt b/cmake/treedata/common/retroplayer.txt
index cf9c9c5..97fc849 100644
--- a/cmake/treedata/common/retroplayer.txt
+++ b/cmake/treedata/common/retroplayer.txt
@@ -4,6 +4,7 @@ xbmc/cores/RetroPlayer/buffers cores/RetroPlaye
4xbmc/cores/RetroPlayer/buffers/video cores/RetroPlayer/buffers/video 4xbmc/cores/RetroPlayer/buffers/video cores/RetroPlayer/buffers/video
5xbmc/cores/RetroPlayer/guibridge cores/RetroPlayer/guibridge 5xbmc/cores/RetroPlayer/guibridge cores/RetroPlayer/guibridge
6xbmc/cores/RetroPlayer/guicontrols cores/RetroPlayer/guicontrols 6xbmc/cores/RetroPlayer/guicontrols cores/RetroPlayer/guicontrols
7xbmc/cores/RetroPlayer/guiplayback cores/RetroPlayer/guiplayback
7xbmc/cores/RetroPlayer/guiwindows cores/RetroPlayer/guiwindows 8xbmc/cores/RetroPlayer/guiwindows cores/RetroPlayer/guiwindows
8xbmc/cores/RetroPlayer/playback cores/RetroPlayer/playback 9xbmc/cores/RetroPlayer/playback cores/RetroPlayer/playback
9xbmc/cores/RetroPlayer/process cores/RetroPlayer/process 10xbmc/cores/RetroPlayer/process cores/RetroPlayer/process
diff --git a/version.txt b/version.txt
index e9ee792..c27a42c 100644
--- a/version.txt
+++ b/version.txt
@@ -3,9 +3,9 @@ COMPANY_NAME XBMC Foundation
3WEBSITE http://kodi.tv 3WEBSITE http://kodi.tv
4VERSION_MAJOR 18 4VERSION_MAJOR 18
5VERSION_MINOR 0 5VERSION_MINOR 0
6VERSION_TAG BETA2 6VERSION_TAG BETA4
7VERSION_CODE 17.99.802 7VERSION_CODE 17.99.804
8ADDON_API 17.9.802 8ADDON_API 17.9.804
9APP_PACKAGE org.xbmc.kodi 9APP_PACKAGE org.xbmc.kodi
10PACKAGE_IDENTITY XBMCFoundation.Kodi 10PACKAGE_IDENTITY XBMCFoundation.Kodi
11PACKAGE_PUBLISHER C62BD90A-CDD8-477F-96C3-B25992247B97 11PACKAGE_PUBLISHER C62BD90A-CDD8-477F-96C3-B25992247B97
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Inputstream.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Inputstream.h
index 23a91e7..252edbf 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Inputstream.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Inputstream.h
@@ -120,6 +120,31 @@ extern "C" {
120 FLAG_HEARING_IMPAIRED = 0x0080, 120 FLAG_HEARING_IMPAIRED = 0x0080,
121 FLAG_VISUAL_IMPAIRED = 0x0100 121 FLAG_VISUAL_IMPAIRED = 0x0100
122 }; 122 };
123
124 enum INPUTSTREAM_COLORSPACE
125 {
126 COLORSPACE_UNKNOWN,
127 COLORSPACE_BT709,
128 COLORSPACE_BT470M,
129 COLORSPACE_BT470BG,
130 COLORSPACE_SMPTE170M,
131 COLORSPACE_SMPTE240M,
132 COLORSPACE_FILM,
133 COLORSPACE_BT2020,
134 COLORSPACE_SMPTE428,
135 COLORSPACE_SMPTEST428_1,
136 COLORSPACE_SMPTE431,
137 COLORSPACE_SMPTE432,
138 COLORSPACE_JEDEC_P22
139 };
140
141 enum INPUTSTREAM_COLORRANGE
142 {
143 COLORRANGE_UNKNOWN,
144 COLORRANGE_LIMITED,
145 COLORRANGE_FULLRANGE
146 };
147
123 uint32_t m_flags; 148 uint32_t m_flags;
124 149
125 char m_name[256]; /*!< @brief (optinal) name of the stream, \0 for default handling */ 150 char m_name[256]; /*!< @brief (optinal) name of the stream, \0 for default handling */
@@ -139,6 +164,7 @@ extern "C" {
139 unsigned int m_Width; /*!< @brief width of the stream reported by the demuxer */ 164 unsigned int m_Width; /*!< @brief width of the stream reported by the demuxer */
140 float m_Aspect; /*!< @brief display aspect of stream */ 165 float m_Aspect; /*!< @brief display aspect of stream */
141 166
167
142 unsigned int m_Channels; /*!< @brief (required) amount of channels */ 168 unsigned int m_Channels; /*!< @brief (required) amount of channels */
143 unsigned int m_SampleRate; /*!< @brief (required) sample rate */ 169 unsigned int m_SampleRate; /*!< @brief (required) sample rate */
144 unsigned int m_BitRate; /*!< @brief (required) bit rate */ 170 unsigned int m_BitRate; /*!< @brief (required) bit rate */
@@ -146,6 +172,11 @@ extern "C" {
146 unsigned int m_BlockAlign; 172 unsigned int m_BlockAlign;
147 173
148 CRYPTO_INFO m_cryptoInfo; 174 CRYPTO_INFO m_cryptoInfo;
175
176 // new in API version 2.0.8
177 unsigned int m_codecFourCC; /*!< @brief Codec If available, the fourcc code codec */
178 INPUTSTREAM_COLORSPACE m_colorSpace; /*!< @brief definition of colorspace */
179 INPUTSTREAM_COLORRANGE m_colorRange; /*!< @brief color range if available */
149 }; 180 };
150 181
151 struct INPUTSTREAM_TIMES 182 struct INPUTSTREAM_TIMES
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 78e572b..2df8a36 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
@@ -531,8 +531,7 @@ namespace addon
531 virtual void FreeEvents(unsigned int event_count, PERIPHERAL_EVENT* events) { } 531 virtual void FreeEvents(unsigned int event_count, PERIPHERAL_EVENT* events) { }
532 532
533 /*! 533 /*!
534 * @brief Send an input event to the specified peripheral 534 * @brief Send an input event to the peripheral
535 * @param peripheralIndex The index of the device receiving the input event
536 * @param event The input event 535 * @param event The input event
537 * @return true if the event was handled, false otherwise 536 * @return true if the event was handled, false otherwise
538 */ 537 */
@@ -677,9 +676,9 @@ namespace addon
677 * @param[optional] deviceName The name of the device to refresh, or empty/null for all devices 676 * @param[optional] deviceName The name of the device to refresh, or empty/null for all devices
678 * @param[optional] controllerId The controller ID to refresh, or empty/null for all controllers 677 * @param[optional] controllerId The controller ID to refresh, or empty/null for all controllers
679 */ 678 */
680 void RefreshButtonMaps(const std::string& strDeviceName = "", const std::string& strControllerId = "") 679 void RefreshButtonMaps(const std::string& deviceName = "", const std::string& controllerId = "")
681 { 680 {
682 return m_instanceData->toKodi.refresh_button_maps(m_instanceData->toKodi.kodiInstance, strDeviceName.c_str(), strControllerId.c_str()); 681 return m_instanceData->toKodi.refresh_button_maps(m_instanceData->toKodi.kodiInstance, deviceName.c_str(), controllerId.c_str());
683 } 682 }
684 683
685 /*! 684 /*!
@@ -690,9 +689,9 @@ namespace addon
690 * 689 *
691 * @return The number of features matching the request parameters 690 * @return The number of features matching the request parameters
692 */ 691 */
693 unsigned int FeatureCount(const std::string& strControllerId, JOYSTICK_FEATURE_TYPE type = JOYSTICK_FEATURE_TYPE_UNKNOWN) 692 unsigned int FeatureCount(const std::string& controllerId, JOYSTICK_FEATURE_TYPE type = JOYSTICK_FEATURE_TYPE_UNKNOWN)
694 { 693 {
695 return m_instanceData->toKodi.feature_count(m_instanceData->toKodi.kodiInstance, strControllerId.c_str(), type); 694 return m_instanceData->toKodi.feature_count(m_instanceData->toKodi.kodiInstance, controllerId.c_str(), type);
696 } 695 }
697 696
698 /*! 697 /*!
@@ -704,9 +703,9 @@ namespace addon
704 * @return The type of the specified feature, or JOYSTICK_FEATURE_TYPE_UNKNOWN 703 * @return The type of the specified feature, or JOYSTICK_FEATURE_TYPE_UNKNOWN
705 * if unknown 704 * if unknown
706 */ 705 */
707 JOYSTICK_FEATURE_TYPE FeatureType(const std::string& strControllerId, const std::string &featureName) 706 JOYSTICK_FEATURE_TYPE FeatureType(const std::string& controllerId, const std::string &featureName)
708 { 707 {
709 return m_instanceData->toKodi.feature_type(m_instanceData->toKodi.kodiInstance, strControllerId.c_str(), featureName.c_str()); 708 return m_instanceData->toKodi.feature_type(m_instanceData->toKodi.kodiInstance, controllerId.c_str(), featureName.c_str());
710 } 709 }
711 710
712 private: 711 private:
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h
index 40979e5..478f81b 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h
@@ -59,7 +59,7 @@ GAME_ERROR UnloadGame(void);
59/*! 59/*!
60 * \brief Get timing information about the loaded game 60 * \brief Get timing information about the loaded game
61 * 61 *
62 * \param info The info structure to fill 62 * \param[out] timing_info The info structure to fill
63 * 63 *
64 * \return the error, or GAME_ERROR_NO_ERROR if info was filled 64 * \return the error, or GAME_ERROR_NO_ERROR if info was filled
65 */ 65 */
@@ -176,8 +176,9 @@ bool EnableMouse(bool enable, const game_controller* controller);
176 * \brief Connect/disconnect a controller to a port on the virtual game console 176 * \brief Connect/disconnect a controller to a port on the virtual game console
177 * 177 *
178 * \param connect True to connect a controller, false to disconnect 178 * \param connect True to connect a controller, false to disconnect
179 * \param address The address of the port 179 * \param port_address The address of the port
180 * \param controller The controller info if connecting, or unused if disconnecting 180 * \param controller The controller info if connecting, or unused if disconnecting
181 * \return True if the \p controller was (dis-)connected to the port, false otherwise
181 * 182 *
182 * The address is a string that allows traversal of the controller topology. 183 * The address is a string that allows traversal of the controller topology.
183 * It is formed by alternating port IDs and controller IDs separated by "/". 184 * It is formed by alternating port IDs and controller IDs separated by "/".
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h
index ca8cba9..b518c28 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h
@@ -123,7 +123,7 @@ public:
123 /*! 123 /*!
124 * \brief Get a symbol from the hardware context 124 * \brief Get a symbol from the hardware context
125 * 125 *
126 * \param symbol The symbol's name 126 * \param sym The symbol's name
127 * 127 *
128 * \return A function pointer for the specified symbol 128 * \return A function pointer for the specified symbol
129 */ 129 */
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 227717c..5127f7e 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h
@@ -87,7 +87,7 @@
87#define ADDON_INSTANCE_VERSION_IMAGEDECODER_XML_ID "kodi.binary.instance.imagedecoder" 87#define ADDON_INSTANCE_VERSION_IMAGEDECODER_XML_ID "kodi.binary.instance.imagedecoder"
88#define ADDON_INSTANCE_VERSION_IMAGEDECODER_DEPENDS "addon-instance/ImageDecoder.h" 88#define ADDON_INSTANCE_VERSION_IMAGEDECODER_DEPENDS "addon-instance/ImageDecoder.h"
89 89
90#define ADDON_INSTANCE_VERSION_INPUTSTREAM "2.0.7" 90#define ADDON_INSTANCE_VERSION_INPUTSTREAM "2.0.8"
91#define ADDON_INSTANCE_VERSION_INPUTSTREAM_MIN "2.0.7" 91#define ADDON_INSTANCE_VERSION_INPUTSTREAM_MIN "2.0.7"
92#define ADDON_INSTANCE_VERSION_INPUTSTREAM_XML_ID "kodi.binary.instance.inputstream" 92#define ADDON_INSTANCE_VERSION_INPUTSTREAM_XML_ID "kodi.binary.instance.inputstream"
93#define ADDON_INSTANCE_VERSION_INPUTSTREAM_DEPENDS "addon-instance/Inputstream.h" 93#define ADDON_INSTANCE_VERSION_INPUTSTREAM_DEPENDS "addon-instance/Inputstream.h"
@@ -98,7 +98,7 @@
98#define ADDON_INSTANCE_VERSION_PERIPHERAL_DEPENDS "addon-instance/Peripheral.h" \ 98#define ADDON_INSTANCE_VERSION_PERIPHERAL_DEPENDS "addon-instance/Peripheral.h" \
99 "addon-instance/PeripheralUtils.h" 99 "addon-instance/PeripheralUtils.h"
100 100
101#define ADDON_INSTANCE_VERSION_PVR "5.10.1" 101#define ADDON_INSTANCE_VERSION_PVR "5.10.3"
102#define ADDON_INSTANCE_VERSION_PVR_MIN "5.10.0" 102#define ADDON_INSTANCE_VERSION_PVR_MIN "5.10.0"
103#define ADDON_INSTANCE_VERSION_PVR_XML_ID "kodi.binary.instance.pvr" 103#define ADDON_INSTANCE_VERSION_PVR_XML_ID "kodi.binary.instance.pvr"
104#define ADDON_INSTANCE_VERSION_PVR_DEPENDS "xbmc_pvr_dll.h" \ 104#define ADDON_INSTANCE_VERSION_PVR_DEPENDS "xbmc_pvr_dll.h" \
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 8c509ac..27fa800 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
@@ -316,7 +316,7 @@ extern "C"
316 /*! 316 /*!
317 * Set the last watched position of a recording on the backend. 317 * Set the last watched position of a recording on the backend.
318 * @param recording The recording. 318 * @param recording The recording.
319 * @param position The last watched position in seconds 319 * @param lastplayedposition The last watched position in seconds
320 * @return PVR_ERROR_NO_ERROR if the position has been stored successfully. 320 * @return PVR_ERROR_NO_ERROR if the position has been stored successfully.
321 * @remarks Required if bSupportsLastPlayedPosition is set to true. 321 * @remarks Required if bSupportsLastPlayedPosition is set to true.
322 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 322 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
@@ -483,7 +483,7 @@ extern "C"
483 483
484 /*! 484 /*!
485 * Get the stream properties for a recording from the backend. 485 * Get the stream properties for a recording from the backend.
486 * @param[in] channel The recording to get the stream properties for. 486 * @param[in] recording The recording to get the stream properties for.
487 * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream. 487 * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream.
488 * @param[inout] iPropertiesCount in: the size of the properties array, out: the number of properties returned. 488 * @param[inout] iPropertiesCount in: the size of the properties array, out: the number of properties returned.
489 * @return PVR_ERROR_NO_ERROR if the stream is available. 489 * @return PVR_ERROR_NO_ERROR if the stream is available.
@@ -676,7 +676,9 @@ extern "C"
676 void OnPowerSavingDeactivated(); 676 void OnPowerSavingDeactivated();
677 677
678 /*! 678 /*!
679 * Get stream times. Intermediate, will be moved to inputstream 679 * Get stream times.
680 * @param times A pointer to the data to be filled by the implementation.
681 * @return PVR_ERROR_NO_ERROR on success.
680 */ 682 */
681 PVR_ERROR GetStreamTimes(PVR_STREAM_TIMES *times); 683 PVR_ERROR GetStreamTimes(PVR_STREAM_TIMES *times);
682 684
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 2a89fef..f1562b6 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
@@ -153,6 +153,7 @@ extern "C" {
153 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 */ 153 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 */
154 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 */ 154 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 */
155 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 */ 155 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 */
156 const unsigned int PVR_TIMER_TYPE_SUPPORTS_READONLY_DELETE = 0x04000000; /*!< @brief this type allows deletion of an otherwise read-only timer */
156 157
157 /*! 158 /*!
158 * @brief PVR timer weekdays (PVR_TIMER.iWeekdays values) 159 * @brief PVR timer weekdays (PVR_TIMER.iWeekdays values)
@@ -312,6 +313,9 @@ extern "C" {
312 313
313 unsigned int iRecordingsLifetimesSize; /*!< @brief (required) Count of possible values for PVR_RECORDING.iLifetime. 0 means lifetime is not supported for recordings or no own value definition wanted, but to use Kodi defaults of 1..365. */ 314 unsigned int iRecordingsLifetimesSize; /*!< @brief (required) Count of possible values for PVR_RECORDING.iLifetime. 0 means lifetime is not supported for recordings or no own value definition wanted, but to use Kodi defaults of 1..365. */
314 PVR_ATTRIBUTE_INT_VALUE recordingsLifetimeValues[PVR_ADDON_ATTRIBUTE_VALUES_ARRAY_SIZE]; /*!< @brief (optional) Array containing the possible values for PVR_RECORDING.iLifetime. Must be filled if iLifetimesSize > 0 */ 315 PVR_ATTRIBUTE_INT_VALUE recordingsLifetimeValues[PVR_ADDON_ATTRIBUTE_VALUES_ARRAY_SIZE]; /*!< @brief (optional) Array containing the possible values for PVR_RECORDING.iLifetime. Must be filled if iLifetimesSize > 0 */
316
317 // TODO: cleanup: move this member up after the other bools with the next incompatible pvr addon api change.
318 bool bSupportsAsyncEPGTransfer; /*!< @brief true if this addon-on supports asynchronous transfer of epg events to Kodi using the callback function EpgEventStateChange. */
315 } ATTRIBUTE_PACKED PVR_ADDON_CAPABILITIES; 319 } ATTRIBUTE_PACKED PVR_ADDON_CAPABILITIES;
316 320
317 /*! 321 /*!
@@ -501,7 +505,7 @@ extern "C" {
501 int iMaxRecordings; /*!< @brief (optional) maximum number of recordings this timer shall create. > 0 number of recordings, < 0 addon defined integer list reference, == 0 disabled */ 505 int iMaxRecordings; /*!< @brief (optional) maximum number of recordings this timer shall create. > 0 number of recordings, < 0 addon defined integer list reference, == 0 disabled */
502 unsigned int iRecordingGroup; /*!< @brief (optional) integer ref to addon/backend defined list of recording groups*/ 506 unsigned int iRecordingGroup; /*!< @brief (optional) integer ref to addon/backend defined list of recording groups*/
503 time_t firstDay; /*!< @brief (optional) the first day this timer is active, for repeating timers */ 507 time_t firstDay; /*!< @brief (optional) the first day this timer is active, for repeating timers */
504 unsigned int iWeekdays; /*!< @brief (optional) week days, for repeating timers */ 508 unsigned int iWeekdays; /*!< @brief (optional) week days, for repeating timers (see PVR_WEEKDAY_* constant values) */
505 unsigned int iPreventDuplicateEpisodes; /*!< @brief (optional) 1 if backend should only record new episodes in case of a repeating epg-based timer, 0 if all episodes shall be recorded (no duplicate detection). Actual algorithm for 509 unsigned int iPreventDuplicateEpisodes; /*!< @brief (optional) 1 if backend should only record new episodes in case of a repeating epg-based timer, 0 if all episodes shall be recorded (no duplicate detection). Actual algorithm for
506 duplicate detection is defined by the backend. Addons may define own values for different duplicate detection algorithms, thus this is not just a bool.*/ 510 duplicate detection is defined by the backend. Addons may define own values for different duplicate detection algorithms, thus this is not just a bool.*/
507 unsigned int iEpgUid; /*!< @brief (optional) EPG event id associated with this timer. Event ids must be unique for a channel. Valid ids must be greater than EPG_TAG_INVALID_UID. */ 511 unsigned int iEpgUid; /*!< @brief (optional) EPG event id associated with this timer. Event ids must be unique for a channel. Valid ids must be greater than EPG_TAG_INVALID_UID. */
@@ -528,7 +532,7 @@ extern "C" {
528 char strPlot[PVR_ADDON_DESC_STRING_LENGTH]; /*!< @brief (optional) plot */ 532 char strPlot[PVR_ADDON_DESC_STRING_LENGTH]; /*!< @brief (optional) plot */
529 char strGenreDescription[PVR_ADDON_DESC_STRING_LENGTH]; /*!< @brief (optional) genre. Will be used only when iGenreType = EPG_GENRE_USE_STRING */ 533 char strGenreDescription[PVR_ADDON_DESC_STRING_LENGTH]; /*!< @brief (optional) genre. Will be used only when iGenreType = EPG_GENRE_USE_STRING */
530 char strChannelName[PVR_ADDON_NAME_STRING_LENGTH]; /*!< @brief (optional) channel name */ 534 char strChannelName[PVR_ADDON_NAME_STRING_LENGTH]; /*!< @brief (optional) channel name */
531 char strIconPath[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) icon path */ 535 char strIconPath[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) channel logo (icon) path */
532 char strThumbnailPath[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) thumbnail path */ 536 char strThumbnailPath[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) thumbnail path */
533 char strFanartPath[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) fanart path */ 537 char strFanartPath[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) fanart path */
534 time_t recordingTime; /*!< @brief (optional) start time of the recording */ 538 time_t recordingTime; /*!< @brief (optional) start time of the recording */
@@ -584,8 +588,8 @@ extern "C" {
584 { 588 {
585 time_t startTime; /*!< @brief For recordings, this must be zero. For Live TV, this is a reference time in units of time_t (UTC) from which time elapsed starts. Ideally start of tv show, but can be any other value. */ 589 time_t startTime; /*!< @brief For recordings, this must be zero. For Live TV, this is a reference time in units of time_t (UTC) from which time elapsed starts. Ideally start of tv show, but can be any other value. */
586 int64_t ptsStart; /*!< @brief the pts of startTime */ 590 int64_t ptsStart; /*!< @brief the pts of startTime */
587 int64_t ptsBegin; /*!< @brief earliest pts player can seek back. Value is seconds, relative to ptsStart. For recordings, this must be zero. For Live TV, this must be zero if not timeshifting and must point to begin of the timeshift buffer, otherwise. */ 591 int64_t ptsBegin; /*!< @brief earliest pts player can seek back. Value is in micro seconds, relative to ptsStart. For recordings, this must be zero. For Live TV, this must be zero if not timeshifting and must point to begin of the timeshift buffer, otherwise. */
588 int64_t ptsEnd; /*!< @brief latest pts player can seek forward. Value is seconds, relative to ptsStart. For recordings, this must be the total length in seconds. For Live TV, this must be zero if not timeshifting and must point to end of the timeshift buffer, otherwise. */ 592 int64_t ptsEnd; /*!< @brief latest pts player can seek forward. Value is in micro seconds, relative to ptsStart. For recordings, this must be the total length. For Live TV, this must be zero if not timeshifting and must point to end of the timeshift buffer, otherwise. */
589 } ATTRIBUTE_PACKED PVR_STREAM_TIMES; 593 } ATTRIBUTE_PACKED PVR_STREAM_TIMES;
590 594
591 typedef struct AddonToKodiFuncTable_PVR 595 typedef struct AddonToKodiFuncTable_PVR
diff --git a/xbmc/interfaces/json-rpc/schema/version.txt b/xbmc/interfaces/json-rpc/schema/version.txt
index 94db005..e32fb7a 100644
--- a/xbmc/interfaces/json-rpc/schema/version.txt
+++ b/xbmc/interfaces/json-rpc/schema/version.txt
@@ -1 +1 @@
JSONRPC_VERSION 9.6.0 JSONRPC_VERSION 9.6.1