File size: 1,836 Bytes
7fc5a59 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #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 // OPENPOSE_CORE_GPU_RENDERER_HPP
|