mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
56 lines
2 KiB
Text
56 lines
2 KiB
Text
Mapping Timeline position to Track position
|
|
-------------------------------------------
|
|
|
|
TrackObject/TimelineObject basic properties (hereafter position):
|
|
start
|
|
duration
|
|
in-point
|
|
priority
|
|
|
|
|
|
Use Cases:
|
|
|
|
A TimelineObject can be tracking one or many TrackObject(s).
|
|
|
|
When the TimelineObject position is modified we might need
|
|
to cascade those changes to the controlled TrackObject(s) if those
|
|
TrackObject(s) are 'locked' to the TimelineObject.
|
|
|
|
If we modify the positions of a TrackObject that TrackObject is
|
|
'locked' to the TimelineObject, we need to ensure all the other
|
|
co-related TrackObject belong to the same TimelineObject are moved in
|
|
the same way.
|
|
|
|
A TrackObject can be temporarily 'unlocked' from its TimelineObject,
|
|
so as to move it independently, and then 'locked' back to it. This
|
|
can allow moves, like shifting audio trackobject in relation to the
|
|
video trackobject (to fix sync issues) and then 'lock' them back so
|
|
as to be able to move them as one entity thereafter.
|
|
|
|
When adding TimelineOverlay(s) or TimelineEffect(s) on a
|
|
TimelineObject, we need to ensure the TrackObject(s) that those extra
|
|
effects will create can be added with specific priority offsets, in
|
|
such a way that they always end up "on top" of the TimelineObject's
|
|
existing tracked TrackObject(s).
|
|
|
|
When a controlled TrackObject is being moved when 'unlocked', we need
|
|
to make sure the duration/height of the TimelineObject is updated
|
|
accordingly. Ex : moving a TrackObject down by one priority should
|
|
increase the TimelineObject "heigh" property by 1.
|
|
|
|
A TimelineObject might want to have a tighter control over which
|
|
Track(s) each of the TrackObjects it is controlling are going. This
|
|
is more obvious in the case of timeline with multiple Tracks of the
|
|
same kind, or if a TimelineObject can produce multiple TrackObjects
|
|
of the same media type (ex: file with multiple audio tracks).
|
|
|
|
|
|
Main Problem:
|
|
|
|
There needs to be a mapping between the TimelineObject basic
|
|
properties and its controlled TrackObject(s) position.
|
|
|
|
Design:
|
|
|
|
TBD
|
|
|