LiVES  3.2.0
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
events.h File Reference

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_tappend_frame_event (weed_event_t *event_list, ticks_t tc, int numframes, int *clips, int64_t *frames) WARN_UNUSED
 
weed_event_tappend_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_tappend_filter_deinit_event (weed_event_t *event_list, ticks_t tc, void *init_event, void **pchain) WARN_UNUSED
 
weed_event_tappend_filter_map_event (weed_event_t *event_list, ticks_t tc, void **init_events) WARN_UNUSED
 
weed_event_tappend_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_tappend_marker_event (weed_event_t *event_list, ticks_t tc, int marker_type) WARN_UNUSED
 
weed_event_tinsert_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_tinsert_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_tprocess_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_tlives_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_tevent_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_tget_last_frame_event (weed_event_t *event_list)
 
weed_event_tget_first_frame_event (weed_event_t *event_list)
 
weed_event_tget_next_frame_event (weed_event_t *event)
 
weed_event_tget_prev_frame_event (weed_event_t *event)
 
weed_event_tget_next_audio_frame_event (weed_event_t *event)
 
weed_event_tget_prev_audio_frame_event (weed_event_t *event)
 
weed_event_tget_frame_event_at (weed_event_t *event_list, ticks_t tc, weed_event_t *shortcut, boolean exact)
 
weed_event_tget_frame_event_at_or_before (weed_event_t *event_list, ticks_t tc, weed_event_t *shortcut)
 
weed_event_tget_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_tget_first_event (weed_event_t *event_list)
 
weed_event_tget_last_event (weed_event_t *event_list)
 
weed_event_tget_prev_event (weed_event_t *event)
 
weed_event_tget_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_detailscreate_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_detailsrdet
 

Macro Definition Documentation

◆ AUD_DIFF_MIN

#define AUD_DIFF_MIN   0.05

ignore audio seek differences < than this (seconds)

Definition at line 94 of file events.h.

◆ AUD_DIFF_REVADJ

#define AUD_DIFF_REVADJ   8.

allow longer seek differences when audio plauback direction reverses (multiplying factor)

Definition at line 95 of file events.h.

◆ EVENT_MARKER_BLOCK_START

#define EVENT_MARKER_BLOCK_START   1

Definition at line 353 of file events.h.

◆ EVENT_MARKER_BLOCK_UNORDERED

#define EVENT_MARKER_BLOCK_UNORDERED   512

Definition at line 354 of file events.h.

◆ EVENT_MARKER_RECORD_END

#define EVENT_MARKER_RECORD_END   1025

Definition at line 356 of file events.h.

◆ EVENT_MARKER_RECORD_START

#define EVENT_MARKER_RECORD_START   1024

Definition at line 355 of file events.h.

◆ LIVES_TRACK_ANY

#define LIVES_TRACK_ANY   -1000000

Definition at line 92 of file events.h.

◆ RENDER_CHOICE_DISCARD

#define RENDER_CHOICE_DISCARD   1

Definition at line 265 of file events.h.

◆ RENDER_CHOICE_EVENT_LIST

#define RENDER_CHOICE_EVENT_LIST   6

Definition at line 270 of file events.h.

◆ RENDER_CHOICE_MULTITRACK

#define RENDER_CHOICE_MULTITRACK   5

Definition at line 269 of file events.h.

◆ RENDER_CHOICE_NEW_CLIP

#define RENDER_CHOICE_NEW_CLIP   4

Definition at line 268 of file events.h.

◆ RENDER_CHOICE_NONE

#define RENDER_CHOICE_NONE   0

Definition at line 264 of file events.h.

◆ RENDER_CHOICE_PREVIEW

#define RENDER_CHOICE_PREVIEW   2

Definition at line 266 of file events.h.

◆ RENDER_CHOICE_SAME_CLIP

#define RENDER_CHOICE_SAME_CLIP   3

Definition at line 267 of file events.h.

◆ RENDER_CHOICE_TRANSCODE

#define RENDER_CHOICE_TRANSCODE   7

Definition at line 271 of file events.h.

◆ WEED_EVENT_IS_AUDIO_FRAME

#define WEED_EVENT_IS_AUDIO_FRAME (   event)
Value:
((get_event_type(event) == WEED_EVENT_TYPE_FRAME \
&& weed_plant_has_leaf(event, WEED_LEAF_AUDIO_CLIPS)) ? 1 : 0)

