summaryrefslogtreecommitdiffstats
path: root/xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamCrypto.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamCrypto.h')
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/addon-instance/inputstream/StreamCrypto.h99
1 files changed, 99 insertions, 0 deletions
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 @@
1/*
2 * Copyright (C) 2005-2020 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#include "../../c-api/addon-instance/inputstream/stream_crypto.h"
12#include "../../AddonBase.h"
13
14#ifdef __cplusplus
15
16namespace kodi
17{
18namespace addon
19{
20
21class CInstanceInputStream;
22class InputstreamInfo;
23class VideoCodecInitdata;
24
25//==============================================================================
26/// @defgroup cpp_kodi_addon_inputstream_Defs_StreamEncryption_StreamCryptoSession class StreamCryptoSession
27/// @ingroup cpp_kodi_addon_inputstream_Defs_StreamEncryption
28/// @brief **Data to manage stream cryptography**\n
29/// This class structure manages any encryption values required in order to have
30/// them available in their stream processing.
31///
32/// Used on inputstream by @ref kodi::addon::InputstreamInfo::SetCryptoSession /
33/// @ref kodi::addon::InputstreamInfo::GetCryptoSession and are given to the
34/// used video codec to decrypt related data.
35///
36/// ----------------------------------------------------------------------------
37///
38/// @copydetails cpp_kodi_addon_inputstream_Defs_Info_StreamCryptoSession_Help
39///
40///@{
41class ATTRIBUTE_HIDDEN StreamCryptoSession
42 : public CStructHdl<StreamCryptoSession, STREAM_CRYPTO_SESSION>
43{
44 /*! \cond PRIVATE */
45 friend class CInstanceInputStream;
46 friend class InputstreamInfo;
47 friend class VideoCodecInitdata;
48 /*! \endcond */
49
50public:
51 /*! \cond PRIVATE */
52 StreamCryptoSession() { memset(m_cStructure, 0, sizeof(STREAM_CRYPTO_SESSION)); }
53 StreamCryptoSession(const StreamCryptoSession& session) : CStructHdl(session) {}
54 /*! \endcond */
55
56 /// @defgroup cpp_kodi_addon_inputstream_Defs_Info_StreamCryptoSession_Help Value Help
57 /// @ingroup cpp_kodi_addon_inputstream_Defs_Info_StreamCryptoSession
58 ///
59 /// <b>The following table contains values that can be set with @ref cpp_kodi_addon_inputstream_Defs_Info_StreamCryptoSession :</b>
60 /// | Name | Type | Set call | Get call
61 /// |------|------|----------|----------
62 /// | **Keysystem for encrypted media** | @ref STREAM_CRYPTO_KEY_SYSTEM | @ref StreamCryptoSession::SetKeySystem "SetKeySystem" | @ref StreamCryptoSession::GetKeySystem "GetKeySystem"
63 /// | **Flags for special conditions** | `uint8_t` | @ref StreamCryptoSession::SetFlags "SetFlags" | @ref StreamCryptoSession::GetFlags "GetFlags"
64 /// | **Crypto session key id** | `std::string` | @ref StreamCryptoSession::SetSessionId "SetSessionId" | @ref StreamCryptoSession::GetSessionId "GetSessionId"
65
66 /// @brief To set keysystem for encrypted media, @ref STREAM_CRYPTO_KEY_SYSTEM_NONE for
67 /// unencrypted media.
68 ///
69 /// See @ref STREAM_CRYPTO_KEY_SYSTEM for available options.
70 void SetKeySystem(STREAM_CRYPTO_KEY_SYSTEM keySystem) { m_cStructure->keySystem = keySystem; }
71
72 /// @brief Get keysystem for encrypted media.
73 STREAM_CRYPTO_KEY_SYSTEM GetKeySystem() const { return m_cStructure->keySystem; }
74
75 /// @brief Set bit flags to use special conditions, see @ref STREAM_CRYPTO_FLAGS
76 /// for available flags.
77 void SetFlags(uint8_t flags) { m_cStructure->flags = flags; }
78
79 /// @brief Get flags for special conditions.
80 uint8_t GetFlags() const { return m_cStructure->flags; }
81
82 /// @brief To set the crypto session key identifier.
83 void SetSessionId(const std::string& sessionId)
84 {
85 strncpy(m_cStructure->sessionId, sessionId.c_str(), sizeof(m_cStructure->sessionId) - 1);
86 }
87
88 /// @brief To get the crypto session key identifier.
89 std::string GetSessionId() const { return m_cStructure->sessionId; }
90
91private:
92 StreamCryptoSession(const STREAM_CRYPTO_SESSION* session) : CStructHdl(session) {}
93 StreamCryptoSession(STREAM_CRYPTO_SESSION* session) : CStructHdl(session) {}
94};
95
96} /* namespace addon */
97} /* namespace kodi */
98
99#endif /* __cplusplus */