gstreamer/ges
Henry Wilkes 269c2d1dc0 timeline: re-handle clip children track selection
The way a clip's track elements are added to tracks was re-handled. This
doesn't affect the normal usage of a simple audio-video timeline, where
the tracks are added before any clips, but usage for multi-track
timelines has improved. The main changes are:

+ We can now handle a track being selected for more than one track,
  including a full copy of their children properties and bindings.
  (Previously broken.)
+ When a clip is split, we copy the new elements directly into the same
  track, avoiding select-tracks-for-object.
+ When a clip is grouped or ungrouped, we avoid moving the elements to
  or from tracks.
+ Added API to allow users to copy the core elements of a clip directly
  into a track, complementing select-tracks-for-object.
+ Enforced the rule that a clip can only contain one core child in a
  track, and all the non-core children must be added to tracks that
  already contains a core child. This extends the previous condition
  that two sources from the same clip should not be added to the same
  track.
+ Made ges_track_add_element check that the newly added track element
  does not break the configuration rules of the timeline.
+ When adding a track to a timeline, we only use
  select-tracks-for-object to check whether track elements should be
  added to the new track, not existing ones.
+ When removing a track from a timeline, we empty it of all the track
  elements that are controlled by a clip. Thus, we ensure that a clip
  only contains elements that are in the tracks of the same timeline, or
  no track. Similarly, when removing a clip from a timeline.
+ We can now avoid unsupported timeline configurations when a layer is
  added to a timeline, and already contains clips.
+ We can now avoid unsupported timeline configurations when a track is
  added to a timeline, and the timeline already contains clips.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/issues/84
