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 
33 {
34 public:
35  CGameClientStreams(CGameClient& gameClient);
36 
37  void Initialize(RETRO::IStreamManager& streamManager);
38  void Deinitialize();
39 
40  IGameClientStream* OpenStream(const game_stream_properties& properties);
41  void CloseStream(IGameClientStream* stream);
42 
43 private:
44  // Utility functions
45  std::unique_ptr<IGameClientStream> CreateStream(GAME_STREAM_TYPE streamType) const;
46 
47  // Construction parameters
48  CGameClient& m_gameClient;
49 
50  // Initialization parameters
51  RETRO::IStreamManager* m_streamManager = nullptr;
52 
53  // Stream parameters
54  std::map<IGameClientStream*, RETRO::StreamPtr> m_streams;
55 };
56 
57 } // namespace GAME
58 } // namespace KODI
Definition: IGameClientStream.h:28
Definition: IStreamManager.h:18
Interface between Kodi and Game add-ons.
Definition: GameClient.h:116
Definition: AudioDecoder.h:18
Immutable stream metadata
Definition: game.h:482
Definition: GameClientStreams.h:32
GAME_STREAM_TYPE
Game stream types
Definition: game.h:457