mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-19 00:01:23 +00:00
6f7d4ac525
Smart rendering has been broken since, mostly forever, but some code was there pretending it was supported... let's try to stop pretending. We now keep track of the smart rendering state in the timeline, track and sources to be able to: * tell decodebin to stop plugging more (decoding elements) as soon as downstream supports the format. * avoid plugging converters after the source element when smart rendering. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/198>
87 lines
4.3 KiB
C
87 lines
4.3 KiB
C
#pragma once
|
|
|
|
#include <ges/ges.h>
|
|
#include "ges-auto-transition.h"
|
|
|
|
void timeline_tree_track_element (GNode *root,
|
|
GESTimelineElement *element);
|
|
|
|
void timeline_tree_stop_tracking_element (GNode *root,
|
|
GESTimelineElement *element);
|
|
|
|
gboolean timeline_tree_can_move_element (GNode *root,
|
|
GESTimelineElement *element,
|
|
guint32 priority,
|
|
GstClockTime start,
|
|
GstClockTime duration,
|
|
GError ** error);
|
|
|
|
gboolean timeline_tree_ripple (GNode *root,
|
|
GESTimelineElement *element,
|
|
gint64 layer_priority_offset,
|
|
GstClockTimeDiff offset,
|
|
GESEdge edge,
|
|
GstClockTime snapping_distance,
|
|
GError ** error);
|
|
|
|
void ges_timeline_emit_snapping (GESTimeline * timeline,
|
|
GESTrackElement * elem1,
|
|
GESTrackElement * elem2,
|
|
GstClockTime snap_time);
|
|
|
|
gboolean timeline_tree_trim (GNode *root,
|
|
GESTimelineElement *element,
|
|
gint64 layer_priority_offset,
|
|
GstClockTimeDiff offset,
|
|
GESEdge edge,
|
|
GstClockTime snapping_distance,
|
|
GError ** error);
|
|
|
|
|
|
gboolean timeline_tree_move (GNode *root,
|
|
GESTimelineElement *element,
|
|
gint64 layer_priority_offset,
|
|
GstClockTimeDiff offset,
|
|
GESEdge edge,
|
|
GstClockTime snapping_distance,
|
|
GError ** error);
|
|
|
|
gboolean timeline_tree_roll (GNode * root,
|
|
GESTimelineElement * element,
|
|
GstClockTimeDiff offset,
|
|
GESEdge edge,
|
|
GstClockTime snapping_distance,
|
|
GError ** error);
|
|
|
|
typedef GESAutoTransition *
|
|
(*GESTreeGetAutoTransitionFunc) (GESTimeline * timeline,
|
|
GESTrackElement * previous,
|
|
GESTrackElement * next,
|
|
GstClockTime transition_duration);
|
|
|
|
void
|
|
timeline_tree_create_transitions_for_track_element (GNode * root,
|
|
GESTrackElement * element,
|
|
GESTreeGetAutoTransitionFunc get_auto_transition);
|
|
void timeline_tree_create_transitions (GNode *root,
|
|
GESTreeGetAutoTransitionFunc get_auto_transition);
|
|
|
|
GstClockTime timeline_tree_get_duration (GNode *root);
|
|
|
|
void timeline_tree_debug (GNode * root);
|
|
|
|
GESAutoTransition *
|
|
ges_timeline_create_transition (GESTimeline * timeline, GESTrackElement * previous,
|
|
GESTrackElement * next, GESClip * transition,
|
|
GESLayer * layer, guint64 start, guint64 duration);
|
|
GESAutoTransition *
|
|
ges_timeline_find_auto_transition (GESTimeline * timeline, GESTrackElement * prev,
|
|
GESTrackElement * next, GstClockTime transition_duration);
|
|
|
|
void
|
|
timeline_update_duration (GESTimeline * timeline);
|
|
|
|
void timeline_tree_reset_layer_active (GNode *root, GESLayer *layer);
|
|
void timeline_tree_set_smart_rendering (GNode * root, gboolean rendering_smartly);
|
|
|
|
void timeline_tree_init_debug (void);
|