#include <stdio.h>
#include <stdint.h>
+#include "apatchgui.h"
#include "arraylist.h"
#include "asset.inc"
#include "assets.inc"
#include "audiodevice.inc"
+#include "autos.inc"
#include "awindow.inc"
#include "batchrender.inc"
#include "bcwindowbase.inc"
#include "pluginset.inc"
#include "preferences.inc"
#include "preferencesthread.inc"
+#include "proxy.inc"
#include "record.inc"
#include "recordlabel.inc"
#include "render.inc"
#include "transition.inc"
#include "transportque.inc"
#include "videowindow.inc"
+#include "vpatchgui.h"
#include "vwindow.inc"
+#include "zwindow.inc"
#include "wwindow.inc"
#include "wavecache.inc"
int run_script(FileXML *script);
int new_project();
int delete_project(int flash = 1);
- void quit(int unlock);
+ void quit();
int restart() { return restart_status; }
int load_defaults();
void show_lwindow();
void show_cwindow();
void show_gwindow();
+ void hide_gwindow();
int tile_windows(int window_config);
char *get_cwindow_display();
// void set_titles(int value);
int asset_to_edl(EDL *new_edl,
Asset *new_asset,
RecordLabels *labels = 0);
-// Convert nested_edl to a nested EDL in new_edl
-// suitable for pasting in paste_edls
- int edl_to_nested(EDL *new_edl,
- EDL *nested_edl);
// Entry point to insert assets and insert edls. Called by TrackCanvas
// and AssetPopup when assets are dragged in from AWindow.
// Find the plugin whose title matches title and return it
static PluginServer* scan_plugindb(char *title,
int data_type);
+ static void fix_plugin_title(char *title);
static int plugin_exists(const char *plugin_path, ArrayList<PluginServer*> &plugins);
static int plugin_exists(char *plugin_path);
void dump_plugindb(FILE *fp);
- void stop_playback(int wait=0);
-
-
-
+ void stop_playback(int wait);
+ void stop_transport();
+
+ void queue_mixers(EDL *edl, int command, int wait_tracking,
+ int use_inout, int update_refresh, int toggle_audio, int loop_play);
+ ZWindow *create_mixer(Indexable *indexable);
+ void create_mixers();
+ void refresh_mixers(int dir=1);
+ void stop_mixers();
+ void close_mixers(int destroy=1);
+ void open_mixers();
+ ZWindow *get_mixer(Mixer *&mixer);
+ void del_mixer(ZWindow *zwindow);
+ int mixer_track_active(Track *track);
+ void update_mixer_tracks();
+ void start_mixer();
+ int select_zwindow(ZWindow *zwindow);
+ void tile_mixers();
int load_filenames(ArrayList<char*> *filenames,
int load_mode = LOADMODE_REPLACE,
int move_right(int64_t distance = 0);
void move_up(int64_t distance = 0);
void move_down(int64_t distance = 0);
+ int find_selection(double position, int scroll_display = 0);
// seek to labels
// shift_down must be passed by the caller because different windows call
// seek to edit handles
int next_edit_handle(int shift_down);
int prev_edit_handle(int shift_down);
+// seek to keyframes
+ int nearest_plugin_keyframe(int shift_down, int dir);
// offset is pixels to add to track_start
void trackmovement(int offset, int pane_number);
// view_start is pixels
void copy();
int copy(double start, double end);
void cut();
+ void blade(double position);
+ void cut(double start, double end, double new_position=-1);
+// cut edit from current position to handle/label
+ void cut_left_edit();
+ void cut_right_edit();
+ void cut_left_label();
+ void cut_right_label();
// Calculate aspect ratio from pixel counts
static int create_aspect_ratio(float &w, float &h, int width, int height);
// Calculate defaults path
static void create_defaults_path(char *string, const char *config_file);
- void delete_folder(char *folder);
- void delete_inpoint();
- void delete_outpoint();
-
void delete_track();
void delete_track(Track *track);
void delete_tracks();
void move_track_up(Track *track);
void move_tracks_up();
void mute_selection();
- void new_folder(const char *new_folder);
- void overwrite(EDL *source);
+ void new_folder(const char *new_folder, int is_clips);
+ void delete_folder(char *folder);
// For clipboard commands
void paste();
// For splice and overwrite
- int paste(double start,
- double end,
- FileXML *file,
- int edit_labels,
- int edit_plugins,
- int edit_autos);
- int paste_output(int64_t startproject,
- int64_t endproject,
- int64_t startsource_sample,
- int64_t endsource_sample,
- int64_t startsource_frame,
- int64_t endsource_frame,
- Asset *asset,
- RecordLabels *new_labels);
+ void overwrite(EDL *source, int all);
+ void splice(EDL *source, int all);
+ int paste(double start, double end, FileXML *file,
+ int edit_labels, int edit_plugins, int edit_autos);
+ int paste_output(int64_t startproject, int64_t endproject,
+ int64_t startsource_sample, int64_t endsource_sample,
+ int64_t startsource_frame, int64_t endsource_frame,
+ Asset *asset, RecordLabels *new_labels);
void paste_silence();
// Detach single transition
void set_automation_mode(int mode);
void set_keyframe_type(int mode);
void set_auto_keyframes(int value, int lock_mwindow, int lock_cwindow);
+ void set_auto_visibility(Autos *autos, int value);
void set_labels_follow_edits(int value);
// Update the editing mode
void toggle_editing_mode();
void set_inpoint(int is_mwindow);
void set_outpoint(int is_mwindow);
- void splice(EDL *source);
+ void unset_inoutpoint(int is_mwindow);
void toggle_loop_playback();
void trim_selection();
// Synchronize EDL settings with all playback engines depending on current
// operation. Doesn't redraw anything.
void sync_parameters(int change_type = CHANGE_PARAMS);
- void to_clip();
+ void save_clip(EDL *new_edl, const char *txt);
+ void to_clip(EDL *edl, const char *txt, int all);
int toggle_label(int is_mwindow);
void undo_entry(BC_WindowBase *calling_window_gui);
void redo_entry(BC_WindowBase *calling_window_gui);
-
+ void save_undo_data();
+ void load_undo_data();
int cut_automation();
int copy_automation();
int paste_default_keyframe();
int clear_default_keyframe();
+ FloatAuto* get_float_auto(PatchGUI *patch,int idx);
+ IntAuto* get_int_auto(PatchGUI *patch,int idx);
+ PanAuto* get_pan_auto(PatchGUI *patch);
+ PatchGUI *get_patchgui(Track *track);
+
int modify_edithandles();
int modify_pluginhandles();
void finish_modify_handles();
+ void rescale_proxy(EDL *clip, int orig_scale, int new_scale);
+ void add_proxy(int use_scaler,
+ ArrayList<Indexable*> *orig_assets,
+ ArrayList<Indexable*> *proxy_assets);
+ int render_proxy(ArrayList<Indexable *> &new_idxbls);
+ void beep(double freq, double secs, double gain);
+ int enable_proxy();
+ int disable_proxy();
+ int to_proxy(Asset *asset, int new_scale, int new_use_scaler);
+ ProxyBeep *proxy_beep;
void dump_plugins(FILE *fp=stdout);
void dump_edl(FILE *fp=stdout);
MainIndexes *mainindexes;
MainProgress *mainprogress;
BRender *brender;
+ char cin_lang[4];
+ int brender_active;
const char *default_standard;
static Commercials *commercials;
int commercial_active;
int has_commercials();
+// copy of edl created in speed_before, used in speed_after to normalize_speed
+ EDL *speed_edl;
// Menu items
ArrayList<ColormodelItem*> colormodels;
// Viewer
Mutex *vwindows_lock;
ArrayList<VWindow*> vwindows;
+// Mixer
+ Mutex *zwindows_lock;
+ ArrayList<ZWindow*> zwindows;
// Asset manager
AWindow *awindow;
// Automation window
int wait_warning();
// Levels
LevelWindow *lwindow;
+ Mutex *run_lock;
// Lock during creation and destruction of GUI
Mutex *plugin_gui_lock;
Mutex *dead_plugin_lock;
Mutex *keyframe_gui_lock;
// Lock during creation and destruction of brender so playback doesn't use it.
Mutex *brender_lock;
-
// Initialize shared memory
- void init_shm();
-
+ void init_shm(const char *pfn, int64_t min);
// Initialize channel DB's for playback
void init_channeldb();
void init_render();
// This one happens asynchronously of the others. Used by playback to
// see what frame is background rendered.
int brender_available(int position);
- void set_brender_start();
+ void set_brender_active(int v, int update=1);
int put_commercial();
void activate_commercial() { commercial_active = 1; }
void commit_commercial();
void undo_commercial();
void cut_commercials();
+ void update_gui(int changed_edl);
int paste_subtitle_text(char *text, double start, double end);
void init_error();
void finit_error();
static void init_defaults(BC_Hash* &defaults, char *config_path);
+ void check_language();
const char *default_std();
void fill_preset_defaults(const char *preset, EDLSession *session);
const char *get_preset_name(int index);
static void get_plugin_path(char *path, const char *plug_dir, const char *fs_path);
static int init_plugins(MWindow *mwindow, Preferences *preferences);
static int init_ladspa_plugins(MWindow *mwindow, Preferences *preferences);
+ static void init_plugin_tips(ArrayList<PluginServer*> &plugins, const char *lang);
static int check_plugin_index(ArrayList<PluginServer*> &plugins,
const char *plug_dir, const char *plug_path);
static void init_plugin_index(MWindow *mwindow, Preferences *preferences,
FILE *fp, const char *plugin_dir);
static int init_ladspa_index(MWindow *mwindow, Preferences *preferences,
- const char *index_path, const char *plugin_dir);
+ FILE *fp, const char *plugin_dir);
static void scan_plugin_index(MWindow *mwindow, Preferences *preferences,
FILE *fp, const char *plug_dir, const char *plug_path, int &idx);
static void init_ffmpeg();
static void init_ffmpeg_index(MWindow *mwindow, Preferences *preferences, FILE *fp);
- static int load_plugin_index(MWindow *mwindow, const char *index_path,
- const char *plugin_dir);
- static PluginServer* new_ffmpeg_server(MWindow *mwindow, const char *name);
+ static int load_plugin_index(MWindow *mwindow, FILE *fp, const char *plugin_dir);
+ static PluginServer *new_ffmpeg_server(MWindow *mwindow, const char *name);
+ static int init_lv2_index(MWindow *mwindow, Preferences *preferences, FILE *fp);
+ static PluginServer *new_lv2_server(MWindow *mwindow, const char *name);
+ static void remove_plugin_index();
+
void init_preferences();
void init_signals();
void init_theme();
void init_commercials();
static void add_plugins(ArrayList<PluginServer*> &plugins);
static void delete_plugins();
-//
+ void speed_before();
+ int speed_after(int done);
+ int normalize_speed(EDL *old_edl, EDL *new_edl);
+//
void clean_indexes();
// TimeBomb timebomb;
SigHandler *sighandler;