Skip to content

Commit 3703ac7

Browse files
ssteinbachmeshula
andauthored
Release v0.15.0 changes (#1403)
* freeze versions ahead of release * remove path * remove .dev1 suffix * bump version number in CMakeLists.txt to 0.15 * Update README.md * Update CONTRIBUTORS.md * update supported VFX platform list * add link to Presentations wiki page * tweak some settings in clang format * Run make format over the c++ code * match autoformatted C++ in the version map Signed-off-by: Stephan Steinbach <[email protected]> Co-authored-by: Nick Porcino <[email protected]>
1 parent 82c986a commit 3703ac7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+914
-791
lines changed

.clang-format

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ AlignConsecutiveDeclarations: true
88
AlignEscapedNewlines: Right
99
AlignOperands: true
1010
AlignTrailingComments: true
11-
# AllowAllArgumentsOnNextLine: true
12-
AllowAllParametersOfDeclarationOnNextLine: true
13-
# AllowAllConstructorInitializersOnNextLine: true
11+
AllowAllArgumentsOnNextLine: false
12+
AllowAllParametersOfDeclarationOnNextLine: false
13+
AllowAllConstructorInitializersOnNextLine: false
1414
AllowShortBlocksOnASingleLine: false
1515
AllowShortCaseLabelsOnASingleLine: false
1616
AllowShortFunctionsOnASingleLine: InlineOnly
@@ -39,7 +39,7 @@ BraceWrapping:
3939
SplitEmptyFunction: false
4040
SplitEmptyRecord: false
4141
SplitEmptyNamespace: false
42-
BreakBeforeBinaryOperators: None
42+
BreakBeforeBinaryOperators: NonAssignment
4343
BreakBeforeBraces: Custom
4444
BreakBeforeInheritanceComma: false
4545
BreakInheritanceList: BeforeColon

.github/workflows/python-package.yml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ name: OpenTimelineIO
66
# for configuring which build will be a C++ coverage build / coverage report
77
env:
88
GH_COV_PY: 3.7
9-
GH_COV_OS: ubuntu-latest
9+
GH_COV_OS: ubuntu-20.04
1010
GH_DEPENDABOT: dependabot
1111

1212
on:
@@ -24,15 +24,15 @@ jobs:
2424
runs-on: ${{ matrix.os }}
2525
strategy:
2626
matrix:
27-
os: [ubuntu-latest, windows-latest, macos-latest]
27+
os: [ubuntu-20.04, windows-2022, macos-11]
2828
# Unfortunately the CMake test target is OS dependent so we set it as
2929
# a variable here.
3030
include:
31-
- os: ubuntu-latest
31+
- os: ubuntu-20.04
3232
OTIO_TEST_TARGET: test
33-
- os: windows-latest
33+
- os: windows-2022
3434
OTIO_TEST_TARGET: RUN_TESTS
35-
- os: macos-latest
35+
- os: macos-11
3636
OTIO_TEST_TARGET: test
3737

3838
env:
@@ -86,13 +86,13 @@ jobs:
8686
runs-on: ${{ matrix.os }}
8787
strategy:
8888
matrix:
89-
os: [ubuntu-latest, windows-latest, macos-latest]
89+
os: [ubuntu-20.04, windows-2022, macos-11]
9090
python-version: ['2.7', '3.7', '3.8', '3.9', '3.10']
9191
include:
92-
- { os: ubuntu-latest, shell: bash }
93-
- { os: macos-latest, shell: bash }
94-
- { os: windows-latest, shell: pwsh }
95-
- { os: windows-latest, shell: msys2, python-version: 'mingw64' }
92+
- { os: ubuntu-20.04, shell: bash }
93+
- { os: macos-11, shell: bash }
94+
- { os: windows-2022, shell: pwsh }
95+
- { os: windows-2022, shell: msys2, python-version: 'mingw64' }
9696

9797
defaults:
9898
run:
@@ -129,7 +129,7 @@ jobs:
129129
sudo apt-get install lcov
130130
- name: Install python build dependencies
131131
run: |
132-
python -m pip install --upgrade pip setuptools wheel flake8>=3.5 check-manifest
132+
python -m pip install --upgrade pip setuptools wheel "flake8>=3.5" check-manifest
133133
- name: install mock for python 2.7 tests only
134134
if: matrix.python-version == 2.7
135135
run: python -m pip install --upgrade mock
@@ -158,7 +158,7 @@ jobs:
158158
runs-on: ${{ matrix.os }}
159159
strategy:
160160
matrix:
161-
os: [ubuntu-latest, windows-latest, macos-latest]
161+
os: [ubuntu-20.04, windows-2022, macos-11]
162162
python-build: ['cp27*', 'cp37*', 'cp38*', 'cp39*', 'cp310*']
163163
steps:
164164
- uses: actions/checkout@v3
@@ -206,7 +206,7 @@ jobs:
206206

207207
package_sdist:
208208
needs: py_build_test
209-
runs-on: ubuntu-latest
209+
runs-on: ubuntu-20.04
210210
steps:
211211
- uses: actions/checkout@v3
212212
with:

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ cmake_minimum_required(VERSION 3.18.2)
77
# TODO: read this information from a configuration file, here, and in setup.py
88

99
set(OTIO_VERSION_MAJOR "0")
10-
set(OTIO_VERSION_MINOR "14")
10+
set(OTIO_VERSION_MINOR "15")
1111
set(OTIO_VERSION_PATCH "0")
1212
set(OTIO_VERSION ${OTIO_VERSION_MAJOR}.${OTIO_VERSION_MINOR}.${OTIO_VERSION_PATCH})
1313

CONTRIBUTORS.md

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,29 @@ If you know of anyone missing from this list, please contact us: https://lists.a
55
* Aditya Rana ([Viraj-Rana008](https://github.com/Viraj-Rana008))
66
* Alex Schworer ([schworer](https://github.com/schworer))
77
* Alex Widener ([boredstiff](https://github.com/boredstiff))
8+
* Andrew Moore ([andrewmoore-nz](https://github.com/andrewmoore-nz))
89
* Ashley Whetter ([AWhetter](https://github.com/AWhetter))
910
* Bas Hesen ([bashesenaxis](https://github.com/bashesenaxis))
1011
* Bonnie Tai ([bonpix](https://github.com/bonpix))
12+
* Cameron Kerr ([camkerr](https://github.com/camkerr))
1113
* Daniel Flehner Heen ([apetrynet](https://github.com/apetrynet))
1214
* Darby Johnston ([darbyjohnston](https://github.com/darbyjohnston))
1315
* Darwyn Peachey ([peachey](https://github.com/peachey))
1416
* David Baraff ([davidbaraff](https://github.com/davidbaraff))
1517
* Ed Caspersen ([repsac](https://github.com/repsac))
1618
* Emile Labrosse ([elabrosseRodeofx](https://github.com/elabrosseRodeofx))
1719
* Eric ([eric-with-a-c](https://github.com/eric-with-a-c))
20+
* Eric Desruisseaux ([desruie](https://github.com/desruie))
1821
* Eric Reinecke ([reinecke](https://github.com/reinecke))
19-
* Félix Bourbonnais ([BadSingleton](https://github.com/BadSingleton))
20-
* Félix David ([Tilix4](https://github.com/Tilix4))
2122
* Flavian Liger ([flavienliger](https://github.com/flavienliger))
2223
* Fredrik Brännbacka ([smaragden](https://github.com/smaragden))
2324
* Freeson Wang ([freesonluxo](https://github.com/freesonluxo))
25+
* Félix Bourbonnais ([BadSingleton](https://github.com/BadSingleton))
26+
* Félix David ([Tilix4](https://github.com/Tilix4))
2427
* Henry Wilkes ([hwilkes-igalia](https://github.com/hwilkes-igalia))
2528
* Jean-Christophe Morin ([JeanChristopheMorinPerso](https://github.com/JeanChristopheMorinPerso))
2629
* Jeffrey Barendse ([IOjeffrey](https://github.com/IOjeffrey))
30+
* jlskuz ([jlskuz](https://github.com/jlskuz))
2731
* John Mertic ([jmertic](https://github.com/jmertic))
2832
* Jon Morley ([rogergodspeed](https://github.com/rogergodspeed))
2933
* Jonathan Hearn ([splidje](https://github.com/splidje))
@@ -32,11 +36,14 @@ If you know of anyone missing from this list, please contact us: https://lists.a
3236
* Julian Yu-Chung Chen ([jchen9](https://github.com/jchen9))
3337
* Karthik Ramesh Iyer ([KarthikRIyer](https://github.com/KarthikRIyer))
3438
* Laura Savidge ([lsavidge](https://github.com/lsavidge))
39+
* Mark Reid ([markreidvfx](https://github.com/markreidvfx))
3540
* Matt Johnson ([mattyjams](https://github.com/mattyjams))
41+
* Michael Dolan ([michdolan](https://github.com/michdolan))
3642
* Michael Jefferies ([michaeljefferies](https://github.com/michaeljefferies))
3743
* Mike Koetter ([mikekoetter](https://github.com/mikekoetter))
3844
* Mike Mahony ([mikemahony](https://github.com/mikemahony))
3945
* Nick Porcino ([meshula](https://github.com/meshula))
46+
* Pedro Labonia ([pedrolabonia](https://github.com/pedrolabonia))
4047
* Robyn Rindge ([avrata](https://github.com/avrata))
4148
* Roger Nelson ([rogernelson](https://github.com/rogernelson))
4249
* Sasha Aleshchenko ([TheBigSasha](https://github.com/TheBigSasha))
@@ -46,10 +53,14 @@ If you know of anyone missing from this list, please contact us: https://lists.a
4653
* Simran Spiller ([Simran-B](https://github.com/Simran-B))
4754
* Stefan Schulze ([stefanschulze](https://github.com/stefanschulze))
4855
* Stephan Steinbach ([ssteinbach](https://github.com/ssteinbach))
56+
* Stéphane Deverly ([gplsteph](https://github.com/gplsteph))
4957
* Thibault Saunier ([thiblahute](https://github.com/thiblahute))
5058
* Thierry Dervieux-Lecocq ([tdervieux](https://github.com/tdervieux))
59+
* ThomasWilshaw ([ThomasWilshaw](https://github.com/ThomasWilshaw))
5160
* Tim Lehr ([timlehr](https://github.com/timlehr))
5261
* Troy James Sobotka ([sobotka](https://github.com/sobotka))
5362
* Tuan Truong ([tuan-huy-truong](https://github.com/tuan-huy-truong))
63+
* Utsab Saha ([utsab](https://github.com/utsab))
5464
* Valerio Viperino ([vvzen](https://github.com/vvzen))
5565
* Vincent Pinon ([vpinon](https://github.com/vpinon))
66+
* Visaj Nirav Shah ([visajshah](https://github.com/visajshah))

README.md

Lines changed: 62 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,23 @@ OpenTimelineIO
33
[![OpenTimelineIO](docs/_static/[email protected])](http://opentimeline.io)
44
==============
55

6-
[![Supported VFX Platform Versions](https://img.shields.io/badge/vfx%20platform-2018--2021-lightgrey.svg)](http://www.vfxplatform.com/)
6+
[![Supported VFX Platform Versions](https://img.shields.io/badge/vfx%20platform-2019--2022-lightgrey.svg)](http://www.vfxplatform.com/)
77
![Supported Versions](https://img.shields.io/badge/python-2.7%2C%203.7%2C%203.8%2C%203.9%2C%203.10-blue)
88
[![Build Status](https://github.com/AcademySoftwareFoundation/OpenTimelineIO/actions/workflows/python-package.yml/badge.svg)](https://github.com/AcademySoftwareFoundation/OpenTimelineIO/actions/workflows/python-package.yml)
99
[![codecov](https://codecov.io/gh/AcademySoftwareFoundation/OpenTimelineIO/branch/main/graph/badge.svg)](https://codecov.io/gh/AcademySoftwareFoundation/OpenTimelineIO)
1010
[![docs](https://readthedocs.org/projects/opentimelineio/badge/?version=latest)](https://opentimelineio.readthedocs.io/en/latest/index.html)
1111
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/2288/badge)](https://bestpractices.coreinfrastructure.org/projects/2288)
1212

13-
Main web site: http://opentimeline.io/
13+
Links
14+
-----
1415

15-
Documentation: https://opentimelineio.readthedocs.io/
16-
17-
GitHub: https://github.com/AcademySoftwareFoundation/OpenTimelineIO
18-
19-
Discussion group: https://lists.aswf.io/g/otio-discussion
20-
21-
Slack channel: https://academysoftwarefdn.slack.com/messages/CMQ9J4BQC
22-
To join, create an account here first: https://slack.aswf.io/
16+
* Main web site: http://opentimeline.io/
17+
* Documentation: https://opentimelineio.readthedocs.io/
18+
* GitHub: https://github.com/AcademySoftwareFoundation/OpenTimelineIO
19+
* [Discussion group](https://lists.aswf.io/g/otio-discussion)
20+
* [Slack channel](https://academysoftwarefdn.slack.com/messages/CMQ9J4BQC)
21+
* To join, create an account here first: https://slack.aswf.io/
22+
* [Presentations](https://github.com/AcademySoftwareFoundation/OpenTimelineIO/wiki/Presentations)
2323

2424
PUBLIC BETA NOTICE
2525
------------------
@@ -33,17 +33,19 @@ Overview
3333
--------
3434

3535
OpenTimelineIO is an interchange format and API for editorial cut information.
36-
OTIO is not a container format for media, rather it contains information about
37-
the order and length of cuts and references to external media.
36+
OTIO contains information about the order and length of cuts and
37+
references to external media. It is not however, a container format for media.
3838

39-
OTIO includes both a file format and an API for manipulating that format. It
40-
also includes a plugin architecture for writing adapters to convert
41-
from/to existing editorial timeline formats. It also implements a dependency-
42-
less library for dealing strictly with time, `opentime`.
39+
For integration with applications, the core OTIO library is implemented in C++
40+
and provides an in-memory data model, as well as library functions for
41+
interpreting, manipulating, and serializing that data model. Within the core is
42+
a dependency-less library for dealing strictly with time, `opentime`.
4343

44-
You can provide adapters for your video editing tool or pipeline as needed.
45-
Each adapter allows for import/export between that proprietary tool and the
46-
OpenTimelineIO format.
44+
The project also supports an official python binding, which is intended to be
45+
an idiomatic and ergonomic binding for python developers. The python binding
46+
includes a plugin system which supports a number of different types of plugins,
47+
most notably adapters, which can be used to read and write legacy formats into
48+
the OTIO data model.
4749

4850
Documentation
4951
--------------
@@ -52,24 +54,25 @@ Documentation, including quick start, architecture, use cases, API docs, and muc
5254
Supported VFX Platforms
5355
-----------------
5456
The current release supports:
55-
- VFX platform 2021, 2020, 2019, 2018
57+
- VFX platform 2022, 2021, 2020, 2019
5658
- Python 2.7 - 3.10
5759

5860
For more information on our vfxplatform support policy: [Contribution Guidelines Documentation Page](https://opentimelineio.readthedocs.io/en/latest/tutorials/contributing.html)
5961
For more information on the vfxplatform: [VFX Platform Homepage](https://vfxplatform.com)
6062

61-
Adapters
62-
--------
63+
Adapter Plugins
64+
---------------
6365

64-
OpenTimelineIO supports, or plans to support, conversion adapters for many
65-
existing file formats, such as Final Cut Pro XML, AAF, CMX 3600 EDL, etc.
66+
To provide interoperability with other file formats or applications lacking a
67+
native integration, the opentimelineio community has built a number of python
68+
adapter plugins. This includes Final Cut Pro XML, AAF, CMX 3600 EDL, and more.
6669

67-
See: https://opentimelineio.readthedocs.io/en/latest/tutorials/adapters.html
70+
For more information about this, including supported formats, see: https://opentimelineio.readthedocs.io/en/latest/tutorials/adapters.html
6871

6972
Other Plugins
7073
-------------
7174

72-
OTIO also supports several other kinds of plugins, for more information see:
75+
The OTIO python bindings also support several other kinds of plugins, for more information see:
7376

7477
* [Media Linkers](https://opentimelineio.readthedocs.io/en/latest/tutorials/write-a-media-linker.html) - Generate media references to local media according to your local conventions.
7578
* [HookScripts](https://opentimelineio.readthedocs.io/en/latest/tutorials/write-a-hookscript.html) - Scripts that can run at various points during OTIO execution (_ie_ before the media linker)
@@ -88,11 +91,43 @@ For detailed installation instructions and notes on how to run the included view
8891
Example Usage
8992
-------------
9093

94+
C++:
95+
96+
```c++
97+
#include <iostream>
98+
99+
#include "opentimelineio/timeline.h"
100+
101+
namespace otio = opentimelineio::OPENTIMELINEIO_VERSION;
102+
103+
void
104+
main()
105+
{
106+
otio::ErrorStatus err;
107+
otio::SerializableObject::Retainer<otio::Timeline> tl(
108+
dynamic_cast<otio::Timeline*>(
109+
otio::Timeline::from_json_file("taco.otio", &err)
110+
)
111+
);
112+
const std::vector<otio::SerializableObject::Retainer<otio::Clip>> clips = (
113+
tl->clip_if()
114+
);
115+
for (const auto& cl : clips)
116+
{
117+
otio::RationalTime dur = cl->duration();
118+
std::cout << "Name: " << cl->name() << " [";
119+
std::cout << dur.value() << "/" << dur.rate() << "]" << std::endl;
120+
}
121+
}
91122
```
123+
124+
Python:
125+
126+
```python
92127
import opentimelineio as otio
93128
94129
timeline = otio.adapters.read_from_file("foo.aaf")
95-
for clip in timeline.each_clip():
130+
for clip in timeline.clip_if():
96131
print(clip.name, clip.duration())
97132
```
98133

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ def cmake_install(self):
201201

202202
# Metadata that gets stamped into the __init__ files during the build phase.
203203
PROJECT_METADATA = {
204-
"version": "0.15.0.dev1",
204+
"version": "0.15.0",
205205
"author": 'Contributors to the OpenTimelineIO project',
206206
"author_email": '[email protected]',
207207
"license": 'Modified Apache 2.0 License',

0 commit comments

Comments
 (0)