From 3cb8aa05f8cee9e860cf83531682ff0ed4af6a4f Mon Sep 17 00:00:00 2001 From: manuel Date: Thu, 4 Mar 2021 23:36:40 +0100 Subject: sync with upstream --- .../kodi/addon-instance/inputstream/CMakeLists.txt | 8 ++ .../kodi/addon-instance/inputstream/DemuxPacket.h | 12 +++ .../kodi/addon-instance/inputstream/StreamCodec.h | 11 +++ .../addon-instance/inputstream/StreamConstants.h | 11 +++ .../kodi/addon-instance/inputstream/StreamCrypto.h | 99 ++++++++++++++++++++++ .../addon-instance/inputstream/TimingConstants.h | 59 +++++++++++++ 6 files changed, 200 insertions(+) create mode 100644 xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/CMakeLists.txt create mode 100644 xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/DemuxPacket.h create mode 100644 xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamCodec.h create mode 100644 xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamConstants.h create mode 100644 xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamCrypto.h create mode 100644 xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/TimingConstants.h (limited to 'xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream') diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/CMakeLists.txt b/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/CMakeLists.txt new file mode 100644 index 0000000..a551b4b --- /dev/null +++ b/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/CMakeLists.txt @@ -0,0 +1,8 @@ +set(HEADERS DemuxPacket.h + StreamCodec.h + StreamConstants.h + TimingConstants.h) + +if(NOT ENABLE_STATIC_LIBS) + core_add_library(addons_kodi-dev-kit_include_kodi_addon-instance_inputstream) +endif() diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/DemuxPacket.h b/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/DemuxPacket.h new file mode 100644 index 0000000..f965b9f --- /dev/null +++ b/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/DemuxPacket.h @@ -0,0 +1,12 @@ +/* + * Copyright (C) 2005-2020 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +#include "TimingConstants.h" +#include "../../c-api/addon-instance/inputstream/demux_packet.h" diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamCodec.h b/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamCodec.h new file mode 100644 index 0000000..e80e2ca --- /dev/null +++ b/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamCodec.h @@ -0,0 +1,11 @@ +/* + * Copyright (C) 2005-2020 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +#include "../../c-api/addon-instance/inputstream/stream_codec.h" diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamConstants.h b/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamConstants.h new file mode 100644 index 0000000..200631b --- /dev/null +++ b/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamConstants.h @@ -0,0 +1,11 @@ +/* + * Copyright (C) 2005-2020 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +#include "../../c-api/addon-instance/inputstream/stream_constants.h" diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamCrypto.h b/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamCrypto.h new file mode 100644 index 0000000..8a85121 --- /dev/null +++ b/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamCrypto.h @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2005-2020 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +#include "../../c-api/addon-instance/inputstream/stream_crypto.h" +#include "../../AddonBase.h" + +#ifdef __cplusplus + +namespace kodi +{ +namespace addon +{ + +class CInstanceInputStream; +class InputstreamInfo; +class VideoCodecInitdata; + +//============================================================================== +/// @defgroup cpp_kodi_addon_inputstream_Defs_StreamEncryption_StreamCryptoSession class StreamCryptoSession +/// @ingroup cpp_kodi_addon_inputstream_Defs_StreamEncryption +/// @brief **Data to manage stream cryptography**\n +/// This class structure manages any encryption values required in order to have +/// them available in their stream processing. +/// +/// Used on inputstream by @ref kodi::addon::InputstreamInfo::SetCryptoSession / +/// @ref kodi::addon::InputstreamInfo::GetCryptoSession and are given to the +/// used video codec to decrypt related data. +/// +/// ---------------------------------------------------------------------------- +/// +/// @copydetails cpp_kodi_addon_inputstream_Defs_Info_StreamCryptoSession_Help +/// +///@{ +class ATTRIBUTE_HIDDEN StreamCryptoSession + : public CStructHdl +{ + /*! \cond PRIVATE */ + friend class CInstanceInputStream; + friend class InputstreamInfo; + friend class VideoCodecInitdata; + /*! \endcond */ + +public: + /*! \cond PRIVATE */ + StreamCryptoSession() { memset(m_cStructure, 0, sizeof(STREAM_CRYPTO_SESSION)); } + StreamCryptoSession(const StreamCryptoSession& session) : CStructHdl(session) {} + /*! \endcond */ + + /// @defgroup cpp_kodi_addon_inputstream_Defs_Info_StreamCryptoSession_Help Value Help + /// @ingroup cpp_kodi_addon_inputstream_Defs_Info_StreamCryptoSession + /// + /// The following table contains values that can be set with @ref cpp_kodi_addon_inputstream_Defs_Info_StreamCryptoSession : + /// | Name | Type | Set call | Get call + /// |------|------|----------|---------- + /// | **Keysystem for encrypted media** | @ref STREAM_CRYPTO_KEY_SYSTEM | @ref StreamCryptoSession::SetKeySystem "SetKeySystem" | @ref StreamCryptoSession::GetKeySystem "GetKeySystem" + /// | **Flags for special conditions** | `uint8_t` | @ref StreamCryptoSession::SetFlags "SetFlags" | @ref StreamCryptoSession::GetFlags "GetFlags" + /// | **Crypto session key id** | `std::string` | @ref StreamCryptoSession::SetSessionId "SetSessionId" | @ref StreamCryptoSession::GetSessionId "GetSessionId" + + /// @brief To set keysystem for encrypted media, @ref STREAM_CRYPTO_KEY_SYSTEM_NONE for + /// unencrypted media. + /// + /// See @ref STREAM_CRYPTO_KEY_SYSTEM for available options. + void SetKeySystem(STREAM_CRYPTO_KEY_SYSTEM keySystem) { m_cStructure->keySystem = keySystem; } + + /// @brief Get keysystem for encrypted media. + STREAM_CRYPTO_KEY_SYSTEM GetKeySystem() const { return m_cStructure->keySystem; } + + /// @brief Set bit flags to use special conditions, see @ref STREAM_CRYPTO_FLAGS + /// for available flags. + void SetFlags(uint8_t flags) { m_cStructure->flags = flags; } + + /// @brief Get flags for special conditions. + uint8_t GetFlags() const { return m_cStructure->flags; } + + /// @brief To set the crypto session key identifier. + void SetSessionId(const std::string& sessionId) + { + strncpy(m_cStructure->sessionId, sessionId.c_str(), sizeof(m_cStructure->sessionId) - 1); + } + + /// @brief To get the crypto session key identifier. + std::string GetSessionId() const { return m_cStructure->sessionId; } + +private: + StreamCryptoSession(const STREAM_CRYPTO_SESSION* session) : CStructHdl(session) {} + StreamCryptoSession(STREAM_CRYPTO_SESSION* session) : CStructHdl(session) {} +}; + +} /* namespace addon */ +} /* namespace kodi */ + +#endif /* __cplusplus */ diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/TimingConstants.h b/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/TimingConstants.h new file mode 100644 index 0000000..22f8952 --- /dev/null +++ b/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/TimingConstants.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2005-2020 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +#include "../../c-api/addon-instance/inputstream/timing_constants.h" + +#ifdef __cplusplus + +// Unset the on timing_constants.h given defines +#undef STREAM_TIME_TO_MSEC +#undef STREAM_SEC_TO_TIME +#undef STREAM_MSEC_TO_TIME + +/// @ingroup cpp_kodi_addon_inputstream_Defs_TimingConstants +/// @brief Converts a stream time to milliseconds as an integer value. +/// +/// @param[in] x Stream time +/// @return Milliseconds +/// +/// @note Within "C" code this is used as `#define`. +/// +constexpr int STREAM_TIME_TO_MSEC(double x) +{ + return static_cast(x * 1000 / STREAM_TIME_BASE); +} + +/// @ingroup cpp_kodi_addon_inputstream_Defs_TimingConstants +/// @brief Converts a time in seconds to the used stream time format. +/// +/// @param[in] x Seconds +/// @return Stream time +/// +/// @note Within "C" code this is used as `#define`. +/// +constexpr double STREAM_SEC_TO_TIME(double x) +{ + return x * STREAM_TIME_BASE; +} + +/// @ingroup cpp_kodi_addon_inputstream_Defs_TimingConstants +/// @brief Converts a time in milliseconds to the used stream time format. +/// +/// @param[in] x Milliseconds +/// @return Stream time +/// +/// @note Within "C" code this is used as `#define`. +/// +constexpr double STREAM_MSEC_TO_TIME(double x) +{ + return x * STREAM_TIME_BASE / 1000; +} + +#endif /* __cplusplus */ -- cgit v1.2.3