Program Listing for File FrameMemory.h¶
↰ Return to documentation for file (lib/DataStructures/FrameMemory.h)
#pragma once
#include <unordered_map>
#include <vector>
#include <boost/thread/mutex.hpp>
#include <deque>
#include <list>
#include <boost/thread/shared_mutex.hpp>
namespace lsd_slam
{
class Frame;
class FrameMemory
{
public:
static FrameMemory& getInstance();
float* getFloatBuffer(unsigned int size);
void* getBuffer(unsigned int sizeInByte);
void returnBuffer(void* buffer);
boost::shared_lock<boost::shared_mutex> activateFrame(Frame* frame);
void deactivateFrame(Frame* frame);
void pruneActiveFrames();
void releaseBuffers();
private:
FrameMemory();
void* allocateBuffer(unsigned int sizeInByte);
boost::mutex accessMutex;
std::unordered_map< void*, unsigned int > bufferSizes;
std::unordered_map< unsigned int, std::vector< void* > > availableBuffers;
boost::mutex activeFramesMutex;
std::list<Frame*> activeFrames;
};
}