Open Source API and interchange format for editorial timeline information.
This release moves from the third party any and optional to C++17 std::any
and std::optional
(by @darbyjohnston) as well as a collection of enhancements in how the python bindings handle type conversion with C++ (by @JeanChristopheMorinPerso) and the addition of comment
to the Marker
schema (by @nickblt).
This release also includes an experimental set of editing commands (by @ggarra13) in C++. These are a new set of APIs intended to implement some common editing commands (insert, overwrite, roll, etc.) backed by the OpenTimelineIO data model. These APIs are meant to provide an opportunity to try the concepts and form a base to iterate on, however there may be breaking changes as they evolve.
This will be the last release to include the full set of adapters. In the next release, most of the adapters will move out into their own PyPI packages as optional plugins.
tl;dr - if you rely on the adapters, please use the OpenTimelineIO-Plugins
PyPI package to ensure you continue to receive them after this release.
The OpenTimelineIO native file format adapters will still be present in the opentimelineio
python package. These adapters are:
To get the full set of OTIO adapters, use the OpenTimelineIO-Plugins python package. In addition to the OpenTimelineIO native adapters, you'll also get:
The following are not included in the OTIO-maintained top-level packages:
To experiment with what this looks at, check out the 0.17.0 Pre-Release - packages are provided on PyPI to try out.
execution_scope
parameter by @ssteinbach in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1428
914c06f
to da8c730
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1439
da8c730
to 7c6f2f8
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1449
3ad5d4d
to 6add873
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1455
5e4b776
to be720eb
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1456
7c6f2f8
to 964c499
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1454
964c499
to 5bc0943
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1471
6add873
to 443b7f0
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1472
5bc0943
to ee2b522
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1476
importlib
from pkg_resources
by @mikemahony in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1469
443b7f0
to 0436624
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1484
ee2b522
to 9727dcd
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1498
0436624
to fcb8a32
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1509
9727dcd
to 0694ec6
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1508
fcb8a32
to e52b07d
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1552
e52b07d
to 5b8627a
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1556
0694ec6
to 4ce0517
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1573
filepath_from_url
to support non-encoded URLs by @douglascomet in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1664
Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.15...v0.16.0
This is a preview release for extracting the "batteries included" file format adapters and moving them to their own repositories and python packages. If you still require the adapters, you should use the opentimelineio-plugins
python package which will have a version correlating to each OpenTimelineIO core release.
The release is a Developmental release to give users a chance to try out how the new opentimelineio
and opentimelineio-plugins
package setups work in their environments. Because this release is an early cut, there are still a collection of tasks to complete before the final release. There are also additional 0.16.0 changes that will be integrated with this release when it is finalized, so please treat it very much as a work-in-progress.
Please provide feedback about your experience in the GitHub issue for adapter break-out - #1386.
By default pip won't pick up developmental releases. To try this release, use one of the following:
opentimelineio==0.17.0.dev1
as a dependencypython -m pip install opentimelineio==0.17.0.dev1
python -m pip install --pre opentimelineio
To opt-in to the "batteries-included" package, use any of these variants with the opentimelineio-plugins
package.
Since we've removed the adapters from OpenTimelineIO core, only the OpenTimelineIO native file format adapters are present in the opentimelineio
python package. These adapters are:
To get the full set of OTIO adapters, use the OpenTimelineIO-Plugins python package. In addition to the OpenTimelineIO native adapters, you'll also get:
The following are not included in the OTIO-maintained top-level packages:
Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.15...v0.17.0.dev1
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!
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:
❯ 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++:
#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:
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}
)
child_at_time()
found something that does not hold markers by @jchen9 in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1239
ale_name_column_key
by @jchen9 in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1248
7c58058
to e7e2c79
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1125
52f2b61
to 36c5b87
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1097
36c5b87
to a006f22
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1137
a006f22
to ea502a6
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1319
ea502a6
to 5e4b776
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1383
00dbcf2
to 4d6cb08
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1105
4d6cb08
to e4bde97
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1217
e4bde97
to 8261c1d
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1240
8261c1d
to 27c3a8d
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1358
27c3a8d
to 06d58b9
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1388
8b3363a
to bd6f74c
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1222
bd6f74c
to bd254da
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1245
bd254da
to 3ffb078
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1291
3ffb078
to 3ad5d4d
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1324
f67bd5f
to bfc77f2
by @dependabot in https://github.com/AcademySoftwareFoundation/OpenTimelineIO/pull/1357
Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.14...v0.15
This release fixes an issue where installation from the sdist (source) package on PyPI would fail. This mostly impacted users with a platform for which we don't provide a prebuilt wheel.
This release has a number of features, including many backend features that upgrade the CI, build, and release process. Big thanks especially to @KarthikRIyer, @darbyjohnston and @JeanChristopheMorinPerso for their contributions in this and other areas.
_TypeRecord
constructor params to avoid shadow warnings by @Simran-B in https://github.com/PixarAnimationStudios/OpenTimelineIO/pull/825
SourceMobUsage
metadata to AAF clips by @timlehr in https://github.com/PixarAnimationStudios/OpenTimelineIO/pull/1056
make format
to codebase by @ssteinbach in https://github.com/PixarAnimationStudios/OpenTimelineIO/pull/1088
Full Changelog: https://github.com/PixarAnimationStudios/OpenTimelineIO/compare/v0.13...v0.14
This release introduces the ImageSequenceReference schema to OTIO. It adds support for media references that point at sets of files on disk, for example, the rendered EXR frames for a shot. This work was contributed by @apetrynet and @reinecke. It includes RV adapter support.
Additionally, we're starting a restructure of some of the core math libraries built around a more consistent mathematical framework. The first of these changes is shifting to predicates based on Allen's Interval Algebra [https://en.wikipedia.org/wiki/Allen%27s_interval_algebra] .
Big things: - ImageSequenceReference (@apetrynet and @reinecke) main: #602 #722 w/ #783 #751 - Allen Interval Algebra predicates (@KarthikRIyer) #697 - AAF Reader metadata support #739 - Post adapter write hook added (@apetrynet) #730 - RV native plugin (so that you can read OTIO files from inside RV rather than convert via an adapter to .rvsession files) @avrata and @apetrynet #637
Small things:
- Reverse and dissolve fixes, Wipe transition support was added to the CMX EDL adapter #763 #757 #687
- Fixing up some bugs and algorithms in rationalTime.cpp
#755 #721 #692 (@reinecke and @KarthikRIyer)
- Tox changed and our setup.cfg was altered to conform with the new standard
- otioview enhancement: double click to see full track name (@KarthikRIyer) #690
- conform.py example now prints support file suffixes (@thebigsasha) #676
- FCP7 adapter bug fixes #674
- xges adapter markers and effects support (@hwilkes-igalia) #609
- Fix bugs in the kdenlive adapter (@vpinon) #714
- bumped pin of PyAAF2 version to 1.4.0 #738
- bug fixes in Markers #740 and #592 (@elabrosseRodeofx)
Project related things: - added issue templates to the github repo #768 - cleaned up developer quickstart documentation #717 - documentation was broken on read the docs, this was fixed #715
Includes PR #669, which fixes issues in the cmake build system reported on windows machines. As always, please let us know if you see any further issues and alert us! Thanks!
This is the first release with the C++ core. Please test the new build system and make sure it works for your needs. If you run into issues, pin to 0.11.0 (the last pure python release) and let us know so that we can address them.
The adapters remain in python, but the core library and algorithms are implemented in C++. For more information you can see this pr: https://github.com/PixarAnimationStudios/OpenTimelineIO/pull/540
Big Changes:
Small Changes:
Lots of other small fixes and changes. Thank you to all of the community contributors!
This release is a final checkpoint before we land the C++ branch (cxx) into the master branch. We found there were a number of other small changes that needed to be made before the CXX and Master branches were ready to be merged, so we needed to do one more release before we did that.
Big Changes:
Small Changes:
Big thanks go to @andrewmoore-nz and @thecargocultnz for all the very detailed bug reports and repro cases, they are very helpful for improving OTIO robustness!
OpenTimelineIO Release v0.10
We have a port to C++ that you can preview on the cxx branch which we will soon land into master. There are also some schema changes we'd like to make, which we'll be working on and presenting to the community after we land the C++ port. If you'd like to read about how that will work: https://opentimelineio.readthedocs.io/en/latest/tutorials/wrapping-otio.html
Breaking Change:
Timeline.global_start_time
had a default value of 0, 24 and was not being serialized. Now it defaults to None
and is correctly serializead/deserializedweakref
to point at parents__copy__
method has been removedBig Changes:
each_child
that reduced a 691s operation on a full-film OTIO file to 0.8s.New adapters:
Small Changes:
And more! Thanks to everyone for this big release!