upgrade ffmpeg to 3.4.2, add proxy popup, undo/redo deadlock fix, rework nested edl
[goodguy/history.git] / cinelerra-5.1 / cinelerra / edl.h
index dbafb41e42e348c5ba639277a1df9431d8e0d0be..d523779b8f4637d6e4b8eabcc71926e6b33a8667 100644 (file)
@@ -40,7 +40,7 @@
 #include "localsession.inc"
 #include "maxchannels.h"
 #include "mutex.inc"
-#include "nestededls.inc"
+#include "clipedls.h"
 #include "playabletracks.inc"
 #include "playbackconfig.h"
 #include "pluginserver.h"
@@ -50,6 +50,7 @@
 #include "theme.inc"
 #include "tracks.inc"
 #include "vedit.inc"
+#include "zwindow.h"
 
 // Loading and saving are built on load and copy except for automation:
 
@@ -79,14 +80,11 @@ public:
        void boundaries();
 // Create tracks using existing configuration
        int create_default_tracks();
-       int load_xml(FileXML *file,
-               uint32_t load_flags);
-       int save_xml(FileXML *xml,
-               const char *output_path,
-               int is_clip,
-               int is_vwindow);
-    int load_audio_config(FileXML *file, int append_mode, uint32_t load_flags);
-    int load_video_config(FileXML *file, int append_mode, uint32_t load_flags);
+       int load_xml(FileXML *file, uint32_t load_flags);
+       int read_xml(FileXML *file, uint32_t load_flags);
+       int save_xml(FileXML *xml, const char *output_path);
+       int load_audio_config(FileXML *file, int append_mode, uint32_t load_flags);
+       int load_video_config(FileXML *file, int append_mode, uint32_t load_flags);
 
 // Return 1 if rendering requires a virtual console.
        int get_use_vconsole(VEdit* *playable_edit,
@@ -94,12 +92,25 @@ public:
                int direction,
                PlayableTracks *playable_tracks);
 
-// Convert position to frames if cursor alignment is enabled
+// Convert position to frame boundry times
+       double frame_align(double position, int round);
+// frame align if cursor alignment is enabled
        double align_to_frame(double position, int round);
 
+// increase track w/h to at least session w/h
+       void retrack();
 // Scale all sample values since everything is locked to audio
        void rechannel();
        void resample(double old_rate, double new_rate, int data_type);
+       int copy(double start, double end, int all,
+               FileXML *file, const char *output_path, int rewind_it);
+       int copy_clip(double start, double end, int all,
+               FileXML *file, const char *output_path, int rewind_it);
+       int copy_nested_edl(double start, double end, int all,
+               FileXML *file, const char *output_path, int rewind_it);
+       int copy_vwindow_edl(double start, double end, int all,
+               FileXML *file, const char *output_path, int rewind_it);
+
        void copy_tracks(EDL *edl);
 // Copies project path, folders, EDLSession, and LocalSession from edl argument.
 // session_only - used by preferences and format specify
@@ -108,6 +119,8 @@ public:
        int copy_all(EDL *edl);
        void copy_assets(EDL *edl);
        void copy_clips(EDL *edl);
+       void copy_nested(EDL *edl);
+       void copy_mixers(EDL *edl);
 // Copy pan and fade settings from edl
        void synchronize_params(EDL *edl);
 // Determine if the positions are equivalent if they're within half a frame
@@ -125,11 +138,15 @@ public:
 // Set points and labels
        void set_inpoint(double position);
        void set_outpoint(double position);
+       void unset_inoutpoint();
 // Redraw resources during index builds
        void set_index_file(Indexable *indexable);
 // Add assets from the src to the destination
        void update_assets(EDL *src);
        void optimize();
+// return next/prev edit starting from position
+       double next_edit(double position);
+       double prev_edit(double position);
 // Debug
        int dump(FILE *fp=stdout);
        static int next_id();
@@ -159,31 +176,26 @@ public:
                int edit_autos);
 
 // Editing functions
-       int copy_assets(double start,
-               double end,
-               FileXML *file,
-               int all,
-               const char *output_path);
-       int copy(double start,
-               double end,
-               int all,   // Ignore recordable status of tracks for saving
-               int is_clip,
-               int is_vwindow,
-               FileXML *file,
-               const char *output_path,
-               int rewind_it);     // Rewind EDL for easy pasting
-       void paste_silence(double start,
-               double end,
+       int copy_assets(double start, double end,
+               FileXML *file, int all, const char *output_path);
+       int copy(double start, double end, int all,
+               const char *closer, FileXML *file,
+               const char *output_path, int rewind_it);
+       EDL *get_nested(EDL *nested_edl, const char *path);
+       EDL *new_nested(EDL *nested_edl, const char *path);
+       void create_nested(EDL *nested_edl, const char *path);
+       void paste_silence(double start, double end,
                int edit_labels /* = 1 */,
                int edit_plugins,
                int edit_autos);
        void remove_from_project(ArrayList<Indexable*> *assets);
        void remove_from_project(ArrayList<EDL*> *clips);
-       int clear(double start,
-               double end,
+       int blade(double position);
+       int clear(double start, double end,
                int clear_labels,
                int clear_plugins,
                int edit_autos);
+       void deglitch(double position);
 // Insert the asset at a point in the EDL
        void insert_asset(Asset *asset,
                EDL *nested_edl,
@@ -231,21 +243,18 @@ public:
 
 // Titles of all subfolders
        ArrayList<char*> folders;
-// Clips
-       ArrayList<EDL*> clips;
-// Nested EDLs
-       NestedEDLs *nested_edls;
+// Clips, Nested EDLs
+       ClipEDLs clips, nested_edls;
 // EDLs being shown in VWindows
        ArrayList<EDL*> vwindow_edls;
 // is the vwindow_edl shared and therefore should not be deleted in destructor
 //     int vwindow_edl_shared;
+       Mixers mixers;
 
 // Media files
 // Shared between all EDLs
        Assets *assets;
 
-
-
        Tracks *tracks;
        Labels *labels;
 // Shared between all EDLs in a tree, for projects.
@@ -253,17 +262,8 @@ public:
 // Specific to this EDL, for clips.
        LocalSession *local_session;
 
-
-
-
-
-
 // Use parent Assets if nonzero
        EDL *parent_edl;
-
-
-       static Mutex *id_lock;
-
 };
 
 #endif