LiVES
3.2.0
|
Go to the source code of this file.
Data Structures | |
struct | render_details |
Macros | |
#define | WEED_LEAF_HINT "hint" |
for backwards compat. More... | |
#define | WEED_LEAF_WEED_EVENT_API_VERSION "weed_event_api_version" |
parts of this may eventually become libweed-events More... | |
#define | WEED_LEAF_AUDIO_SIGNED "audio_signed" |
#define | WEED_LEAF_AUDIO_ENDIAN "audio_endian" |
#define | WEED_LEAF_AUDIO_SAMPLE_SIZE "audio_sample_size" |
#define | WEED_LEAF_AUDIO_VOLUME_TRACKS "audio_volume_tracks" |
#define | WEED_LEAF_AUDIO_VOLUME_VALUES "audio_volume_values" |
#define | WEED_LEAF_TRACK_LABEL_TRACKS "track_label_tracks" |
#define | WEED_LEAF_TRACK_LABEL_VALUES "track_label_values" |
#define | WEED_LEAF_AUTHOR "author" |
#define | WEED_LEAF_TITLE "title" |
#define | WEED_LEAF_COMMENTS "comments" |
#define | WEED_LEAF_LIVES_CREATED_VERSION "created_version" |
#define | WEED_LEAF_LIVES_EDITED_VERSION "edited_version" |
#define | WEED_LEAF_CREATED_DATE "host_created_date" |
#define | WEED_LEAF_EDITED_DATE "host_edited_date" |
#define | WEED_LEAF_FRAMES "frames" |
#define | WEED_LEAF_CLIPS "clips" |
#define | WEED_LEAF_AUDIO_CLIPS "audio_clips" |
#define | WEED_LEAF_AUDIO_SEEKS "audio_seeks" |
#define | WEED_LEAF_FILTER "filter" |
#define | WEED_LEAF_IN_COUNT "in_count" |
#define | WEED_LEAF_OUT_COUNT "out_count" |
#define | WEED_LEAF_IN_TRACKS "in_tracks" |
#define | WEED_LEAF_OUT_TRACKS "out_tracks" |
#define | WEED_LEAF_EVENT_ID "event_id" |
#define | WEED_LEAF_INIT_EVENT "init_event" |
#define | WEED_LEAF_INIT_EVENTS "init_events" |
#define | WEED_LEAF_INDEX "index" |
#define | WEED_LEAF_NEXT "next" |
#define | WEED_LEAF_PREVIOUS "previous" |
#define | WEED_LEAF_FIRST "first" |
#define | WEED_LEAF_LAST "last" |
#define | WEED_LEAF_NEEDS_SET "needs_set" |
#define | WEED_LEAF_GAMMA_ENABLED "host_gamma_enabled" |
#define | WEED_LEAF_TC_ADJUSTMENT "tc_adj_val" |
#define | WEED_LEAF_NEXT_CHANGE "next_change" |
#define | WEED_LEAF_PREV_CHANGE "prev_change" |
#define | WEED_LEAF_IS_DEF_VALUE "host_is_def_value" |
#define | WEED_LEAF_DEINIT_EVENT "deinit_event" |
#define | WEED_LEAF_LIVES_TYPE "lives_type" |
#define | WEED_LEAF_TRACKS "tracks" |
#define | WEED_LEAF_TCDELTA "tc_delta" |
#define | WEED_LEAF_PTRSIZE "ptrsize" |
deprecated More... | |
#define | WEED_LEAF_HOST_AUDIO_TRANSITION "host_audio_transition" |
#define | WEED_LEAF_HOST_TAG_COPY "host_tag_copy" |
#define | WEED_LEAF_OVERLAY_TEXT "overlay_text" |
#define | LIVES_TRACK_ANY -1000000 |
#define | AUD_DIFF_MIN 0.05 |
ignore audio seek differences < than this (seconds) More... | |
#define | AUD_DIFF_REVADJ 8. |
allow longer seek differences when audio plauback direction reverses (multiplying factor) More... | |
#define | RENDER_CHOICE_NONE 0 |
#define | RENDER_CHOICE_DISCARD 1 |
#define | RENDER_CHOICE_PREVIEW 2 |
#define | RENDER_CHOICE_SAME_CLIP 3 |
#define | RENDER_CHOICE_NEW_CLIP 4 |
#define | RENDER_CHOICE_MULTITRACK 5 |
#define | RENDER_CHOICE_EVENT_LIST 6 |
#define | RENDER_CHOICE_TRANSCODE 7 |
#define | EVENT_MARKER_BLOCK_START 1 |
#define | EVENT_MARKER_BLOCK_UNORDERED 512 |
#define | EVENT_MARKER_RECORD_START 1024 |
#define | EVENT_MARKER_RECORD_END 1025 |
#define | WEED_PLANT_IS_EVENT(plant) ((plant != NULL && weed_get_plant_type(plant) == WEED_PLANT_EVENT) ? 1 : 0) |
#define | WEED_PLANT_IS_EVENT_LIST(plant) ((plant != NULL && weed_get_plant_type(plant) == WEED_PLANT_EVENT_LIST) ? 1 : 0) |
#define | WEED_EVENT_IS_FRAME(event) (get_event_type(event) == WEED_EVENT_TYPE_FRAME ? 1 : 0) |
#define | WEED_EVENT_IS_AUDIO_FRAME(event) |
#define | WEED_EVENT_IS_FILTER_INIT(event) (get_event_type(event) == WEED_EVENT_TYPE_FILTER_INIT ? 1 : 0) |
#define | WEED_EVENT_IS_FILTER_DEINIT(event) (get_event_type(event) == WEED_EVENT_TYPE_FILTER_DEINIT ? 1 : 0) |
#define | WEED_EVENT_IS_FILTER_MAP(event) (get_event_type(event) == WEED_EVENT_TYPE_FILTER_MAP ? 1 : 0) |
#define | WEED_EVENT_IS_PARAM_CHANGE(event) (get_event_type(event) == WEED_EVENT_TYPE_PARAM_CHANGE ? 1 : 0) |
#define | WEED_EVENT_IS_MARKER(event) (get_event_type(event) == WEED_EVENT_TYPE_MARKER ? 1 : 0) |
Typedefs | |
typedef weed_plant_t | weed_event_t |
Enumerations | |
enum | lives_render_error_t { LIVES_RENDER_ERROR_NONE = 0, LIVES_RENDER_READY, LIVES_RENDER_PROCESSING, LIVES_RENDER_EFFECTS_PAUSED, LIVES_RENDER_COMPLETE, LIVES_RENDER_WARNING, LIVES_RENDER_WARNING_READ_FRAME, LIVES_RENDER_ERROR, LIVES_RENDER_ERROR_READ_AUDIO, LIVES_RENDER_ERROR_WRITE_AUDIO, LIVES_RENDER_ERROR_WRITE_FRAME } |
various return conditions from rendering (multitrack or after recording) More... | |
Functions | |
weed_event_t * | append_frame_event (weed_event_t *event_list, ticks_t tc, int numframes, int *clips, int64_t *frames) WARN_UNUSED |
weed_event_t * | append_filter_init_event (weed_event_t *event_list, ticks_t tc, int filter_idx, int num_in_tracks, int key, weed_plant_t *inst) WARN_UNUSED |
weed_event_t * | append_filter_deinit_event (weed_event_t *event_list, ticks_t tc, void *init_event, void **pchain) WARN_UNUSED |
weed_event_t * | append_filter_map_event (weed_event_t *event_list, ticks_t tc, void **init_events) WARN_UNUSED |
weed_event_t * | append_param_change_event (weed_event_t *event_list, ticks_t tc, int pnum, weed_plant_t *param, void *init_event, void **pchain) WARN_UNUSED |
weed_event_t * | append_marker_event (weed_event_t *event_list, ticks_t tc, int marker_type) WARN_UNUSED |
weed_event_t * | insert_frame_event_at (weed_event_t *event_list, ticks_t tc, int numframes, int *clips, int64_t *frames, weed_event_t **shortcut) WARN_UNUSED |
will either insert or replace More... | |
void | insert_audio_event_at (weed_event_t *event, int track, int clipnum, double time, double vel) |
void | remove_audio_for_track (weed_event_t *event, int track) |
weed_event_t * | insert_blank_frame_event_at (weed_event_t *event_list, ticks_t tc, weed_event_t **shortcut) WARN_UNUSED |
void | remove_frame_from_event (weed_event_t *event_list, weed_event_t *event, int track) |
void | remove_end_blank_frames (weed_event_t *event_list, boolean remove_filter_inits) |
void | remove_filter_from_event_list (weed_event_t *event_list, weed_event_t *init_event) |
weed_event_t * | process_events (weed_event_t *next_event, boolean process_audio, ticks_t curr_tc) |
RT playback. More... | |
void | event_list_close_start_gap (weed_event_t *event_list) |
void | event_list_add_track (weed_event_t *event_list, int layer) |
void | add_track_to_avol_init (weed_plant_t *filter, weed_event_t *event, int nbtracks, boolean behind) |
void | event_list_free (weed_event_t *event_list) |
void | event_list_add_end_events (weed_event_t *event_list, boolean is_final) |
weed_event_t * | lives_event_list_new (weed_event_t *elist, const char *cdate) |
lib-ish stuff More... | |
int | weed_event_get_type (weed_event_t *event) |
weed_timecode_t | weed_event_set_timecode (weed_event_t *, weed_timecode_t tc) |
weed_timecode_t | weed_event_get_timecode (weed_event_t *) |
int | weed_frame_event_get_tracks (weed_event_t *event, int **clips, int64_t **frames) |
int | weed_frame_event_get_audio_tracks (weed_event_t *event, int **aclips, double **aseeks) |
void | event_list_replace_events (weed_event_t *event_list, weed_event_t *new_event_list) |
replace events in event_list with events in new_event_list More... | |
weed_event_t * | event_copy_and_insert (weed_event_t *in_event, weed_timecode_t tc, weed_event_t *event_list, weed_event_t **ret_event) |
called during quantisation More... | |
void | reset_ttable (void) |
int | count_events (weed_event_t *event_list, boolean all_events, ticks_t start_tc, ticks_t end_tc) |
if all_events is FALSE we only count FRAME events More... | |
frames_t | count_resampled_events (weed_event_t *event_list, double fps) |
boolean | backup_recording (char **esave_file, char **asave_file) |
boolean | event_list_to_block (weed_event_t *event_list, int num_events) |
double | event_list_get_end_secs (weed_event_t *event_list) |
double | event_list_get_start_secs (weed_event_t *event_list) |
ticks_t | event_list_get_end_tc (weed_event_t *event_list) |
ticks_t | event_list_get_start_tc (weed_event_t *event_list) |
weed_event_t * | get_last_frame_event (weed_event_t *event_list) |
weed_event_t * | get_first_frame_event (weed_event_t *event_list) |
weed_event_t * | get_next_frame_event (weed_event_t *event) |
weed_event_t * | get_prev_frame_event (weed_event_t *event) |
weed_event_t * | get_next_audio_frame_event (weed_event_t *event) |
weed_event_t * | get_prev_audio_frame_event (weed_event_t *event) |
weed_event_t * | get_frame_event_at (weed_event_t *event_list, ticks_t tc, weed_event_t *shortcut, boolean exact) |
weed_event_t * | get_frame_event_at_or_before (weed_event_t *event_list, ticks_t tc, weed_event_t *shortcut) |
weed_event_t * | get_audio_block_start (weed_event_t *event_list, int track, ticks_t tc, boolean seek_back) |
boolean | filter_map_after_frame (weed_event_t *fmap) |
boolean | init_event_is_relevant (weed_event_t *init_event, int ctrack) |
weed_event_t * | get_first_event (weed_event_t *event_list) |
weed_event_t * | get_last_event (weed_event_t *event_list) |
weed_event_t * | get_prev_event (weed_event_t *event) |
weed_event_t * | get_next_event (weed_event_t *event) |
ticks_t | get_event_timecode (weed_event_t *) |
int | get_event_type (weed_event_t *) |
boolean | is_blank_frame (weed_event_t *, boolean count_audio) |
boolean | has_audio_frame (weed_event_t *event_list) |
int | get_frame_event_clip (weed_event_t *, int layer) |
frames_t | get_frame_event_frame (weed_event_t *, int layer) |
boolean | frame_event_has_frame_for_track (weed_event_t *event, int track) |
double * | get_track_visibility_at_tc (weed_event_t *event_list, int ntracks, int n_back_tracks, ticks_t tc, weed_event_t **shortcut, boolean bleedthru) |
void | get_active_track_list (int *clip_index, int num_tracks, weed_plant_t *filter_map) |
LiVESWidget * | events_rec_dialog (void) |
boolean | deal_with_render_choice (boolean add_deinit) |
LiVESWidget * | create_event_list_dialog (weed_plant_t *event_list, ticks_t start_tc, ticks_t end_tc) |
render_details * | create_render_details (int type) |
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) |
boolean | render_to_clip (boolean new_clip, boolean transcode) |
rendering More... | |
boolean | start_render_effect_events (weed_plant_t *event_list, boolean render_vid, boolean render_aud) |
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) |
void | insert_filter_init_event_at (weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event) |
void ** | filter_init_add_pchanges (weed_plant_t *event_list, weed_plant_t *filter, weed_plant_t *init_event, int ntracks, int leave) |
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) |
weed_plant_t * | get_filter_map_before (weed_plant_t *event, int ctrack, weed_plant_t *stop_event) |
weed_plant_t * | get_filter_map_after (weed_plant_t *event, int ctrack) |
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_param_change_event_at (weed_plant_t *event_list, weed_plant_t *at_event, weed_plant_t *event) |
weed_plant_t * | insert_marker_event_at (weed_plant_t *event_list, weed_plant_t *at_event, int marker_type, livespointer data) |
void | add_init_event_to_filter_map (weed_plant_t *fmap, weed_plant_t *event, void **hints) |
boolean | init_event_in_list (void **init_events, int num_inits, weed_plant_t *event) |
boolean | filter_init_has_owner (weed_plant_t *init_event, int track) |
boolean | init_event_is_process_last (weed_plant_t *event) |
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 | move_filter_init_event (weed_plant_t *event_list, ticks_t new_tc, weed_plant_t *init_event, double fps) |
void | move_filter_deinit_event (weed_plant_t *event_list, ticks_t new_tc, weed_plant_t *deinit_event, double fps, boolean rescale_pchanges) |
void | unlink_event (weed_plant_t *event_list, weed_plant_t *event) |
void | delete_event (weed_plant_t *event_list, weed_plant_t *event) |
void | replace_event (weed_plant_t *event_list, weed_plant_t *at_event, 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 *** | get_event_pchains (void) |
ticks_t | get_next_paramchange (void **pchange_next, ticks_t end_tc) |
ticks_t | get_prev_paramchange (void **pchange_next, ticks_t start_tc) |
boolean | is_init_pchange (weed_plant_t *init_event, weed_plant_t *pchange_event) |
void | free_pchains (int key) |
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... | |
void | backup_host_tags (weed_plant_t *event_list, ticks_t curr_tc) |
void | restore_host_tags (weed_plant_t *event_list, ticks_t curr_tc) |
boolean | has_frame_event_at (weed_plant_t *event_list, ticks_t tc, weed_plant_t **shortcut) |
Variables | |
render_details * | rdet |
#define AUD_DIFF_MIN 0.05 |
#define AUD_DIFF_REVADJ 8. |
#define WEED_EVENT_IS_AUDIO_FRAME | ( | event | ) |
#define WEED_EVENT_IS_FILTER_DEINIT | ( | event | ) | (get_event_type(event) == WEED_EVENT_TYPE_FILTER_DEINIT ? 1 : 0) |
#define WEED_EVENT_IS_FILTER_INIT | ( | event | ) | (get_event_type(event) == WEED_EVENT_TYPE_FILTER_INIT ? 1 : 0) |
#define WEED_EVENT_IS_FILTER_MAP | ( | event | ) | (get_event_type(event) == WEED_EVENT_TYPE_FILTER_MAP ? 1 : 0) |
#define WEED_EVENT_IS_FRAME | ( | event | ) | (get_event_type(event) == WEED_EVENT_TYPE_FRAME ? 1 : 0) |
#define WEED_EVENT_IS_MARKER | ( | event | ) | (get_event_type(event) == WEED_EVENT_TYPE_MARKER ? 1 : 0) |
#define WEED_EVENT_IS_PARAM_CHANGE | ( | event | ) | (get_event_type(event) == WEED_EVENT_TYPE_PARAM_CHANGE ? 1 : 0) |
#define WEED_LEAF_HOST_AUDIO_TRANSITION "host_audio_transition" |
#define WEED_LEAF_WEED_EVENT_API_VERSION "weed_event_api_version" |
#define WEED_PLANT_IS_EVENT | ( | plant | ) | ((plant != NULL && weed_get_plant_type(plant) == WEED_PLANT_EVENT) ? 1 : 0) |
#define WEED_PLANT_IS_EVENT_LIST | ( | plant | ) | ((plant != NULL && weed_get_plant_type(plant) == WEED_PLANT_EVENT_LIST) ? 1 : 0) |
typedef weed_plant_t weed_event_t |
enum lives_render_error_t |
various return conditions from rendering (multitrack or after recording)
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_event_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_event_t* append_filter_deinit_event | ( | weed_event_t * | event_list, |
ticks_t | tc, | ||
void * | init_event, | ||
void ** | pchain | ||
) |
weed_event_t* append_filter_init_event | ( | weed_event_t * | event_list, |
ticks_t | tc, | ||
int | filter_idx, | ||
int | num_in_tracks, | ||
int | key, | ||
weed_plant_t * | inst | ||
) |
weed_event_t* append_filter_map_event | ( | weed_event_t * | event_list, |
ticks_t | tc, | ||
void ** | init_events | ||
) |
weed_event_t* append_frame_event | ( | weed_event_t * | event_list, |
ticks_t | tc, | ||
int | numframes, | ||
int * | clips, | ||
int64_t * | frames | ||
) |
weed_event_t* append_marker_event | ( | weed_event_t * | event_list, |
ticks_t | tc, | ||
int | marker_type | ||
) |
weed_event_t* append_param_change_event | ( | weed_event_t * | event_list, |
ticks_t | tc, | ||
int | pnum, | ||
weed_plant_t * | param, | ||
void * | init_event, | ||
void ** | pchain | ||
) |
void backup_host_tags | ( | weed_plant_t * | event_list, |
ticks_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_event_t * | event_list, |
boolean | all_events, | ||
ticks_t | start_tc, | ||
ticks_t | end_tc | ||
) |
if all_events is FALSE we only count FRAME events
frames_t count_resampled_events | ( | weed_event_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, |
ticks_t | start_tc, | ||
ticks_t | end_tc | ||
) |
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().
weed_event_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 | ||
) |
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_event_t * | event_list, |
int | layer | ||
) |
void event_list_close_start_gap | ( | weed_event_t * | event_list | ) |
void event_list_free | ( | weed_event_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_event_t * | event_list | ) |
Definition at line 4607 of file events.c.
Referenced by resize_timeline().
ticks_t event_list_get_end_tc | ( | weed_event_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_event_t * | event_list | ) |
Definition at line 4618 of file events.c.
Referenced by save_event_frames().
ticks_t event_list_get_start_tc | ( | weed_event_t * | event_list | ) |
Definition at line 4612 of file events.c.
Referenced by event_list_get_start_secs().
void event_list_replace_events | ( | weed_event_t * | event_list, |
weed_event_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_event_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 * | filter, | ||
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_event_t * | fmap | ) |
Definition at line 803 of file events.c.
Referenced by get_next_fm(), and get_prev_fm().
boolean frame_event_has_frame_for_track | ( | weed_event_t * | event, |
int | track | ||
) |
void free_pchains | ( | int | key | ) |
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_event_t* get_audio_block_start | ( | weed_event_t * | event_list, |
int | track, | ||
ticks_t | tc, | ||
boolean | seek_back | ||
) |
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().
ticks_t get_event_timecode | ( | weed_event_t * | ) |
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().
int get_event_type | ( | weed_event_t * | ) |
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().
weed_event_t* get_first_event | ( | weed_event_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_event_t* get_first_frame_event | ( | weed_event_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_event_t* get_frame_event_at | ( | weed_event_t * | event_list, |
ticks_t | tc, | ||
weed_event_t * | shortcut, | ||
boolean | exact | ||
) |
weed_event_t* get_frame_event_at_or_before | ( | weed_event_t * | event_list, |
ticks_t | tc, | ||
weed_event_t * | shortcut | ||
) |
int get_frame_event_clip | ( | weed_event_t * | , |
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_event_t * | , |
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 | ||
) |
weed_event_t* get_last_event | ( | weed_event_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_event_t* get_last_frame_event | ( | weed_event_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_event_t* get_next_audio_frame_event | ( | weed_event_t * | event | ) |
Definition at line 380 of file events.c.
Referenced by fill_abuffer_from().
weed_event_t* get_next_event | ( | weed_event_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_event_t* get_next_frame_event | ( | weed_event_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_event_t* get_prev_audio_frame_event | ( | weed_event_t * | event | ) |
weed_event_t* get_prev_event | ( | weed_event_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_event_t* get_prev_frame_event | ( | weed_event_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().
double* get_track_visibility_at_tc | ( | weed_event_t * | event_list, |
int | ntracks, | ||
int | n_back_tracks, | ||
ticks_t | tc, | ||
weed_event_t ** | shortcut, | ||
boolean | bleedthru | ||
) |
boolean has_audio_frame | ( | weed_event_t * | event_list | ) |
Definition at line 4623 of file events.c.
Referenced by render_to_clip().
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_event_t * | init_event, |
int | ctrack | ||
) |
Definition at line 859 of file events.c.
Referenced by compare_filter_maps().
void insert_audio_event_at | ( | weed_event_t * | event, |
int | track, | ||
int | clipnum, | ||
double | time, | ||
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().
weed_event_t* insert_blank_frame_event_at | ( | weed_event_t * | event_list, |
ticks_t | tc, | ||
weed_event_t ** | shortcut | ||
) |
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_event_t* insert_frame_event_at | ( | weed_event_t * | event_list, |
ticks_t | tc, | ||
int | numframes, | ||
int * | clips, | ||
int64_t * | frames, | ||
weed_event_t ** | shortcut | ||
) |
will either insert or replace
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().
boolean is_blank_frame | ( | weed_event_t * | , |
boolean | count_audio | ||
) |
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, |
ticks_t | new_tc, | ||
weed_plant_t * | deinit_event, | ||
double | fps, | ||
boolean | rescale_pchanges | ||
) |
void move_filter_init_event | ( | weed_plant_t * | event_list, |
ticks_t | new_tc, | ||
weed_plant_t * | init_event, | ||
double | fps | ||
) |
weed_event_t* process_events | ( | weed_event_t * | next_event, |
boolean | process_audio, | ||
ticks_t | curr_tc | ||
) |
RT playback.
void remove_audio_for_track | ( | weed_event_t * | event, |
int | track | ||
) |
void remove_end_blank_frames | ( | weed_event_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_event_t * | event_list, |
weed_event_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_event_t * | event_list, |
weed_event_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, |
ticks_t | curr_tc | ||
) |
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 | ||
) |
weed_timecode_t weed_event_get_timecode | ( | weed_event_t * | ) |
Definition at line 89 of file events.c.
Referenced by append_param_change_event(), audio_process_events_to(), and pre_analyse().
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().
weed_timecode_t weed_event_set_timecode | ( | weed_event_t * | , |
weed_timecode_t | tc | ||
) |
Definition at line 83 of file events.c.
Referenced by pre_analyse().
int weed_frame_event_get_audio_tracks | ( | weed_event_t * | event, |
int ** | aclips, | ||
double ** | aseeks | ||
) |
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().
int weed_frame_event_get_tracks | ( | weed_event_t * | event, |
int ** | clips, | ||
int64_t ** | frames | ||
) |
render_details* rdet |
Definition at line 256 of file events.h.
Referenced by create_resaudw(), get_transient_full(), mt_change_vals_activate(), multitrack(), on_encoder_entry_changed(), on_encoder_ofmt_changed(), on_multitrack_activate(), rdetw_spinf_changed(), rdetw_spinh_changed(), rdetw_spinw_changed(), render_to_clip(), and set_acodec_list_from_allowed().