kodi
UDMABufferObject.h
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 "utils/BufferObject.h"
12 
13 #include <memory>
14 #include <stdint.h>
15 
17 {
18 public:
19  CUDMABufferObject() = default;
20  virtual ~CUDMABufferObject() override;
21 
22  // Registration
23  static std::unique_ptr<CBufferObject> Create();
24  static void Register();
25 
26  // IBufferObject overrides via CBufferObject
27  bool CreateBufferObject(uint32_t format, uint32_t width, uint32_t height) override;
28  bool CreateBufferObject(uint64_t size) override;
29  void DestroyBufferObject() override;
30  uint8_t* GetMemory() override;
31  void ReleaseMemory() override;
32  std::string GetName() const override { return "CUDMABufferObject"; }
33 
34 private:
35  int m_memfd{-1};
36  int m_udmafd{-1};
37  uint64_t m_size{0};
38  uint8_t* m_map{nullptr};
39 };
void ReleaseMemory() override
Release the mapped memory of the BufferObject.
Definition: UDMABufferObject.cpp:193
std::string GetName() const override
Get the Name of the BufferObject type in use.
Definition: UDMABufferObject.h:32
bool CreateBufferObject(uint32_t format, uint32_t width, uint32_t height) override
Create a BufferObject based on the format, width, and height of the desired buffer.
Definition: UDMABufferObject.cpp:68
uint8_t * GetMemory() override
Get the Memory location of the BufferObject.
Definition: UDMABufferObject.cpp:170
base class for using the IBufferObject interface.
Definition: BufferObject.h:21
Definition: UDMABufferObject.h:16
void DestroyBufferObject() override
Destroy a BufferObject.
Definition: UDMABufferObject.cpp:149