Definition at line 362 of file events.h.

◆ WEED_EVENT_IS_FILTER_DEINIT

#define WEED_EVENT_IS_FILTER_DEINIT (   event)    (get_event_type(event) == WEED_EVENT_TYPE_FILTER_DEINIT ? 1 : 0)

Definition at line 365 of file events.h.

◆ WEED_EVENT_IS_FILTER_INIT

#define WEED_EVENT_IS_FILTER_INIT (   event)    (get_event_type(event) == WEED_EVENT_TYPE_FILTER_INIT ? 1 : 0)

Definition at line 364 of file events.h.

◆ WEED_EVENT_IS_FILTER_MAP

#define WEED_EVENT_IS_FILTER_MAP (   event)    (get_event_type(event) == WEED_EVENT_TYPE_FILTER_MAP ? 1 : 0)

Definition at line 366 of file events.h.

◆ WEED_EVENT_IS_FRAME

#define WEED_EVENT_IS_FRAME (   event)    (get_event_type(event) == WEED_EVENT_TYPE_FRAME ? 1 : 0)

Definition at line 361 of file events.h.

◆ WEED_EVENT_IS_MARKER

#define WEED_EVENT_IS_MARKER (   event)    (get_event_type(event) == WEED_EVENT_TYPE_MARKER ? 1 : 0)

Definition at line 368 of file events.h.

◆ WEED_EVENT_IS_PARAM_CHANGE

#define WEED_EVENT_IS_PARAM_CHANGE (   event)    (get_event_type(event) == WEED_EVENT_TYPE_PARAM_CHANGE ? 1 : 0)

Definition at line 367 of file events.h.

◆ WEED_LEAF_AUDIO_CLIPS

#define WEED_LEAF_AUDIO_CLIPS   "audio_clips"

Definition at line 40 of file events.h.

◆ WEED_LEAF_AUDIO_ENDIAN

#define WEED_LEAF_AUDIO_ENDIAN   "audio_endian"

Definition at line 20 of file events.h.

◆ WEED_LEAF_AUDIO_SAMPLE_SIZE

#define WEED_LEAF_AUDIO_SAMPLE_SIZE   "audio_sample_size"

Definition at line 21 of file events.h.

◆ WEED_LEAF_AUDIO_SEEKS

#define WEED_LEAF_AUDIO_SEEKS   "audio_seeks"

Definition at line 41 of file events.h.

◆ WEED_LEAF_AUDIO_SIGNED

#define WEED_LEAF_AUDIO_SIGNED   "audio_signed"

Definition at line 19 of file events.h.

◆ WEED_LEAF_AUDIO_VOLUME_TRACKS

#define WEED_LEAF_AUDIO_VOLUME_TRACKS   "audio_volume_tracks"

Definition at line 22 of file events.h.

◆ WEED_LEAF_AUDIO_VOLUME_VALUES

#define WEED_LEAF_AUDIO_VOLUME_VALUES   "audio_volume_values"

Definition at line 23 of file events.h.

◆ WEED_LEAF_AUTHOR

#define WEED_LEAF_AUTHOR   "author"

Definition at line 27 of file events.h.

◆ WEED_LEAF_CLIPS

#define WEED_LEAF_CLIPS   "clips"

Definition at line 39 of file events.h.

◆ WEED_LEAF_COMMENTS

#define WEED_LEAF_COMMENTS   "comments"

Definition at line 29 of file events.h.

◆ WEED_LEAF_CREATED_DATE

#define WEED_LEAF_CREATED_DATE   "host_created_date"

Definition at line 34 of file events.h.

◆ WEED_LEAF_DEINIT_EVENT

#define WEED_LEAF_DEINIT_EVENT   "deinit_event"

Definition at line 76 of file events.h.

◆ WEED_LEAF_EDITED_DATE

#define WEED_LEAF_EDITED_DATE   "host_edited_date"

Definition at line 35 of file events.h.

◆ WEED_LEAF_EVENT_ID

#define WEED_LEAF_EVENT_ID   "event_id"

Definition at line 49 of file events.h.

◆ WEED_LEAF_FILTER

#define WEED_LEAF_FILTER   "filter"

Definition at line 44 of file events.h.

◆ WEED_LEAF_FIRST

#define WEED_LEAF_FIRST   "first"

Definition at line 64 of file events.h.

◆ WEED_LEAF_FRAMES

#define WEED_LEAF_FRAMES   "frames"

