xbmc
GameClientStreams.h
1 /*
2  * Copyright (C) 2018 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 "addons/kodi-dev-kit/include/kodi/addon-instance/Game.h"
12 #include "cores/RetroPlayer/streams/RetroPlayerStreamTypes.h"
13 
14 #include <map>
15 
16 namespace KODI
17 {
18 namespace RETRO
19 {
20 class IStreamManager;
21 }
22 
23 namespace GAME
24 {
25 
26 class CGameClient;
27 class IGameClientStream;
28 
30 {
31 public:
32  CGameClientStreams(CGameClient& gameClient);
33 
34  void Initialize(RETRO::IStreamManager& streamManager);
35  void Deinitialize();
36 
37  IGameClientStream* OpenStream(const game_stream_properties& properties);
38  void CloseStream(IGameClientStream* stream);
39 
40 private:
41  // Utility functions
42  std::unique_ptr<IGameClientStream> CreateStream(GAME_STREAM_TYPE streamType) const;
43 
44  // Construction parameters
45  CGameClient& m_gameClient;
46 
47  // Initialization parameters
48  RETRO::IStreamManager* m_streamManager = nullptr;
49 
50  // Stream parameters
51  std::map<IGameClientStream*, RETRO::StreamPtr> m_streams;
52 };
53 
54 } // namespace GAME
55 } // namespace KODI
Definition: IGameClientStream.h:25
Definition: IStreamManager.h:18
Interface between Kodi and Game add-ons.
Definition: GameClient.h:115
Controller configuration window.
Definition: AudioDecoder.h:18
Immutable stream metadata
Definition: game.h:482
Definition: GameClientStreams.h:29
GAME_STREAM_TYPE
Game stream types
Definition: game.h:457