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 extern "C"
12 {
13 #include <libavutil/pixfmt.h>
14 }
15 
16 #include <memory>
17 #include <stdint.h>
18 
19 namespace KODI
20 {
21 namespace RETRO
22 {
23 class CRenderBufferManager;
24 class CRenderVideoSettings;
25 class CRPBaseRenderer;
26 class IRenderBuffer;
27 
28 class IRenderBufferPool : public std::enable_shared_from_this<IRenderBufferPool>
29 {
30 public:
31  virtual ~IRenderBufferPool() = default;
32 
33  virtual void RegisterRenderer(CRPBaseRenderer* renderer) = 0;
34  virtual void UnregisterRenderer(CRPBaseRenderer* renderer) = 0;
35  virtual bool HasVisibleRenderer() const = 0;
36 
37  virtual bool Configure(AVPixelFormat format) = 0;
38 
39  virtual bool IsConfigured() const = 0;
40 
41  virtual bool IsCompatible(const CRenderVideoSettings& renderSettings) const = 0;
42 
51  virtual IRenderBuffer* GetBuffer(unsigned int width, unsigned int height) = 0;
52 
58  virtual void Return(IRenderBuffer* buffer) = 0;
59 
60  virtual void Prime(unsigned int width, unsigned int height) = 0;
61 
62  virtual void Flush() = 0;
63 
67  virtual std::shared_ptr<IRenderBufferPool> GetPtr() { return shared_from_this(); }
68 };
69 } // namespace RETRO
70 } // namespace KODI
virtual void Return(IRenderBuffer *buffer)=0
Called by buffer when ref count goes to zero.
Definition: IRenderBuffer.h:27
Controller configuration window.
Definition: AudioDecoder.h:18
Definition: IRenderBufferPool.h:28
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:32
virtual std::shared_ptr< IRenderBufferPool > GetPtr()
Call in GetBuffer() before returning buffer to caller.
Definition: IRenderBufferPool.h:67