AcademySoftwareFoundation / AcademySoftwareFoundation/OpenTimelineIO

AAF Adapter: Found more than one Source Clip (2) for sourceClipComposition case. This is unexpected

Open
#1,325 1 comment 0 reactions 0 assignees View on GitHub
bug
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
Screen Shot 2022-06-07 at 15 40 09

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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.