xbmc
StreamCrypto.h
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 "../../AddonBase.h"
12 #include "../../c-api/addon-instance/inputstream/stream_crypto.h"
13 
14 #ifdef __cplusplus
15 
16 namespace kodi
17 {
18 namespace addon
19 {
20 
21 class CInstanceInputStream;
22 class InputstreamInfo;
23 class VideoCodecInitdata;
24 
25 //==============================================================================
41 class ATTR_DLL_LOCAL StreamCryptoSession
42  : public CStructHdl<StreamCryptoSession, STREAM_CRYPTO_SESSION>
43 {
45  friend class CInstanceInputStream;
46  friend class InputstreamInfo;
47  friend class VideoCodecInitdata;
50 public:
52  StreamCryptoSession() { memset(m_cStructure, 0, sizeof(STREAM_CRYPTO_SESSION)); }
53  StreamCryptoSession(const StreamCryptoSession& session) : CStructHdl(session) {}
54  StreamCryptoSession& operator=(const StreamCryptoSession&) = default;
57 
71  void SetKeySystem(STREAM_CRYPTO_KEY_SYSTEM keySystem) { m_cStructure->keySystem = keySystem; }
72 
74  STREAM_CRYPTO_KEY_SYSTEM GetKeySystem() const { return m_cStructure->keySystem; }
75 
78  void SetFlags(uint8_t flags) { m_cStructure->flags = flags; }
79 
81  uint8_t GetFlags() const { return m_cStructure->flags; }
82 
84  void SetSessionId(const std::string& sessionId)
85  {
86  strncpy(m_cStructure->sessionId, sessionId.c_str(), sizeof(m_cStructure->sessionId) - 1);
87  }
88 
90  std::string GetSessionId() const { return m_cStructure->sessionId; }
91 
92 private:
93  StreamCryptoSession(const STREAM_CRYPTO_SESSION* session) : CStructHdl(session) {}
94  StreamCryptoSession(STREAM_CRYPTO_SESSION* session) : CStructHdl(session) {}
95 };
96 
97 } /* namespace addon */
98 } /* namespace kodi */
99 
100 #endif /* __cplusplus */
Definition: stream_crypto.h:120
STREAM_CRYPTO_KEY_SYSTEM
Definition: stream_crypto.h:33