AcademySoftwareFoundation / AcademySoftwareFoundation/OpenTimelineIO

Question: Is it possible to represent source times / frame rates independently of the timeline?

Open
#732 5 comments 0 reactions 0 assignees View on GitHub
time calculations
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.