OpenShot Library | libopenshot  0.4.0
Public Member Functions | List of all members
openshot::CacheDisk Class Reference

This class is a disk-based cache manager for Frame objects. More...

#include <CacheDisk.h>

Inheritance diagram for openshot::CacheDisk:
[legend]
Collaboration diagram for openshot::CacheDisk:
[legend]

Public Member Functions

void Add (std::shared_ptr< openshot::Frame > frame)
 Add a Frame to the cache. More...
 
 CacheDisk (std::string cache_path, std::string format, float quality, float scale)
 Default constructor, no max bytes. More...
 
 CacheDisk (std::string cache_path, std::string format, float quality, float scale, int64_t max_bytes)
 Constructor that sets the max bytes to cache. More...
 
void Clear ()
 Clear the cache of all frames. More...
 
bool Contains (int64_t frame_number)
 Check if frame is already contained in cache. More...
 
int64_t Count ()
 Count the frames in the queue. More...
 
int64_t GetBytes ()
 Gets the maximum bytes value. More...
 
std::shared_ptr< openshot::FrameGetFrame (int64_t frame_number)
 Get a frame from the cache. More...
 
std::vector< std::shared_ptr< openshot::Frame > > GetFrames ()
 Get an array of all Frames. More...
 
std::shared_ptr< openshot::FrameGetSmallestFrame ()
 Get the smallest frame number. More...
 
std::string Json ()
 Generate JSON string of this object. More...
 
Json::Value JsonValue ()
 Generate Json::Value for this object. More...
 
void MoveToFront (int64_t frame_number)
 Move frame to front of queue (so it lasts longer) More...
 
void Remove (int64_t frame_number)
 Remove a specific frame. More...
 
void Remove (int64_t start_frame_number, int64_t end_frame_number)
 Remove a range of frames. More...
 
void SetJson (const std::string value)
 Load JSON string into this object. More...
 
void SetJsonValue (const Json::Value root)
 Load Json::Value into this object. More...
 
 ~CacheDisk ()
 
- Public Member Functions inherited from openshot::CacheBase
 CacheBase ()
 Default constructor, no max bytes. More...
 
 CacheBase (int64_t max_bytes)
 Constructor that sets the max bytes to cache. More...
 
int64_t GetMaxBytes ()
 Gets the maximum bytes value. More...
 
void SetMaxBytes (int64_t number_of_bytes)
 Set maximum bytes to a different amount. More...
 
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. More...
 
virtual ~CacheBase ()=default
 

Additional Inherited Members

- Protected Member Functions inherited from openshot::CacheBase
void CalculateRanges ()
 Calculate ranges of frames. More...
 
- Protected Attributes inherited from openshot::CacheBase
std::string cache_type
 This is a friendly type name of the derived cache instance. More...
 
std::recursive_mutex * cacheMutex
 Mutex for multiple threads. More...
 
std::map< int64_t, int64_t > frame_ranges
 This map holds the ranges of frames, useful for quickly displaying the contents of the cache. More...
 
std::string json_ranges
 JSON ranges of frame numbers. More...
 
int64_t max_bytes
 This is the max number of bytes to cache (0 = no limit) More...
 
bool needs_range_processing
 Something has changed, and the range data needs to be re-calculated. More...
 
std::vector< int64_t > ordered_frame_numbers
 Ordered list of frame numbers used by cache. More...
 
int64_t range_version
 The version of the JSON range data (incremented with each change) More...
 

Detailed Description

This class is a disk-based cache manager for Frame objects.

It is used by the Timeline class, if enabled, to cache video and audio frames to disk, to cut down on CPU and memory utilization. This will thrash a user's disk, but save their memory and CPU. It's a trade off that sometimes makes perfect sense. You can also set the max number of bytes to cache.

Definition at line 30 of file CacheDisk.h.

Constructor & Destructor Documentation

◆ CacheDisk() [1/2]

CacheDisk::CacheDisk ( std::string  cache_path,
std::string  format,
float  quality,
float  scale 
)

Default constructor, no max bytes.

Parameters
cache_pathThe folder path of the cache directory (empty string = /tmp/preview-cache/)
formatThe image format for disk caching (ppm, jpg, png)
qualityThe quality of the image (1.0=highest quality/slowest speed, 0.0=worst quality/fastest speed)
scaleThe scale factor for the preview images (1.0 = original size, 0.5=half size, 0.25=quarter size, etc...)

Definition at line 26 of file CacheDisk.cpp.

◆ CacheDisk() [2/2]

CacheDisk::CacheDisk ( std::string  cache_path,
std::string  format,
float  quality,
float  scale,
int64_t  max_bytes 
)