Definition at line 38 of file events.h.

◆ WEED_LEAF_GAMMA_ENABLED

#define WEED_LEAF_GAMMA_ENABLED   "host_gamma_enabled"

Definition at line 67 of file events.h.

◆ WEED_LEAF_HINT

#define WEED_LEAF_HINT   "hint"

for backwards compat.

Definition at line 13 of file events.h.

◆ WEED_LEAF_HOST_AUDIO_TRANSITION

#define WEED_LEAF_HOST_AUDIO_TRANSITION   "host_audio_transition"

Definition at line 86 of file events.h.

◆ WEED_LEAF_HOST_TAG_COPY

#define WEED_LEAF_HOST_TAG_COPY   "host_tag_copy"

Definition at line 88 of file events.h.

◆ WEED_LEAF_IN_COUNT

#define WEED_LEAF_IN_COUNT   "in_count"

Definition at line 45 of file events.h.

◆ WEED_LEAF_IN_TRACKS

#define WEED_LEAF_IN_TRACKS   "in_tracks"

Definition at line 47 of file events.h.

◆ WEED_LEAF_INDEX

#define WEED_LEAF_INDEX   "index"

Definition at line 58 of file events.h.

◆ WEED_LEAF_INIT_EVENT

#define WEED_LEAF_INIT_EVENT   "init_event"

Definition at line 52 of file events.h.

◆ WEED_LEAF_INIT_EVENTS

#define WEED_LEAF_INIT_EVENTS   "init_events"

Definition at line 55 of file events.h.

◆ WEED_LEAF_IS_DEF_VALUE

#define WEED_LEAF_IS_DEF_VALUE   "host_is_def_value"

Definition at line 73 of file events.h.

◆ WEED_LEAF_LAST

#define WEED_LEAF_LAST   "last"

Definition at line 65 of file events.h.

◆ WEED_LEAF_LIVES_CREATED_VERSION

#define WEED_LEAF_LIVES_CREATED_VERSION   "created_version"

Definition at line 31 of file events.h.

◆ WEED_LEAF_LIVES_EDITED_VERSION

#define WEED_LEAF_LIVES_EDITED_VERSION   "edited_version"

Definition at line 32 of file events.h.

◆ WEED_LEAF_LIVES_TYPE

#define WEED_LEAF_LIVES_TYPE   "lives_type"

Definition at line 79 of file events.h.

◆ WEED_LEAF_NEEDS_SET

#define WEED_LEAF_NEEDS_SET   "needs_set"

Definition at line 66 of file events.h.

◆ WEED_LEAF_NEXT

#define WEED_LEAF_NEXT   "next"

Definition at line 62 of file events.h.

◆ WEED_LEAF_NEXT_CHANGE

#define WEED_LEAF_NEXT_CHANGE   "next_change"

Definition at line 71 of file events.h.

◆ WEED_LEAF_OUT_COUNT

#define WEED_LEAF_OUT_COUNT   "out_count"

Definition at line 46 of file events.h.

◆ WEED_LEAF_OUT_TRACKS

#define WEED_LEAF_OUT_TRACKS   "out_tracks"

Definition at line 48 of file events.h.

◆ WEED_LEAF_OVERLAY_TEXT

#define WEED_LEAF_OVERLAY_TEXT   "overlay_text"

Definition at line 90 of file events.h.

◆ WEED_LEAF_PREV_CHANGE

#define WEED_LEAF_PREV_CHANGE   "prev_change"

Definition at line 72 of file events.h.

◆ WEED_LEAF_PREVIOUS

#define WEED_LEAF_PREVIOUS   "previous"

Definition at line 63 of file events.h.

◆ WEED_LEAF_PTRSIZE

#define WEED_LEAF_PTRSIZE   "ptrsize"

deprecated

Definition at line 84 of file events.h.

◆ WEED_LEAF_TC_ADJUSTMENT

#define WEED_LEAF_TC_ADJUSTMENT   "tc_adj_val"

Definition at line 68 of file events.h.

◆ WEED_LEAF_TCDELTA

#define WEED_LEAF_TCDELTA   "tc_delta"

Definition at line 81 of file events.h.

◆ WEED_LEAF_TITLE

#define WEED_LEAF_TITLE   "title"

Definition at line 28 of file events.h.

◆ WEED_LEAF_TRACK_LABEL_TRACKS

