Andrew improves asset of Interlace + some aspect ratio fixups
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / framecache.h
index 54222ff72ba7e3eb7472d79e03e6799e9a51cde4..5708e006c4565eb2566d25c52e6be8810bf4146c 100644 (file)
@@ -57,60 +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);
-
+// 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