OpenShot Library | libopenshot
0.3.3
|
All cache managers in libopenshot are based on this CacheBase class. More...
#include <CacheBase.h>
Public Member Functions | |
virtual void | Add (std::shared_ptr< openshot::Frame > frame)=0 |
Add a Frame to the cache. More... | |
CacheBase () | |
Default constructor, no max bytes. More... | |
CacheBase (int64_t max_bytes) | |
Constructor that sets the max bytes to cache. More... | |
virtual void | Clear ()=0 |
Clear the cache of all frames. More... | |
virtual bool | Contains (int64_t frame_number)=0 |
Check if frame is already contained in cache. More... | |
virtual int64_t | Count ()=0 |
Count the frames in the queue. More... | |
virtual int64_t | GetBytes ()=0 |
Gets the maximum bytes value. More... | |
virtual std::shared_ptr< openshot::Frame > | GetFrame (int64_t frame_number)=0 |
Get a frame from the cache. More... | |
virtual std::vector< std::shared_ptr< openshot::Frame > > | GetFrames ()=0 |
Get an vector of all Frames. More... | |
int64_t | GetMaxBytes () |
Gets the maximum bytes value. More... | |
virtual std::shared_ptr< openshot::Frame > | GetSmallestFrame ()=0 |
Get the smallest frame number. More... | |
virtual std::string | Json ()=0 |
Generate JSON string of this object. More... | |
virtual Json::Value | JsonValue ()=0 |
Generate Json::Value for this object. More... | |
virtual void | Remove (int64_t frame_number)=0 |
Remove a specific frame. More... | |
virtual void | Remove (int64_t start_frame_number, int64_t end_frame_number)=0 |
Remove a range of frames. More... | |
virtual void | SetJson (const std::string value)=0 |
Load JSON string into this object. More... | |
virtual void | SetJsonValue (const Json::Value root)=0 |
Load Json::Value into this object. 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 |
Protected Member Functions | |
void | CalculateRanges () |
Calculate ranges of frames. More... | |
Protected Attributes | |
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... | |
All cache managers in libopenshot are based on this CacheBase class.
Cache is a very important element of video editing, and is required to achieve a high degree of performance. There are multiple derived cache objects based on this class, some which use memory, and some which use disk to store the cache.
Definition at line 34 of file CacheBase.h.
CacheBase::CacheBase | ( | ) |
Default constructor, no max bytes.
Definition at line 21 of file CacheBase.cpp.
CacheBase::CacheBase | ( | int64_t | max_bytes | ) |
Constructor that sets the max bytes to cache.
max_bytes | The maximum bytes to allow in the cache. Once exceeded, the cache will purge the oldest frames. |
Definition at line 24 of file CacheBase.cpp.
|
virtualdefault |
|
pure virtual |
Add a Frame to the cache.
frame | The openshot::Frame object needing to be cached. |
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
Referenced by openshot::Timeline::GetFrame().
|
protected |
Calculate ranges of frames.
Definition at line 38 of file CacheBase.cpp.
Referenced by openshot::CacheMemory::JsonValue(), and openshot::CacheDisk::JsonValue().
|
pure virtual |
Clear the cache of all frames.
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
Referenced by openshot::Timeline::ClearAllCache().
|
pure virtual |
Check if frame is already contained in cache.
frame_number | The frame number to be checked |
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
Referenced by openshot::VideoCacheThread::run(), and openshot::VideoCacheThread::Seek().
|
pure virtual |
Count the frames in the queue.
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
Referenced by openshot::DummyReader::GetFrame(), and openshot::VideoCacheThread::run().
|
pure virtual |
Gets the maximum bytes value.
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
|
pure virtual |
Get a frame from the cache.
frame_number | The frame number of the cached frame |
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
Referenced by openshot::DummyReader::GetFrame(), and openshot::Timeline::GetFrame().
|
pure virtual |
Get an vector of all Frames.
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
|
inline |
Gets the maximum bytes value.
Definition at line 97 of file CacheBase.h.
Referenced by openshot::VideoCacheThread::run().
|
pure virtual |
Get the smallest frame number.
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
|
pure virtual |
Generate JSON string of this object.
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
|
pure virtual |
Generate Json::Value for this object.
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
Definition at line 102 of file CacheBase.cpp.
Referenced by openshot::CacheMemory::JsonValue(), and openshot::CacheDisk::JsonValue().
|
pure virtual |
Remove a specific frame.
frame_number | The frame number of the cached frame |
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
|
pure virtual |
Remove a range of frames.
start_frame_number | The starting frame number of the cached frame |
end_frame_number | The ending frame number of the cached frame |
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
|
pure virtual |
Load JSON string into this object.
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
|
pure virtual |
Load Json::Value into this object.
Implemented in openshot::CacheDisk, and openshot::CacheMemory.
Definition at line 115 of file CacheBase.cpp.
Referenced by openshot::CacheMemory::SetJsonValue(), and openshot::CacheDisk::SetJsonValue().
|
inline |
Set maximum bytes to a different amount.
number_of_bytes | The maximum bytes to allow in the cache. Once exceeded, the cache will purge the oldest frames. |
Definition at line 101 of file CacheBase.h.
Referenced by SetMaxBytesFromInfo().
void CacheBase::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.
number_of_frames | The maximum number of frames to hold in cache |
width | The width of the frame's image |
height | The height of the frame's image |
sample_rate | The sample rate of the frame's audio data |
channels | The number of audio channels in the frame |
Definition at line 30 of file CacheBase.cpp.
Referenced by openshot::FrameMapper::ChangeMapping(), openshot::FrameMapper::FrameMapper(), openshot::Clip::init_reader_settings(), and openshot::Timeline::Timeline().
|
protected |
This is a friendly type name of the derived cache instance.
Definition at line 37 of file CacheBase.h.
Referenced by openshot::CacheDisk::CacheDisk(), openshot::CacheMemory::CacheMemory(), openshot::CacheMemory::JsonValue(), openshot::CacheDisk::JsonValue(), openshot::CacheMemory::SetJsonValue(), and openshot::CacheDisk::SetJsonValue().
|
protected |
Mutex for multiple threads.
Definition at line 47 of file CacheBase.h.
Referenced by openshot::CacheMemory::Add(), openshot::CacheDisk::Add(), CacheBase(), CalculateRanges(), openshot::CacheMemory::Clear(), openshot::CacheDisk::Clear(), openshot::CacheMemory::Count(), openshot::CacheDisk::Count(), openshot::CacheMemory::GetBytes(), openshot::CacheDisk::GetBytes(), openshot::CacheMemory::GetFrame(), openshot::CacheDisk::GetFrame(), openshot::CacheMemory::GetFrames(), openshot::CacheDisk::GetFrames(), openshot::CacheMemory::GetSmallestFrame(), openshot::CacheDisk::GetSmallestFrame(), openshot::CacheMemory::MoveToFront(), openshot::CacheDisk::MoveToFront(), openshot::CacheMemory::Remove(), openshot::CacheDisk::Remove(), openshot::CacheDisk::~CacheDisk(), and openshot::CacheMemory::~CacheMemory().
|
protected |
This map holds the ranges of frames, useful for quickly displaying the contents of the cache.
Definition at line 43 of file CacheBase.h.
|
protected |
JSON ranges of frame numbers.
Definition at line 41 of file CacheBase.h.
Referenced by CalculateRanges(), openshot::CacheMemory::JsonValue(), and openshot::CacheDisk::JsonValue().
|
protected |
This is the max number of bytes to cache (0 = no limit)
Definition at line 38 of file CacheBase.h.
Referenced by openshot::CacheDisk::CacheDisk(), GetMaxBytes(), JsonValue(), SetJsonValue(), and SetMaxBytes().
|
protected |
Something has changed, and the range data needs to be re-calculated.
Definition at line 40 of file CacheBase.h.
Referenced by openshot::CacheMemory::Add(), openshot::CacheDisk::Add(), openshot::CacheDisk::CacheDisk(), openshot::CacheMemory::CacheMemory(), CalculateRanges(), openshot::CacheMemory::Clear(), openshot::CacheDisk::Clear(), openshot::CacheMemory::Remove(), and openshot::CacheDisk::Remove().
|
protected |
Ordered list of frame numbers used by cache.
Definition at line 42 of file CacheBase.h.
Referenced by openshot::CacheMemory::Add(), openshot::CacheDisk::Add(), CalculateRanges(), openshot::CacheMemory::Clear(), openshot::CacheDisk::Clear(), openshot::CacheMemory::GetFrames(), openshot::CacheDisk::GetFrames(), openshot::CacheMemory::Remove(), and openshot::CacheDisk::Remove().
|
protected |
The version of the JSON range data (incremented with each change)
Definition at line 44 of file CacheBase.h.
Referenced by openshot::CacheDisk::CacheDisk(), openshot::CacheMemory::CacheMemory(), CalculateRanges(), openshot::CacheMemory::JsonValue(), and openshot::CacheDisk::JsonValue().