Commit graph

34 commits

Author SHA1 Message Date
Henry Wilkes
39097f5574 timeline-tree: simplify and fix editing
Editing has been simplified by breaking down each edit into a
combination of three basic single-element edits: MOVE, TRIM_START, and
TRIM_END.

Each edit follows these steps:
+ Determine which elements are to be edited and under which basic mode
+ Determine which track elements will move as a result
+ Snap the edit position to one of the edges of the main edited element,
  (or the edge of one of its descendants, in the case of MOVE), avoiding
  moving elements.
  NOTE: in particular, we can *not* snap to the edge of a neighbouring
  element in a roll edit. This was previously possible, even though the
  neighbour was moving!
+ Determine the edit positions for clips (or track elements with no
  parent) using the snapped value. In addition, we replace any edits of
  a group with an edit of its descendant clips. If any value would be
  out of bounds (e.g. negative start) we do not edit.
  NOTE: this is now done *after* checking the snapping. This allows the
  edit to succeed if snapping would cause it to go from being invalid to
  valid!
+ Determine whether the collection of edits would result in a valid
  timeline-configuration which does not break the rules for sources
  overlapping.
+ If all this succeeds, we emit snapping-started on the timeline.
+ We then perform all the edits. At this point they should all succeed.

The simplification/unification should make it easier to make other
changes.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/issues/97
Fixes https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/issues/98

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/169>
2020-05-07 09:37:15 +01:00
Thibault Saunier
e6e05be88a ges: Cleanup GESEdge and GESEditMode GEnum values
By duplicating the registered values, so that bindings have
better values to use
2020-03-19 18:45:51 -03:00
Thibault Saunier
694e39186b Add API to get the GESEdge names 2019-03-15 23:51:55 +00:00
Seungha Yang
eb226bc544 enums: Add missing unref 2019-01-18 20:32:02 +00:00
Tim-Philipp Müller
a7347ca8f7 WIP: ges: fix API export/import and 'inconsistent linkage' on MSVC
Export GES library API in headers when we're building the
library itself, otherwise import the API from the headers.

This fixes linker warnings on Windows when building with MSVC.

Fix up some missing config.h includes when building the lib which
is needed to get the export api define from config.h

Fixes https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/42
2018-12-15 00:14:51 +00:00
Thibault Saunier
35256b47ff docs: Port all docstring to gtk-doc markdown 2017-03-08 18:13:48 -03:00
Thibault Saunier
aa38d80797 enums: Fix absolute text overlay alignment value
It needs to be in sync with GstBaseTextOverlayHAlign order.
2016-07-28 17:23:43 -04:00
Thibault Saunier
7248077011 titlesource: Add support for absolute positionning 2016-04-05 11:29:50 +02:00
Thibault Saunier
024117642a Revert "titlesource: use x/yabsolute instead of x/ypos."
This reverts commit c4356db40c.

This commit was not ready and was not support to be pushed
2016-03-11 17:31:15 +01:00
Lubosz Sarnecki
c4356db40c titlesource: use x/yabsolute instead of x/ypos. 2016-03-11 13:56:59 +01:00
Christoph Reiter
ba2b4920b6 Fix invalid GEnumValue.value_name entries.
This makes the enum entries in the gir have valid c:identifiers and documentation.

https://bugzilla.gnome.org/show_bug.cgi?id=730691
2014-06-09 16:10:41 +02:00
Thibault Saunier
f921277ac2 Rename TIMELINE_MODE_XXX to GES_PIPELINE_MODE_XXX so it corresponds to reality
First, it was not in any namespace, second the name of the enum is
GESPipelineFlags.
2014-02-17 12:37:57 +01:00
Thibault Saunier
6f4315b75d Rename GESStandardTransitionClip to GESTransitionClip 2013-02-15 14:42:04 -03:00
Thibault Saunier
d7693b4014 Rename GESTimelineStandardTransition to GESStandardTransitionClip 2013-02-15 14:42:03 -03:00
Thibault Saunier
313036aa15 Add a utility method to get the name of a GESTrackType
API:
    ges_track_type_name
2012-12-29 19:36:52 -03:00
Thibault Saunier
07ceb2ca40 ges: Create assets for all GESTimelineStandardTransition on ges_init()
+ Add some testsuite
2012-12-29 19:36:50 -03:00
Thibault Saunier
3de2670b00 metacontainer: Finnish GESMetaContainer implementation 2012-12-19 11:45:38 -03:00
Tim-Philipp Müller
426fffb6c3 Fix FSF address 2012-11-04 00:25:20 +00:00
Matas Brazdeikis
aaec341f79 title-source: add background color option 2012-08-26 16:12:01 -04:00
Thibault Saunier
9e21741b90 docs: Add some more docs about editing mode
Also add the documentation "Section" into ges-enum.c so the file documentation ar
 actualy taken into account in the final generated documentation.
2012-04-25 17:09:19 -04:00
Thibault Saunier
2fd5364927 ges: Add a timeline edition mode API
+ timeline: Add a snapping-distance property
        + Bump the GLib dependency to 2.28 in the mean time as we need some functions from GSequence that only landed
	+ Update the testsuite accordingly

    API: GESTimeline:snapping-distance property
    API: ges_timeline_object_edit
    API: ges_timeline_object_ripple
    API: ges_timeline_object_ripple_end
    API: ges_timeline_object_roll_start
    API: ges_timeline_object_roll_end
    API: ges_timeline_object_trim_start
    API: ges_track_object_edit
    API: GESEdge enum
    API: GESEditMode enum
2012-04-23 22:03:11 -04:00
Thibault Saunier
1efbf1ceec GESTimeleinePipeline: Create a flag type instead of a simple enum
Make it binding friendly
2011-08-10 17:12:45 +02:00
Luis de Bethencourt
09ef6dbeac ges-enums: completed support for all options in TextAlign
Added the center and position options to the vertical, and horizontal
properties of text alignment.
2011-08-08 18:30:42 +02:00
Edward Hervey
e6f5bc0f13 enums: Fix transition enum
Leftovers from when we were using the old name
2011-01-06 12:06:24 +01:00
Edward Hervey
ef7eb9efdd GESTransition: Make it a base class and add GESTimelineStandardTransition
This is to ensure people can create their own Layer Transition subclass.

API : GESTimelineTransition is now GESTimelineStandardTransition
2010-12-09 17:09:11 +01:00
Brandon Lewis
66745d0695 Don't expose test source enum value table 2010-07-09 13:27:01 +02:00
Brandon Lewis
318abee5fb don't expose transition enum value table 2010-07-09 13:21:18 +02:00
Brandon Lewis
de8238031b add new invalid enum type 2010-07-09 13:21:18 +02:00
Brandon Lewis
e4e800da50 fix incorrect type name strings 2010-07-09 13:21:16 +02:00
Brandon Lewis
e73c98630e add GESVideoTestPattern enum 2010-07-09 13:21:16 +02:00
Brandon Lewis
52bec51bff add text positioning enums 2010-07-09 13:21:15 +02:00
Brandon Lewis
cc719507ea move and rename TRANSITION_VTYPE into enums.h and rename 2010-07-09 13:21:15 +02:00
Brandon Lewis
babd78dbcd move track type enum to ges-enums.{h,c} 2010-07-09 13:21:15 +02:00
Brandon Lewis
b25befe29a check in skeletal ges-enums.{c,h} 2010-07-09 13:21:15 +02:00