AcademySoftwareFoundation / AcademySoftwareFoundation/OpenTimelineIO

EDL Adapter incorrectly processing EDL that ends with "hanging dissolve event"

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

Description

I have an EDL that ends with a Transition between two clips.

In the EDL, it looks like this, a "hanging dissolve event":

```
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
```

That should result in an OTIO that includes three Clips with a Transition between the last two clips, like this:

Screen Shot 2021-05-27 at 11 38 44 AM

However, the EDL Adapter is create a Transition to a Gap, like this:

Screen Shot 2021-05-26 at 10 50 31 AM

Test EDL attached.

Unittest:
```
def test_hanging_transition(self):
"""
Test A->B Transition with no ending clip.
"""
tl = otio.adapters.read_from_file("dissolve_test_5.edl")
self.assertEqual(len(tl.tracks[0]), 4)

self.assertIsInstance(tl.tracks[0][0], otio.schema.Clip)
self.assertIsInstance(tl.tracks[0][1], otio.schema.Clip)
self.assertIsInstance(tl.tracks[0][2], otio.schema.Transition)

self.assertEqual(tl.tracks[0][2].duration().value, 35.0)
self.assertEqual(tl.tracks[0][3].duration().value, 96.0)

self.assertIsInstance(tl.tracks[0][3], otio.schema.Clip)
```

Contributor guide

Open the contributing guide

Research direction

Start with the named test_hanging_transition unittest and the dissolve_test_5.edl fixture, following the otio.adapters.read_from_file entry point for the EDL adapter. Done means the parsed track has three Clips with a Transition between the last two, followed by the final Clip, with durations matching the assertions.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
data
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.