gstreamer/docs/random/mapping.txt
2010-12-15 11:17:21 +01:00

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