#define WEED_LEAF_TRACK_LABEL_TRACKS   "track_label_tracks"

Definition at line 24 of file events.h.

◆ WEED_LEAF_TRACK_LABEL_VALUES

#define WEED_LEAF_TRACK_LABEL_VALUES   "track_label_values"

Definition at line 25 of file events.h.

◆ WEED_LEAF_TRACKS

#define WEED_LEAF_TRACKS   "tracks"

Definition at line 80 of file events.h.

◆ WEED_LEAF_WEED_EVENT_API_VERSION

#define WEED_LEAF_WEED_EVENT_API_VERSION   "weed_event_api_version"

parts of this may eventually become libweed-events

Definition at line 18 of file events.h.

◆ WEED_PLANT_IS_EVENT

#define WEED_PLANT_IS_EVENT (   plant)    ((plant != NULL && weed_get_plant_type(plant) == WEED_PLANT_EVENT) ? 1 : 0)

Definition at line 358 of file events.h.

◆ WEED_PLANT_IS_EVENT_LIST

#define WEED_PLANT_IS_EVENT_LIST (   plant)    ((plant != NULL && weed_get_plant_type(plant) == WEED_PLANT_EVENT_LIST) ? 1 : 0)

Definition at line 359 of file events.h.

Typedef Documentation

◆ weed_event_t

typedef weed_plant_t weed_event_t

Definition at line 97 of file events.h.

Enumeration Type Documentation

◆ lives_render_error_t

various return conditions from rendering (multitrack or after recording)

Enumerator
LIVES_RENDER_ERROR_NONE 
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 

Definition at line 100 of file events.h.

Function Documentation

◆ add_audio_options()

LiVESWidget* add_audio_options ( LiVESWidget **  cbbackaudio,
LiVESWidget **  cbpertrack 
)

Definition at line 6184 of file events.c.

◆ add_init_event_to_filter_map()

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().

◆ add_track_to_avol_init()

void add_track_to_avol_init ( weed_plant_t *  filter,
weed_event_t event,
int  nbtracks,
boolean  behind 
)

Definition at line 2435 of file events.c.

◆ add_video_options()

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 
)

Definition at line 6072 of file events.c.

◆ append_filter_deinit_event()

weed_event_t* append_filter_deinit_event ( weed_event_t event_list,
ticks_t  tc,
void *  init_event,
void **  pchain 
)

◆ append_filter_init_event()

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 
)

◆ append_filter_map_event()

weed_event_t* append_filter_map_event ( weed_event_t event_list,
ticks_t  tc,
void **  init_events 
)

◆ append_frame_event()

weed_event_t* append_frame_event ( weed_event_t event_list,
ticks_t  tc,
int  numframes,
int *  clips,
int64_t *  frames 
)

◆ append_marker_event()

weed_event_t* append_marker_event ( weed_event_t event_list,
ticks_t  tc,
int  marker_type 
)

◆ append_param_change_event()

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 
)

◆ backup_host_tags()

void backup_host_tags ( weed_plant_t *  event_list,
ticks_t  curr_tc 
)

◆ backup_recording()

boolean backup_recording ( char **  esave_file,
char **  asave_file 
)

Definition at line 5028 of file events.c.

Referenced by catch_sigint(), and lives_exit().

◆ count_events()

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

◆ count_resampled_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().

◆ create_event_list_dialog()

LiVESWidget* create_event_list_dialog ( weed_plant_t *  event_list,
ticks_t  start_tc,
ticks_t  end_tc 
)

◆ create_render_details()

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().

◆ deal_with_render_choice()

boolean deal_with_render_choice ( boolean  add_deinit)

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().

◆ delete_event()

void delete_event ( weed_plant_t *  event_list,
weed_plant_t *  event 
)

◆ event_copy_and_insert()

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

Definition at line 622 of file events.c.

◆ event_list_add_end_events()

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().

◆ event_list_add_track()

void event_list_add_track ( weed_event_t event_list,
int  layer 
)

Definition at line 2497 of file events.c.

◆ event_list_close_start_gap()

void event_list_close_start_gap ( weed_event_t event_list)

◆ event_list_free()

void event_list_free ( weed_event_t event_list)

◆ event_list_get_end_secs()

double event_list_get_end_secs ( weed_event_t event_list)

Definition at line 4607 of file events.c.

Referenced by resize_timeline().

◆ event_list_get_end_tc()

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().

◆ event_list_get_start_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().

