Skip to content

Design Architecture DAG

Simran Brucherseifer edited this page May 1, 2020 · 1 revision

DAG

The DAG may consist of various types of vertices that may only be revealed in certain UI contexts.

DAG Timeline Entities

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.

Playhead In (TC, Image)

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.

Playhead Out (TC, Image)

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.

Channel Path In Relative (TC)

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.

Channel Path Out Relative (TC)

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.

Channel In Absolute (TC)

TC of the entity for its channel in point. Does not fluctuate unless changed by the individual.

Channel Out Absolute (TC)

TC of the entity for its channel out point. Does not fluctuate unless changed by the individual.

Channel Next (Vertex)

Next vertex, relative to entity’s channel.

Channel Previous (Vertex)

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)

Media in TC point, relative to the frames of the media. Set by author.

Media Out (TC)

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.

Process Out (TC, Image, Processor Arguments Vector(?))

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 In (TC, Image, Processor Arguments Vector(?))

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.

General Loop / Threadable

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