Merge pull request #26287 from CrystalP/ref-savefilestatejob
[xbmc.git] / xbmc / cores / RetroPlayer / streams / RetroPlayerRendering.h
blob52f0b42de1ad1ffca14213fedd0652e5bc1e2a7c
1 /*
2 * Copyright (C) 2017-2024 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8 #pragma once
10 #include "IRetroPlayerStream.h"
11 #include "RetroPlayerStreamTypes.h"
13 #include <stdint.h>
15 extern "C"
17 #include <libavutil/pixfmt.h>
20 //! @todo RetroPlayer needs an abstraction for GAME_HW_CONTEXT_TYPE
21 #include "addons/kodi-dev-kit/include/kodi/c-api/addon-instance/game.h"
23 namespace KODI
25 namespace RETRO
27 class CRPProcessInfo;
28 class CRPRenderManager;
30 struct HwFramebufferProperties : public StreamProperties
32 HwFramebufferProperties(GAME_HW_CONTEXT_TYPE contextType,
33 bool depth,
34 bool stencil,
35 bool bottomLeftOrigin,
36 unsigned int versionMajor,
37 unsigned int versionMinor,
38 bool cacheContext,
39 bool debugContext)
40 : contextType(contextType),
41 depth(depth),
42 stencil(stencil),
43 bottomLeftOrigin(bottomLeftOrigin),
44 versionMajor(versionMajor),
45 versionMinor(versionMinor),
46 cacheContext(cacheContext),
47 debugContext(debugContext)
51 GAME_HW_CONTEXT_TYPE contextType;
52 bool depth;
53 bool stencil;
54 bool bottomLeftOrigin;
55 unsigned int versionMajor;
56 unsigned int versionMinor;
57 bool cacheContext;
58 bool debugContext;
61 struct HwFramebufferBuffer : public StreamBuffer
63 HwFramebufferBuffer() = default;
64 HwFramebufferBuffer(uintptr_t framebuffer) : framebuffer(framebuffer) {}
66 uintptr_t framebuffer{};
69 struct HwFramebufferPacket : public StreamPacket
71 HwFramebufferPacket() = default;
72 HwFramebufferPacket(uintptr_t framebuffer) : framebuffer(framebuffer) {}
74 uintptr_t framebuffer{};
77 class CRetroPlayerRendering : public IRetroPlayerStream
79 public:
80 CRetroPlayerRendering(CRPRenderManager& m_renderManager, CRPProcessInfo& m_processInfo);
82 ~CRetroPlayerRendering() override;
84 // Implementation of IRetroPlayerStream
85 bool OpenStream(const StreamProperties& properties) override;
86 bool GetStreamBuffer(unsigned int width, unsigned int height, StreamBuffer& buffer) override;
87 void AddStreamData(const StreamPacket& packet) override;
88 void CloseStream() override;
90 private:
91 // Construction parameters
92 CRPRenderManager& m_renderManager;
93 CRPProcessInfo& m_processInfo;
95 } // namespace RETRO
96 } // namespace KODI