◆ event_list_get_start_tc()

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().

◆ event_list_replace_events()

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().

◆ event_list_to_block()

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().

◆ events_rec_dialog()

LiVESWidget* events_rec_dialog ( void  )

Definition at line 2186 of file events.c.

◆ filter_init_add_pchanges()

void** filter_init_add_pchanges ( weed_plant_t *  event_list,
weed_plant_t *  filter,
weed_plant_t *  init_event,
int  ntracks,
int  leave 
)

Definition at line 2648 of file events.c.

◆ filter_init_has_owner()

boolean filter_init_has_owner ( weed_plant_t *  init_event,
int  track 
)

Definition at line 1570 of file events.c.

◆ filter_map_after_frame()

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().

◆ frame_event_has_frame_for_track()

boolean frame_event_has_frame_for_track ( weed_event_t event,
int  track 
)

Definition at line 761 of file events.c.

◆ free_pchains()

void free_pchains ( int  key)

◆ get_active_track_list()

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().

◆ get_audio_block_start()

weed_event_t* get_audio_block_start ( weed_event_t event_list,
int  track,
ticks_t  tc,
boolean  seek_back 
)

◆ get_audio_frame_clip()

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().

◆ get_audio_frame_seek()

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().

◆ get_audio_frame_vel()

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().

◆ get_event_pchains()

void** * get_event_pchains ( void  )

Definition at line 94 of file events.c.

◆ get_event_timecode()

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().

◆ get_event_type()

int get_event_type ( weed_event_t )

◆ get_filter_map_after()

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().

◆ get_filter_map_before()

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().

◆ get_first_event()

weed_event_t* get_first_event ( weed_event_t event_list)

◆ get_first_frame_event()

weed_event_t* get_first_frame_event ( weed_event_t event_list)

◆ get_frame_event_at()

weed_event_t* get_frame_event_at ( weed_event_t event_list,
ticks_t  tc,
weed_event_t shortcut,
boolean  exact 
)

◆ get_frame_event_at_or_before()

weed_event_t* get_frame_event_at_or_before ( weed_event_t event_list,
ticks_t  tc,
weed_event_t shortcut 
)

◆ get_frame_event_clip()

int get_frame_event_clip ( weed_event_t ,
int  layer 
)

◆ get_frame_event_frame()

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().

◆ get_init_events_before()

void** get_init_events_before ( weed_plant_t *  event,
weed_plant_t *  init_event,
boolean  add 
)

Definition at line 936 of file events.c.

◆ get_last_event()

weed_event_t* get_last_event ( weed_event_t event_list)

◆ get_last_frame_event()

weed_event_t* get_last_frame_event ( weed_event_t event_list)

◆ get_next_audio_frame_event()

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().

◆ get_next_event()

weed_event_t* get_next_event ( weed_event_t event)

◆ get_next_frame_event()

weed_event_t* get_next_frame_event ( weed_event_t event)

◆ get_next_paramchange()

ticks_t get_next_paramchange ( void **  pchange_next,
ticks_t  end_tc 
)

◆ get_prev_audio_frame_event()

weed_event_t* get_prev_audio_frame_event ( weed_event_t event)

Definition at line 392 of file events.c.

◆ get_prev_event()

weed_event_t* get_prev_event ( weed_event_t event)

◆ get_prev_frame_event()

weed_event_t* get_prev_frame_event ( weed_event_t event)

◆ get_prev_paramchange()

ticks_t get_prev_paramchange ( void **  pchange_next,
ticks_t  start_tc 
)

◆ get_track_visibility_at_tc()

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 
)

◆ has_audio_frame()

boolean has_audio_frame ( weed_event_t event_list)

Definition at line 4623 of file events.c.

Referenced by render_to_clip().

◆ has_frame_event_at()

boolean has_frame_event_at ( weed_plant_t *  event_list,
ticks_t  tc,
weed_plant_t **  shortcut 
)

◆ init_event_in_list()

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().

◆ init_event_is_process_last()

boolean init_event_is_process_last ( weed_plant_t *  event)

Definition at line 1718 of file events.c.

Referenced by compare_filter_maps().

◆ init_event_is_relevant()

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().

◆ insert_audio_event_at()

void insert_audio_event_at ( weed_event_t event,
int  track,
int  clipnum,
double  time,
double  vel 
)

◆ insert_blank_frame_event_at()

