AcademySoftwareFoundation / AcademySoftwareFoundation/OpenTimelineIO
EDL Adapter: should author and read timeline::global_start_time attribute rather than source_range.start_time of track
- Dominant language
- C++
- Stars
- 2k
- Forks
- 351
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 1
Description
## To Reproduce
```python
import opentimelineio as otio
# Read the screening example from the sample data
timeline = otio.adapters.read_from_file("tests/sample_data/screening_example.edl")
# Note that the source range on the track is offset to make the start timecode work - this assertion passes
assert timeline.tracks[0].source_range.start_time == otio.opentime.RationalTime(value=-86243, rate=24)
# This assertion should pass, but does not because global_start_time is None
assert timeline.global_start_time = otio.opentime.from_timecode("00:59:53:11", 24)
# We should be able to set global_start_time and make the first event record time start at the provided tc
timeline.global_start_time = otio.opentime.from_timecode("02:00:00:00", 24)
# The first event of the written out timeline should have a record start TC of 02:00:00:00
otio.adapters.from_name("cmx_3600").write_to_string(timeline)
```
## Expected Behavior
I would expect that the first event's record start timecode would be set as the `global_start_time` on the timeline, and that the `global_start_time` on the timeline would be the first event record time - rather than relying on the `source_range` on tracks to set the time.
Contributor guide
Research direction
Reproduce the behavior with tests/sample_data/screening_example.edl using adapters.read_from_file, then inspect the EDL adapter and the cmx_3600 write_to_string path. Done means reading preserves timeline.global_start_time and setting it causes the first written event to use that value as its record start timecode.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100