Summary
This release introduces Media-multi references (by rogernelson), spatial coordinates parameters (also by rogernelson), `otiotool` command line utility, a schema downgrading system (for writing OTIO files that are compatible with older versions of OTIO), as well as a number of other smaller bug fixes and enhancements across the core and adapters. This is the last version of OTIO that will support python 2.7.
Thank you to the many community members who contributed to this release!
Important Note About OTIO File Backwards Compatibility
This version of OTIO introduces a new version of the Clip schema, Clip.2 (with multiple media reference support). If you need to write out OTIO files that are compatible with older versions of the OTIO library, then you can use the new downgrade feature to save out OTIO files with Clip.1 schema.
Example using `otioconvert` on the commandline:
bash
❯ otioconvert -i tests/sample_data/nested_example.otio -o /var/tmp/v14_compat.otio -A target_schema_versions="{'Clip':1}" && grep "OTIO_SCHEMA.*Clip" /var/tmp/v14_compat.otio
26: "OTIO_SCHEMA": "Clip.1",
75: "OTIO_SCHEMA": "Clip.1",
105: "OTIO_SCHEMA": "Clip.1",
162: "OTIO_SCHEMA": "Clip.1",
192: "OTIO_SCHEMA": "Clip.1",
249: "OTIO_SCHEMA": "Clip.1",
280: "OTIO_SCHEMA": "Clip.1",
C++:
c++
include <iostream>
include "opentimelineio/timeline.h"
namespace otio = opentimelineio::OPENTIMELINEIO_VERSION;
void
main()
{
otio::ErrorStatus err;
otio::SerializableObject::Retainer<otio::Timeline> timeline(
dynamic_cast<otio::Timeline*>(
otio::Timeline::from_json_file(
"tests/sample_data/nested_example.otio",
&err
)
)
);
otio::schema_version_map downgrade_manifest = {
{"Clip", 1},
};
timeline->to_json_file("/var/tmp/v14_compat.otio", &err, &downgrade_manifest);
}
python:
python
import opentimelineio as otio
tl = otio.adapters.read_from_file("tests/sample_data/nested_example.otio")
otio.adapters.write_to_file(
tl,
"/var/tmp/v14_compat.otio",
target_schema_versions={"Clip": 1}
)
Big Changes
* The OpenTimelineIO project was moved over to the ASWF organization, and a number of changes were made as part of the ASWF graduation process in:
* Technical Steering Committee Charter, GOVERNANCE, etc. by jminor in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1057
* Prep for ASWF transfer by jminor in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/932
* More ASWF transition prep by jminor in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1167
* Replaced pixar email addresses with aswf email addresses. by jminor in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1170
* OpenTimelineIO License & CLA Change by jminor in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1285
* Updated verify_license.py to support more languages by jminor in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1288
* Update links in readme to point to new ASWF url by ssteinbach in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1302
* Updated URLs to new AcademySofwareFoundation GitHub org. by jminor in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1303
* AAF Adapter:
* AAF Adapter: support for reading markers by timlehr in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1019
* AAF adapter: added support for keyframed properties by timlehr in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1151
* Merge spatial_coordinates to main by rogernelson in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1219
* Media Multi-Reference Feature by rogernelson in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1241
* Schema Downgrading System by ssteinbach in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1387
* otiotool command line utility by jminor in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1375
Breaking Changes
* Fixes 1188 BREAKING CHANGE: change "effect" argument to Gap constructor to "effects" by visajshah in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1292
* Clip.2 schema as noted above
Other Changes
* R0.15.set dev version by ssteinbach in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1128
* CI: switch platform versions back to -latest by ssteinbach in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1129
* Fix RV plugin test timing by rogernelson in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1147
* Fix RV plugin test for Mac by rogernelson in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1149
* Update sdist to include submodules by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1152
* Improve the developer quickstart documentation by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1144
* Use platform specific command to find path by ThomasWilshaw in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1143
* Fix code coverage report uploads by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1189
* Add nearest_valid_timecode_rate function by splidje in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1181
* Replace deprecated Pybind11 get_type() usages by py::type::of() by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1194
* SVG adapter fixes by KarthikRIyer in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1195
* Remove extra useless parameter from RationalTime.__copy__ method by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1198
* Update AAF Documentation Link by camkerr in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1202
* Add enabled flag to Item by ThomasWilshaw in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1175
* Add missing memo keyword argument to TimeTransform.__deepcopy__ method by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1203
* Kdenlive adapter: process recent project format by vpinon in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1191
* On macOS build universal arm64 and x86_64 by jminor in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1214
* Port to PySide6 by darbyjohnston in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1221
* C++ tests by darbyjohnston in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1161
* Don't skip asserts in unit test release builds by rogernelson in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1236
* Keep markers at the track if `child_at_time()` found something that does not hold markers by jchen9 in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1239
* otioview track and window fit improvements by michdolan in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1237
* Install full OTIO Python env with CMake by michdolan in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1238
* clang notices that constexpr can't be used on a mutating function by meshula in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1242
* AAF Adapter: Mob transcription heuristics by jchen9 in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1249
* Add ALE adapter argument `ale_name_column_key` by jchen9 in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1248
* Support OTIO_PLUGIN_MANIFEST_PATH being set to an empty string by avrata in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1253
* Fix missing init metadata by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1251
* Add Python 3.10 to CI by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1256
* Fix 1257 missing each_clip on Clip by meshula in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1258
* Detect & use Imath from vfxplatform CY2019-2022 by meshula in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1255
* Adapt changes between PySide2 and PySide6 by jchen9 in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1262
* Copy core sample data used by contrib tests into the contrib area to better isolate contrib tests by avrata in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1266
* Add a test case and fix for transcribing markers over a single audio AAF file by jchen9 in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1259
* Support python 3 in the "rv_session" adapter. by avrata in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1267
* Change angle include Imath to quote include, remove multiMediaReference prototype by meshula in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1276
* Update test_v2d to support multiple exception types by avrata in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1279
* Fix for external Imath, must set USE_DEPS_IMATH OFF by meshula in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1273
* AAF Clip Enabled/Muting Update by andrewmoore-nz in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1277
* fix 839 - FCP XML outputs not recognized by Resolve by pedrolabonia in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1287
* Removed a vestigial "Foo" schema by reinecke in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1306
* CII Best Practices badge by jminor in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1304
* Update Pybind11 to 2.9.2 by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1312
* Use py::module_local() for Imath bindings by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1323
* Update feature matrix to mention that the AAF adapter now supports markers by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1309
* Python bindings: raise proper exceptions for IO operations by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1313
* Improve Python reference documentation by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1209
* Use marker colors in otioview by markreidvfx in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1340
* Prevent divide by zero and print warning if width is zero by markreidvfx in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1346
* Cancel in-progress CI jobs for the same branch by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1329
* Fix setuptools deprecation warnings by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1317
* Revisited how transitions are handled by the cmx 3600 adapter. by gplsteph in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1341
* Add unit tests in preparation for moving the aaf adapter by markreidvfx in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1353
* Added SVG and PDF vector logos. by jminor in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1360
* Fix lint issues by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1370
* Close Temporary file handles in tests by markreidvfx in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1363
* Python3 fixes for the shot_detect example by ssteinbach in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1374
* Added documentation explaining contrib and outlining process around it by reinecke in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1378
* Fixes and improvements for Kdenlive adapter by jlskuz in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1390
* Load entrypoint plugins before builtin and contrib. by markreidvfx in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1389
* Update pyaaf2 requirement from ~=1.4.0 to >=1.4,<1.7 by dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1355
* Fix parsing of time_strings lacking leading zeroes by meshula in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1297
* Add basic mingw_x86_64 build support by markreidvfx in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1354
* Import _opentime before actually creating the bindings for _otio by JeanChristopheMorinPerso in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1396
* Fix for SerializableCollection::children_if by darbyjohnston in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1404
* Added OTIO_CORE 0.14.0 version_manifest. by jminor in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1415
* Fix compiler warnings on Windows by darbyjohnston in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1414
* Fix a few typos and cosmetics inconsistencies by markreidvfx in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1416