xbmc
IRenderBufferPool.h
1 /*
2  * Copyright (C) 2017-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 "cores/RetroPlayer/RetroPlayerTypes.h"
12 
13 extern "C"
14 {
15 #include <libavutil/pixfmt.h>
16 }
17 
18 #include <memory>
19 #include <stdint.h>
20 
21 namespace KODI
22 {
23 namespace RETRO
24 {
25 class CRenderBufferManager;
26 class CRenderVideoSettings;
27 class CRPBaseRenderer;
28 class IRenderBuffer;
29 
30 class IRenderBufferPool : public std::enable_shared_from_this<IRenderBufferPool>
31 {
32 public:
33  virtual ~IRenderBufferPool() = default;
34 
35  virtual void RegisterRenderer(CRPBaseRenderer* renderer) = 0;
36  virtual void UnregisterRenderer(CRPBaseRenderer* renderer) = 0;
37  virtual bool HasVisibleRenderer() const = 0;
38 
39  virtual bool Configure(AVPixelFormat format) = 0;
40 
41  virtual bool IsConfigured() const = 0;
42 
43  virtual bool IsCompatible(const CRenderVideoSettings& renderSettings) const = 0;
44 
53  virtual IRenderBuffer* GetBuffer(unsigned int width, unsigned int height) = 0;
54 
60  virtual void Return(IRenderBuffer* buffer) = 0;
61 
62  virtual void Prime(unsigned int width, unsigned int height) = 0;
63 
64  virtual void Flush() = 0;
65 
66  virtual DataAccess GetMemoryAccess() const { return DataAccess::READ_WRITE; }
67  virtual DataAlignment GetMemoryAlignment() const { return DataAlignment::DATA_UNALIGNED; }
68 
72  virtual std::shared_ptr<IRenderBufferPool> GetPtr() { return shared_from_this(); }
73 };
74 } // namespace RETRO
75 } // namespace KODI
virtual void Return(IRenderBuffer *buffer)=0
Called by buffer when ref count goes to zero.
Definition: IRenderBuffer.h:27
Definition: AudioDecoder.h:18
Definition: IRenderBufferPool.h:30
virtual IRenderBuffer * GetBuffer(unsigned int width, unsigned int height)=0
Get a free buffer from the pool, sets ref count to 1.
Video settings provided by the rendering system.
Definition: RenderVideoSettings.h:22
Definition: RPBaseRenderer.h:37
virtual std::shared_ptr< IRenderBufferPool > GetPtr()
Call in GetBuffer() before returning buffer to caller.
Definition: IRenderBufferPool.h:72