| #ifndef OPENPOSE_CORE_GPU_RENDERER_HPP |
| #define OPENPOSE_CORE_GPU_RENDERER_HPP |
|
|
| #include <atomic> |
| #include <tuple> |
| #include <openpose/core/common.hpp> |
| #include <openpose/core/renderer.hpp> |
|
|
| namespace op |
| { |
| class OP_API GpuRenderer : public Renderer |
| { |
| public: |
| explicit GpuRenderer( |
| const float renderThreshold, const float alphaKeypoint, const float alphaHeatMap, |
| const bool blendOriginalFrame = true, const unsigned int elementToRender = 0u, |
| const unsigned int numberElementsToRender = 0u); |
|
|
| virtual ~GpuRenderer(); |
|
|
| std::tuple<std::shared_ptr<float*>, std::shared_ptr<bool>, std::shared_ptr<std::atomic<unsigned int>>, |
| std::shared_ptr<unsigned long long>, std::shared_ptr<const unsigned int>> |
| getSharedParameters(); |
|
|
| void setSharedParametersAndIfLast( |
| const std::tuple<std::shared_ptr<float*>, std::shared_ptr<bool>, std::shared_ptr<std::atomic<unsigned int>>, |
| std::shared_ptr<unsigned long long>, std::shared_ptr<const unsigned int>>& tuple, |
| const bool isLast); |
|
|
| void setSharedParameters( |
| const std::tuple<std::shared_ptr<float*>, std::shared_ptr<bool>, |
| std::shared_ptr<unsigned long long>>& tuple); |
|
|
| protected: |
| std::shared_ptr<float*> spGpuMemory; |
|
|
| void cpuToGpuMemoryIfNotCopiedYet(const float* const cpuMemory, const unsigned long long memoryVolume); |
|
|
| void gpuToCpuMemoryIfLastRenderer(float* cpuMemory, const unsigned long long memoryVolume); |
|
|
| private: |
| std::shared_ptr<unsigned long long> spVolume; |
| bool mIsFirstRenderer; |
| bool mIsLastRenderer; |
| std::shared_ptr<bool> spGpuMemoryAllocated; |
|
|
| DELETE_COPY(GpuRenderer); |
| }; |
| } |
|
|
| #endif |
|
|