Constructor that sets the max bytes to cache.

Parameters
cache_pathThe folder path of the cache directory (empty string = /tmp/preview-cache/)
formatThe image format for disk caching (ppm, jpg, png)
qualityThe quality of the image (1.0=highest quality/slowest speed, 0.0=worst quality/fastest speed)
scaleThe scale factor for the preview images (1.0 = original size, 0.5=half size, 0.25=quarter size, etc...)
max_bytesThe maximum bytes to allow in the cache. Once exceeded, the cache will purge the oldest frames.

Definition at line 42 of file CacheDisk.cpp.

◆ ~CacheDisk()

CacheDisk::~CacheDisk ( )

Definition at line 79 of file CacheDisk.cpp.

Member Function Documentation

◆ Add()

void CacheDisk::Add ( std::shared_ptr< openshot::Frame frame)
virtual

Add a Frame to the cache.

Parameters
frameThe openshot::Frame object needing to be cached.

Implements openshot::CacheBase.

Definition at line 88 of file CacheDisk.cpp.

◆ Clear()

void CacheDisk::Clear ( )
virtual

Clear the cache of all frames.

Implements openshot::CacheBase.

Definition at line 363 of file CacheDisk.cpp.

Referenced by SetJsonValue(), and ~CacheDisk().

◆ Contains()

bool CacheDisk::Contains ( int64_t  frame_number)
virtual

Check if frame is already contained in cache.

Parameters
frame_numberThe frame number to be checked

Implements openshot::CacheBase.

Definition at line 147 of file CacheDisk.cpp.

◆ Count()

int64_t CacheDisk::Count ( )
virtual

Count the frames in the queue.

Implements openshot::CacheBase.

Definition at line 386 of file CacheDisk.cpp.

◆ GetBytes()

int64_t CacheDisk::GetBytes ( )
virtual

Gets the maximum bytes value.

Implements openshot::CacheBase.

Definition at line 266 of file CacheDisk.cpp.

◆ GetFrame()

std::shared_ptr< Frame > CacheDisk::GetFrame ( int64_t  frame_number)
virtual

Get a frame from the cache.

Parameters
frame_numberThe frame number of the cached frame

Implements openshot::CacheBase.

Definition at line 156 of file CacheDisk.cpp.

Referenced by GetFrames(), and GetSmallestFrame().

◆ GetFrames()

std::vector< std::shared_ptr< openshot::Frame > > CacheDisk::GetFrames ( )
virtual

Get an array of all Frames.

Implements openshot::CacheBase.

Definition at line 226 of file CacheDisk.cpp.

◆ GetSmallestFrame()

std::shared_ptr< Frame > CacheDisk::GetSmallestFrame ( )
virtual

Get the smallest frame number.

Implements openshot::CacheBase.

Definition at line 243 of file CacheDisk.cpp.

◆ Json()

std::string CacheDisk::Json ( )
virtual

Generate JSON string of this object.

Implements openshot::CacheBase.

Definition at line 416 of file CacheDisk.cpp.

◆ JsonValue()

Json::Value CacheDisk::JsonValue ( )
virtual

Generate Json::Value for this object.

Implements openshot::CacheBase.

Definition at line 423 of file CacheDisk.cpp.

Referenced by Json().

◆ MoveToFront()

void CacheDisk::MoveToFront ( int64_t  frame_number)

Move frame to front of queue (so it lasts longer)

Parameters
frame_numberThe frame number of the cached frame

Definition at line 337 of file CacheDisk.cpp.

Referenced by Add().

◆ Remove() [1/2]

void CacheDisk::Remove ( int64_t  frame_number)
virtual

Remove a specific frame.

Parameters
frame_numberThe frame number of the cached frame

Implements openshot::CacheBase.

Definition at line 282 of file CacheDisk.cpp.

◆ Remove() [2/2]

void CacheDisk::Remove ( int64_t  start_frame_number,
int64_t  end_frame_number 
)
virtual

Remove a range of frames.

Parameters
start_frame_numberThe starting frame number of the cached frame
end_frame_numberThe ending frame number of the cached frame

Implements openshot::CacheBase.

Definition at line 288 of file CacheDisk.cpp.

◆ SetJson()

void CacheDisk::SetJson ( const std::string  value)
virtual

Load JSON string into this object.

Implements openshot::CacheBase.

Definition at line 450 of file CacheDisk.cpp.

◆ SetJsonValue()

void CacheDisk::SetJsonValue ( const Json::Value  root)
virtual

Load Json::Value into this object.

Implements openshot::CacheBase.

Definition at line 467 of file CacheDisk.cpp.

Referenced by SetJson().


The documentation for this class was generated from the following files: