X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fframecache.h;fp=cinelerra-5.1%2Fcinelerra%2Fframecache.h;h=5708e006c4565eb2566d25c52e6be8810bf4146c;hp=429c5bbada836ee64b9269e7ad503832485f9668;hb=2441cb0cb7f655fad2f76c982f2ac93897d09dbe;hpb=b75d1938e1d08c7f3ac49b19bb69bbeec5053aab diff --git a/cinelerra-5.1/cinelerra/framecache.h b/cinelerra-5.1/cinelerra/framecache.h index 429c5bba..5708e006 100644 --- a/cinelerra-5.1/cinelerra/framecache.h +++ b/cinelerra-5.1/cinelerra/framecache.h @@ -57,67 +57,49 @@ public: FrameCache(); ~FrameCache(); -// Returns 1 if frame exists in cache and copies it to the frame argument. - int get_frame(VFrame *frame, - int64_t position, - int layer, - double frame_rate, - int source_id = -1); // Returns pointer to cache entry if frame exists or 0. // If a frame is found, the frame cache is left in the locked state until // unlock is called. If nothing is found, the frame cache is unlocked before // returning. This keeps the item from being deleted. // asset - supplied by user if the cache is not part of a file. - VFrame* get_frame_ptr(int64_t position, - int layer, - double frame_rate, - int color_model, - int w, - int h, - int source_id = -1); + VFrame* get_frame_ptr(int64_t position, int layer, double frame_rate, + int color_model, int w, int h, int source_id); +// lock and call get_vframe + VFrame *get_vframe(int64_t position, int w, int h, + int color_model, int layer, double frame_rate, + int source_id); +// caller holds lock + VFrame *get_frame(int64_t position, int w, int h, + int color_model, int layer, double frame_rate, + int source_id); +// Returns 1 if frame exists in cache and copies it to the frame argument. + int get_frame(VFrame *frame, int64_t position, + int layer, double frame_rate, int source_id); // Puts the frame in cache. // use_copy - if 1 a copy of the frame is made. if 0 the argument is stored. // The copy of the frame is deleted by FrameCache in a future delete_oldest. // asset - supplied by user if the cache is not part of a file. - void put_frame(VFrame *frame, - int64_t position, - int layer, - double frame_rate, - int use_copy, - Indexable *indexable); -// create new cache vframe at position, return 0 if it already exists -// if first_frame set, clear cache before new vframe created -// if new vframe created, leave cache locked for frame load - VFrame *new_cache_frame(int64_t position, int w, int h, - int color_model, int layer, double frame_rate, - int first_frame); - void put_cache_frame(); - +// caller holds lock + void put_vframe(VFrame *frame, int64_t position, + int layer, double frame_rate, int source_id); +// lock, call get_vframe, if exists: ret = 0; else add frame, ret = 1; unlock + void put_frame(VFrame *frame, int64_t position, + int layer, double frame_rate, int use_copy, Indexable *idxbl); + int get_cache_frame(VFrame *frame, int64_t position, + int layer, double frame_rate); + void put_cache_frame(VFrame *frame, int64_t position, + int layer, double frame_rate, int use_copy); void dump(); - - - - private: // Return 1 if matching frame exists. // Return 0 if not. int frame_exists(VFrame *format, - int64_t position, - int layer, - double frame_rate, - FrameCacheItem **item_return, - int source_id); - int frame_exists(int64_t position, - int layer, - double frame_rate, - int color_model, - int w, - int h, - FrameCacheItem **item_return, - int source_id); + int64_t position, int layer, double frame_rate, + FrameCacheItem **item_return, int source_id); + int frame_exists(int64_t position, int layer, double frame_rate, + int w, int h, int color_model, + FrameCacheItem **item_return, int source_id); }; - - #endif