-
-
Notifications
You must be signed in to change notification settings - Fork 558
Design Architecture DAG
The DAG may consist of various types of vertices that may only be revealed in certain UI contexts.
Each DAG vertex that has a representation that appears on the timeline has a playhead TimeCode (TC) value flow into the chain, once per TC.
Pass in TC and image buffer for the given playhead. If the image buffer is unset, pass null. Entry point of data for a timeline vertex.
Pass the TC and image buffer out. If the channel depth position is topmost, record the image buffer into the image cache. Loop for remaining on given vertex. Exit point of data for a timeline vertex.
Example: TCs in a range covering three frames on the upper most channel, drill down into lower channel vertices, returning the Playhead class / structure back to the top most channel vertex entry point. At this point the playhead will advance to the next channel DAG vertex, and as such, being the topmost channel and leaving the vertex, encode the buffer to the image cache. Repeat for remaining TCs in the timeline entity DAG vertex.
TC of the entity for its channel in point. Fluctuates based on visibility from entities above it in channels. Application may set via vertices above it.
TC of the entity for its channel out point. Fluctuates based on visibility from entities above it in channels. Application may set via vertices above it.
Example: A gap manifests above the given channel, and the relative channel in on the lower entity is set to the channel out increment from the above entity.
TC of the entity for its channel in point. Does not fluctuate unless changed by the individual.
TC of the entity for its channel out point. Does not fluctuate unless changed by the individual.
Next vertex, relative to entity’s channel.
Previous vertex, relative to entity’s channel.
Example: Author changes the in or out position on an entity in a particular channel.
Media in TC point, relative to the frames of the media. Set by author.
Media in TC point, relative to the frames of the media. Set by author.
Example: Author changes the relative in or out to a subset of frames from a super set.
Processing path for adjusting the image buffer. Flows in from Playhead In to Processing Out, down through subsequence vertices via their Processing In to their respective outs.
Processing path for adjusting the image buffer. Flows in from Playhead In to Processing Out, down through subsequence vertices via their Processing In to their respective outs.
Example: The TC flows into a Playhead In point on a vertex. The vertex passed it out the processing out, and it returns via the processing in. In the event that there are no vertices chained into the root vertex, the processing out points to processing in, and becomes a no-operation.
playhead_in(playhead_TC, Image):
foreach TC in channel_in to _out:
// Pass to next processing vertex
process_out(playhead_TC, image)
// Return from the sub vertices
process_in(playhead_TC)
// Apply this vertex Processing
process(playhead_TC, image, arguments)
// Pass to next vertex
playhead_out(playhead_TC, Image)
images/dag-with-blur.png images/dag-with-merge.png images/dag-with-flow.png
🚧 This wiki is work in progress and information may be outdated!
Our Discord server is Olive Video Editor.
Thank you for your interest in Olive and helping it reach more people.