openshot::CacheBase Class Referenceabstract

All cache managers in libopenshot are based on this CacheBase class. More...

`#include <CacheBase.h>`

Inheritance diagram for openshot::CacheBase:

## 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 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...
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
| Get and Set JSON methods. 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 Attributes

std::string | cache_type
| This is a friendly type name of the derived cache instance. More...
juce::CriticalSection * | cacheCriticalSection
| Section lock for multiple threads. More...
int64_t | max_bytes
| This is the max number of bytes to cache (0 = no limit) More...

## Detailed Description

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 49 of file CacheBase.h.

## Constructor & Destructor Documentation

## CacheBase() [1/2]

CacheBase::CacheBase | ( |  | ) |

Default constructor, no max bytes.

Definition at line 37 of file CacheBase.cpp.

## CacheBase() [2/2]

CacheBase::CacheBase | ( | int64_t | max_bytes | ) |

Constructor that sets the max bytes to cache.

Parameters

  max_bytes | The maximum bytes to allow in the cache. Once exceeded, the cache will purge the oldest frames.

Definition at line 43 of file CacheBase.cpp.

## ~CacheBase()

virtual openshot::CacheBase::~CacheBase | ( |  | ) |

virtual default

## Member Function Documentation

## Add()

virtual void openshot::CacheBase::Add | ( | std::shared_ptr< openshot::Frame > | frame | ) |

pure virtual

Add a Frame to the cache.

Parameters

  frame | The openshot::Frame object needing to be cached.

Implemented in openshot::CacheMemory, and openshot::CacheDisk.

Referenced by openshot::Timeline::GetFrame().

## Clear()

virtual void openshot::CacheBase::Clear | ( |  | ) |

pure virtual

Clear the cache of all frames.

Implemented in openshot::CacheMemory, and openshot::CacheDisk.

Referenced by openshot::Timeline::ClearAllCache(), and openshot::Timeline::Close().

## Count()

virtual int64_t openshot::CacheBase::Count | ( |  | ) |

pure virtual

Count the frames in the queue.

Implemented in openshot::CacheMemory, and openshot::CacheDisk.

## GetBytes()

virtual int64_t openshot::CacheBase::GetBytes | ( |  | ) |

pure virtual

Gets the maximum bytes value.

Implemented in openshot::CacheMemory, and openshot::CacheDisk.

## GetFrame()

virtual std::shared_ptr<openshot::Frame> openshot::CacheBase::GetFrame | ( | int64_t | frame_number | ) |

pure virtual

Get a frame from the cache.

Parameters

  frame_number | The frame number of the cached frame

Implemented in openshot::CacheMemory, and openshot::CacheDisk.

Referenced by openshot::Timeline::GetFrame().

## GetMaxBytes()

int64_t openshot::CacheBase::GetMaxBytes | ( |  | ) |

inline

Gets the maximum bytes value.

Definition at line 97 of file CacheBase.h.

## GetSmallestFrame()

virtual std::shared_ptr<openshot::Frame> openshot::CacheBase::GetSmallestFrame | ( |  | ) |

pure virtual

Get the smallest frame number.

Implemented in openshot::CacheMemory, and openshot::CacheDisk.

## Json()

virtual std::string openshot::CacheBase::Json | ( |  | ) |

pure virtual

Get and Set JSON methods.

Generate JSON string of this object

Implemented in openshot::CacheMemory, and openshot::CacheDisk.

## JsonValue()

Json::Value CacheBase::JsonValue | ( |  | ) |

pure virtual

Generate Json::Value for this object.

Implemented in openshot::CacheMemory, and openshot::CacheDisk.

Definition at line 57 of file CacheBase.cpp.

Referenced by openshot::CacheDisk::JsonValue(), and openshot::CacheMemory::JsonValue().

## Remove() [1/2]

virtual void openshot::CacheBase::Remove | ( | int64_t | frame_number | ) |

pure virtual

Remove a specific frame.

Parameters

  frame_number | The frame number of the cached frame

Implemented in openshot::CacheMemory, and openshot::CacheDisk.

## Remove() [2/2]

virtual void openshot::CacheBase::Remove | ( | int64_t | start_frame_number,
|  | int64_t | end_frame_number
| ) |  |

pure virtual

Remove a range of frames.

Parameters

  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::CacheMemory, and openshot::CacheDisk.

## SetJson()

virtual void openshot::CacheBase::SetJson | ( | const std::string | value | ) |

pure virtual

Load JSON string into this object.

Implemented in openshot::CacheMemory, and openshot::CacheDisk.

## SetJsonValue()

void CacheBase::SetJsonValue | ( | const Json::Value | root | ) |

pure virtual

Load Json::Value into this object.

Implemented in openshot::CacheMemory, and openshot::CacheDisk.

Definition at line 70 of file CacheBase.cpp.

Referenced by openshot::CacheDisk::SetJsonValue(), and openshot::CacheMemory::SetJsonValue().

## SetMaxBytes()

void openshot::CacheBase::SetMaxBytes | ( | int64_t | number_of_bytes | ) |

inline

Set maximum bytes to a different amount.

Parameters

  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 DeckLinkInputDelegate::DeckLinkInputDelegate(), and SetMaxBytesFromInfo().

## 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.

Parameters

  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 49 of file CacheBase.cpp.

Referenced by openshot::FrameMapper::ChangeMapping(), openshot::FFmpegReader::FFmpegReader(), openshot::FrameMapper::FrameMapper(), openshot::FFmpegReader::Open(), and openshot::Timeline::Timeline().

## Member Data Documentation

## cache_type

std::string openshot::CacheBase::cache_type

protected

This is a friendly type name of the derived cache instance.

Definition at line 52 of file CacheBase.h.

Referenced by openshot::CacheDisk::CacheDisk(), openshot::CacheMemory::CacheMemory(), openshot::CacheDisk::JsonValue(), openshot::CacheMemory::JsonValue(), openshot::CacheDisk::SetJsonValue(), and openshot::CacheMemory::SetJsonValue().

## cacheCriticalSection

juce::CriticalSection* openshot::CacheBase::cacheCriticalSection

protected

Section lock for multiple threads.

Definition at line 56 of file CacheBase.h.

Referenced by openshot::CacheDisk::Add(), openshot::CacheMemory::Add(), CacheBase(), openshot::CacheDisk::Clear(), openshot::CacheMemory::Clear(), openshot::CacheDisk::Count(), openshot::CacheMemory::Count(), openshot::CacheDisk::GetBytes(), openshot::CacheMemory::GetBytes(), openshot::CacheDisk::GetFrame(), openshot::CacheMemory::GetFrame(), openshot::CacheDisk::GetSmallestFrame(), openshot::CacheMemory::GetSmallestFrame(), openshot::CacheDisk::MoveToFront(), openshot::CacheMemory::MoveToFront(), openshot::CacheDisk::Remove(), openshot::CacheMemory::Remove(), openshot::CacheDisk::~CacheDisk(), and openshot::CacheMemory::~CacheMemory().

## max_bytes

int64_t openshot::CacheBase::max_bytes

protected

This is the max number of bytes to cache (0 = no limit)

Definition at line 53 of file CacheBase.h.

Referenced by openshot::CacheDisk::CacheDisk(), GetMaxBytes(), JsonValue(), SetJsonValue(), and SetMaxBytes().

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

- CacheBase.h
- CacheBase.cpp