Skip to content

Add core C++ support for otioz and otiod, take 2#2021

Draft
darbyjohnston wants to merge 9 commits intoAcademySoftwareFoundation:mainfrom
darbyjohnston:bundles_cxx2
Draft

Add core C++ support for otioz and otiod, take 2#2021
darbyjohnston wants to merge 9 commits intoAcademySoftwareFoundation:mainfrom
darbyjohnston:bundles_cxx2

Conversation

@darbyjohnston
Copy link
Copy Markdown
Contributor

@darbyjohnston darbyjohnston commented May 8, 2026

Fixes #1869

This PR adds support for otioz and otiod bundles to the C++ API. This PR is a second attempt at adding the functionality, superseding PR #1901.

The python otioz and otioz adapters still exist and work the same, but now they call into the C++ code for the bundle functionality.

Support for image sequences and multiple media references has been added.

Other changes:

  • Added the "miniz" dependency for working with ZIP files. The miniz source code was added to the deps directory to simplify the build process (as opposed to building it as a library from a submodule).
  • Added a C++ example for working with bundles.
  • Replaced most of the Python bundle tests with C++ tests. Minimal Python tests remain to verify the adapters still work.

Questions:

  • Should the otioz/otiod file versions be bumped?
  • Should miniz be a sub-module? (consistent with the other dependencies, but complicates the build)
  • Should we use a third party library for URL handling? We currently only need a single function, to return a filename from a URL.

Assisted-by: Claude:claude-opus-4-7 [code-review] [debugging]

Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented May 8, 2026

Codecov Report

❌ Patch coverage is 50.67873% with 218 lines in your changes missing coverage. Please review.
✅ Project coverage is 83.34%. Comparing base (7adfb27) to head (507527d).

Files with missing lines Patch % Lines
src/opentimelineio/bundle.cpp 43.05% 201 Missing ⚠️
...timelineio/opentimelineio-bindings/otio_bundle.cpp 69.04% 13 Missing ⚠️
...py-opentimelineio/opentimelineio/adapters/otioz.py 66.66% 2 Missing and 1 partial ⚠️
...py-opentimelineio/opentimelineio/adapters/otiod.py 87.50% 1 Missing ⚠️

❌ Your changes status has failed because you have indirect coverage changes. Learn more about Unexpected Coverage Changes and reasons for indirect coverage changes.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #2021      +/-   ##
==========================================
- Coverage   84.50%   83.34%   -1.17%     
==========================================
  Files         181      180       -1     
  Lines       13225    13317      +92     
  Branches     1202     1218      +16     
==========================================
- Hits        11176    11099      -77     
- Misses       1866     2046     +180     
+ Partials      183      172      -11     
Flag Coverage Δ
py-unittests 83.34% <50.67%> (-1.17%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...melineio/opentimelineio-bindings/otio_bindings.cpp 98.63% <100.00%> (+<0.01%) ⬆️
src/py-opentimelineio/opentimelineio/__init__.py 100.00% <ø> (ø)
...opentimelineio/opentimelineio/adapters/__init__.py 85.18% <ø> (ø)
tests/test_otiod.py 91.30% <100.00%> (-5.58%) ⬇️
tests/test_otioz.py 91.30% <100.00%> (-6.64%) ⬇️
...py-opentimelineio/opentimelineio/adapters/otiod.py 84.61% <87.50%> (+3.66%) ⬆️
...py-opentimelineio/opentimelineio/adapters/otioz.py 71.42% <66.66%> (-13.19%) ⬇️
...timelineio/opentimelineio-bindings/otio_bundle.cpp 69.04% <69.04%> (ø)
src/opentimelineio/bundle.cpp 43.05% <43.05%> (ø)

... and 1 file with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 7adfb27...507527d. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add core C++ support for otioz and otiod

2 participants