Releases
24 releases tracking the evolution of OpenTimelineIO
This release fixes an issue with python wheels on linux.
What's Changed
- Staging 0.18.1 development version by @reinecke in #1974
- Bumped cibuildwheel to version 3.2.1 by @reinecke in #1973
- 0.18.1 release by @reinecke in #1975
Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.18.0...v0.18.1
Contributors (1)
Summary
This release includes a large number of fixes as well as schema improvements.
Big Changes
- Add
enabledflag toEffectschema - Drop Imath 2 support
- Remove vfx platform 2020 support from README.md, add 2024 and 2025
- Added a Color primitive structure for assigning colors to elements (this is not meant to represent pixel colors)
- Per-Track and Per-Clip Color
- Added
--remove-effects featureto otiotool - Remove OTIOView from the core library (The old python library is now stored here - though we encourage people to use Raven instead)
- Add support for C++ symbol visibility
- Document C++ API with Doxygen markup
What's Changed
- Initialize v0.18 by @reinecke in #1775
- 1680 fix segmentation fault when appending None by @semagnum in #1778
- Second draft of file bundle adapter docs. by @ssteinbach in #1709
- Fix 1347 documentation on time ranges by @semagnum in #1780
- 1677 otiotool verify ranges by @semagnum in #1779
- Disable 32-bit Python builds by @darbyjohnston in #1789
- Updated Effect schema with enabled flag by @fschleich in #1798
- Deprecate c++ demangling. by @furby-tm in #1800
- Fix for find_children() with stacks 2 by @darbyjohnston in #1766
- Add Python build for Linux on ARM architecture by @tomviner in #1795
- Added a list of applications integrating OTIO by @reinecke in #1812
- Improve handling of rates when converting to timecode strings by @jminor in #1477
- Add effect and marker initialization to Clip by @peter-targett in #1808
- Add AnyDictionary and AnyVector support for V2d and Box2d by @peter-targett in #1811
- Fix typos by @rex4539 in #1821
- Fix CI issue with gcov by @darbyjohnston in #1823
- Revert whitespace changes to otio-serialized-schema.md by @reinecke in #1824
- Fix comments about header dependencies by @darbyjohnston in #1826
- Update GH actions to fix CI builds by @darbyjohnston in #1828
- Replace backticks with quotes in pypi-publish GHA workflow by @JeanChristopheMorinPerso in #1837
- Bump actions/setup-python from 4.3.0 to 5.4.0 by @dependabot[bot] in #1829
- Bump actions/checkout from 3 to 4 by @dependabot[bot] in #1731
- Add convenience functions by @darbyjohnston in #1825
- Update README.md by @jminor in #1851
- Drop Imath2 support and modernize Imath includes by @jlskuz in #1852
- Added support for custom adapter hooks by @timlehr in #1801
- V2d serialization fix by @rogernelson in #1861
- Allow build system to use rapidjson from the system by @jlskuz in #1859
- Fix bug w/ url_utils.filepath_from_url + rel paths with a single "/" by @ssteinbach in #1862
- Don't fallback to Imath from src/deps by @jlskuz in #1864
- Simplify the C++ example by @darbyjohnston in #1867
- Add SOVERSION for the C++ libraries by @darbyjohnston in #1860
- Add Doxygen comments to opentime by @darbyjohnston in #1866
- Bump src/deps/Imath from
b90cc01tof65b01cby @dependabot[bot] in #1858 - Drop dead OTIO_IMATH_LIBS cmake option by @jlskuz in #1874
- Add Doxygen comments to opentimelineio by @darbyjohnston in #1868
- Remove unused path from the C++ install by @darbyjohnston in #1882
- Remove vfx platform 2020 support from README.md, add 2024 and 2025, note that 3.12 is also supported by @ssteinbach in #1883
- Workflow fix, exclude cannot be empty by @darbyjohnston in #1898
- Bump minimum OS X deployment version to 10.15 by @darbyjohnston in #1893
- fixed image bounds error status null bug + test case by @cato-o in #1896
- moved find_clips function to superclass and added test case by @cato-o in #1902
- Add Kdenlive to ADOPTERS by @frdbr in #1914
- Per-Track and Per-Clip Color by @semagnum in #1887
- Fix color deserialization, add schema by @semagnum in #1915
- Add version header. by @peter-targett in #1907
- Added --remove-effects feature to otiotool. by @jminor in #1912
- otiotool docs by @jminor in #1921
- Hide our custom fabs() function by @darbyjohnston in #1929
- Temporarily disable check_manifest on MinGW by @darbyjohnston in #1935
- Reduce the number of dependabot C++ checks by @darbyjohnston in #1939
- Fix various typos by @luzpaz in #1936
- Update Imath to v3.2.1 by @darbyjohnston in #1941
- Update rapidjson to latest by @darbyjohnston in #1943
- Update pybind11 to v2.13.6 by @darbyjohnston in #1942
- Remove the last remains of opentimelineio_contrib by @apetrynet in #1946
- Fixed transparent Color constant. by @jminor in #1949
- Remove OtioView from OTIO-Core by @apetrynet in #1944
- Update CI from macOS-13 to macOS-14 by @jminor in #1954
- Initialize test_v2d.py variables by @darbyjohnston in #1955
- Export C++ symbols part 2 by @darbyjohnston in #1953
- add support for python 3.13 (vfx platform 2026) by @rogernelson in #1957
- Fixes for the C++ exports by @darbyjohnston in #1959
- Reduce dependabot frequency by @darbyjohnston in #1958
- Reorder initializers to silence a warning. by @jminor in #1960
- Initialize Python Imath values by @darbyjohnston in #1956
- Fixes for C++ examples by @darbyjohnston in #1967
- Update README to reflect release status by @meshula in #1964
- 0.18.0 Release by @reinecke in #1969
New Contributors
- @semagnum made their first contribution in #1778
- @fschleich made their first contribution in #1798
- @furby-tm made their first contribution in #1800
- @tomviner made their first contribution in #1795
- @rex4539 made their first contribution in #1821
- @cato-o made their first contribution in #1896
- @frdbr made their first contribution in #1914
- @luzpaz made their first contribution in #1936
Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.17.0...v0.18.0
Contributors (20)
Summary
This release is focussed on moving adapters from the OTIO core codebase and the contrib area into independently versioned and installable PyPI packages. (1386)
If you rely on these 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
This effort took a lot of help from the community and in particular the following contributors:
Big Change/Breaking Change
Other Changes
- Add implementation of to_nearest_timecode by @vade in #1717
- Add macos-14 arm64 runners by @markreidvfx in #1739
- Fix examples for C++ 17 by @darbyjohnston in #1723
- added
default_valuefallback toserializable_fieldproperty by @timlehr in #1658 - constexpr updates by @darbyjohnston in #1721
- Remove some DeprecationWarnings by @EvanBldy in #1688
- Version update to 0.17.0 by @reinecke in #1724
- Bump codecov/codecov-action from 3.1.1 to 3.1.4 by @dependabot in #1603
- Update codecov to run on python 3.10 builds by @ssteinbach in #1727
- Pass the codecov token in CI to the uploader by @ssteinbach in #1737
- do not break the build if codecov fails by @ssteinbach in #1741
- Bump src/deps/Imath from
5b8627atob90cc01by @dependabot in #1729 - Set minimum OS X deployment version to 10.14 by @darbyjohnston in #1719
- Fix sign-compare warning when compiling with GCC 14 by @JeanChristopheMorinPerso in #1749
- Added fix for pip._vendor.distlib issue on windows msys2 by @reinecke in #1762
- Add Doxygen comments to RationalTime 2 by @darbyjohnston in #1765
- Added notes about versioning OpenTimelineIO-Plugins by @reinecke in #1769
- First pass at CI and release process improvements by @jhodges10 in #1689
- Resolve CI issues and bump actions/checkout from v3->v4 by @jhodges10 in #1770
- Fixed freeze script github yaml parsing and unfroze the ci versions by @reinecke in #1726
- Release v0.17.0 by @reinecke in #1772
New Contributors
- @vade made their first contribution in #1717
- @jhodges10 made their first contribution in #1689
Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.16.0...v0.17.0
Contributors (12)
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 #1654 (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 1386 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
- Remove python2.7 support by @ssteinbach in #1423
- Remove Kdenlive adapter for split out by @jlskuz in #1438
- Add support for editable installs by @JeanChristopheMorinPerso in #1460
- Add Python 3.11 to CI matrix by @JeanChristopheMorinPerso in #1465
- Add support for Premiere styled EDLs to the CMX 3600 adapter by @douglascomet in #1199
- Added --downgrade option to otiotool. by @jminor in #1485
- Added otiotool --remove-metadata-key option by @jminor in #1642
- Experimental Editing Commands by @ggarra13 in #1654
- Add optional comment field to Marker by @nickblt in #1698
- Added support to filepath_from_url for UNC paths and tests for UNC and posix paths by @douglascomet in #1674
- Support for C++17 Part 2 by @darbyjohnston in #1713
Breaking Changes
- [Breaking change] Remove support for passing a None value as the name argument by @JeanChristopheMorinPerso in #1453
- Remove deprecated each_child and each_clip functions by @darbyjohnston in #1437
Other Changes
- Script-assisted release process by @ssteinbach in #1421
- Initialize v0.16 by @ssteinbach in #1424
- Bump codecov/codecov-action from 2.1.0 to 3.1.1 by @dependabot in #1399
- Bump actions/upload-artifact from 2 to 3 by @dependabot in #1269
- Remove Travis traces by @ssteinbach in #1412
- Add documentation for new schema development/proposal process by @ssteinbach in #1429
- Bump myst-parser from 0.17.2 to 0.18.1 by @dependabot in #1431
- Bump actions/setup-python from 3 to 4.1.0 by @dependabot in #1351
- remove cp27 builds from CI by @ssteinbach in #1435
- Bump pypa/cibuildwheel from 1.12.0 to 2.10.2 by @dependabot in #1420
- Bump sphinx from 4.5.0 to 5.2.2 by @dependabot in #1434
- Remove Plugin schema
execution_scopeparameter by @ssteinbach in #1428 - Bump src/deps/pybind11 from
914c06ftoda8c730by @dependabot in #1439 - Improve test coverage by @JeanChristopheMorinPerso in #1436
- remove more python2/3 shim code: next -> next by @ssteinbach in #1432
- Bump actions/setup-python from 4.1.0 to 4.2.0 by @dependabot in #1441
- Improve type of function callbacks in register_upgrade_function and register_downgrade_function by @JeanChristopheMorinPerso in #1445
- README: Fix typo (pypy->pypi) by @dgw in #1447
- Replace py::object type by optionalstd::string for name parameters by @JeanChristopheMorinPerso in #1446
- Use glossary terms for environment variables references in the docs by @JeanChristopheMorinPerso in #1442
- fcp_xml: serialize marker out value instead of -1 by @jhorrocks-tl in #1411
- Bump sphinx from 5.2.2 to 5.2.3 by @dependabot in #1440
- Don't override iter methods by @JeanChristopheMorinPerso in #1444
- Improve typing of the drop_frame parameter on the RationalTime.to_timecode method by @JeanChristopheMorinPerso in #1443
- Improve types of childen, tracks, effects and markers parameters in function signatures by @JeanChristopheMorinPerso in #1448
- Bump actions/setup-python from 4.2.0 to 4.3.0 by @dependabot in #1450
- Bump src/deps/pybind11 from
da8c730to7c6f2f8by @dependabot in #1449 - Bump pypa/cibuildwheel from 2.10.2 to 2.11.1 by @dependabot in #1451
- Bump src/deps/Imath from
3ad5d4dto6add873by @dependabot in #1455 - Bump src/deps/optional-lite from
5e4b776tobe720ebby @dependabot in #1456 - Bump sphinx from 5.2.3 to 5.3.0 by @dependabot in #1457
- Bump src/deps/pybind11 from
7c6f2f8to964c499by @dependabot in #1454 - Bump src/deps/pybind11 from
964c499to5bc0943by @dependabot in #1471 - Bump src/deps/Imath from
6add873to443b7f0by @dependabot in #1472 - Bump src/deps/pybind11 from
5bc0943toee2b522by @dependabot in #1476 - Switch to using
importlibfrompkg_resourcesby @mikemahony in #1469 - Reworded error message by @jminor in #1482
- Remove RV adapter and example plugin by @jminor in #1480
- Bump src/deps/Imath from
443b7f0to0436624by @dependabot in #1484 - Added --relink-by-name feature to otiotool by @jminor in #1475
- Bump src/deps/pybind11 from
ee2b522to9727dcdby @dependabot in #1498 - Bump src/deps/Imath from
0436624tofcb8a32by @dependabot in #1509 - Bump src/deps/pybind11 from
9727dcdto0694ec6by @dependabot in #1508 - Use duration() as a virtual function by @darbyjohnston in #1514
- Docs: Line wrap long lines of text for a display by @ThomasWilshaw in #1140
- Added new TSC members and new Committers by @jminor in #1531
- Replaced clip_if() with find_clips() in sample code in README.md by @jminor in #1541
- Use the C++ override keyword by @darbyjohnston in #1543
- Bump src/deps/Imath from
fcb8a32toe52b07dby @dependabot in #1552 - Bump src/deps/Imath from
e52b07dto5b8627aby @dependabot in #1556 - Fix exception when doc is None with portable Python by @robbiesz in #1550
- Bump src/deps/pybind11 from
0694ec6to4ce0517by @dependabot in #1573 - Make serialize_json_to_string output compact when indent is less than 1 by @JeanChristopheMorinPerso in #1578
- Support compiling with GCC 13 by @JeanChristopheMorinPerso in #1605
- Fix rendering of otioz file bundle structure in the docs by @JeanChristopheMorinPerso in #1606
- Adjust license for package uploaded to PyPI by @JeanChristopheMorinPerso in #1598
- Use IMATH_NAMESPACE in place of Imath by @peter-targett in #1613
- CMake config file improvements to find dependencies automatically for consumers by @foundry-markf in #1640
- fix a bug in the docs for using schema downgrading by @ssteinbach in #1641
- Add C++17 guard to casters.h by @ssteinbach in #1646
- stray prints in the tests by @ssteinbach in #1648
- Pre-release repo cleanup - 0.16.0 by @reinecke in #1666
- Adds support to
filepath_from_urlto support non-encoded URLs by @douglascomet in #1664 - Replaced usages of deprecated pkg_resources module by @reinecke in #1675
- Add utility functions for comparison and rounding by @darbyjohnston in #1623
- Updated TSC chair in GOVERNANCE.md by @reinecke in #1682
- add rendering notes by @meshula in #1679
- Python 3.12 support / imp module deleted by @EvanBldy in #1669
- fix: Bumped cibuildwheel action to 2.16.5 to address windows build issues by @reinecke in #1699
- Updated issue and PR templates to be a bit more approachable by @reinecke in #1700
- Fix non latin symbols decoding in adapters by @kalemas in #1691
- Normalize track lengths with gaps before flatten stacks by @markreidvfx in #1703
- Redact media reference names by @peter-targett in #1712
- Fixed AttributeError: editable_mode in setup.py by @reinecke in #1715
- Release v0.16.0 changes by @reinecke in #1716
New Contributors
- @dgw made their first contribution in #1447
- @jhorrocks-tl made their first contribution in #1411
- @douglascomet made their first contribution in #1199
- @robbiesz made their first contribution in #1550
- @peter-targett made their first contribution in #1613
- @foundry-markf made their first contribution in #1640
- @ggarra13 made their first contribution in #1654
- @EvanBldy made their first contribution in #1669
- @nickblt made their first contribution in #1698
- @kalemas made their first contribution in #1691
Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.15...v0.16.0
Contributors (21)
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 1386 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.dev1as a dependency python -m pip install opentimelineio==0.17.0.dev1python -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
- Prepare plugin detection for removal of the cmx_3600 adapter by @apetrynet in #1488
- Extracted CMX3600 adapter and related sample data and tests by @apetrynet in #1487
- Extract AAF Adapter from OTIO core and establish separate git repo by @markreidvfx in #1348
- Remove fcp adapter by @apetrynet in #1501
- Remove svg adapter by @apetrynet in #1502
- Remove maya sequencer adapter related files by @rosborne132 in #1520
- Remove fcp x xml adapter related files by @rosborne132 in #1529
- remove hls adapter related files by @rosborne132 in #1535
- remove ale adapter related files by @rosborne132 in #1536
- Remove burnins adapter related files by @rosborne132 in #1537
- extract xges adapter files by @rosborne132 in #1538
- Remove the remains of "contrib" by @apetrynet
- fixed doc-plugins-update when custom hooks are in environment by @timlehr in #1644
Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.15...v0.17.0.dev1
Contributors (4)
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
- 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 #1057
- Prep for ASWF transfer by @jminor in #932
- More ASWF transition prep by @jminor in #1167
- Replaced @pixar email addresses with @aswf email addresses. by @jminor in #1170
- OpenTimelineIO License & CLA Change by @jminor in #1285
- Updated verify_license.py to support more languages by @jminor in #1288
- Update links in readme to point to new ASWF url by @ssteinbach in #1302
- Updated URLs to new AcademySofwareFoundation GitHub org. by @jminor in #1303
- AAF Adapter:
- Merge spatial_coordinates to main by @rogernelson in #1219
- Media Multi-Reference Feature by @rogernelson in #1241
- Schema Downgrading System by @ssteinbach in #1387
- otiotool command line utility by @jminor in #1375
Breaking Changes
- Fixes 1188 BREAKING CHANGE: change "effect" argument to Gap constructor to "effects" by @visajshah in #1292
- Clip.2 schema as noted above
Other Changes
- R0.15.set dev version by @ssteinbach in #1128
- CI: switch platform versions back to -latest by @ssteinbach in #1129
- Fix RV plugin test timing by @rogernelson in #1147
- Fix RV plugin test for Mac by @rogernelson in #1149
- Update sdist to include submodules by @JeanChristopheMorinPerso in #1152
- Improve the developer quickstart documentation by @JeanChristopheMorinPerso in #1144
- Use platform specific command to find path by @ThomasWilshaw in #1143
- Fix code coverage report uploads by @JeanChristopheMorinPerso in #1189
- Add nearest_valid_timecode_rate function by @splidje in #1181
- Replace deprecated Pybind11 get_type() usages by py::type::of() by @JeanChristopheMorinPerso in #1194
- SVG adapter fixes by @KarthikRIyer in #1195
- Remove extra useless parameter from RationalTime.copy method by @JeanChristopheMorinPerso in #1198
- Update AAF Documentation Link by @camkerr in #1202
- Add enabled flag to Item by @ThomasWilshaw in #1175
- Add missing memo keyword argument to TimeTransform.deepcopy method by @JeanChristopheMorinPerso in #1203
- Kdenlive adapter: process recent project format by @vpinon in #1191
- On macOS build universal arm64 and x86_64 by @jminor in #1214
- Port to PySide6 by @darbyjohnston in #1221
- C++ tests by @darbyjohnston in #1161
- Don't skip asserts in unit test release builds by @rogernelson in #1236
- Keep markers at the track if
child_at_time()found something that does not hold markers by @jchen9 in #1239 - otioview track and window fit improvements by @michdolan in #1237
- Install full OTIO Python env with CMake by @michdolan in #1238
- clang notices that constexpr can't be used on a mutating function by @meshula in #1242
- AAF Adapter: Mob transcription heuristics by @jchen9 in #1249
- Add ALE adapter argument
ale_name_column_keyby @jchen9 in #1248 - Support OTIO_PLUGIN_MANIFEST_PATH being set to an empty string by @avrata in #1253
- Fix missing init metadata by @JeanChristopheMorinPerso in #1251
- Add Python 3.10 to CI by @JeanChristopheMorinPerso in #1256
- Fix 1257 missing each_clip on Clip by @meshula in #1258
- Detect & use Imath from vfxplatform CY2019-2022 by @meshula in #1255
- Adapt changes between PySide2 and PySide6 by @jchen9 in #1262
- Copy core sample data used by contrib tests into the contrib area to better isolate contrib tests by @avrata in #1266
- Add a test case and fix for transcribing markers over a single audio AAF file by @jchen9 in #1259
- Support python 3 in the "rv_session" adapter. by @avrata in #1267
- Change angle include Imath to quote include, remove multiMediaReference prototype by @meshula in #1276
- Update test_v2d to support multiple exception types by @avrata in #1279
- Fix for external Imath, must set USE_DEPS_IMATH OFF by @meshula in #1273
- AAF Clip Enabled/Muting Update by @andrewmoore-nz in #1277
- fix 839 - FCP XML outputs not recognized by Resolve by @pedrolabonia in #1287
- Removed a vestigial "Foo" schema by @reinecke in #1306
- CII Best Practices badge by @jminor in #1304
- Update Pybind11 to 2.9.2 by @JeanChristopheMorinPerso in #1312
- Use py::module_local() for Imath bindings by @JeanChristopheMorinPerso in #1323
- Update feature matrix to mention that the AAF adapter now supports markers by @JeanChristopheMorinPerso in #1309
- Python bindings: raise proper exceptions for IO operations by @JeanChristopheMorinPerso in #1313
- Improve Python reference documentation by @JeanChristopheMorinPerso in #1209
- Use marker colors in otioview by @markreidvfx in #1340
- Prevent divide by zero and print warning if width is zero by @markreidvfx in #1346
- Cancel in-progress CI jobs for the same branch by @JeanChristopheMorinPerso in #1329
- Fix setuptools deprecation warnings by @JeanChristopheMorinPerso in #1317
- Revisited how transitions are handled by the cmx 3600 adapter. by @gplsteph in #1341
- Add unit tests in preparation for moving the aaf adapter by @markreidvfx in #1353
- Added SVG and PDF vector logos. by @jminor in #1360
- Fix lint issues by @JeanChristopheMorinPerso in #1370
- Close Temporary file handles in tests by @markreidvfx in #1363
- Python3 fixes for the shot_detect example by @ssteinbach in #1374
- Added documentation explaining contrib and outlining process around it by @reinecke in #1378
- Fixes and improvements for Kdenlive adapter by @jlskuz in #1390
- Load entrypoint plugins before builtin and contrib. by @markreidvfx in #1389
- Update pyaaf2 requirement from ~=1.4.0 to >=1.4,<1.7 by @dependabot in #1355
- Fix parsing of time_strings lacking leading zeroes by @meshula in #1297
- Add basic mingw_x86_64 build support by @markreidvfx in #1354
- Import _opentime before actually creating the bindings for _otio by @JeanChristopheMorinPerso in #1396
- Fix for SerializableCollection::children_if by @darbyjohnston in #1404
- Added OTIO_CORE 0.14.0 version_manifest. by @jminor in #1415
- Fix compiler warnings on Windows by @darbyjohnston in #1414
- Fix a few typos and cosmetics inconsistencies by @markreidvfx in #1416
- Release v0.15.0 changes by @ssteinbach in #1403
Dependency Version Bumps
- Bump src/deps/pybind11 from
7c58058toe7e2c79by @dependabot in #1125 - Bump src/deps/optional-lite from
52f2b61to36c5b87by @dependabot in #1097 - Bump src/deps/optional-lite from
36c5b87toa006f22by @dependabot in #1137 - Bump src/deps/optional-lite from
a006f22toea502a6by @dependabot in #1319 - Bump src/deps/optional-lite from
ea502a6to5e4b776by @dependabot in #1383 - Bump src/deps/rapidjson from
00dbcf2to4d6cb08by @dependabot in #1105 - Bump src/deps/rapidjson from
4d6cb08toe4bde97by @dependabot in #1217 - Bump src/deps/rapidjson from
e4bde97to8261c1dby @dependabot in #1240 - Bump src/deps/rapidjson from
8261c1dto27c3a8dby @dependabot in #1358 - Bump src/deps/rapidjson from
27c3a8dto06d58b9by @dependabot in #1388 - Bump actions/checkout from 2.3.4 to 2.3.5 by @dependabot in #1107
- Bump actions/checkout from 2.3.5 to 3 by @dependabot in #1227
- Bump src/deps/Imath from
8b3363atobd6f74cby @dependabot in #1222 - Bump src/deps/Imath from
bd6f74ctobd254daby @dependabot in #1245 - Bump src/deps/Imath from
bd254dato3ffb078by @dependabot in #1291 - Bump src/deps/Imath from
3ffb078to3ad5d4dby @dependabot in #1324 - Bump actions/setup-python from 2.2.2 to 3 by @dependabot in #1226
- Bump src/deps/any from
f67bd5ftobfc77f2by @dependabot in #1357 - Bump readthedocs-sphinx-ext from 2.1.5 to 2.1.9 by @dependabot in #1397
New Contributors
- @ThomasWilshaw made their first contribution in #1143
- @camkerr made their first contribution in #1202
- @michdolan made their first contribution in #1237
- @andrewmoore-nz made their first contribution in #1277
- @pedrolabonia made their first contribution in #1287
- @visajshah made their first contribution in #1292
- @markreidvfx made their first contribution in #1340
- @gplsteph made their first contribution in #1341
- @jlskuz made their first contribution in #1390
Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.14...v0.15
Contributors (25)
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
- Update sdist to include submodules by @JeanChristopheMorinPerso in #1156
Contributors (1)
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
- Drop 36 support for 38, following the VFX platform by @ssteinbach in #787
- add windows and mac builds to ci by @ssteinbach in #873
- Add filebundle (otioz and otiod) adapters by @ssteinbach in #561
- Cxx examples by @darbyjohnston in #918
- Add doxygen to document cpp code by @hisergiorojas in #878
- Build wheels as a github action by @reinecke in #957
- Implement OTIO to SVG adapter by @KarthikRIyer in #1038
- Create wheels on Windows by @JeanChristopheMorinPerso in #1015
- Support Python 3.9 by @JeanChristopheMorinPerso in #1080
- PyPI publish on release by @JeanChristopheMorinPerso in #1110
- Add .clang-format file by @KarthikRIyer in #707
Other Changes
- Create GitHub Actions Workflow by @KarthikRIyer in #752
- xges: Add support for image sequences by @thiblahute in #792
- FIxed invalid timecode frame number error message by @reinecke in #795
- Update doc string for otio.algorithms.track_with_expanded_transitions() by @apetrynet in #794
- Fix a link in documentation (to serialized schema tutorial) by @Simran-B in #808
- Added a note about CLA requirement to PR template. by @jminor in #810
- Update flatten_video_tracks.py to use deepcopy. by @jminor in #812
- Retire Travis, in favor of GitHub Actions by @jminor in #817
- CMake: Set "ARCHIVE DESTINATION" in install section by @itsmattkc in #803
- Fcp 7 xml better generator support by @reinecke in #802
- Prefix
_TypeRecordconstructor params to avoid shadow warnings by @Simran-B in #825 - Python 3 deprecation fixes (including Preparing for Python 3.9) by @reinecke in #820
- Fix compilation of Swift bindings by @meshula in #834
- Cmake cleanup by @meshula in #837
- Document Metadata structure by @jminor in #861
- Added docstrings to python bindings for interval algebra methods in TimeRange by @reinecke in #789
- Check rate and value are not invalid by @hisergiorojas in #867
- Kdenlive linear timewarp by @splidje in #869
- from_start_end_time_inclusive by @splidje in #868
- detect cycles by @davidbaraff in #848
- remove swift bindings and legacy macosx-build directory by @ssteinbach in #871
- Revert the location of shared libraries by @ssteinbach in #883
- Remove tox dependency by @ssteinbach in #882
- Support --prefix correctly in new cmake system by @ssteinbach in #886
- CMake: Fix message() types by @Simran-B in #879
- FCP 7 XML: Fixed resolution of start timecode for certain NTSC rate clips by @reinecke in #843
- Fix Issue 881 by @meshula in #887
- Fix ImageSequenceReference implicit cast by @reinecke in #889
- ImageSequenceReference: Added handling for empty target_url_base by @reinecke in #891
- Enable xges unit tests on all platform/python versions by @thiblahute in #894
- quiet the aaf adapter test to clean up test output by @ssteinbach in #893
- Fix escaping for ORIGIN in rpath settings by @ssteinbach in #899
- Update build status badge to use GitHub Actions instead of Travis by @jminor in #898
- CMakeTexts fix: stop using the modname variable by @ssteinbach in #900
- Don't override user supplied C++ preferences by @nporcino-pixar in #902
- Create cmake alias targets for the OTIO namespace by @nporcino-pixar in #901
- Address big integers bug by @ssteinbach in #892
- add a --version flag to otiopluginfo + otioconvert by @ssteinbach in #880
- Change cmx_3600 adapter to use transition duration frames (Issue 895) by @JoshBurnell in #896
- Add include directories for OpenTimeConfig.cmake/OpenTimelineIOConfig… by @darbyjohnston in #916
- Documentation fixes by @darbyjohnston in #914
- Avoid exporting build tree libraries by @rogernelson in #911
- Issue 912: cmx_3600 adapter incorrectly processing three-clip transitions by @JoshBurnell in #919
- Add pybind11 subdirectory only if building python bindings by @KarthikRIyer in #927
- Add an env var to disable pkg_resources by @ssteinbach in #928
- Specify pyaaf2 requirement as a minimum version by @AWhetter in #906
- Add dependabot by @ssteinbach in #931
- add interval field to dependabot yaml by @ssteinbach in #933
- Removed inadvertent unicode char by @avrata in #939
- RV adapter fix: don't require having access to OTIO from python interpreter in rv by @ssteinbach in #941
- Ascii doc fix by @avrata in #947
- Add environment variable to skip doc tes by @ssteinbach in #944
- Localize test otiod/z test data to sample_data directory by @avrata in #942
- Use Pybind11's find python tool to correctly locate python install information by @Tilix4 in #950
- Add Try/Except around imporlib.reload for unit test to run in python2.7 as well as 3.4+ by @avrata in #949
- install mock on CI builds for python 2.7 by @ssteinbach in #951
- Refactor setup.py to build and stage into temp area for setup.py to install from by @reinecke in #956
- uncomment github actions dependabot config by @ssteinbach in #958
- Only load a manifest if it has not been loaded by @ssteinbach in #945
- make Timeline::set_tracks(null_ptr) create a new Stack to fix crash by @meshula in #961
- Fix typo in setup.py that prevents conda skeleton from parsing setup.py by @vvzen in #962
- Add support for multiple timecode objects in an AAF by @stefanschulze in #966
- Add C++ convenience wrapper for .value on the retainer class by @darbyjohnston in #923
- do not upload code coverage statistics if the PR is opened by dependabot by @ssteinbach in #971
- Force pybind to use same python as otio by @rogernelson in #986
- C++ binding Docstring Update by @Viraj-Rana008 in #983
- Add C++ implementation of each_child()/each_clip() by @darbyjohnston in #926
- Cxx conform example by @darbyjohnston in #995
- add example timeline builder by @ssteinbach in #993
- Remove CXX sdk in Python site-packages by @rogernelson in #1004
- Python build: Use CMake FindPython by @JeanChristopheMorinPerso in #1000
- Replace description-file setuptools metadata key with description_file in setup.cfg by @JeanChristopheMorinPerso in #1017
- Add Makefile target "make format" by @KarthikRIyer in #1023
- Use const references when catching exceptions by @darbyjohnston in #1034
- Remove unused source file "main.cpp" by @darbyjohnston in #1036
- Added linguist override to detect .otio files for JSON highlighting by @reinecke in #1032
- update outdated python module paths in docs by @ssteinbach in #1052
- Upgrade to C++14 by @darbyjohnston in #1069
- Fix failing import of opentimelineio in Python 3.9 on Windows by @JeanChristopheMorinPerso in #1070
- Fix CMP0010 CMake warning caused by back slashes on Windows by @JeanChristopheMorinPerso in #1076
- replace spaces with tabs in Makefile format: target by @darbyjohnston in #1072
- Make target for building wheel by @smaragden in #1031
- Makefile "format" target tuning by @ssteinbach in #1079
- Unicode file names on Windows by @darbyjohnston in #1081
- Add information on VFX platform support to repo by @ssteinbach in #1091
- Add constexpr/noexcept by @darbyjohnston in #1047
- Add ImageSequenceReference support to EDL adapter by @apetrynet in #804
- Added
SourceMobUsagemetadata to AAF clips by @timlehr in #1056 - Fix missing Python coverage in Codecov reports by @JeanChristopheMorinPerso in #1040
- Issue1096 add source range to build simple timeline.py by @ssteinbach in #1101
- Updated CONTRIBUTING with names of the project committers. by @reinecke in #1104
- add is_error and fix error handling by @darbyjohnston in #1061
- allow commandline arguments to be passed through to cmake by @ssteinbach in #1006
- Add missing error check in flatten example/stackAlgorithm by @ssteinbach in #1112
- Remove vestigal python install code from CMake build system by @ssteinbach in #1113
- add build job that just builds c++ by @ssteinbach in #1093
- Remove duplicate error code NON_DROPFRAME_RATE. by @ssteinbach in #1114
- hide stringUtils.h by @ssteinbach in #1115
- Copy adapter arguments by @ssteinbach in #1117
- Bake OS versions in CI before release by @JeanChristopheMorinPerso in #1116
- overload RationalTime.from_seconds with additional rate argument by @apetrynet in #1118
- a few more places to lock the version by @ssteinbach in #1120
- publish to release Pypi by @ssteinbach in #1124
- Apply
make formatto codebase by @ssteinbach in #1088 - code changes for changing the name of the "master" branch to "main" by @ssteinbach in #1122
- Update the README and CONTRIBUTORS pre-release. by @ssteinbach in #1126
- strip the .dev1 suffix in setup.py by @ssteinbach in #1127
New Contributors
- @Simran-B made their first contribution in #808
- @itsmattkc made their first contribution in #803
- @hisergiorojas made their first contribution in #867
- @splidje made their first contribution in #869
- @nporcino-pixar made their first contribution in #902
- @AWhetter made their first contribution in #906
- @dependabot made their first contribution in #934
- @Tilix4 made their first contribution in #950
- @Viraj-Rana008 made their first contribution in #983
- @JeanChristopheMorinPerso made their first contribution in #1000
- @smaragden made their first contribution in #1031
Full Changelog: https://github.com/PixarAnimationStudios/OpenTimelineIO/compare/v0.13...v0.14
Contributors (26)
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
Contributors (8)
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: #540
Big Changes:
- C++ Core: the core of opentimelineio is now pybind11-wrapped C++. (see above)
- otiopluginfo command was added for printing information about plugins visible to otio: #586
- Kdenlive adapter included in contrib (thanks @vpinon) #618
- Also includes preliminary swift bindings
Small Changes:
- Tweaks to the repo in anticipation of the move to being hosted by the Academy Software Foundation
- hook function arguments are passable to all commandline scripts (@mikekoetter) #651
- Documention for the C++ core, debugging and building
- local manifests are loaded so that they override the internal manifests for plugins (@JoshBurnell) #591
- Lots of upgrades for the AAF adapter (@JoshBurnell)
- SchemaDefs now have a repr method #566
- CMX EDL Adapter supports multiple locaters per clip now (@elabrosseRodeofx) #664
Lots of other small fixes and changes. Thank you to all of the community contributors!
Contributors (4)
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!
Contributors (4)
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:
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_childthat reduced a 691s operation on a full-film OTIO file to 0.8s.
- speed improvement on
- 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!
Contributors (15)
OpenTimelineIO Release v0.9
Big Changes:
- 309 FCP X XML adapter (thanks @eric-with-a-c)
- New plugins:
- 342 UnknownSchema: If OTIO hits a schema it doesn't recognize, it doesn't trigger a parse error, instead a blind object is constructed and carried along. (@peachey)
- 312 Documentation for OTIO now lives on readthedocs: https://opentimelineio.readthedocs.io/en/latest/index.html (big thanks to @boredstiff)
- Optimizations:
- 357 Tracks now maintain a set to improve 'contains' performance, resulting in (in some cases) 50x speedup for constructing tracks with lots of clips (thanks @rogergodspeed)
- 358 Added
range_of_all_childrento return a dictionary of all the ranges of children of a track in the space of the parent (equivalent torange_in_parent). This sped up the flatten algorithm considerably.
Small Changes:
- 335, 325, 301 Improvements to the AAF reader (including support for handling muted clips)
- 299 Now commandline tools are organized into a 'console' module so that pip install correctly installs them
- 355 otioview, otioconvert and otiocat grew a commandline argument to disable the medialinker -m none
- 291 Builds now also include Python 3.6, to keep up with the VFX platform. (@boredstiff)
- 359 Ensure that constructors copy values for things that shouldn't be referenced.
otioview:
- 302 otioview now has a number of keyboard shortcuts that make it easier to navigate (@bonpix)
- 321 Dark mode for otioview (@boredstiff)
As usual, other small fixes and improvements.
Contributors (5)
Addresses 313, making a point release with the bug fixes and pushing this to pypi. Includes:
- Fix location of console scripts so OpenTimelineIO commandline scripts work properly when installed from PyPI.
- Add a guard for pkg_resources missing
OpenTimelineIO Release v0.8
This feature includes a number of AAF and distribution related upgrades.
Big Features:
-
260: AAF adapter can read speed effects (+ a bunch of small bug fixes and enhancements)
-
239: OTIO is now in PyPI.
pip install opentimelineiofrom a shell to get the library! (thanks to @swallitsch) -
222: SerializableObjects are now considered reference types, which addresses a number of subtle bugs having to do with ‘instancing’ vs ‘copying’
-
237: You can make setuptools plugins to register adapters into OTIO now (thanks to @reinecke)
-
258: Drop frame timecode support in opentime timecode functions (thanks to @apetrynet)
Small Features:
-
285:
__version__field in the opentimelineio packageimport opentimelineio as otio; otio.__version__ -
286: Convienence constructor for creating gaps of a duration:
otio.schema.Gap(duration=otio.opentime.TimeRange(500, 24)) -
270: better support for installing OTIO on Windows
-
274: Code coverage badge on github page (thanks to @boredstiff )
-
247: You can pass adapter arguments into otioview
-
160: PySide 2.0 support for otioview (thanks to @boredstiff )
- Lots of other small fixes and upgrades. Non-Pixar folks who contributed to this release include:
Thanks to members of the community who chimed in on issues.
Contributors (5)
New Features:
- Added AAF adapter (read only for now)
- Added support for GeneratorReferences (solid color, etc.)
- Added Code of Conduct
- Added flatten function that collapses multiple tracks into one
- Added support for writing dissolves to the EDL adapter (@mikemahony)
- Added support for different flavors of EDL (Nucoda, Avid) to EDL adapter (@lsavidge)
- Contrib adapters are installed by default
Non-backwards compatible API changes:
- Renamed media_reference.External to schema.ExternalReference
- Moved media reference classes into schema
API Changes:
- Added functions for filtering OTIO hierarchies
- Added convenience methods for getting handles of clips with adjacent transitions
- Added convenience methods for getting video/audio tracks from a timeline
- Adapter read/write to/from string functions default to otio_json
Additional:
- EDL adapter accepts a rate parameter (@tuan-huy-truong)
- EDL adapter treats gaps and black clips as two different things (@mikemahony)
- Fixed problems when iterating over a Track with duplicate children
- More bug fixes from @bashesenaxis, @sobotka, @avrata, and @tuan-huy-truong
Contributors (6)
Big features:
- Sequence renamed to Track
- CDL support in CMX EDL adapter
- Added otiostat validation utility
- Added Avid Log Exchange (ALE) adapter
- Text burn-in adapter via ffmpeg (thanks @repsac)
Small features:
- Adapters can take arguments
- Improved nested track support in otioview
- Improved API for dealing with parent/child time ranges.
Contributors (1)
This is OpenTimelineIO's first public beta release.
Big features:
- Updated license to make the project public.
- Transition support in the FCP XML adapter and OTIO View (@bashesenaxis)
- Multiple timeline support in FCP XML and OTIO View (@bashesenaxis)
- Media Linker plugin feature
Small features:
- Filler renamed to Gap
- Marker colors
- Travis CI setup (@mikemahony)
- Clarified available_range, duration, and inclusive/exclusive time ranges
- Bug fixes in Transition support in EDL and RV adapters
- Lots more bug fixes (@mikemahony, @bashesenaxis, @avrata)
Contributors (3)
Big features:
- Transition support (reading from EDLs, writing to RV)
- RV session file adapter (writing only) (with help from @tweakjon)
- Maya Sequencer adapter (from @bashesenaxis)
- HLS adapter (from @reinecke)
- Support for saving a collection of OTIO objects in one file (e.g. a bin of timelines & clips)
Smaller stuff:
Contributors (4)
This release includes:
- Final Cut Pro 7 XML adapter (from @bashesenaxis )
- Adobe Premiere support via the FCP 7 XML adapter (from @bashesenaxis )
- Cross-platform PySide viewer application and widget for visually inspecting OTIO compatible files. (from @bashesenaxis )
- Marker support in the CMX EDL reader
- New code documentation system
- Coverage
maketarget - Optimized the unit test run time
Contributors (1)
Includes:
- Support for versioning schemas ( 10 ). As things change, developers can define upgrade functions so that future versions of OTIO can gracefully upgrade older versions of the schema.
- Nesting and functionality to fetch the range of nested items/compositions ( 16 13 )
- Removing the unused "transform" property ( 12 )
- Python 3 support ( 19 24 20, @reinecke )
- Conversion to/from seconds for RationalTime ( 17, @reinecke )
- Cleanup on the
setup.py( 18 @reinecke )
Thank you!