Merge pull request #26287 from CrystalP/ref-savefilestatejob
[xbmc.git] / xbmc / cores / RetroPlayer / streams / RetroPlayerRendering.cpp
blobe913f3153f054bc9d200107d9f446d0c85202ac7
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 */
9 #include "RetroPlayerRendering.h"
11 #include "cores/RetroPlayer/process/RPProcessInfo.h"
12 #include "cores/RetroPlayer/rendering/RPRenderManager.h"
13 #include "cores/RetroPlayer/rendering/RenderTranslator.h"
14 #include "utils/log.h"
16 using namespace KODI;
17 using namespace RETRO;
19 CRetroPlayerRendering::CRetroPlayerRendering(CRPRenderManager& renderManager,
20 CRPProcessInfo& processInfo)
21 : m_renderManager(renderManager), m_processInfo(processInfo)
23 CLog::Log(LOGDEBUG, "RetroPlayer[RENDERING]: Initializing rendering");
26 CRetroPlayerRendering::~CRetroPlayerRendering()
28 CLog::Log(LOGDEBUG, "RetroPlayer[RENDERING]: Deinitializing rendering");
30 CloseStream();
31 m_renderManager.Deinitialize();
34 bool CRetroPlayerRendering::OpenStream(const StreamProperties& properties)
36 [[maybe_unused]] const HwFramebufferProperties& hwProperties =
37 static_cast<const HwFramebufferProperties&>(properties);
39 //! @todo
40 const AVPixelFormat pixelFormat = AV_PIX_FMT_NONE;
41 const unsigned int width = 640;
42 const unsigned int height = 480;
43 const float pixelAspectRatio = 1.0f;
45 CLog::Log(LOGDEBUG, "RetroPlayer[RENDERING]: Creating rendering stream - width {}, height {}",
46 width, height);
48 m_processInfo.SetVideoPixelFormat(pixelFormat);
49 m_processInfo.SetVideoDimensions(width, height);
51 if (!m_renderManager.Configure(pixelFormat, width, height, width, height, pixelAspectRatio))
52 return false;
54 CLog::Log(LOGDEBUG, "RetroPlayer[RENDERING]: Render manager configured");
56 //! @todo: This must be called from the rendering thread
57 //return m_renderManager.Create(width, height);
59 return false;
62 void CRetroPlayerRendering::CloseStream()
64 CLog::Log(LOGDEBUG, "RetroPlayer[RENDERING]: Closing rendering stream");
66 //! @todo
69 bool CRetroPlayerRendering::GetStreamBuffer(unsigned int width,
70 unsigned int height,
71 StreamBuffer& buffer)
73 HwFramebufferBuffer& hwBuffer = static_cast<HwFramebufferBuffer&>(buffer);
75 hwBuffer.framebuffer = m_renderManager.GetCurrentFramebuffer(width, height);
77 return true;
80 void CRetroPlayerRendering::AddStreamData(const StreamPacket& packet)
82 // This is left here in case anything gets added to the api in the future
83 [[maybe_unused]] const HwFramebufferPacket& hwPacket =
84 static_cast<const HwFramebufferPacket&>(packet);
86 m_renderManager.RenderFrame();