AcademySoftwareFoundation / AcademySoftwareFoundation/OpenTimelineIO

AAF Reader: TimeEffect on clip causing nested scope / potential structure issue?

Open
#481 4 comments 0 reactions 1 assignee Claimed by @jminor View on GitHub
Dominant language
C++
Stars
2k
Forks
351
Avg merge
1d 12h
Merged PRs (30d)
1

Description

Investigating how motion effect information is coming through in the OTIO structure, I have just come across a few things that raise some questions on our end - possibly something that may be intentional; maybe something that hasn't been spotted yet.

As a baseline test, exporting an AAF from Premiere with a single clip on a single track with no motion effect applied gives us the OTIO structure we would expect:

```
"OTIO_SCHEMA": "Timeline.1",
...
"tracks": {
"OTIO_SCHEMA": "Stack.1",
"children": [
{
"OTIO_SCHEMA": "Track.1",
"children": [
{
"OTIO_SCHEMA": "Clip.1",
"name": "CLIP_1_NoMotionEffect",
...
```

When another clip is added on to the second track ("V2") and has a motion effect applied to it (Clip Speed at 50%), the resulting OTIO structure looks like this:

```
"OTIO_SCHEMA": "Timeline.1",
...
"tracks": {
"OTIO_SCHEMA": "Stack.1",
"children": [
{
"OTIO_SCHEMA": "Track.1",
"children": [
{
"OTIO_SCHEMA": "Stack.1",
"children": [
{
"OTIO_SCHEMA": "Clip.1",
"name": "CLIP_1_NoMotionEffect",
...
},
{
"OTIO_SCHEMA": "Track.1",
"children": [
{
"OTIO_SCHEMA": "Gap.1",
"name": "Filler",
...
},
{
"OTIO_SCHEMA": "Clip.1",
"name": "CLIP_2_WithMotionEffect_50%",
...
```

The first real question here is: should this be respecting (what seems to be) the intended structure of `Stack -> Track -> Clip`? There are a few cases now that I've come across where this hierarchy isn't respected when importing AAFs and you end up with a `Stack -> Clip` relationship. The second, ultimately more important, questions is: is it intentional that this kind of structure can and should exist, or should it always be following the `Stack -> Track -> Clip` hierarchy?

You can see here that there is no nesting happening that should indicate for this first clip to be included inside a nester scope:

![Screen Shot 2019-04-08 at 4 53 16 PM](https://user-images.githubusercontent.com/19657812/55699402-de809c00-5a1e-11e9-9a02-6d9791094cca.png)

Would this be the result of how the information is packaged when exported to AAF, or of how PyAAF/OTIO are interpreting the information?

When the same sequence is exported to XML, it is working exactly like we would expect - following the normal structure with no nested scopes, so we would hope to be able to get consistent results between the two.

Zip attached with a copy of the AAF and XML for you to check out:

[NewSpeedChange_MstrSeq_Examples_190408.zip](https://github.com/PixarAnimationStudios/OpenTimelineIO/files/3052691/NewSpeedChange_MstrSeq_Examples_190408.zip)

As always, just let me know if there's any further info I can provide. Now that we are able to start testing AAFs with nested sequences, I have come across a few other issues that potentially fall in to a similar category, but will create a separate issue for them.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.