gstreamer/tests/check/ges
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
..
asset.c asset: fix handling of proxies 2020-03-05 17:04:51 -03:00
backgroundsource.c tests: init/deinit per test case 2019-01-28 17:35:04 +09:00
basic.c timeline: fix adding track when layers contains clips 2020-04-29 12:32:52 +00:00
clip.c clip: add the duration-limit property 2020-05-07 09:37:15 +01:00
effects.c clip: only allow core elements as children 2020-03-16 14:19:51 +00:00
group.c group: fix priority setting 2020-05-07 09:37:15 +01:00
layer.c timeline-tree: simplify and fix editing 2020-05-07 09:37:15 +01:00
markerlist.c marker: add color meta 2019-10-24 09:45:19 +00:00
mixers.c tests: Plug misc leaks 2019-04-15 17:11:48 -04:00
negative.c tests: Add inconsistent init/deinit test case 2019-03-12 15:17:18 +00:00
overlays.c clip: re-handle child in-point and max-duration 2020-03-16 14:19:52 +00:00
project.c formatter: Plug lists of TimedValue leak 2019-07-26 13:48:52 -04:00
tempochange.c nleobject: stop using media-duration-factor 2020-04-29 12:32:52 +00:00
test-utils.c tests: Cleanup test files handling 2020-03-25 18:00:09 -03:00
test-utils.h clip: add the duration-limit property 2020-05-07 09:37:15 +01:00
timelineedition.c timeline-tree: simplify and fix editing 2020-05-07 09:37:15 +01:00
titles.c clip: re-handle child in-point and max-duration 2020-03-16 14:19:52 +00:00
track.c tests: init/deinit per test case 2019-01-28 17:35:04 +09:00
transition.c clip: re-handle child in-point and max-duration 2020-03-16 14:19:52 +00:00
uriclip.c ges: Deprecate GESImageSource and GESMultiFileSource 2020-03-30 06:54:22 -03:00
wrong_test.xptv tests: Implement tests for ges_formatter_can_load_uri 2012-09-25 15:10:35 +02:00