diff --git a/docs/random/design b/docs/random/design index 69494eebc7..a2be0e07b0 100644 --- a/docs/random/design +++ b/docs/random/design @@ -1,6 +1,13 @@ GStreamer Editing Services +-------------------------- + + This is a list of features and goals for the GStreamer Editing + Services. + + Some features are already implemented, and some others not. When the + status is not specified, this means it is still not implemented but + might be investigated. -TODO FUNDAMENTAL GOALS: @@ -9,8 +16,12 @@ FUNDAMENTAL GOALS: 2) API must allow as many use-cases as possible, not just the simple ones. + * Project file load/save support (GESFormatter) + Status: + Implemented, requires API addition for all use-cases. + Problems: Timelines can be stored in many different formats, we need to ensure it is as easy/trivial as possible for users to load/save @@ -37,17 +48,41 @@ FUNDAMENTAL GOALS: * Grouping/Linking of Multiple TrackObjects + Status: + Implemented, but doesn't have public API for controlling the + tracked objects or creating groups from TimelineObject(s) + Problems: In order to make the usage of timelines at the Layer level as easy as possible, we must be able to group any TrackObject together as one TimelineObject. - - ** Selection support + The base GESTimelineObject keeps a reference to all the + GESTrackObjects it is controlling. It contains a mapping of the + position of those track objects relatively to the timeline objects. + + TrackObjects will move and be modified synchronously with the + TimelineObject, and vice-versa. + + TrackObjects can be 'unlocked' from the changes of its controlling + TimelineObject. In this case, it will not move and be modified + synchronously with the TimelineObject. + + +* Selection support (Extension from Grouping/Linking) + + Problems: + In order to make user-interface faster to write, we must have a way + to create selections of user-selected TimelineObject(s) or + TrackObject(s) to move them together. + + This should be able to do by creating a non-visible (maybe not even + inserted in the layer?) TimelineObject. + * Effects support - * in the Layers - * as TrackObjects + TBD (Pending proposal by Thibault) + * Source Material object @@ -100,4 +135,77 @@ FUNDAMENTAL GOALS: resolution/quality/... version for the editing phase and the original material for final rendering phase). - \ No newline at end of file + +* Editing modes (Ripple/Roll/Slip/Slide) + + Problems: + Most editing relies on heavy usage of 4 editing tools which editors + will require. Ripple/Roll happen on edit points (between two clips) + and Slip/Slide happen on a clip. + + The Ripple tool allows you to modify the beginning/end of a clip + and move the neighbour accordingly. This will change the overall + timeline duration. + + The Roll tool allows you to modify the position of an editing point + between two clips without modifying the inpoint of the first clip + nor the out-point of the second clip. This will not change the + overall timeline duration. + + The Slip tool allows you to modify the in-point of a clip without + modifying it's duration or position in the timeline. + + The Slide tool allows you to modify the position of a clip in a + timeline without modifying it's duration or it's in-point, but will + modify the out-point of the previous clip and in-point of the + following clip so as not to modify the overall timeline duration. + + These tools can be used both on TimelineObjects and on + TrackObjects, we need to make sure that changes are propagated + properly. + + + +* Coherent handling of Content in different formats + + Problems: + When mixing content in different format (Aspect-Ratio, Size, color + depth, number of audio channels, ...), decisions need to be made on + whether to conform the material to a common format or not, and on + how to conform that material. + + Conforming the material here means bringing it to a common format. + + +* Media Asset Management integration + + (Track, Search, Browse, Push content) TBD + + +* Templates + + Problem: + In order to create as quickly as possible professional-looking + timelines, we need to provide a way to create 'templates' which + users can select and have an automatic timeline 'look' used. + + This will allow users to be able to quickly add their clips, set + titles and have a timeline with a professional look. This is + similar to the same feature that iMovie offers both on desktop and + iOS. + + +* Plugin system + + Problem: + All of GES classes are made in such a way that creating new + sources, effects, templates, formatters, etc... can be easily added + either to the GES codebase itself or to applications. + + But in order to provide more features without depending on GES + releases, limit those features to a single application, and in + order to provide 'closed'/3rd party features, we need to implement + a plugin system so one can add new features. + + Use a registry system similar to GStreamer. +