OpenTimelineIO Versions Save

Open Source API and interchange format for editorial timeline information.

v0.16.0

1 month ago

Summary

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.

Important Note About Adapters

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:

  • otio_json
  • otiod
  • otioz

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:

  • AAF
  • ale
  • burnins
  • cmx_3600
  • fcp_xml
  • fcpx_xml
  • hls_playlist
  • maya_sequencer
  • svg
  • xges

The following are not included in the OTIO-maintained top-level packages:

  • kdenlive - Now hosted and supported under the KDE repository
  • rv_session - This adapter was made obsolete by first-party support of OpenTimelineIO in Shotgrid RV and OpenRV

To experiment with what this looks at, check out the 0.17.0 Pre-Release - packages are provided on PyPI to try out.

Big Changes

Breaking Changes

Other Changes

New Contributors

Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.15...v0.16.0

v0.17.0.dev1

6 months ago

Summary

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.

How To Install

By default pip won't pick up developmental releases. To try this release, use one of the following:

  • Setting opentimelineio==0.17.0.dev1 as a dependency
  • python -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.

Important Note About Adapters

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:

  • otio_json
  • otiod
  • otioz

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:

  • AAF
  • ale
  • burnins
  • cmx_3600
  • fcp_xml
  • fcpx_xml
  • hls_playlist
  • maya_sequencer
  • svg
  • xges

The following are not included in the OTIO-maintained top-level packages:

  • kdenlive - Now hosted and supported under the KDE repository
  • rv_session - This adapter was made obsolete by first-party support of OpenTimelineIO in Shotgrid RV and OpenRV

What's Changed

Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.15...v0.17.0.dev1

v0.15

1 year ago

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:

❯ 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}
)

Big Changes

Breaking Changes

Other Changes

Dependency Version Bumps

New Contributors

Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.14...v0.15

v0.14.1

2 years ago

Summary

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.

Changes

v0.14

2 years ago

Summary

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.

Big Things

Other Changes

New Contributors

Full Changelog: https://github.com/PixarAnimationStudios/OpenTimelineIO/compare/v0.13...v0.14

v0.13

3 years ago

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

v0.12.1

4 years ago

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!

v0.12

4 years ago

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!

v0.11

4 years ago

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:

  • The CXX branch is now up to date with master and will be landed shortly after we make this release. (#528)
  • In keeping with the VFX platform, we've dropped support for python 3.5 and added support for python 3.7 in our unit test and CI system. (#526)

Small Changes:

  • AAF bugfixes by @freesonluxo (#517, #518, #512, #493)
  • Autogenerated schema documentation + unit test for detecting schema changes (#521)
  • FCP XML bugfixes by @reinecke (#494)

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!

v0.10

5 years ago

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:

  • In anticipation of the C++ port (see the cxx branch: https://github.com/PixarAnimationStudios/OpenTimelineIO/tree/cxx) a number of changes were made to make the python API behave like the C++ one
    • #372 types in Opentime are now immutable
  • This led to other enhancements that shouldn't be as noticeable to developers:
    • #477 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/deserialized
    • #377 JSON serializer adapter arguments tweaked
    • #364 Using weakref to point at parents
    • #400 the __copy__ method has been removed

Big Changes:

  • Lots of upgrades and new features for the AAF Adapter, including:
    • #432, #460, #461, #454 Writing AAFs! (thanks @freesonluxo and @shahbazk8194!)
    • Thanks to @andrewmoore-nz and @thecargocultnz for all the great test data, we always appreciate that!
    • AAF unit tests now work on our continuous build system
    • Lots of robustness and correctness upgrades to the AAF Reader (@jchen9, @flavienliger, others)
    • #396 Adapter was ported from pyaaf1 to pyaaf2 (@freesonluxo and @shahbazk8194)
    • ...and thanks to @markreidvfx for bug fixes in upstream pyaaf2!
  • FCPX adapter:
    • #425 markers and detached audio (@eric-with-a-c)
  • OTIOView upgrades:
    • #451 playhead/ruler for inspecting frame numbers (@tdervieux)
    • #457 upgrade to the effect widget legibility (@tdervieux)
    • #467 key navigation filter menu (@tdervieux)
    • #449 frame all function (@tdervieux)
    • #378 fixing support for nested tracks (@avrata)
    • #422 Significant performance boost for large files
  • Optimization:
    • speed improvement on each_child that reduced a 691s operation on a full-film OTIO file to 0.8s.
  • #497, #488 Enhancements to Dropframe support in Opentime (@apetrynet and @reinecke)
  • #450 Hookscript plugins now have arguments passed in (@mikekoetter)

New adapters:

  • #412 GStreamer Editing Services XML adapter (@thiblahute)

Small Changes:

  • arguments for the commandline tools are now more consistent and richer
    • media linker arguments are now passed in
  • #434, #392 upgrades for the EDL adapter (@apetrynet, @mikekoetter)
  • #437 there was a slice membership bug that got fixed
  • #426, #363 For audio-only tracks, the rv adapter will insert a blank movieproc so only sound is loaded from a source (@avrata, @apetrynet)
  • better unicode string support
  • #462 ALE adapter ugprades (@mikekoetter)
  • #403 Fix a bug in the hook/manifest system (@timlehr)

And more! Thanks to everyone for this big release!