weed_event_t* insert_blank_frame_event_at ( weed_event_t event_list,
ticks_t  tc,
weed_event_t **  shortcut 
)

◆ insert_event_after()

boolean insert_event_after ( weed_plant_t *  at_event,
weed_plant_t *  event 
)

◆ insert_event_before()

boolean insert_event_before ( weed_plant_t *  at_event,
weed_plant_t *  event 
)

◆ insert_filter_deinit_event_at()

void insert_filter_deinit_event_at ( weed_plant_t *  event_list,
weed_plant_t *  at_event,
weed_plant_t *  event 
)

Definition at line 1043 of file events.c.

◆ insert_filter_init_event_at()

void insert_filter_init_event_at ( weed_plant_t *  event_list,
weed_plant_t *  at_event,
weed_plant_t *  event 
)

Definition at line 1021 of file events.c.

◆ insert_filter_map_event_at()

boolean insert_filter_map_event_at ( weed_plant_t *  event_list,
weed_plant_t *  at_event,
weed_plant_t *  event,
boolean  before_frames 
)

Definition at line 1066 of file events.c.

◆ insert_frame_event_at()

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

◆ insert_marker_event_at()

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().

◆ insert_param_change_event_at()

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().

◆ is_blank_frame()

boolean is_blank_frame ( weed_event_t ,
boolean  count_audio 
)

Definition at line 523 of file events.c.

Referenced by remove_end_blank_frames().

◆ is_init_pchange()

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().

◆ lives_event_list_new()

weed_event_t* lives_event_list_new ( weed_event_t elist,
const char *  cdate 
)

◆ move_event_left()

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().

◆ move_event_right()

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().

◆ move_filter_deinit_event()

void move_filter_deinit_event ( weed_plant_t *  event_list,
ticks_t  new_tc,
weed_plant_t *  deinit_event,
double  fps,
boolean  rescale_pchanges 
)

◆ move_filter_init_event()

void move_filter_init_event ( weed_plant_t *  event_list,
ticks_t  new_tc,
weed_plant_t *  init_event,
double  fps 
)

◆ process_events()

weed_event_t* process_events ( weed_event_t next_event,
boolean  process_audio,
ticks_t  curr_tc 
)

RT playback.

◆ remove_audio_for_track()

void remove_audio_for_track ( weed_event_t event,
int  track 
)

Definition at line 1349 of file events.c.

◆ remove_end_blank_frames()

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().

◆ remove_filter_from_event_list()

void remove_filter_from_event_list ( weed_event_t event_list,
weed_event_t init_event 
)

◆ remove_frame_from_event()

void remove_frame_from_event ( weed_event_t event_list,
weed_event_t event,
int  track 
)

Definition at line 489 of file events.c.

◆ render_events()

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:

  • a new "audio_frame" is reached
  • the end of the list is reached
  • or mainw->flush_audio_tc is set to non-zero,

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)

  • generally the list would have been pre-quantised using quantise_events() so that this process is smoothed out. In multitrack, in and out frame rates always match so this is not a concern there.

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().

◆ render_events_cb()

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().

◆ render_to_clip()

boolean render_to_clip ( boolean  new_clip,
boolean  transcode 
)

rendering

will reshow the dialog

Definition at line 4635 of file events.c.

Referenced by on_render_activate().

◆ replace_event()

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().

◆ reset_ttable()

void reset_ttable ( void  )

Definition at line 486 of file events.c.

◆ restore_host_tags()

void restore_host_tags ( weed_plant_t *  event_list,
ticks_t  curr_tc 
)

◆ start_render_effect_events()

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().

◆ unlink_event()

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().

◆ update_filter_maps()

void update_filter_maps ( weed_plant_t *  event,
weed_plant_t *  end_event,
weed_plant_t *  init_event 
)

Definition at line 1009 of file events.c.

◆ weed_event_get_timecode()

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().

◆ weed_event_get_type()

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_event_set_timecode()

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().

◆ weed_frame_event_get_audio_tracks()

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().

◆ weed_frame_event_get_tracks()

int weed_frame_event_get_tracks ( weed_event_t event,
int **  clips,
int64_t **  frames 
)

Definition at line 36 of file events.c.

Variable Documentation

◆ rdet

get_event_type
int get_event_type(weed_event_t *)
Definition: events.c:103
WEED_LEAF_AUDIO_CLIPS
#define WEED_LEAF_AUDIO_CLIPS
Definition: events.h:40