1 // cvirtual.h 2 // LiVES 3 // (c) G. Finch 2008 - 2018 <salsaman+lives@gmail.com> 4 // released under the GNU GPL 3 or later 5 // see file ../COPYING or www.gnu.org for licensing details 6 7 // functions for handling "virtual" clips (CLIP_TYPE_FILE) 8 9 #ifndef HAS_LIVES_CVIRTUAL_H 10 #define HAS_LIVES_CVIRTUAL_H 11 12 #define FRAME_INDEX_FNAME "file_index" 13 14 boolean create_frame_index(int fileno, boolean init, frames_t start_offset, frames_t nframes); 15 boolean save_frame_index(int fileno); 16 frames_t load_frame_index(int fileno) WARN_UNUSED; 17 boolean check_clip_integrity(int fileno, const lives_clip_data_t *cdata, frames_t maxframe); 18 lives_img_type_t resolve_img_type(lives_clip_t *); 19 20 frames_t virtual_to_images(int sfileno, frames_t sframe, frames_t eframe, boolean update_progress, LiVESPixbuf **pbr); 21 void delete_frames_from_virtual(int sfileno, frames_t start, frames_t end); 22 void insert_images_in_virtual(int sfileno, frames_t where, frames_t frames, frames_t *frame_index, frames_t start); 23 void del_frame_index(lives_clip_t *); 24 void reverse_frame_index(int sfileno); 25 26 boolean realize_all_frames(int clipno, const char *msg, boolean enough); 27 28 /* 29 @brief remove rendered (real) frames from region oldsframe -> oldframes, when they are virtual in current frame_index 30 */ 31 void clean_images_from_virtual(lives_clip_t *, frames_t oldsframe, frames_t oldframes); 32 int *frame_index_copy(frames_t *findex, frames_t nframes, frames_t offset); 33 34 frames_t first_virtual_frame(int fileno, frames_t start, frames_t end); 35 boolean check_if_non_virtual(int fileno, frames_t start, frames_t end); 36 37 void restore_frame_index_back(int sfileno); 38 39 boolean is_virtual_frame(int sfileno, frames_t frame); 40 41 frames_t count_virtual_frames(frames_t *findex, frames_t start, frames_t end); 42 43 void insert_blank_frames(int sfileno, frames_t nframes, frames_t after, int palette); 44 45 boolean pull_frame_idle(livespointer data); // decode frames in an idle func 46 47 #define get_indexed_frame(clip, frame) (IS_VALID_CLIP(clip) ? mainw->files[clip]->frame_index ? \ 48 mainw->files[clip]->frame_index[frame - 1] == -1 ? -frame : \ 49 mainw->files[clip]->frame_index[frame - 1] : \ 50 frame : 0) 51 52 #endif 53