AcademySoftwareFoundation / AcademySoftwareFoundation/OpenTimelineIO
AAF Adapter: Found more than one Source Clip (2) for sourceClipComposition case. This is unexpected
- Dominant language
- C++
- Stars
- 2k
- Forks
- 351
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 1
Description
## Bug Report
I am trying to use OTIO to get AAF data with python, I can open some AAF file & work with those with no problem but for some others I get an error.
```
WARNING:root:fat sector count missmatch difat: 363 header: 261
Found more than one Source Clip (2) for sourceClipComposition case. This is unexpected
```
## To Reproduce
1. Operating System: MacOS 12.4
2. Python version: 3.9.5
3. Example snippet that demonstrates the issue - if it's a build issue
```
import opentimelineio as otio
timeline = otio.adapters.read_from_file('my_file.aaf')
for clip in timeline.each_clip():
print(clip.name)
```
4. OpenTimelineIO release version or commit hash OpenTimelineIO 0.14.1
5. Compiler information:
```
Apple clang version 13.1.6 (clang-1316.0.21.2.5)
Target: x86_64-apple-darwin21.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
```
## Expected Behavior
Interact with the clips, tracks, etc, just as the same with other files, this happens with a few files, nothing particular special about those files.
## Screenshots

## Logs
```
WARNING:root:fat sector count missmatch difat: 363 header: 261
Found more than one Source Clip (2) for sourceClipComposition case. This is unexpected
Traceback (most recent call last):
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/test_opentimeline_errors/test_errors.py", line 4, in
timeline = otio.adapters.read_from_file(my_file)
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio/adapters/__init__.py", line 143, in read_from_file
return adapter.read_from_file(
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio/adapters/adapter.py", line 145, in read_from_file
result = self._execute_function(
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio/plugins/python_plugin.py", line 174, in _execute_function
return (getattr(self.module(), func_name)(**kwargs))
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 1191, in read_from_file
result = _transcribe(top, parents=list(), edit_rate=None)
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 606, in _transcribe
result.append(_transcribe(child, parents + [item], edit_rate, indent + 2))
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 277, in _transcribe
track = _transcribe(slot, parents + [item], edit_rate, indent + 2)
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 492, in _transcribe
child = _transcribe(item.segment, parents + [item], edit_rate, indent + 2)
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 469, in _transcribe
child = _transcribe(slot, parents + [item], edit_rate, indent + 2)
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 478, in _transcribe
child = _transcribe(component, parents + [item], edit_rate, indent + 2)
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 372, in _transcribe
mastermob_child = _transcribe(mastermob, list(), edit_rate, indent)
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 277, in _transcribe
track = _transcribe(slot, parents + [item], edit_rate, indent + 2)
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 492, in _transcribe
child = _transcribe(item.segment, parents + [item], edit_rate, indent + 2)
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 306, in _transcribe
mobs = _find_timecode_mobs(item)
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 134, in _find_timecode_mobs
for c in item.walk():
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/aaf2/components.py", line 201, in walk
for item in clip.walk():
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/aaf2/components.py", line 201, in walk
for item in clip.walk():
File "/Users/diego.dominguez01/Documents/aaf-parser-collab/venv/lib/python3.9/site-packages/aaf2/components.py", line 204, in walk
raise NotImplementedError("Sequence returned {} not "
NotImplementedError: Sequence returned not implemented
```
Contributor guide
Research direction
Start in opentimelineio_contrib/adapters/advanced_authoring_format.py at _transcribe and _find_timecode_mobs, then inspect aaf2/components.py around walk(). Reproduce with an affected AAF file and trace the sourceClipComposition path that reaches the unsupported Sequence. Done means the affected file can be read and its clips and tracks can be accessed without the reported exception.
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
- Needs clarification
- Newbie friendliness
- 28/100