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.
10 #include "IRetroPlayerStream.h"
11 #include "RetroPlayerStreamTypes.h"
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"
28 class CRPRenderManager
;
30 struct HwFramebufferProperties
: public StreamProperties
32 HwFramebufferProperties(GAME_HW_CONTEXT_TYPE contextType
,
35 bool bottomLeftOrigin
,
36 unsigned int versionMajor
,
37 unsigned int versionMinor
,
40 : contextType(contextType
),
43 bottomLeftOrigin(bottomLeftOrigin
),
44 versionMajor(versionMajor
),
45 versionMinor(versionMinor
),
46 cacheContext(cacheContext
),
47 debugContext(debugContext
)
51 GAME_HW_CONTEXT_TYPE contextType
;
54 bool bottomLeftOrigin
;
55 unsigned int versionMajor
;
56 unsigned int versionMinor
;
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
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
;
91 // Construction parameters
92 CRPRenderManager
& m_renderManager
;
93 CRPProcessInfo
& m_processInfo
;