LiVES
3.2.0
|
#include "main.h"
#include "effects.h"
#include "interface.h"
#include "callbacks.h"
#include "resample.h"
#include "audio.h"
#include "cvirtual.h"
Go to the source code of this file.
Macros | |
#define | _get_or_zero(a, b, c) (a ? weed_get_##b##_value(a, c, NULL) : 0) |
#define | SAVE_THREAD |
Functions | |
LIVES_GLOBAL_INLINE int | weed_event_get_type (weed_event_t *event) |
LIVES_GLOBAL_INLINE int | weed_frame_event_get_tracks (weed_event_t *event, int **clips, int64_t **frames) |
LIVES_GLOBAL_INLINE int | weed_frame_event_get_audio_tracks (weed_event_t *event, int **clips, double **seeks) |
LIVES_GLOBAL_INLINE weed_timecode_t | weed_event_set_timecode (weed_event_t *event, weed_timecode_t tc) |
LIVES_GLOBAL_INLINE weed_timecode_t | weed_event_get_timecode (weed_event_t *event) |
GNU_PURE void *** | get_event_pchains (void) |
LIVES_GLOBAL_INLINE weed_timecode_t | get_event_timecode (weed_plant_t *plant) |
LIVES_GLOBAL_INLINE int | get_event_type (weed_plant_t *plant) |
LIVES_GLOBAL_INLINE weed_plant_t * | get_prev_event (weed_plant_t *event) |
LIVES_GLOBAL_INLINE weed_plant_t * | get_next_event (weed_plant_t *event) |
LIVES_GLOBAL_INLINE weed_plant_t * | get_first_event (weed_plant_t *event_list) |
LIVES_GLOBAL_INLINE weed_plant_t * | get_last_event (weed_plant_t *event_list) |
boolean | has_frame_event_at (weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t **shortcut) |
int | get_audio_frame_clip (weed_plant_t *event, int track) |
returns clip number for track (track==-1 is backing audio) More... | |
double | get_audio_frame_vel (weed_plant_t *event, int track) |
returns velocity for track (track==-1 is backing audio) More... | |
double | get_audio_frame_seek (weed_plant_t *event, int track) |
returns velocity for track (track==-1 is backing audio) More... | |
int | get_frame_event_clip (weed_plant_t *event, int layer) |
frames_t | get_frame_event_frame (weed_plant_t *event, int layer) |
weed_event_t * | lives_event_list_new (weed_event_t *elist, const char *cdate) |
lib-ish stuff More... | |
void | unlink_event (weed_plant_t *event_list, weed_plant_t *event) |
void | delete_event (weed_plant_t *event_list, weed_plant_t *event) |
boolean | insert_event_before (weed_plant_t *at_event, weed_plant_t *event) |
boolean | insert_event_after (weed_plant_t *at_event, weed_plant_t *event) |
void | replace_event (weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event) |
weed_plant_t * | get_next_frame_event (weed_plant_t *event) |
weed_plant_t * | get_prev_frame_event (weed_plant_t *event) |
weed_plant_t * | get_next_audio_frame_event (weed_plant_t *event) |
weed_plant_t * | get_prev_audio_frame_event (weed_plant_t *event) |
weed_plant_t * | get_first_frame_event (weed_plant_t *event_list) |
weed_plant_t * | get_last_frame_event (weed_plant_t *event_list) |
weed_plant_t * | get_audio_block_start (weed_plant_t *event_list, int track, weed_timecode_t tc, boolean seek_back) |
void | reset_ttable (void) |
void | remove_frame_from_event (weed_plant_t *event_list, weed_plant_t *event, int track) |
boolean | is_blank_frame (weed_plant_t *event, boolean count_audio) |
void | remove_end_blank_frames (weed_plant_t *event_list, boolean remove_filter_inits) |
weed_timecode_t | get_next_paramchange (void **pchange_next, weed_timecode_t end_tc) |
weed_timecode_t | get_prev_paramchange (void **pchange_prev, weed_timecode_t start_tc) |
boolean | is_init_pchange (weed_plant_t *init_event, weed_plant_t *pchange_event) |
weed_plant_t * | event_copy_and_insert (weed_plant_t *in_event, weed_timecode_t out_tc, weed_plant_t *event_list, weed_event_t **ret_event) |
copy (duplicate) in_event and append it to event_list, changing the timecode to out_tc this is called during quantisation More... | |
boolean | frame_event_has_frame_for_track (weed_plant_t *event, int track) |
weed_plant_t * | get_frame_event_at (weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t *shortcut, boolean exact) |
boolean | filter_map_after_frame (weed_plant_t *fmap) |
weed_plant_t * | get_frame_event_at_or_before (weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t *shortcut) |
weed_plant_t * | get_filter_map_after (weed_plant_t *event, int ctrack) |
boolean | init_event_is_relevant (weed_plant_t *init_event, int ctrack) |
weed_plant_t * | get_filter_map_before (weed_plant_t *event, int ctrack, weed_plant_t *stop_event) |
void ** | get_init_events_before (weed_plant_t *event, weed_plant_t *init_event, boolean add) |
void | update_filter_maps (weed_plant_t *event, weed_plant_t *end_event, weed_plant_t *init_event) |
void | insert_filter_init_event_at (weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event) |
void | insert_filter_deinit_event_at (weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event) |
boolean | insert_filter_map_event_at (weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event, boolean before_frames) |
void | insert_param_change_event_at (weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event) |
weed_plant_t * | insert_frame_event_at (weed_plant_t *event_list, weed_timecode_t tc, int numframes, int *clips, int64_t *frames, weed_plant_t **shortcut) |
void | insert_audio_event_at (weed_plant_t *event, int track, int clipnum, double seek, double vel) |
void | remove_audio_for_track (weed_plant_t *event, int track) |
weed_plant_t * | append_marker_event (weed_plant_t *event_list, weed_timecode_t tc, int marker_type) |
weed_plant_t * | insert_marker_event_at (weed_plant_t *event_list, weed_plant_t *at_event, int marker_type, livespointer data) |
LIVES_GLOBAL_INLINE weed_plant_t * | insert_blank_frame_event_at (weed_plant_t *event_list, weed_timecode_t tc, weed_plant_t **shortcut) |
void | remove_filter_from_event_list (weed_plant_t *event_list, weed_plant_t *init_event) |
LIVES_GLOBAL_INLINE boolean | init_event_in_list (void **init_events, int num_inits, weed_plant_t *event) |
boolean | filter_map_has_event (weed_plant_t *fmap, weed_plant_t *event) |
boolean | filter_init_has_owner (weed_plant_t *init_event, int track) |
void | backup_host_tags (weed_plant_t *event_list, weed_timecode_t curr_tc) |
void | restore_host_tags (weed_plant_t *event_list, weed_timecode_t curr_tc) |
void | delete_param_changes_after_deinit (weed_plant_t *event_list, weed_plant_t *init_event) |
boolean | init_event_is_process_last (weed_plant_t *event) |
void | add_init_event_to_filter_map (weed_plant_t *fmap, weed_plant_t *event, void **hints) |
void | move_filter_init_event (weed_plant_t *event_list, weed_timecode_t new_tc, weed_plant_t *init_event, double fps) |
void | move_filter_deinit_event (weed_plant_t *event_list, weed_timecode_t new_tc, weed_plant_t *deinit_event, double fps, boolean rescale_pchanges) |
boolean | move_event_right (weed_plant_t *event_list, weed_plant_t *event, boolean can_stay, double fps) |
boolean | move_event_left (weed_plant_t *event_list, weed_plant_t *event, boolean can_stay, double fps) |
void | set_render_choice (LiVESToggleButton *togglebutton, livespointer choice) |
void | set_render_choice_button (LiVESButton *button, livespointer choice) |
LiVESWidget * | events_rec_dialog (void) |
void | event_list_free (weed_plant_t *event_list) |
void | event_list_replace_events (weed_plant_t *event_list, weed_plant_t *new_event_list) |
replace events in event_list with events in new_event_list More... | |
boolean | event_list_to_block (weed_plant_t *event_list, int num_events) |
void | event_list_close_gaps (weed_event_t *event_list) |
void | add_track_to_avol_init (weed_plant_t *filter, weed_plant_t *event, int nbtracks, boolean behind) |
void | event_list_add_track (weed_plant_t *event_list, int layer) |
weed_plant_t * | append_frame_event (weed_plant_t *event_list, weed_timecode_t tc, int numframes, int *clips, int64_t *frames) |
void ** | filter_init_add_pchanges (weed_plant_t *event_list, weed_plant_t *plant, weed_plant_t *init_event, int ntracks, int leave) |
weed_plant_t * | append_filter_init_event (weed_plant_t *event_list, weed_timecode_t tc, int filter_idx, int num_in_tracks, int key, weed_plant_t *inst) |
weed_plant_t * | append_filter_deinit_event (weed_plant_t *event_list, weed_timecode_t tc, void *init_event, void **pchain) |
weed_plant_t * | append_param_change_event (weed_plant_t *event_list, weed_timecode_t tc, int pnum, weed_plant_t *param, void *init_event, void **pchain) |
weed_plant_t * | append_filter_map_event (weed_plant_t *event_list, weed_timecode_t tc, void **init_events) |
void | get_active_track_list (int *clip_index, int num_tracks, weed_plant_t *filter_map) |
weed_plant_t * | process_events (weed_plant_t *next_event, boolean process_audio, weed_timecode_t curr_tc) |
lives_render_error_t | render_events (boolean reset, boolean rend_video, boolean rend_audio) |
render mainw->event_list to a clip More... | |
lives_render_error_t | render_events_cb (boolean dummy) |
boolean | start_render_effect_events (weed_plant_t *event_list, boolean render_vid, boolean render_aud) |
int | count_events (weed_plant_t *event_list, boolean all_events, weed_timecode_t start_tc, weed_timecode_t end_tc) |
frames_t | count_resampled_events (weed_plant_t *event_list, double fps) |
weed_timecode_t | event_list_get_end_tc (weed_plant_t *event_list) |
double | event_list_get_end_secs (weed_plant_t *event_list) |
weed_timecode_t | event_list_get_start_tc (weed_plant_t *event_list) |
double | event_list_get_start_secs (weed_plant_t *event_list) |
boolean | has_audio_frame (weed_plant_t *event_list) |
boolean | render_to_clip (boolean new_clip, boolean transcode) |
rendering More... | |
LIVES_INLINE void | dprint_recneg (void) |
boolean | backup_recording (char **esave_file, char **asave_file) |
void | event_list_add_end_events (weed_event_t *event_list, boolean is_final) |
boolean | deal_with_render_choice (boolean add_deinit) |
double * | get_track_visibility_at_tc (weed_plant_t *event_list, int ntracks, int nbtracks, weed_timecode_t tc, weed_plant_t **shortcut, boolean bleedthru) |
calculate the "visibility" of each track at timecode tc More... | |
LiVESWidget * | create_event_list_dialog (weed_plant_t *event_list, weed_timecode_t start_tc, weed_timecode_t end_tc) |
void | rdetw_spinh_changed (LiVESSpinButton *spinbutton, livespointer user_data) |
void | rdetw_spinw_changed (LiVESSpinButton *spinbutton, livespointer user_data) |
void | rdetw_spinf_changed (LiVESSpinButton *spinbutton, livespointer user_data) |
LiVESWidget * | add_video_options (LiVESWidget **spwidth, int defwidth, LiVESWidget **spheight, int defheight, LiVESWidget **spfps, double deffps, LiVESWidget **spframes, int defframes, boolean add_aspect, LiVESWidget *extra) |
LiVESWidget * | add_audio_options (LiVESWidget **cbbackaudio, LiVESWidget **cbpertrack) |
render_details * | create_render_details (int type) |
#define _get_or_zero | ( | a, | |
b, | |||
c | |||
) | (a ? weed_get_##b##_value(a, c, NULL) : 0) |
#define SAVE_THREAD |
anonymous enum |
LiVESWidget* add_audio_options | ( | LiVESWidget ** | cbbackaudio, |
LiVESWidget ** | cbpertrack | ||
) |
void add_init_event_to_filter_map | ( | weed_plant_t * | fmap, |
weed_plant_t * | event, | ||
void ** | hints | ||
) |
Definition at line 1731 of file events.c.
Referenced by update_filter_maps().
void add_track_to_avol_init | ( | weed_plant_t * | filter, |
weed_plant_t * | event, | ||
int | nbtracks, | ||
boolean | behind | ||
) |
LiVESWidget* add_video_options | ( | LiVESWidget ** | spwidth, |
int | defwidth, | ||
LiVESWidget ** | spheight, | ||
int | defheight, | ||
LiVESWidget ** | spfps, | ||
double | deffps, | ||
LiVESWidget ** | spframes, | ||
int | defframes, | ||
boolean | add_aspect, | ||
LiVESWidget * | extra | ||
) |
weed_plant_t* append_filter_deinit_event | ( | weed_plant_t * | event_list, |
weed_timecode_t | tc, | ||
void * | init_event, | ||
void ** | pchain | ||
) |
weed_plant_t* append_filter_init_event | ( | weed_plant_t * | event_list, |
weed_timecode_t | tc, | ||
int | filter_idx, | ||
int | num_in_tracks, | ||
int | key, | ||
weed_plant_t * | inst | ||
) |
weed_plant_t* append_filter_map_event | ( | weed_plant_t * | event_list, |
weed_timecode_t | tc, | ||
void ** | init_events | ||
) |
weed_plant_t* append_frame_event | ( | weed_plant_t * | event_list, |
weed_timecode_t | tc, | ||
int | numframes, | ||
int * | clips, | ||
int64_t * | frames | ||
) |
Definition at line 2610 of file events.c.
Referenced by insert_frame_event_at(), load_frame_image(), and on_resample_vid_ok().
weed_plant_t* append_marker_event | ( | weed_plant_t * | event_list, |
weed_timecode_t | tc, | ||
int | marker_type | ||
) |
Definition at line 1382 of file events.c.
Referenced by event_list_add_end_events(), freeze_callback(), and load_frame_image().
weed_plant_t* append_param_change_event | ( | weed_plant_t * | event_list, |
weed_timecode_t | tc, | ||
int | pnum, | ||
weed_plant_t * | param, | ||
void * | init_event, | ||
void ** | pchain | ||
) |
Definition at line 2919 of file events.c.
Referenced by rec_param_change().
void backup_host_tags | ( | weed_plant_t * | event_list, |
weed_timecode_t | curr_tc | ||
) |
boolean backup_recording | ( | char ** | esave_file, |
char ** | asave_file | ||
) |
Definition at line 5028 of file events.c.
Referenced by catch_sigint(), and lives_exit().
int count_events | ( | weed_plant_t * | event_list, |
boolean | all_events, | ||
weed_timecode_t | start_tc, | ||
weed_timecode_t | end_tc | ||
) |
Definition at line 4542 of file events.c.
Referenced by deorder_frames(), multitrack_view_events(), multitrack_view_sel_events(), and save_event_frames().
frames_t count_resampled_events | ( | weed_plant_t * | event_list, |
double | fps | ||
) |
Definition at line 4560 of file events.c.
Referenced by start_render_effect_events().
LiVESWidget* create_event_list_dialog | ( | weed_plant_t * | event_list, |
weed_timecode_t | start_tc, | ||
weed_timecode_t | end_tc | ||
) |
Definition at line 5582 of file events.c.
Referenced by multitrack_view_events(), and multitrack_view_sel_events().
render_details* create_render_details | ( | int | type | ) |
Definition at line 6252 of file events.c.
Referenced by mt_change_vals_activate(), on_multitrack_activate(), and render_to_clip().
user may have recorded a generator with no other clips loaded
< new clip frames always start at 1
< same clip frames start where recording started
multitrack will set this itself
Definition at line 5159 of file events.c.
Referenced by render_choice_idle().
void delete_event | ( | weed_plant_t * | event_list, |
weed_plant_t * | event | ||
) |
Definition at line 311 of file events.c.
Referenced by append_param_change_event(), event_list_close_gaps(), move_event_right(), on_del_node_clicked(), remove_end_blank_frames(), remove_frame_from_event(), remove_markers(), and replace_event().
void delete_param_changes_after_deinit | ( | weed_plant_t * | event_list, |
weed_plant_t * | init_event | ||
) |
LIVES_INLINE void dprint_recneg | ( | void | ) |
weed_plant_t* event_copy_and_insert | ( | weed_plant_t * | in_event, |
weed_timecode_t | out_tc, | ||
weed_plant_t * | event_list, | ||
weed_event_t ** | ret_event | ||
) |
copy (duplicate) in_event and append it to event_list, changing the timecode to out_tc this is called during quantisation
called during quantisation
copy an event and insert it in event_list events must be copied in time order, since filter_deinit, filter_map and param_change events MUST refer to prior filter_init events
when we copy a filter_init, we add a new field to the copy "event_id". This contains the value of the pointer to original event we use this to locate the effect_init event in the new event_list
for effect_deinit, effect_map, param_change, we change the "init_event(s)" property to point to our copy effect_init
we don't need to make pchain array here, provided we later call event_list_rectify() (this only applies to multitrack, since we interpolate parameters there; in clip editor the paramter changes are applied as recorded, with no interpolation)
we check for memory allocation errors here, because we could be building a large new event_list on mem error we return NULL, caller should free() event_list in that case
void event_list_add_end_events | ( | weed_event_t * | event_list, |
boolean | is_final | ||
) |
Definition at line 5102 of file events.c.
Referenced by on_record_perf_activate().
void event_list_add_track | ( | weed_plant_t * | event_list, |
int | layer | ||
) |
void event_list_close_gaps | ( | weed_event_t * | event_list | ) |
void event_list_free | ( | weed_plant_t * | event_list | ) |
Definition at line 2313 of file events.c.
Referenced by check_for_layout_del(), close_current_file(), del_current_set(), lives_exit(), load_event_list(), mt_memory_free(), multitrack_redo(), on_load_event_list_activate(), on_resample_vid_ok(), remove_current_from_affected_layouts(), render_to_clip(), stored_event_list_free_all(), and wipe_layout().
double event_list_get_end_secs | ( | weed_plant_t * | event_list | ) |
Definition at line 4607 of file events.c.
Referenced by resize_timeline().
weed_timecode_t event_list_get_end_tc | ( | weed_plant_t * | event_list | ) |
Definition at line 4601 of file events.c.
Referenced by event_list_get_end_secs().
double event_list_get_start_secs | ( | weed_plant_t * | event_list | ) |
Definition at line 4618 of file events.c.
Referenced by save_event_frames().
weed_timecode_t event_list_get_start_tc | ( | weed_plant_t * | event_list | ) |
Definition at line 4612 of file events.c.
Referenced by event_list_get_start_secs().
void event_list_replace_events | ( | weed_plant_t * | event_list, |
weed_plant_t * | new_event_list | ||
) |
replace events in event_list with events in new_event_list
Definition at line 2320 of file events.c.
Referenced by render_to_clip().
boolean event_list_to_block | ( | weed_plant_t * | event_list, |
int | num_events | ||
) |
Definition at line 2329 of file events.c.
Referenced by save_event_frames().
void** filter_init_add_pchanges | ( | weed_plant_t * | event_list, |
weed_plant_t * | plant, | ||
weed_plant_t * | init_event, | ||
int | ntracks, | ||
int | leave | ||
) |
boolean filter_init_has_owner | ( | weed_plant_t * | init_event, |
int | track | ||
) |
boolean filter_map_after_frame | ( | weed_plant_t * | fmap | ) |
Definition at line 803 of file events.c.
Referenced by get_next_fm(), and get_prev_fm().
boolean filter_map_has_event | ( | weed_plant_t * | fmap, |
weed_plant_t * | event | ||
) |
boolean frame_event_has_frame_for_track | ( | weed_plant_t * | event, |
int | track | ||
) |
void get_active_track_list | ( | int * | clip_index, |
int | num_tracks, | ||
weed_plant_t * | filter_map | ||
) |
if we are previewing a solo effect in multitrack, then we ignore the usual rules for the front frame, and instead use the (first) output track from the filter instance
Definition at line 3008 of file events.c.
Referenced by load_frame_image(), and render_events().
weed_plant_t* get_audio_block_start | ( | weed_plant_t * | event_list, |
int | track, | ||
weed_timecode_t | tc, | ||
boolean | seek_back | ||
) |
Definition at line 434 of file events.c.
Referenced by multitrack_audio_insert().
int get_audio_frame_clip | ( | weed_plant_t * | event, |
int | track | ||
) |
returns clip number for track (track==-1 is backing audio)
Definition at line 147 of file events.c.
Referenced by avel_reverse_toggled(), avel_spin_changed(), and get_audio_block_start().
double get_audio_frame_seek | ( | weed_plant_t * | event, |
int | track | ||
) |
returns velocity for track (track==-1 is backing audio)
Definition at line 187 of file events.c.
Referenced by avel_reverse_toggled(), and avel_spin_changed().
double get_audio_frame_vel | ( | weed_plant_t * | event, |
int | track | ||
) |
returns velocity for track (track==-1 is backing audio)
Definition at line 165 of file events.c.
Referenced by avel_reverse_toggled(), get_audio_block_start(), in_anchor_toggled(), and out_anchor_toggled().
LIVES_GLOBAL_INLINE weed_timecode_t get_event_timecode | ( | weed_plant_t * | plant | ) |
Definition at line 98 of file events.c.
Referenced by add_blank_frames_up_to(), add_filter_deinit_events(), add_markers(), add_mt_param_box(), audio_process_events_to(), avel_reverse_toggled(), avel_spin_changed(), backup_host_tags(), block_overlap(), count_events(), count_resampled_events(), deorder_frames(), do_block_context(), event_list_add_end_events(), event_list_close_gaps(), event_list_get_end_tc(), event_list_get_start_tc(), fill_abuffer_from(), filter_init_add_pchanges(), filter_map_after_frame(), freeze_callback(), get_audio_and_effects_state_at(), get_frame_event_at(), get_frame_event_at_or_before(), get_next_paramchange(), get_prev_fm(), get_prev_paramchange(), get_region_overlap(), has_frame_event_at(), in_anchor_toggled(), insert_event_after(), insert_event_before(), insert_filter_deinit_event_at(), insert_filter_init_event_at(), insert_filter_map_event_at(), insert_frame_event_at(), insert_marker_event_at(), insert_param_change_event_at(), interpolate_param(), is_init_pchange(), move_block(), move_event_left(), move_event_right(), move_filter_deinit_event(), move_filter_init_event(), mt_add_block_effect(), mt_add_region_effect(), mt_do_autotransition(), mt_sensitise(), multitrack_audio_insert(), multitrack_insert(), on_del_node_clicked(), on_mt_delfx_activate(), on_next_fm_clicked(), on_next_node_clicked(), on_node_spin_value_changed(), on_prev_fm_clicked(), on_prev_node_clicked(), on_set_pvals_clicked(), out_anchor_toggled(), pre_analyse(), remove_frame_from_event(), render_events(), replace_event(), restore_host_tags(), show_in_out_images(), update_filter_events(), weed_event_get_timecode(), and weed_event_set_timecode().
LIVES_GLOBAL_INLINE int get_event_type | ( | weed_plant_t * | plant | ) |
Definition at line 103 of file events.c.
Referenced by count_resampled_events(), event_list_add_track(), insert_event_after(), insert_event_before(), render_events(), and weed_event_get_type().
weed_plant_t* get_filter_map_after | ( | weed_plant_t * | event, |
int | ctrack | ||
) |
Definition at line 821 of file events.c.
Referenced by get_next_fm().
weed_plant_t* get_filter_map_before | ( | weed_plant_t * | event, |
int | ctrack, | ||
weed_plant_t * | stop_event | ||
) |
Definition at line 895 of file events.c.
Referenced by get_next_fm(), get_prev_fm(), and get_track_visibility_at_tc().
LIVES_GLOBAL_INLINE weed_plant_t* get_first_event | ( | weed_plant_t * | event_list | ) |
Definition at line 119 of file events.c.
Referenced by add_markers(), append_filter_deinit_event(), append_filter_init_event(), append_param_change_event(), backup_host_tags(), check_for_layout_del(), count_events(), count_resampled_events(), deorder_frames(), event_list_add_track(), event_list_close_gaps(), event_list_get_start_tc(), event_list_rectify(), event_list_to_block(), get_audio_and_effects_state_at(), get_first_frame_event(), get_region_overlap(), insert_filter_init_event_at(), insert_filter_map_event_at(), insert_frame_event_at(), insert_marker_event_at(), insert_param_change_event_at(), mt_delete_clips(), mt_sensitise(), mt_spin_end_value_changed(), mt_spin_start_value_changed(), multitrack_delete(), multitrack_insert(), on_render_activate(), on_seltrack_activate(), play_file(), pre_analyse(), remove_markers(), resize_timeline(), restore_host_tags(), save_event_list_inner(), start_render_effect_events(), unlink_event(), and update_filter_events().
weed_plant_t* get_first_frame_event | ( | weed_plant_t * | event_list | ) |
Definition at line 404 of file events.c.
Referenced by get_frame_event_at(), has_audio_frame(), has_frame_event_at(), and insert_frame_event_at().
weed_plant_t* get_frame_event_at | ( | weed_plant_t * | event_list, |
weed_timecode_t | tc, | ||
weed_plant_t * | shortcut, | ||
boolean | exact | ||
) |
Definition at line 780 of file events.c.
Referenced by get_frame_event_at_or_before(), get_region_overlap(), insert_frames(), mt_add_region_effect(), multitrack_audio_insert(), multitrack_insert(), on_next_fm_clicked(), and on_prev_fm_clicked().
weed_plant_t* get_frame_event_at_or_before | ( | weed_plant_t * | event_list, |
weed_timecode_t | tc, | ||
weed_plant_t * | shortcut | ||
) |
Definition at line 812 of file events.c.
Referenced by get_audio_block_start(), and get_track_visibility_at_tc().
int get_frame_event_clip | ( | weed_plant_t * | event, |
int | layer | ||
) |
Definition at line 209 of file events.c.
Referenced by add_markers(), get_clip_for_block(), move_event_left(), move_event_right(), multitrack_insert(), and pre_analyse().
frames_t get_frame_event_frame | ( | weed_plant_t * | event, |
int | layer | ||
) |
Definition at line 224 of file events.c.
Referenced by move_event_left(), move_event_right(), and pre_analyse().
void** get_init_events_before | ( | weed_plant_t * | event, |
weed_plant_t * | init_event, | ||
boolean | add | ||
) |
LIVES_GLOBAL_INLINE weed_plant_t* get_last_event | ( | weed_plant_t * | event_list | ) |
Definition at line 124 of file events.c.
Referenced by add_filter_deinit_events(), append_filter_deinit_event(), append_filter_init_event(), append_param_change_event(), event_list_add_end_events(), event_list_get_end_tc(), freeze_callback(), get_last_frame_event(), get_region_overlap(), insert_filter_deinit_event_at(), insert_filter_map_event_at(), insert_frame_event_at(), insert_frames(), load_frame_image(), remove_end_blank_frames(), remove_frame_from_event(), and unlink_event().
weed_plant_t* get_last_frame_event | ( | weed_plant_t * | event_list | ) |
Definition at line 419 of file events.c.
Referenced by freeze_callback(), insert_frame_event_at(), insert_frames(), load_frame_image(), mt_add_region_effect(), on_mute_activate(), and update_filter_events().
weed_plant_t* get_next_audio_frame_event | ( | weed_plant_t * | event | ) |
Definition at line 380 of file events.c.
Referenced by fill_abuffer_from().
LIVES_GLOBAL_INLINE weed_plant_t* get_next_event | ( | weed_plant_t * | event | ) |
Definition at line 114 of file events.c.
Referenced by add_markers(), backup_host_tags(), count_events(), count_resampled_events(), event_list_add_track(), event_list_close_gaps(), event_list_to_block(), get_first_frame_event(), get_frame_event_at(), get_next_audio_frame_event(), get_next_fm(), get_next_frame_event(), insert_event_after(), insert_filter_deinit_event_at(), insert_filter_map_event_at(), insert_frame_event_at(), is_init_pchange(), move_event_right(), multitrack_delete(), pre_analyse(), remove_markers(), render_events(), restore_host_tags(), save_event_list_inner(), unlink_event(), update_filter_events(), and update_filter_maps().
weed_plant_t* get_next_frame_event | ( | weed_plant_t * | event | ) |
Definition at line 356 of file events.c.
Referenced by get_next_fm(), get_prev_fm(), get_region_overlap(), has_audio_frame(), has_frame_event_at(), insert_frame_event_at(), and move_event_right().
weed_timecode_t get_next_paramchange | ( | void ** | pchange_next, |
weed_timecode_t | end_tc | ||
) |
weed_plant_t* get_prev_audio_frame_event | ( | weed_plant_t * | event | ) |
LIVES_GLOBAL_INLINE weed_plant_t* get_prev_event | ( | weed_plant_t * | event | ) |
Definition at line 109 of file events.c.
Referenced by append_filter_deinit_event(), append_filter_init_event(), append_param_change_event(), get_last_frame_event(), get_prev_audio_frame_event(), get_prev_fm(), get_prev_frame_event(), insert_event_before(), insert_filter_init_event_at(), insert_filter_map_event_at(), insert_frame_event_at(), insert_marker_event_at(), insert_param_change_event_at(), move_event_left(), remove_end_blank_frames(), and unlink_event().
weed_plant_t* get_prev_frame_event | ( | weed_plant_t * | event | ) |
Definition at line 368 of file events.c.
Referenced by filter_map_after_frame(), get_audio_block_start(), get_frame_event_at_or_before(), get_prev_fm(), get_region_overlap(), insert_frame_event_at(), insert_frames(), and load_frame_image().
weed_timecode_t get_prev_paramchange | ( | void ** | pchange_prev, |
weed_timecode_t | start_tc | ||
) |
double* get_track_visibility_at_tc | ( | weed_plant_t * | event_list, |
int | ntracks, | ||
int | nbtracks, | ||
weed_timecode_t | tc, | ||
weed_plant_t ** | shortcut, | ||
boolean | bleedthru | ||
) |
calculate the "visibility" of each track at timecode tc
that is to say, only the front track is visible, except if we have a transition and WEED_LEAF_HOST_AUDIO_TRANSITION is set
to do this, we need a filter map and a frame/clip stack
if bleedthru is TRUE, all values are set to 1.0
TODO *** make selectable: linear or non-linear
boolean has_audio_frame | ( | weed_plant_t * | event_list | ) |
Definition at line 4623 of file events.c.
Referenced by render_to_clip().
boolean has_frame_event_at | ( | weed_plant_t * | event_list, |
weed_timecode_t | tc, | ||
weed_plant_t ** | shortcut | ||
) |
LIVES_GLOBAL_INLINE boolean init_event_in_list | ( | void ** | init_events, |
int | num_inits, | ||
weed_plant_t * | event | ||
) |
Definition at line 1550 of file events.c.
Referenced by compare_filter_maps().
boolean init_event_is_process_last | ( | weed_plant_t * | event | ) |
Definition at line 1718 of file events.c.
Referenced by compare_filter_maps().
boolean init_event_is_relevant | ( | weed_plant_t * | init_event, |
int | ctrack | ||
) |
Definition at line 859 of file events.c.
Referenced by compare_filter_maps().
void insert_audio_event_at | ( | weed_plant_t * | event, |
int | track, | ||
int | clipnum, | ||
double | seek, | ||
double | vel | ||
) |
Definition at line 1243 of file events.c.
Referenced by avel_reverse_toggled(), avel_spin_changed(), event_list_add_end_events(), freeze_callback(), load_frame_image(), and on_mute_activate().
LIVES_GLOBAL_INLINE weed_plant_t* insert_blank_frame_event_at | ( | weed_plant_t * | event_list, |
weed_timecode_t | tc, | ||
weed_plant_t ** | shortcut | ||
) |
Definition at line 1472 of file events.c.
Referenced by event_list_add_end_events(), load_frame_image(), and remove_frame_from_event().
boolean insert_event_after | ( | weed_plant_t * | at_event, |
weed_plant_t * | event | ||
) |
Definition at line 334 of file events.c.
Referenced by insert_filter_deinit_event_at(), insert_filter_init_event_at(), insert_filter_map_event_at(), insert_marker_event_at(), insert_param_change_event_at(), and replace_event().
boolean insert_event_before | ( | weed_plant_t * | at_event, |
weed_plant_t * | event | ||
) |
Definition at line 321 of file events.c.
Referenced by insert_filter_deinit_event_at(), insert_filter_init_event_at(), insert_filter_map_event_at(), insert_marker_event_at(), and insert_param_change_event_at().
void insert_filter_deinit_event_at | ( | weed_plant_t * | event_list, |
weed_plant_t * | at_event, | ||
weed_plant_t * | event | ||
) |
void insert_filter_init_event_at | ( | weed_plant_t * | event_list, |
weed_plant_t * | at_event, | ||
weed_plant_t * | event | ||
) |
weed_plant_t* insert_frame_event_at | ( | weed_plant_t * | event_list, |
weed_timecode_t | tc, | ||
int | numframes, | ||
int * | clips, | ||
int64_t * | frames, | ||
weed_plant_t ** | shortcut | ||
) |
Definition at line 1144 of file events.c.
Referenced by add_blank_frames_up_to(), insert_blank_frame_event_at(), insert_frames(), and remove_frame_from_event().
weed_plant_t* insert_marker_event_at | ( | weed_plant_t * | event_list, |
weed_plant_t * | at_event, | ||
int | marker_type, | ||
livespointer | data | ||
) |
Definition at line 1418 of file events.c.
Referenced by add_markers().
void insert_param_change_event_at | ( | weed_plant_t * | event_list, |
weed_plant_t * | at_event, | ||
weed_plant_t * | event | ||
) |
Definition at line 1116 of file events.c.
Referenced by filter_init_add_pchanges(), and move_event_right().
Definition at line 523 of file events.c.
Referenced by remove_end_blank_frames().
boolean is_init_pchange | ( | weed_plant_t * | init_event, |
weed_plant_t * | pchange_event | ||
) |
Definition at line 585 of file events.c.
Referenced by append_param_change_event().
weed_event_t* lives_event_list_new | ( | weed_event_t * | elist, |
const char * | cdate | ||
) |
lib-ish stuff
Definition at line 240 of file events.c.
Referenced by append_filter_deinit_event(), append_filter_init_event(), append_frame_event(), append_marker_event(), append_param_change_event(), insert_frames(), load_frame_image(), and save_event_list_inner().
boolean move_event_left | ( | weed_plant_t * | event_list, |
weed_plant_t * | event, | ||
boolean | can_stay, | ||
double | fps | ||
) |
Definition at line 2103 of file events.c.
Referenced by update_filter_events().
boolean move_event_right | ( | weed_plant_t * | event_list, |
weed_plant_t * | event, | ||
boolean | can_stay, | ||
double | fps | ||
) |
Definition at line 2030 of file events.c.
Referenced by update_filter_events().
void move_filter_deinit_event | ( | weed_plant_t * | event_list, |
weed_timecode_t | new_tc, | ||
weed_plant_t * | deinit_event, | ||
double | fps, | ||
boolean | rescale_pchanges | ||
) |
Definition at line 1892 of file events.c.
Referenced by move_event_left(), and update_filter_events().
void move_filter_init_event | ( | weed_plant_t * | event_list, |
weed_timecode_t | new_tc, | ||
weed_plant_t * | init_event, | ||
double | fps | ||
) |
Definition at line 1784 of file events.c.
Referenced by move_event_right(), and update_filter_events().
weed_plant_t* process_events | ( | weed_plant_t * | next_event, |
boolean | process_audio, | ||
weed_timecode_t | curr_tc | ||
) |
load a frame from the scrap file
Definition at line 3082 of file events.c.
Referenced by get_audio_and_effects_state_at().
void rdetw_spinf_changed | ( | LiVESSpinButton * | spinbutton, |
livespointer | user_data | ||
) |
void rdetw_spinh_changed | ( | LiVESSpinButton * | spinbutton, |
livespointer | user_data | ||
) |
void rdetw_spinw_changed | ( | LiVESSpinButton * | spinbutton, |
livespointer | user_data | ||
) |
void remove_audio_for_track | ( | weed_plant_t * | event, |
int | track | ||
) |
void remove_end_blank_frames | ( | weed_plant_t * | event_list, |
boolean | remove_filter_inits | ||
) |
Definition at line 546 of file events.c.
Referenced by on_mt_delfx_activate().
void remove_filter_from_event_list | ( | weed_plant_t * | event_list, |
weed_plant_t * | init_event | ||
) |
Definition at line 1480 of file events.c.
Referenced by move_event_left(), move_event_right(), on_mt_delfx_activate(), remove_end_blank_frames(), and update_filter_events().
void remove_frame_from_event | ( | weed_plant_t * | event_list, |
weed_plant_t * | event, | ||
int | track | ||
) |
lives_render_error_t render_events | ( | boolean | reset, |
boolean | rend_video, | ||
boolean | rend_audio | ||
) |
render mainw->event_list to a clip
the first time, this should be called with reset = TRUE, then always with reset = FALSE for the rest of the rendering each subsequent call will handle one event in the event list (the current event is stored internally and updated on each call).
Video and audio are rendered separately, audio is rendered only when:
The first two cases happen automatically, the latter case may be used if a preview is required, to ensure that audio is rendered up to the preview end point.
the resulting output may be to an existing clip or a new one. When rendering to an existing clip (cfile->old_frames > 0) each call may overwrite an existing frame or extend it by (at most) one frame (measured in ouput fps). On this case rec_tc_delta is used to offset input timecodes to output. When outputting to a new clip, rec_tc_delta is ignored and each frame is appended ar the next frame timecode
The event_list is resampled in place, so that out frames coincide with the ouput frame rate (frames may be dropped or duplicated)
When rendering to a new clip, the frame width, height, fps and audio values (channels, rate etc) (if rendering audio) must be set first.
the event_list is rendered as-is, with the exception that param changes are not applied if rendering in multitrack, since these are interpolated separately. Otherwise, effect inits / deinits, param changes and filter maps are all updated. Seperate filter map pointers are maintained for video and audio and only filters for that stream are updated.
When rendering audio it is most efficient to render as large blocks as possible. These will be broken into smaller chunks internally and the audio filters are applied and updated using these smaller chunks. If rendering audio, the final call should be with mainw->flush_audio_tc set to the event_list length + (1. / cfile->fps) * TICKS_PER_SECOND. If audio ends before this then it will padded to the end with silence. When rendering to an existing clip, the behaviour of audio rendering is undefined.
The following values (lives_render_error_t) may be returned: LIVES_RENDER_READY - returned after the initial call with reset set to TRUE
LIVES_RENDER_PROCESSING - the next video event / audio block was handled successfully
LIVES_RENDER_EFFECTS_PAUSED - processing is paused, the internal state is unchanged
LIVES_RENDER_COMPLETE - the final event in the list was reached
LIVES_RENDER_ERROR_WRITE_FRAME - the output frame could not be written, and the user declined to retr
LIVES_RENDER_ERROR_WRITE_AUDIO LIVES_RENDER_ERROR_READ_AUDIO
tc delta is only used if we are rendering to an existing clip; otherwise resampling should have removed the event but just in case, we ignore it
set audio and video start positions
set the highest quality palette conversions
define the number of backing audio tracks (i.e tracks with audio but no video)
set (fixed) volume levels for input audio tracks
alt label text for when we are rendering audio parts
tc delta is only used if we are rendering to an existing clip; otherwise resampling should have removed the event but just in case, we ignore it
free bufferes to relesae memory
smooth out audio by ignoring tiny seek differences
no more events or audio to flush, rendering complete
Definition at line 3609 of file events.c.
Referenced by render_events_cb(), and start_render_effect_events().
lives_render_error_t render_events_cb | ( | boolean | dummy | ) |
values ignored if first param is FALSE
Definition at line 4447 of file events.c.
Referenced by on_effects_paused(), and start_render_effect_events().
rendering
will reshow the dialog
Definition at line 4635 of file events.c.
Referenced by on_render_activate().
void replace_event | ( | weed_plant_t * | event_list, |
weed_plant_t * | at_event, | ||
weed_plant_t * | event | ||
) |
Definition at line 347 of file events.c.
Referenced by insert_filter_map_event_at().
void restore_host_tags | ( | weed_plant_t * | event_list, |
weed_timecode_t | curr_tc | ||
) |
void set_render_choice | ( | LiVESToggleButton * | togglebutton, |
livespointer | choice | ||
) |
void set_render_choice_button | ( | LiVESButton * | button, |
livespointer | choice | ||
) |
boolean start_render_effect_events | ( | weed_plant_t * | event_list, |
boolean | render_vid, | ||
boolean | render_aud | ||
) |
Definition at line 4453 of file events.c.
Referenced by render_to_clip().
void unlink_event | ( | weed_plant_t * | event_list, |
weed_plant_t * | event | ||
) |
Definition at line 297 of file events.c.
Referenced by delete_event(), and move_event_right().
void update_filter_maps | ( | weed_plant_t * | event, |
weed_plant_t * | end_event, | ||
weed_plant_t * | init_event | ||
) |
LIVES_GLOBAL_INLINE weed_timecode_t weed_event_get_timecode | ( | weed_event_t * | event | ) |
Definition at line 89 of file events.c.
Referenced by append_param_change_event(), audio_process_events_to(), and pre_analyse().
LIVES_GLOBAL_INLINE int weed_event_get_type | ( | weed_event_t * | event | ) |
Definition at line 31 of file events.c.
Referenced by get_audio_and_effects_state_at().
LIVES_GLOBAL_INLINE weed_timecode_t weed_event_set_timecode | ( | weed_event_t * | event, |
weed_timecode_t | tc | ||
) |
Definition at line 83 of file events.c.
Referenced by pre_analyse().
LIVES_GLOBAL_INLINE int weed_frame_event_get_audio_tracks | ( | weed_event_t * | event, |
int ** | clips, | ||
double ** | seeks | ||
) |
number of actual tracks is actually half of the returned value
Definition at line 59 of file events.c.
Referenced by event_list_add_track(), and insert_audio_event_at().
LIVES_GLOBAL_INLINE int weed_frame_event_get_tracks | ( | weed_event_t * | event, |
int ** | clips, | ||
int64_t ** | frames | ||
) |