From 483c0b88bfc1b798396c31a4dd2f5239399ce59e Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 15 Oct 2018 01:14:02 +0200 Subject: sync with upstream --- cmake/KodiConfig.cmake.in | 10 ++--- cmake/README.md | 20 +++++++++ cmake/addons/README.md | 22 +--------- cmake/addons/depends/README | 35 ++-------------- cmake/installdata/common/addons.txt | 1 + cmake/modules/FindNFS.cmake | 19 +++------ cmake/scripts/android/Install.cmake | 1 + cmake/scripts/common/AddonHelpers.cmake | 30 ++++++++------ cmake/scripts/common/PrepareEnv.cmake | 47 ++++++++++++++++++++++ cmake/scripts/ios/ArchSetup.cmake | 9 +++-- cmake/treedata/common/retroplayer.txt | 1 + version.txt | 6 +-- .../include/kodi/addon-instance/Inputstream.h | 31 ++++++++++++++ .../include/kodi/addon-instance/Peripheral.h | 15 ++++--- .../include/kodi/kodi_game_dll.h | 5 ++- .../kodi-addon-dev-kit/include/kodi/libKODI_game.h | 2 +- .../kodi-addon-dev-kit/include/kodi/versions.h | 4 +- .../kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h | 8 ++-- .../include/kodi/xbmc_pvr_types.h | 12 ++++-- xbmc/interfaces/json-rpc/schema/version.txt | 2 +- 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) string(REPLACE ";" " " ARCH_DEFINES "@ARCH_DEFINES@") add_definitions(${ARCH_DEFINES} -DBUILD_KODI_ADDON) -if(NOT CORE_SYSTEM_NAME) - if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") - set(CORE_SYSTEM_NAME "osx") - else() - string(TOLOWER ${CMAKE_SYSTEM_NAME} CORE_SYSTEM_NAME) - endif() -endif() +set(CORE_SYSTEM_NAME @CORE_SYSTEM_NAME@) +set(PLATFORM @CORE_SYSTEM_NAME@) +set(PLATFORM_TAG @PLATFORM_TAG@) include(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 ... Unfortunately, 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)**. +## Buildsystem variables +The buildsystem uses the following variables (which can be passed into it when executing cmake with the -D`=` format) to manipulate the build process (see READMEs in sub-directories for additional variables): +- `CMAKE_BUILD_TYPE` specifies the type of the build. This can be either *Debug* or *Release* (default is *Release*) +- `CMAKE_TOOLCHAIN_FILE` can be used to pass a toolchain file +- `ARCH_DEFINES` specifies the platform-specific C/C++ preprocessor defines (defaults to empty) + +## Building +To trigger the cmake-based buildsystem the following command must be executed with `` set to this directory (absolute or relative) allowing for in-source and out-of-source builds + +`cmake -G ` + +CMake supports multiple generators. See [here] (https://cmake.org/cmake/help/v3.1/manual/cmake-generators.7.html) for a list. + +In case of additional options the call might look like this: + +cmake `` [-G ``] \ + -DCMAKE_BUILD_TYPE=Release \ + -DARCH_DEFINES="-DTARGET_LINUX" \ + -DCMAKE_INSTALL_PREFIX="`=` format) to manipulate the build process: +The buildsystem uses the following addon-related variables (which can be passed into it when executing cmake with the -D`=` format) to manipulate the build process: - `ADDONS_TO_BUILD` has two variations, which are tested in order: - a quoted, space delimited list of `s` that you want to build (default is *all*) - a regular expression that every `` is matched against (e.g. `ADDONS_TO_BUILD="pvr.*"`) to build all pvr add-ons - `ADDONS_DEFINITION_DIR` points to the directory containing the definitions for the addons to be built - `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. `` will be appended to this path automatically -- `CMAKE_BUILD_TYPE` specifies the type of the build. This can be either *Debug* or *Release* (default is *Release*) - `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 ``) -- `CMAKE_TOOLCHAIN_FILE` can be used to pass a toolchain file into the add-on builds - `ADDON_DEPENDS_PATH` points to the directory containing the *include* and *lib* directories of the add-ons' dependencies. - `CORE_SOURCE_DIR` points to the root directory of the project (default is the absolute representation of ../../.. starting from this directory) - `BUILD_DIR` points to the directory where the add-ons and their dependencies will be downloaded and built - `PACKAGE_ZIP=ON` means that the add-ons will be 'packaged' into a common folder, rather than being placed in `/lib/kodi/addons` and `/share/kodi/addons` - `PACKAGE_DIR` points to the directory where the ZIP archived add-ons will be stored after they have been packaged (defaults to `/zips`) -- `ARCH_DEFINES` specifies the platform-specific C/C++ preprocessor defines (defaults to empty) - `ADDON_TARBALL_CACHING` specifies whether downloaded add-on source tarballs should be cached or not (defaults to *ON*) ## Deprecated buildsystem variables @@ -47,19 +44,4 @@ Buildsystem will print a warning if you use any of the below-listed variables. F ## Building The buildsystem makes some assumptions about the environment which must be met by whoever uses it: -- 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 `` (in *include* and *lib* sub-directories) - -To trigger the cmake-based buildsystem the following command must be executed with `` set to this directory (absolute or relative) allowing for in-source and out-of-source builds - -`cmake -G ` - -CMake supports multiple generators. See [here] (https://cmake.org/cmake/help/v3.1/manual/cmake-generators.7.html) for a list. - -In case of additional options the call might look like this: - -cmake `` [-G ``] \ - -DCMAKE_BUILD_TYPE=Release \ - -DCORE_SOURCE_DIR="``" \ - -DARCH_DEFINES="-DTARGET_LINUX" \ - -DADDON_DEPENDS_PATH=`` \ - -DCMAKE_INSTALL_PREFIX="`` (in *include* and *lib* sub-directories) \ No newline at end of file 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: * flags.txt: additional build flags * deps.txt: whitespace separated list of dependencies of this dependency -The buildsystem uses the following variables (which can be passed into it when -executing cmake with the -D= option) to e.g. access -specific paths: - * CMAKE_BUILD_TYPE specifies the type of the build. This can be either "Debug" - or "Release" (default is "Release"). - * CMAKE_TOOLCHAIN_FILE can be used to pass a toolchain file into the add-on - builds. - * CORE_SYSTEM_NAME is the name of the platform (e.g. "linux" or "android") in - lower-case (defaults to lowercase(CMAKE_SYSTEM_NAME)). - * CORE_SOURCE_DIR points to the root directory of the project (default is the - absolute representation of ../../.. starting from this directory). - * ADDON_DEPENDS_PATH points to the directory where the built dependencies - (their include and library file) will be installed to. - * ARCH_DEFINES specifies the platform-specific C/C++ preprocessor defines - (defaults to empty). +The buildsystem uses the following depends-related variables (which can be passed +into it when executing cmake with the -D= option) to e.g. +access specific paths: * DEPENDS_TO_BUILD is a quoted, space delimited list of s that you want to build (default is "all"). - -To trigger the cmake-based buildsystem the following command must be executed -with being the path to this directory (absolute or relative, allowing for -in-source and out-of-source builds). - - cmake -G - -cmake supports multiple generators, see -http://www.cmake.org/cmake/help/v2.8.8/cmake.html#section_Generators for a list. - -In case of additional options the call might look like this - - cmake [-G ] \ - -DCMAKE_BUILD_TYPE=Release \ - -DCORE_SOURCE_DIR="" \ - -DARCH_DEFINES="-DTARGET_LINUX" \ - -DCMAKE_INSTALL_PREFIX="\@PLATFORM\@" "@PLATFORM_TAG@" addon_file "${addon_file}") + string(CONFIGURE "${addon_file}" addon_file_conf @ONLY) file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${target}/addon.xml CONTENT "${addon_file_conf}") if(${APP_NAME_UC}_BUILD_DIR) @@ -209,7 +211,6 @@ macro (build_addon target prefix libs) # if there's an settings.xml.in we need to generate the settings.xml if(EXISTS ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml.in) set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml.in) - set(PLATFORM ${CORE_SYSTEM_NAME}) file(READ ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml.in settings_file) string(CONFIGURE "${settings_file}" settings_file_conf @ONLY) @@ -234,10 +235,10 @@ macro (build_addon target prefix libs) endif() set(CPACK_ARCHIVE_COMPONENT_INSTALL ON) set(CPACK_COMPONENTS_IGNORE_GROUPS 1) - list(APPEND CPACK_COMPONENTS_ALL ${target}-${${prefix}_VERSION}) + list(APPEND CPACK_COMPONENTS_ALL ${target}-${${prefix}_VERSION}-${PLATFORM_TAG}) # Pack files together to create an archive install(DIRECTORY ${target} ${CMAKE_CURRENT_BINARY_DIR}/${target} DESTINATION ./ - COMPONENT ${target}-${${prefix}_VERSION} + COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG} REGEX ".+\\.xml\\.in(clude)?$" EXCLUDE) if(WIN32) if(NOT CPACK_PACKAGE_DIRECTORY) @@ -256,21 +257,24 @@ macro (build_addon target prefix libs) if(${prefix}_SOURCES) # install the generated DLL file install(PROGRAMS ${LIBRARY_LOCATION} DESTINATION ${target} - COMPONENT ${target}-${${prefix}_VERSION}) + COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG}) # for debug builds also install the PDB file install(FILES $ DESTINATION ${target} CONFIGURATIONS Debug RelWithDebInfo - COMPONENT ${target}-${${prefix}_VERSION}) + COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG}) endif() if(${prefix}_CUSTOM_BINARY) - install(FILES ${LIBRARY_LOCATION} DESTINATION ${target} RENAME ${LIBRARY_FILENAME}) + install(FILES ${LIBRARY_LOCATION} DESTINATION ${target} RENAME ${LIBRARY_FILENAME} + COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG}) endif() if(${prefix}_CUSTOM_DATA) - install(DIRECTORY ${${prefix}_CUSTOM_DATA} DESTINATION ${target}/resources) + install(DIRECTORY ${${prefix}_CUSTOM_DATA} DESTINATION ${target}/resources + COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG}) endif() if(${prefix}_ADDITIONAL_BINARY) - install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${target}) + install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${target} + COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG}) endif() else() # NOT WIN32 if(NOT CPACK_PACKAGE_DIRECTORY) @@ -278,11 +282,11 @@ macro (build_addon target prefix libs) endif() if(${prefix}_SOURCES) install(TARGETS ${target} DESTINATION ${target} - COMPONENT ${target}-${${prefix}_VERSION}) + COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG}) endif() if(${prefix}_CUSTOM_BINARY) install(FILES ${LIBRARY_LOCATION} DESTINATION ${target} RENAME ${LIBRARY_FILENAME} - COMPONENT ${target}-${${prefix}_VERSION}) + COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG}) endif() if(${prefix}_CUSTOM_DATA) 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) endif() endif() +if(NOT CORE_SYSTEM_NAME) + if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") + set(CORE_SYSTEM_NAME "osx") + else() + string(TOLOWER ${CMAKE_SYSTEM_NAME} CORE_SYSTEM_NAME) + endif() +endif() + +set(PLATFORM_TAG ${CORE_SYSTEM_NAME}) + +if(CORE_SYSTEM_NAME STREQUAL android) + if (CPU MATCHES "v7a") + set(PLATFORM_TAG ${PLATFORM_TAG}-armv7) + elseif (CPU MATCHES "arm64") + set(PLATFORM_TAG ${PLATFORM_TAG}-aarch64) + elseif (CPU MATCHES "i686") + set(PLATFORM_TAG ${PLATFORM_TAG}-i686) + else() + message(FATAL_ERROR "Unsupported architecture") + endif() +elseif(CORE_SYSTEM_NAME STREQUAL ios) + if (CPU MATCHES armv7) + set(PLATFORM_TAG ${PLATFORM_TAG}-armv7) + elseif (CPU MATCHES arm64) + set(PLATFORM_TAG ${PLATFORM_TAG}-aarch64) + else() + message(FATAL_ERROR "Unsupported architecture") + endif() +elseif(CORE_SYSTEM_NAME STREQUAL osx) + set(PLATFORM_TAG ${PLATFORM_TAG}-${CPU}) +elseif(CORE_SYSTEM_NAME STREQUAL windows) + include(CheckSymbolExists) + check_symbol_exists(_X86_ "Windows.h" _X86_) + check_symbol_exists(_AMD64_ "Windows.h" _AMD64_) + + if(_X86_) + set(PLATFORM_TAG ${PLATFORM_TAG}-i686) + elseif(_AMD64_) + set(PLATFORM_TAG ${PLATFORM_TAG}-x86_64) + else() + message(FATAL_ERROR "Unsupported architecture") + endif() + + unset(_X86_) + unset(_AMD64_) +endif() + # generate the proper KodiConfig.cmake file configure_file(${CORE_SOURCE_DIR}/cmake/KodiConfig.cmake.in ${APP_LIB_DIR}/KodiConfig.cmake @ONLY) 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) if(WITH_ARCH) set(ARCH ${WITH_ARCH}) else() - if(CPU STREQUAL armv7 OR CPU STREQUAL arm64) + if(CPU STREQUAL armv7) set(CMAKE_OSX_ARCHITECTURES ${CPU}) - set(ARCH arm-osx) + set(ARCH arm) + set(NEON True) + elseif(CPU STREQUAL arm64) + set(CMAKE_OSX_ARCHITECTURES ${CPU}) + set(ARCH aarch64) set(NEON True) else() message(SEND_ERROR "Unknown CPU: ${CPU}") @@ -36,7 +40,6 @@ list(APPEND DEPLIBS "-framework CoreFoundation" "-framework CoreVideo" "-framework CoreMedia" "-framework AVFoundation" "-framework VideoToolbox") -set(ENABLE_DVDCSS OFF CACHE BOOL "" FORCE) set(ENABLE_OPTICAL OFF CACHE BOOL "" FORCE) set(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 xbmc/cores/RetroPlayer/buffers/video cores/RetroPlayer/buffers/video xbmc/cores/RetroPlayer/guibridge cores/RetroPlayer/guibridge xbmc/cores/RetroPlayer/guicontrols cores/RetroPlayer/guicontrols +xbmc/cores/RetroPlayer/guiplayback cores/RetroPlayer/guiplayback xbmc/cores/RetroPlayer/guiwindows cores/RetroPlayer/guiwindows xbmc/cores/RetroPlayer/playback cores/RetroPlayer/playback xbmc/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 WEBSITE http://kodi.tv VERSION_MAJOR 18 VERSION_MINOR 0 -VERSION_TAG BETA2 -VERSION_CODE 17.99.802 -ADDON_API 17.9.802 +VERSION_TAG BETA4 +VERSION_CODE 17.99.804 +ADDON_API 17.9.804 APP_PACKAGE org.xbmc.kodi PACKAGE_IDENTITY XBMCFoundation.Kodi PACKAGE_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" { FLAG_HEARING_IMPAIRED = 0x0080, FLAG_VISUAL_IMPAIRED = 0x0100 }; + + enum INPUTSTREAM_COLORSPACE + { + COLORSPACE_UNKNOWN, + COLORSPACE_BT709, + COLORSPACE_BT470M, + COLORSPACE_BT470BG, + COLORSPACE_SMPTE170M, + COLORSPACE_SMPTE240M, + COLORSPACE_FILM, + COLORSPACE_BT2020, + COLORSPACE_SMPTE428, + COLORSPACE_SMPTEST428_1, + COLORSPACE_SMPTE431, + COLORSPACE_SMPTE432, + COLORSPACE_JEDEC_P22 + }; + + enum INPUTSTREAM_COLORRANGE + { + COLORRANGE_UNKNOWN, + COLORRANGE_LIMITED, + COLORRANGE_FULLRANGE + }; + uint32_t m_flags; char m_name[256]; /*!< @brief (optinal) name of the stream, \0 for default handling */ @@ -139,6 +164,7 @@ extern "C" { unsigned int m_Width; /*!< @brief width of the stream reported by the demuxer */ float m_Aspect; /*!< @brief display aspect of stream */ + unsigned int m_Channels; /*!< @brief (required) amount of channels */ unsigned int m_SampleRate; /*!< @brief (required) sample rate */ unsigned int m_BitRate; /*!< @brief (required) bit rate */ @@ -146,6 +172,11 @@ extern "C" { unsigned int m_BlockAlign; CRYPTO_INFO m_cryptoInfo; + + // new in API version 2.0.8 + unsigned int m_codecFourCC; /*!< @brief Codec If available, the fourcc code codec */ + INPUTSTREAM_COLORSPACE m_colorSpace; /*!< @brief definition of colorspace */ + INPUTSTREAM_COLORRANGE m_colorRange; /*!< @brief color range if available */ }; 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 virtual void FreeEvents(unsigned int event_count, PERIPHERAL_EVENT* events) { } /*! - * @brief Send an input event to the specified peripheral - * @param peripheralIndex The index of the device receiving the input event + * @brief Send an input event to the peripheral * @param event The input event * @return true if the event was handled, false otherwise */ @@ -677,9 +676,9 @@ namespace addon * @param[optional] deviceName The name of the device to refresh, or empty/null for all devices * @param[optional] controllerId The controller ID to refresh, or empty/null for all controllers */ - void RefreshButtonMaps(const std::string& strDeviceName = "", const std::string& strControllerId = "") + void RefreshButtonMaps(const std::string& deviceName = "", const std::string& controllerId = "") { - return m_instanceData->toKodi.refresh_button_maps(m_instanceData->toKodi.kodiInstance, strDeviceName.c_str(), strControllerId.c_str()); + return m_instanceData->toKodi.refresh_button_maps(m_instanceData->toKodi.kodiInstance, deviceName.c_str(), controllerId.c_str()); } /*! @@ -690,9 +689,9 @@ namespace addon * * @return The number of features matching the request parameters */ - unsigned int FeatureCount(const std::string& strControllerId, JOYSTICK_FEATURE_TYPE type = JOYSTICK_FEATURE_TYPE_UNKNOWN) + unsigned int FeatureCount(const std::string& controllerId, JOYSTICK_FEATURE_TYPE type = JOYSTICK_FEATURE_TYPE_UNKNOWN) { - return m_instanceData->toKodi.feature_count(m_instanceData->toKodi.kodiInstance, strControllerId.c_str(), type); + return m_instanceData->toKodi.feature_count(m_instanceData->toKodi.kodiInstance, controllerId.c_str(), type); } /*! @@ -704,9 +703,9 @@ namespace addon * @return The type of the specified feature, or JOYSTICK_FEATURE_TYPE_UNKNOWN * if unknown */ - JOYSTICK_FEATURE_TYPE FeatureType(const std::string& strControllerId, const std::string &featureName) + JOYSTICK_FEATURE_TYPE FeatureType(const std::string& controllerId, const std::string &featureName) { - return m_instanceData->toKodi.feature_type(m_instanceData->toKodi.kodiInstance, strControllerId.c_str(), featureName.c_str()); + return m_instanceData->toKodi.feature_type(m_instanceData->toKodi.kodiInstance, controllerId.c_str(), featureName.c_str()); } 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); /*! * \brief Get timing information about the loaded game * - * \param info The info structure to fill + * \param[out] timing_info The info structure to fill * * \return the error, or GAME_ERROR_NO_ERROR if info was filled */ @@ -176,8 +176,9 @@ bool EnableMouse(bool enable, const game_controller* controller); * \brief Connect/disconnect a controller to a port on the virtual game console * * \param connect True to connect a controller, false to disconnect - * \param address The address of the port + * \param port_address The address of the port * \param controller The controller info if connecting, or unused if disconnecting + * \return True if the \p controller was (dis-)connected to the port, false otherwise * * The address is a string that allows traversal of the controller topology. * 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: /*! * \brief Get a symbol from the hardware context * - * \param symbol The symbol's name + * \param sym The symbol's name * * \return A function pointer for the specified symbol */ 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 @@ #define ADDON_INSTANCE_VERSION_IMAGEDECODER_XML_ID "kodi.binary.instance.imagedecoder" #define ADDON_INSTANCE_VERSION_IMAGEDECODER_DEPENDS "addon-instance/ImageDecoder.h" -#define ADDON_INSTANCE_VERSION_INPUTSTREAM "2.0.7" +#define ADDON_INSTANCE_VERSION_INPUTSTREAM "2.0.8" #define ADDON_INSTANCE_VERSION_INPUTSTREAM_MIN "2.0.7" #define ADDON_INSTANCE_VERSION_INPUTSTREAM_XML_ID "kodi.binary.instance.inputstream" #define ADDON_INSTANCE_VERSION_INPUTSTREAM_DEPENDS "addon-instance/Inputstream.h" @@ -98,7 +98,7 @@ #define ADDON_INSTANCE_VERSION_PERIPHERAL_DEPENDS "addon-instance/Peripheral.h" \ "addon-instance/PeripheralUtils.h" -#define ADDON_INSTANCE_VERSION_PVR "5.10.1" +#define ADDON_INSTANCE_VERSION_PVR "5.10.3" #define ADDON_INSTANCE_VERSION_PVR_MIN "5.10.0" #define ADDON_INSTANCE_VERSION_PVR_XML_ID "kodi.binary.instance.pvr" #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" /*! * Set the last watched position of a recording on the backend. * @param recording The recording. - * @param position The last watched position in seconds + * @param lastplayedposition The last watched position in seconds * @return PVR_ERROR_NO_ERROR if the position has been stored successfully. * @remarks Required if bSupportsLastPlayedPosition is set to true. * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. @@ -483,7 +483,7 @@ extern "C" /*! * Get the stream properties for a recording from the backend. - * @param[in] channel The recording to get the stream properties for. + * @param[in] recording The recording to get the stream properties for. * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream. * @param[inout] iPropertiesCount in: the size of the properties array, out: the number of properties returned. * @return PVR_ERROR_NO_ERROR if the stream is available. @@ -676,7 +676,9 @@ extern "C" void OnPowerSavingDeactivated(); /*! - * Get stream times. Intermediate, will be moved to inputstream + * Get stream times. + * @param times A pointer to the data to be filled by the implementation. + * @return PVR_ERROR_NO_ERROR on success. */ PVR_ERROR GetStreamTimes(PVR_STREAM_TIMES *times); 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" { 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 */ 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 */ 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 */ + const unsigned int PVR_TIMER_TYPE_SUPPORTS_READONLY_DELETE = 0x04000000; /*!< @brief this type allows deletion of an otherwise read-only timer */ /*! * @brief PVR timer weekdays (PVR_TIMER.iWeekdays values) @@ -312,6 +313,9 @@ extern "C" { 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. */ 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 */ + + // TODO: cleanup: move this member up after the other bools with the next incompatible pvr addon api change. + bool bSupportsAsyncEPGTransfer; /*!< @brief true if this addon-on supports asynchronous transfer of epg events to Kodi using the callback function EpgEventStateChange. */ } ATTRIBUTE_PACKED PVR_ADDON_CAPABILITIES; /*! @@ -501,7 +505,7 @@ extern "C" { int iMaxRecordings; /*!< @brief (optional) maximum number of recordings this timer shall create. > 0 number of recordings, < 0 addon defined integer list reference, == 0 disabled */ unsigned int iRecordingGroup; /*!< @brief (optional) integer ref to addon/backend defined list of recording groups*/ time_t firstDay; /*!< @brief (optional) the first day this timer is active, for repeating timers */ - unsigned int iWeekdays; /*!< @brief (optional) week days, for repeating timers */ + unsigned int iWeekdays; /*!< @brief (optional) week days, for repeating timers (see PVR_WEEKDAY_* constant values) */ 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 duplicate detection is defined by the backend. Addons may define own values for different duplicate detection algorithms, thus this is not just a bool.*/ 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" { char strPlot[PVR_ADDON_DESC_STRING_LENGTH]; /*!< @brief (optional) plot */ char strGenreDescription[PVR_ADDON_DESC_STRING_LENGTH]; /*!< @brief (optional) genre. Will be used only when iGenreType = EPG_GENRE_USE_STRING */ char strChannelName[PVR_ADDON_NAME_STRING_LENGTH]; /*!< @brief (optional) channel name */ - char strIconPath[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) icon path */ + char strIconPath[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) channel logo (icon) path */ char strThumbnailPath[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) thumbnail path */ char strFanartPath[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) fanart path */ time_t recordingTime; /*!< @brief (optional) start time of the recording */ @@ -584,8 +588,8 @@ extern "C" { { 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. */ int64_t ptsStart; /*!< @brief the pts of startTime */ - 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. */ - 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. */ + 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. */ + 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. */ } ATTRIBUTE_PACKED PVR_STREAM_TIMES; 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 -- cgit v1.2.3