mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
random: Update goals/features document
So that everybody can know what features we want.
This commit is contained in:
parent
c2668d0585
commit
f259c0dc98
1 changed files with 114 additions and 6 deletions
|
@ -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).
|
||||
|
||||
|
||||
|
||||
* 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.
|
||||
|
||||
|
|
Loading…
Reference in a new issue