Bug 448318

Summary: OpenTimelineIO adapters are listed only if they have read AND write feature exposed
Product: [Applications] kdenlive Reporter: Gilou <contact+kde>
Component: User Interface & MiscellaneousAssignee: Jean-Baptiste Mardelle <jb>
Status: RESOLVED FIXED    
Severity: minor    
Priority: NOR    
Version First Reported In: 21.12.1   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Gilou 2022-01-12 13:46:16 UTC
SUMMARY
OpenTimelineIO adapters are listed only if they have the read and write feature enabled. We should have a separate list for import and export, as read is only required for import, and write for export. Or maybe just allow any file extensions there, and let OTIO decide if it can import them?

STEPS TO REPRODUCE
1. Set-up a read-only adapter in OTIO, such as https://github.com/gilou/otio-drp-adapter
2. Run KDEnlive, and select import

OBSERVED RESULT
drp adapter and its suffixes are not considered as candidates.

EXPECTED RESULT
Allow importing if only read feature is exposed (and exporting if only write is exposed)

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Ubuntu 20.04
KDE Frameworks Version: KDE Frameworks 5.68.0
Qt Version: 5.12.8

ADDITIONAL INFORMATION
This will require to separate m_adapters either in two lists, or to make the read/write feature available there to filter import/export suffixes in kdenlive/src/utils/otioconvertions.cpp

I'm not familiar with KDEnlive code and my C++ is a bit rusty, but I guess one could use the python condition in getOtioConverters() to create something like m_import_adapters and m_export_adapters strings maybe?
Comment 1 Julius Künzel 2022-01-16 20:15:26 UTC
Git commit 06c14aee3191536c866040f614e7df25fc229ac3 by Julius Künzel.
Committed on 16/01/2022 at 20:14.
Pushed by jlskuz into branch 'master'.

[OTIO] Differentiate between read and write adapters

M  +4    -3    data/scripts/checkpackages.py
M  +36   -4    data/scripts/otiointerface.py
M  +10   -6    src/pythoninterfaces/otioconvertions.cpp
M  +2    -1    src/pythoninterfaces/otioconvertions.h

https://invent.kde.org/multimedia/kdenlive/commit/06c14aee3191536c866040f614e7df25fc229ac3
Comment 2 Gilou 2022-01-17 01:12:17 UTC
(In reply to Julius Künzel from comment #1)
> Git commit 06c14aee3191536c866040f614e7df25fc229ac3 by Julius Künzel.
> Committed on 16/01/2022 at 20:14.
> Pushed by jlskuz into branch 'master'.
> 
> [OTIO] Differentiate between read and write adapters
> 
> M  +4    -3    data/scripts/checkpackages.py
> M  +36   -4    data/scripts/otiointerface.py
> M  +10   -6    src/pythoninterfaces/otioconvertions.cpp
> M  +2    -1    src/pythoninterfaces/otioconvertions.h
> 
> https://invent.kde.org/multimedia/kdenlive/commit/
> 06c14aee3191536c866040f614e7df25fc229ac3

That is... impressive. And it seems, an elegant way to solve the issue. I tried it, and it works, so… well done!