2020-04-08 14:35:28 +01:00
..
python gesdemux: Compute sinkpad caps based on formatter mimetypes 2019-07-26 13:48:51 -04:00
ges-asset.c asset: fix handling of proxies 2020-03-05 17:04:51 -03:00
ges-asset.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-audio-source.c ges: Use assets to instantiate track elements/group 2020-03-27 17:17:23 -03:00
ges-audio-source.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-audio-test-source.c ges: Use assets to instantiate track elements/group 2020-03-27 17:17:23 -03:00
ges-audio-test-source.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-audio-track.c docs: update GESAudioTrack and GESVideoTrack 2020-03-05 17:04:51 -03:00
ges-audio-track.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-audio-transition.c ges: Use assets to instantiate track elements/group 2020-03-27 17:17:23 -03:00
ges-audio-transition.h ges: Use assets to instantiate track elements/group 2020-03-27 17:17:23 -03:00
ges-audio-uri-source.c track-element: Create nleobject on GESExtractable::set_asset 2020-03-27 17:17:23 -03:00
ges-audio-uri-source.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-auto-transition.c auto-transition: fix setting of SET_SIMPLE flag 2020-03-11 17:35:07 +00:00
ges-auto-transition.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-base-effect-clip.c clip: only allow core elements as children 2020-03-16 14:19:51 +00:00
ges-base-effect-clip.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-base-effect.c WIP: ges: fix API export/import and 'inconsistent linkage' on MSVC 2018-12-15 00:14:51 +00:00
ges-base-effect.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-base-transition-clip.c WIP: ges: fix API export/import and 'inconsistent linkage' on MSVC 2018-12-15 00:14:51 +00:00
ges-base-transition-clip.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-base-xml-formatter.c formatter: Serialize source properties 2020-03-25 15:40:25 -03:00
ges-base-xml-formatter.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-clip-asset.c ges: Add a SourceClipAsset class 2020-03-25 11:26:29 -03:00
ges-clip-asset.h ges: Add APIs to have a sens of frame numbers 2020-03-25 11:26:29 -03:00
ges-clip.c timeline: re-handle clip children track selection 2020-04-08 14:35:28 +01:00
ges-clip.h timeline: re-handle clip children track selection 2020-04-08 14:35:28 +01:00
ges-command-line-formatter.c ges: support test clips assets natural size/framerate 2020-03-25 11:26:29 -03:00
ges-command-line-formatter.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-container.c container: change ownership when adding 2020-04-07 09:34:12 +01:00
ges-container.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-effect-asset.c WIP: ges: fix API export/import and 'inconsistent linkage' on MSVC 2018-12-15 00:14:51 +00:00
ges-effect-asset.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-effect-clip.c ges: Use assets to instantiate track elements/group 2020-03-27 17:17:23 -03:00
ges-effect-clip.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-effect.c ges: Ignore deprecation of GParameter 2020-02-07 11:58:37 -03:00
ges-effect.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-enums.c ges: Cleanup GESEdge and GESEditMode GEnum values 2020-03-19 18:45:51 -03:00
ges-enums.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-extractable.c ges: support test clips assets natural size/framerate 2020-03-25 11:26:29 -03:00
ges-extractable.h ges: support test clips assets natural size/framerate 2020-03-25 11:26:29 -03:00
ges-formatter.c ges: Use G_DEPRECATE to mark deprecated methods 2019-12-18 15:48:23 -03:00
ges-formatter.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-gerror.h ges: Add APIs to have a sens of frame numbers 2020-03-25 11:26:29 -03:00
ges-group.c ges: Use assets to instantiate track elements/group 2020-03-27 17:17:23 -03:00
ges-group.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-image-source.c ges: Deprecate GESImageSource and GESMultiFileSource 2020-03-30 06:54:22 -03:00
ges-image-source.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-internal.h timeline: re-handle clip children track selection 2020-04-08 14:35:28 +01:00
ges-layer.c timeline: re-handle clip children track selection 2020-04-08 14:35:28 +01:00
ges-layer.h formatter: Serialize source properties 2020-03-25 15:40:25 -03:00
ges-marker-list.c Don't pass default GLib marshallers for signals 2019-10-24 15:19:09 +02:00
ges-marker-list.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-meta-container.c docs: update GESMetaContainer 2020-03-05 17:04:51 -03:00
ges-meta-container.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-multi-file-source.c ges: Deprecate GESImageSource and GESMultiFileSource 2020-03-30 06:54:22 -03:00
ges-multi-file-source.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-operation-clip.c WIP: ges: fix API export/import and 'inconsistent linkage' on MSVC 2018-12-15 00:14:51 +00:00
ges-operation-clip.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-operation.c ges: Cleanup the way we declare object types 2020-03-19 21:09:18 +00:00
ges-operation.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-overlay-clip.c WIP: ges: fix API export/import and 'inconsistent linkage' on MSVC 2018-12-15 00:14:51 +00:00
ges-overlay-clip.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-pipeline.c pipeline: don't link tracks unnecessarily 2020-03-05 17:04:51 -03:00
ges-pipeline.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-pitivi-formatter.c formatter: Free path object after usage 2019-11-20 07:46:47 +01:00
ges-pitivi-formatter.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-prelude.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-project.c project: Do not warn when resetting URI to the same one 2020-03-09 11:49:02 -03:00
ges-project.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-screenshot.c ges: Deprecate ges_play_sink_convert_frame 2019-05-13 17:00:00 -04:00
ges-screenshot.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-smart-adder.c WIP: ges: fix API export/import and 'inconsistent linkage' on MSVC 2018-12-15 00:14:51 +00:00
ges-smart-adder.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-smart-video-mixer.c ges: Cleanup the way we declare object types 2020-03-19 21:09:18 +00:00
ges-smart-video-mixer.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-source-clip-asset.c ges: Add a SourceClipAsset class 2020-03-25 11:26:29 -03:00
ges-source-clip-asset.h ges: Add a SourceClipAsset class 2020-03-25 11:26:29 -03:00
ges-source-clip.c ges: Add a SourceClipAsset class 2020-03-25 11:26:29 -03:00
ges-source-clip.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-source.c ges: Add a timeoverlay to video test sources 2020-03-25 11:26:29 -03:00
ges-source.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-structure-parser.c ges: support test clips assets natural size/framerate 2020-03-25 11:26:29 -03:00
ges-structure-parser.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-structured-interface.c structured-interface: Fix adding clip to layer error reporting 2020-03-25 11:26:29 -03:00
ges-structured-interface.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-test-clip.c ges: Add a SourceClipAsset class 2020-03-25 11:26:29 -03:00
ges-test-clip.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-text-overlay-clip.c WIP: ges: fix API export/import and 'inconsistent linkage' on MSVC 2018-12-15 00:14:51 +00:00
ges-text-overlay-clip.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-text-overlay.c ges: Use assets to instantiate track elements/group 2020-03-27 17:17:23 -03:00
ges-text-overlay.h ges: Use assets to instantiate track elements/group 2020-03-27 17:17:23 -03:00
ges-timeline-element.c timeline: re-handle clip children track selection 2020-04-08 14:35:28 +01:00
ges-timeline-element.h ges: Add API to retrieve the natural framerate of an element 2020-03-25 11:26:27 -03:00
ges-timeline-tree.c ges: Add a way to set layer activeness by track 2020-03-25 15:40:25 -03:00
ges-timeline-tree.h ges: Add a way to set layer activeness by track 2020-03-25 15:40:25 -03:00
ges-timeline.c timeline: re-handle clip children track selection 2020-04-08 14:35:28 +01:00
ges-timeline.h ges: Add APIs to have a sens of frame numbers 2020-03-25 11:26:29 -03:00
ges-title-clip.c track-element: add has-internal-source property 2020-03-16 14:19:52 +00:00
ges-title-clip.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-title-source.c ges: Use assets to instantiate track elements/group 2020-03-27 17:17:23 -03:00
ges-title-source.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-track-element-asset.c ges: Add API to retrieve the natural framerate of an element 2020-03-25 11:26:27 -03:00
ges-track-element-asset.h ges: Add API to retrieve the natural framerate of an element 2020-03-25 11:26:27 -03:00
ges-track-element-deprecated.h ges: Use G_DEPRECATE to mark deprecated methods 2019-12-18 15:48:23 -03:00
ges-track-element.c timeline: re-handle clip children track selection 2020-04-08 14:35:28 +01:00
ges-track-element.h ges: Use assets to instantiate track elements/group 2020-03-27 17:17:23 -03:00
ges-track.c timeline: re-handle clip children track selection 2020-04-08 14:35:28 +01:00
ges-track.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-transition-clip.c clip: re-handle child in-point and max-duration 2020-03-16 14:19:52 +00:00
ges-transition-clip.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-transition.c ges: Cleanup the way we declare object types 2020-03-19 21:09:18 +00:00
ges-transition.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-types.h ges: Add APIs to have a sens of frame numbers 2020-03-25 11:26:29 -03:00
ges-uri-asset.c ges: Deprecate GESImageSource and GESMultiFileSource 2020-03-30 06:54:22 -03:00
ges-uri-asset.h ges: Deprecate GESImageSource and GESMultiFileSource 2020-03-30 06:54:22 -03:00
ges-uri-clip.c clip: allow arbitrary max-duration when no core children 2020-04-07 11:17:54 +01:00
ges-uri-clip.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-utils.c ges: Add APIs to have a sens of frame numbers 2020-03-25 11:26:29 -03:00
ges-utils.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-validate.c ges: Add a way to set layer activeness by track 2020-03-25 15:40:25 -03:00
ges-version.h.in ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-video-source.c ges: Fix build with GCC 10 2020-04-06 23:06:29 +05:30
ges-video-source.h ges: Deprecate GESImageSource and GESMultiFileSource 2020-03-30 06:54:22 -03:00
ges-video-test-source.c ges: Use assets to instantiate track elements/group 2020-03-27 17:17:23 -03:00
ges-video-test-source.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-video-track.c docs: update GESAudioTrack and GESVideoTrack 2020-03-05 17:04:51 -03:00
ges-video-track.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-video-transition.c ges: Use assets to instantiate track elements/group 2020-03-27 17:17:23 -03:00
ges-video-transition.h ges: Use assets to instantiate track elements/group 2020-03-27 17:17:23 -03:00
ges-video-uri-source.c ges: Deprecate GESImageSource and GESMultiFileSource 2020-03-30 06:54:22 -03:00
ges-video-uri-source.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges-xml-formatter.c formatter: Serialize source properties 2020-03-25 15:40:25 -03:00
ges-xml-formatter.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges.c ges: Hide internal debug category behind a GOnce 2019-10-02 08:52:57 +03:00
ges.h ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
ges.resource Implement a formatter based on [OpenTimelineIO] 2019-07-26 13:48:51 -04:00
gesmarshal.list add object-moved signal to simple timeline layer 2010-09-02 18:08:43 +02:00
gstframepositioner.c framepositioner: Avoid dereferencing NULL pointer 2020-03-19 18:45:51 -03:00
gstframepositioner.h ges: Properly position video sources in the scene by default 2020-02-26 13:36:30 -03:00
meson.build ges: Add a SourceClipAsset class 2020-03-25 11:26:29 -03:00
parse.l ges-launcher: Add support for titles 2018-03-30 18:30:33 -03:00