AcademySoftwareFoundation / AcademySoftwareFoundation/OpenTimelineIO

cmx_3600 adapter incorrectly processing three-clip transitions

Open
#912 1 comment 0 reactions 0 assignees View on GitHub
bug stale
Dominant language
C++
Stars
2k
Forks
351
Avg merge
1d 12h
Merged PRs (30d)
1

Description

I have a case of a three part Transition in a CMX 3600 EDL. It looks like so:

Clip A -> Dissolve -> Clip B -> Dissolve -> Clip C

Here's the EDL:
```
TITLE: TRANSITION_TEST_2
FCM: NON-DROP FRAME
001 ABC0000. V C 01:00:06:18 01:00:08:00 01:04:11:17 01:04:12:23
002 ABC0010. V C 01:00:06:15 01:00:08:18 01:04:12:23 01:04:15:02
003 ABC0010. V C 01:00:08:18 01:00:08:18 01:04:15:02 01:04:15:02
003 ABC0020. V D 035 01:00:06:22 01:00:10:07 01:04:15:02 01:04:18:11
* BLEND, DISSOLVE
004 ABC0020. V C 01:00:10:07 01:00:10:07 01:04:18:11 01:04:18:11
004 ABC0030. V D 064 01:00:06:10 01:00:09:22 01:04:18:11 01:04:21:23
* BLEND, DISSOLVE
005 ABC0040. V C 01:00:08:14 01:00:12:14 01:04:21:23 01:04:25:23
```

In that example, ABC0020 should have a duration of 96, however OTIO it showing it to have 50 frames.

There appears to be something specifically wrong here, in the logic that derives what is the "previous clip":
https://github.com/PixarAnimationStudios/OpenTimelineIO/blob/84af5e5a30e4d14cf3434d6d055631e115ac1ee5/src/py-opentimelineio/opentimelineio/adapters/cmx_3600.py#L706-L717

Contributor guide

Open the contributing guide

Research direction

Reproduce the supplied three-clip CMX 3600 EDL and inspect src/py-opentimelineio/opentimelineio/adapters/cmx_3600.py around lines 706-717, where the previous clip is derived. Compare the generated duration for ABC0020 with the expected 96 frames; done means the adapter reports 96 rather than 50 for this transition.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.