| OpenShot Library | libopenshot
    0.4.0
    | 
 
 
 
Go to the documentation of this file.
   13 #ifndef OPENSHOT_CACHE_BASE_H 
   14 #define OPENSHOT_CACHE_BASE_H 
   62         virtual void Add(std::shared_ptr<openshot::Frame> frame) = 0;
 
   65         virtual void Clear() = 0;
 
   69         virtual bool Contains(int64_t frame_number) = 0;
 
   72         virtual int64_t 
Count() = 0;
 
   76         virtual std::shared_ptr<openshot::Frame> 
GetFrame(int64_t frame_number) = 0;
 
   79         virtual std::vector<std::shared_ptr<openshot::Frame>> 
GetFrames() = 0;
 
   89         virtual void Remove(int64_t frame_number) = 0;
 
   94         virtual void Remove(int64_t start_frame_number, int64_t end_frame_number) = 0;
 
   98         virtual void Touch(int64_t frame_number) = 0;
 
  113         void SetMaxBytesFromInfo(int64_t number_of_frames, 
int width, 
int height, 
int sample_rate, 
int channels);
 
  116         virtual std::string 
Json() = 0; 
 
  117         virtual void SetJson(
const std::string value) = 0; 
 
  
virtual std::shared_ptr< openshot::Frame > GetSmallestFrame()=0
Get the smallest frame number.
virtual void Clear()=0
Clear the cache of all frames.
virtual std::shared_ptr< openshot::Frame > GetFrame(int64_t frame_number)=0
Get a frame from the cache.
bool needs_range_processing
Something has changed, and the range data needs to be re-calculated.
int64_t max_bytes
This is the max number of bytes to cache (0 = no limit)
std::vector< int64_t > ordered_frame_numbers
Ordered list of frame numbers used by cache.
This namespace is the default namespace for all code in the openshot library.
virtual void Add(std::shared_ptr< openshot::Frame > frame)=0
Add a Frame to the cache.
std::string json_ranges
JSON ranges of frame numbers.
virtual ~CacheBase()=default
All cache managers in libopenshot are based on this CacheBase class.
virtual void Remove(int64_t frame_number)=0
Remove a specific frame.
void SetMaxBytesFromInfo(int64_t number_of_frames, int width, int height, int sample_rate, int channels)
Set maximum bytes to a different amount based on a ReaderInfo struct.
virtual void SetJsonValue(const Json::Value root)=0
Load Json::Value into this object.
virtual std::vector< std::shared_ptr< openshot::Frame > > GetFrames()=0
Get an vector of all Frames.
std::map< int64_t, int64_t > frame_ranges
This map holds the ranges of frames, useful for quickly displaying the contents of the cache.
virtual void SetJson(const std::string value)=0
Load JSON string into this object.
virtual Json::Value JsonValue()=0
Generate Json::Value for this object.
void CalculateRanges()
Calculate ranges of frames.
virtual void Touch(int64_t frame_number)=0
Move frame to front of queue (so it lasts longer)
virtual int64_t Count()=0
Count the frames in the queue.
std::string cache_type
This is a friendly type name of the derived cache instance.
virtual std::string Json()=0
Generate JSON string of this object.
int64_t GetMaxBytes()
Gets the maximum bytes value.
void SetMaxBytes(int64_t number_of_bytes)
Set maximum bytes to a different amount.
virtual int64_t GetBytes()=0
Gets the maximum bytes value.
virtual bool Contains(int64_t frame_number)=0
Check if frame is already contained in cache.
CacheBase()
Default constructor, no max bytes.
Header file for JSON class.
int64_t range_version
The version of the JSON range data (incremented with each change)
std::recursive_mutex * cacheMutex
Mutex for multiple threads.