AcademySoftwareFoundation / AcademySoftwareFoundation/OpenTimelineIO
Question: Is it possible to represent source times / frame rates independently of the timeline?
- Dominant language
- C++
- Stars
- 2k
- Forks
- 351
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 1
Description
I'm testing using various permutations and combinations of the following basic code:
```
thisTimeline = otio.adapters.read_from_file("/path/to/Test.aaf")
for thisTrack in thisTimeline.tracks:
for thisClip in thisTrack.each_child():
print(thisTrack.kind, thisClip.name, thisClip.visible_range(), thisClip.range_in_parent())
```
...where `visible_range()` is outputting source time, `range_in_parent()` is outputting timeline time.
My Test.aaf is generated from project where the source clips are 23.976.
If my Test.aaf sequence is 23.976, the above code outputs an accurate representation of the timeline.
BUT...
If, back in the edit system, I edit the 23.976 source clips into a 29.97 sequence and export that as Test.aaf, then the above code represents everything, not only the timeline but also the source clips in 29.97
So while edit system is fully conversant in representing "This is a 29.97 sequence using sources of mixed frame rates", my opentimelineio code as written above converts source times to match the timeline frame rate.
Is there a way in opentimelineio to accurately represent source times in their original frame rates regardless of the timeline's frame rate?
Contributor guide
Research direction
Start with the Python entry points adapters.read_from_file(), visible_range(), and range_in_parent(), using the Test.aaf example described in the issue. Determine how source and parent rate information is represented, then verify that source ranges preserve original frame rates while parent ranges retain the timeline rate.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend-api-design
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100