1 /*
2  *  Copyright (C) 2005-2020 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 "IBufferObject.h"
12 
13 #include <memory>
14 #include <stdint.h>
15 
16 /**
17  * @brief base class for using the IBufferObject interface. Derived classes
18  *        should be based on this class.
19  *
20  */
21 class CBufferObject : public IBufferObject
22 {
23 public:
24   /**
25    * @brief Get a BufferObject from CBufferObjectFactory
26    *
27    * @return std::unique_ptr<CBufferObject>
28    */
29   static std::unique_ptr<CBufferObject> GetBufferObject(bool needsCreateBySize);
30 
CreateBufferObject(uint64_t size)31   bool CreateBufferObject(uint64_t size) override { return false; }
32 
33   int GetFd() override;
34   uint32_t GetStride() override;
35   uint64_t GetModifier() override;
36 
37   void SyncStart() override;
38   void SyncEnd() override;
39 
40 protected:
41   int m_fd{-1};
42   uint32_t m_stride{0};
43 };
44