Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
19b826d
fix: reapply timeline horizontal wheel scrolling on develop (#220)
MrFruitDude Apr 3, 2026
6159d6b
Fix annotation export crash when viewed container is a Subset (#244)
jhery-rdo Apr 27, 2026
84fb1b3
Fix for mouse wheel zooming on HiDPI displays. (#247)
kenmcgaugh May 20, 2026
f7626aa
Add annotation onion skinning viewport overlay plugin
jhery-rdo Apr 11, 2026
2f5377c
FEATURE - Filesystem plugin browser (#198)
richardssam May 20, 2026
a84298e
Build system improvements: OTIO vcpkg overlay migration, general fixe…
OlafRocket May 21, 2026
8e36d12
Sync to DNEG internal repo (#256)
tedwaine May 26, 2026
3bd09c0
Tweak for read performance on motion-compressed encoded media
tedwaine May 27, 2026
2bd9ef1
Windows: fix pathFromURL and implement Reveal Source (#257)
bdeluca May 27, 2026
bbce83d
Force LF on patch/diff files via .gitattributes (#258)
bdeluca May 27, 2026
ce03143
This is a very simple fix of a ffmpeg attribute that has been renamed…
richardssam May 29, 2026
1eb4a13
Make Windows dev launcher (run_xstudio.bat) work from build tree (#259)
bdeluca May 29, 2026
5f5942c
Restore Windows build/install rules dropped by upstream sync (#260)
bdeluca May 29, 2026
82daad4
feat(python): expose annotation read/write API on Bookmark (#264)
richardssam May 29, 2026
6fd485d
Tweak defaul UI layouts
tedwaine May 29, 2026
ef225dc
Fix .webm files failing to load via CLI argument (#267)
bdeluca Jun 4, 2026
dba4f65
Fix session reuse on Windows and macOS (#268)
bdeluca Jun 4, 2026
07458df
Fix Windows render output path: don't parse drive letters as URIs (#269)
bdeluca Jun 4, 2026
384a3b8
Filesystem add fixes (#265)
richardssam Jun 4, 2026
113864f
opengl: cache PBO mapping in GLBlindRGBA8bitTex non-Mac path (#274)
bdeluca Jun 18, 2026
0f60669
ffprobe plugin: don't throw on demuxer-skipped options (#272)
bdeluca Jun 18, 2026
7b2ecee
Use non-throwing fs queries in scan_posix_path (#273)
bdeluca Jun 18, 2026
8e761c7
Filesystem Browser fixes (#271)
kenmcgaugh Jun 18, 2026
7673050
This consolidates the configuration of the colours available in colou…
kenmcgaugh Jun 18, 2026
b9f8847
Annotation workflow improvements. (#276)
kenmcgaugh Jun 19, 2026
6bd9198
Sync to DNEG Internal repo (#277)
tedwaine Jun 19, 2026
fce3826
Added some no-op message handlers to avoid error messages.
kenmcgaugh Jun 18, 2026
6b51fd1
Exposed missing "subject" attribute on the BookmarkDetail class. The …
kenmcgaugh Jun 18, 2026
8e4c2c7
Display Apple modifier key names in UI.
kenmcgaugh Jun 19, 2026
c14bc49
Cosmetic fixes and improvements.
kenmcgaugh Jun 19, 2026
c4e56ca
Changed to prevent the rendering of the metadata overlays when the ou…
kenmcgaugh Jun 22, 2026
32d9bc8
Added an array length check to prevent an error message when the numb…
kenmcgaugh Jun 22, 2026
a83ddc7
Updated some handlers to more modern syntax to avoid warning messages.
kenmcgaugh Jun 22, 2026
32c9606
Modified the "Create new note" hotkey action to bail if an empty note…
kenmcgaugh Jun 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 2 additions & 4 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
Checks: '-*,modernize-*,-modernize-use-trailing-return-type,-modernize-use-using,clang-diagnostic-gnu-include-next,readability-identifier-naming*'
Checks: '-*,modernize-*,-modernize-use-trailing-return-type,-modernize-use-using,clang-diagnostic-gnu-include-next,-clang-diagnostic-unused-command-line-argument'
WarningsAsErrors: ''
HeaderFilterRegex: '/xstudio/include/.*'
AnalyzeTemporaryDtors: false
ExcludeHeaderFilterRegex: '/opt/.*'
FormatStyle: none
User: al
CheckOptions:
Expand Down Expand Up @@ -34,5 +34,3 @@ CheckOptions:
value: "_"

...


4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
* text=auto

*.patch text eol=lf
*.diff text eol=lf
7 changes: 4 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,17 @@ __*__
ignore/
*.egg-info/
python/test/xstudio.log
docs/Doxyfile
docs/conf.py
python/src/xstudio/version.py
.vs/
.DS_Store
/build/
xstudio_install/
**/qml/*_qml_export.h
<<<<<<< HEAD
CMakeUserPresets.json
=======
__build
__build_debug
>>>>>>> c808bb352 (WIP)
build_rel/
build_dbg/
aqtinstall.log
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

46 changes: 28 additions & 18 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,26 @@
cmake_minimum_required(VERSION 3.28 FATAL_ERROR)
cmake_policy(VERSION 3.28)
cmake_minimum_required(VERSION 3.26 FATAL_ERROR)
cmake_policy(VERSION 3.26)
#cmake_minimum_required(VERSION 3.28 FATAL_ERROR)
#cmake_policy(VERSION 3.28)

set(XSTUDIO_GLOBAL_VERSION "1.2.0" CACHE STRING "Version string")
set(XSTUDIO_GLOBAL_VERSION "1.3.0" CACHE STRING "Version string")
set(XSTUDIO_GLOBAL_NAME xStudio)

# set(CMAKE_OSX_DEPLOYMENT_TARGET "14.5" CACHE STRING "Minimum OS X deployment version" FORCE)

project(${XSTUDIO_GLOBAL_NAME} VERSION ${XSTUDIO_GLOBAL_VERSION} LANGUAGES CXX)

# Work around Qt bug: FindWrapOpenGL.cmake links -framework AGL, which was
# removed from the macOS SDK in 10.14. Fixed upstream in Qt 6.9+ but not
# backported to 6.5/6.8 LTS (see https://codereview.qt-project.org/c/qt/qtbase/+/652022).
# Pre-create the target so Qt's FindWrapOpenGL early-returns and never hits the
# broken AGL block. Can be removed once the minimum supported Qt is >= 6.9.
if(APPLE AND NOT TARGET WrapOpenGL::WrapOpenGL)
find_package(OpenGL REQUIRED)
add_library(WrapOpenGL::WrapOpenGL INTERFACE IMPORTED)
target_link_libraries(WrapOpenGL::WrapOpenGL INTERFACE OpenGL::GL)
endif()

option(BUILD_TESTING "Build tests" OFF)
option(INSTALL_PYTHON_MODULE "Install python module" ON)
option(INSTALL_XSTUDIO "Install xstudio" ON)
Expand All @@ -16,7 +29,6 @@ option(ENABLE_CLANG_TIDY "Enable clang-tidy, ninja clang-tidy." OFF)
option(ENABLE_CLANG_FORMAT "Enable clang format, ninja clangformat." OFF)
option(FORCE_COLORED_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." TRUE)
option(OPTIMIZE_FOR_NATIVE "Build with -march=native" OFF)
option(OTIO_SUBMODULE "Automatically build OpenTimelineIO as a submodule" OFF)
option(USE_VCPKG "Use Vcpkg for package management" OFF)
option(BUILD_PYSIDE_WIDGETS "Build xstudio player as PySide widget" OFF)
option(OPENIMAGEIO_PLUGIN "Include the OpenImageIO PLugin" ON)
Expand Down Expand Up @@ -158,7 +170,7 @@ if(ENABLE_CLANG_TIDY)
set(CMAKE_EXPORT_COMPILE_COMMANDS "ON")
add_custom_target(
clang-tidy
COMMAND ${CLANG_TIDY_COMMAND} -quiet -extra-arg=-I${CLANG_PATH}/lib/clang/11.1.0/include
COMMAND ${CLANG_TIDY_COMMAND} -use-color -quiet -extra-arg="-std=c++17 -I${CLANG_PATH}/lib/clang/20/include"
USES_TERMINAL
)
endif()
Expand Down Expand Up @@ -188,10 +200,6 @@ endif()

if (USE_VCPKG)

# When building with VCPKG, we will use OTIO submodule
set(OTIO_SUBMODULE true)
add_subdirectory("extern/otio")

set(VCPKG_INTEGRATION ON)

# Install pip and sphinx
Expand All @@ -208,24 +216,22 @@ if (USE_VCPKG)
message(FATAL_ERROR "Failed to ensurepip.")
else()
execute_process(
COMMAND "${Python_EXECUTABLE}" -m pip install setuptools sphinx breathe sphinx-rtd-theme OpenTimelineIO-Plugins importlib_metadata zipp numpy
COMMAND "${Python_EXECUTABLE}" -m pip install setuptools sphinx breathe sphinx-rtd-theme OpenTimelineIO-Plugins importlib_metadata zipp numpy pyyaml fileseq
RESULT_VARIABLE PIP_RESULT
)
if(PIP_RESULT)
message(FATAL_ERROR "Failed to install Sphinx using pip.")
message(FATAL_ERROR "Failed to install python dependencies using pip.")
endif()
endif()

else()
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
if(${OTIO_SUBMODULE})
add_subdirectory("extern/otio")
endif()
find_package(PkgConfig REQUIRED)
endif()

# Add the necessary libraries from Vcpkg if Vcpkg integration is enabled

find_package(OpenTimelineIO CONFIG REQUIRED)
find_package(nlohmann_json CONFIG REQUIRED)
include(CTest)

Expand Down Expand Up @@ -310,10 +316,14 @@ if (WIN32)

include(InstallRequiredSystemLibraries)

set(CPACK_PACKAGE_VERSION "1.2.0")
set(CPACK_PACKAGE_VERSION_MAJOR "2")
set(CPACK_PACKAGE_VERSION_MINOR "1")
set(CPACK_PACKAGE_VERSION_PATCH "0")
set(CPACK_PACKAGE_VERSION ${XSTUDIO_GLOBAL_VERSION})

string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" VERSION_MATCH ${XSTUDIO_GLOBAL_VERSION})

set(CPACK_PACKAGE_VERSION_MAJOR ${CMAKE_MATCH_1})
set(CPACK_PACKAGE_VERSION_MINOR ${CMAKE_MATCH_2})
set(CPACK_PACKAGE_VERSION_PATCH ${CMAKE_MATCH_3})

set(CPACK_PACKAGE_VENDOR "DNEG / Academy Software Foundation")
set (CPACK_NSIS_MUI_ICON
"${CMAKE_CURRENT_SOURCE_DIR}/ui/icons\\\\xstudio_app.ico")
Expand Down
92 changes: 88 additions & 4 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../vcpkg/scripts/buildsystems/vcpkg.cmake",
"Qt6_DIR": "/Users/tedwaine/Qt6/6.5.3/macos/lib/cmake/Qt6",
"CMAKE_INSTALL_PREFIX": "xstudio_install",
"X_VCPKG_APPLOCAL_DEPS_INSTALL": "ON",
"BUILD_DOCS": "OFF",
"USE_VCPKG": "ON",
"STUDIO_PLUGINS": "",
"BMD_DECKLINK_PLUGIN": "OFF"
"BMD_DECKLINK_PLUGIN": "OFF",
"VCPKG_OVERLAY_PORTS": "${sourceDir}/cmake/vcpkg_overlay_ports"
}
},
{
Expand Down Expand Up @@ -44,7 +44,6 @@
},
{
"name": "WinDebug",
"hidden": true,
"inherits": ["windows-base"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
Expand Down Expand Up @@ -151,10 +150,67 @@
"USE_SANITIZER": "address"
}
},
{
{
"name": "macos-ninja-base-arm",
"inherits": "macos-base-arm",
"generator": "Ninja"
},
{
"name": "macos-ninja-base-intel",
"inherits": "macos-base-intel",
"generator": "Ninja"
},
{
"name": "MacOSNinjaRelease",
"inherits": ["macos-ninja-base-arm"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "MacOSNinjaRelWithDebInfo",
"inherits": ["macos-ninja-base-arm"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"USE_SANITIZER": "address"
}
},
{
"name": "MacOSNinjaDebug",
"inherits": ["macos-ninja-base-arm"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"USE_SANITIZER": "address"
}
},
{
"name": "MacOSIntelNinjaRelease",
"inherits": ["macos-ninja-base-intel"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "MacOSIntelNinjaRelWithDebInfo",
"inherits": ["macos-ninja-base-intel"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"USE_SANITIZER": "address"
}
},
{
"name": "MacOSIntelNinjaDebug",
"inherits": ["macos-ninja-base-intel"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"USE_SANITIZER": "address"
}
},
{
"name": "linux-base",
"inherits": "default",
"cacheVariables": {
"VCPKG_OVERLAY_TRIPLETS": "${sourceDir}/cmake/vcpkg_triplets",
"VCPKG_TARGET_TRIPLET": "x64-xstudio-linux"
}
},
Expand All @@ -180,6 +236,34 @@
"CMAKE_BUILD_TYPE": "Debug",
"USE_SANITIZER": "address"
}
},
{
"name": "linux-ninja-base",
"inherits": "linux-base",
"generator": "Ninja"
},
{
"name": "LinuxNinjaRelease",
"inherits": ["linux-ninja-base"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "LinuxNinjaRelWithDebInfo",
"inherits": ["linux-ninja-base"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"USE_SANITIZER": "address"
}
},
{
"name": "LinuxNinjaDebug",
"inherits": ["linux-ninja-base"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"USE_SANITIZER": "address"
}
}
]
}
6 changes: 5 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,8 @@ There are two contribution agreement types, one for individuals contributing ind

## Coding Conventions

Please follow the coding style accross the various file types in the project as best you can. While we have strived to maintain a consistent formatting to the code you may find there are differing styles thanks to the various authors and their natural preferences. We suggest you do your best to follow what's already there but we will not impose a strict style on new code in PRs. We do periodically run clang auto formatting across the C++ components of the codebase. Clang formatting rules are defined in the .clang-tidy and .clang-format files in the root.
Please follow the coding style accross the various file types in the project as best you can. While we have strived to maintain a consistent formatting to the code you may find there are differing styles thanks to the various authors and their natural preferences. We suggest you do your best to follow what's already there but we will not impose a strict style on new code in PRs. We do periodically run clang auto formatting across the C++ components of the codebase. Clang formatting rules are defined in the .clang-tidy and .clang-format files in the root.

## Git Workflow

Please only submit pull requests on the 'develop' branch. The 'main' branch is reserved for updates from the 'develop' branch only.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Welcome to xSTUDIO - v1.2.0
# Welcome to xSTUDIO - v1.3.0

xSTUDIO is a media playback and review application designed for professionals working in the film and TV post production industries, particularly the Visual Effects and Feature Animation sectors. xSTUDIO is focused on providing an intuitive, easy to use interface with a high performance playback engine at its core and C++ and Python APIs for pipeline integration and customisation for total flexibility.

This codebase will build version 1.2.0 of xSTUDIO.
This codebase will build version 1.3.0 of xSTUDIO.

## Building xSTUDIO

Expand Down
35 changes: 13 additions & 22 deletions cmake/macros.cmake
Original file line number Diff line number Diff line change
@@ -1,26 +1,20 @@
macro(default_compile_options name)
target_compile_options(${name}
# PRIVATE -fvisibility=hidden
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wextra>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wno-unused-function>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wpedantic>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Windows>>:/wd4100>
PRIVATE $<$<AND:$<CONFIG:RelWithDebInfo>,$<PLATFORM_ID:Linux>>:-fno-omit-frame-pointer>
PRIVATE $<$<AND:$<CONFIG:RelWithDebInfo>,$<PLATFORM_ID:Windows>>:/Oy>
PRIVATE $<$<PLATFORM_ID:Darwin>:-Wno-deprecated>
PRIVATE $<$<PLATFORM_ID:Linux>:-Wno-deprecated>
# PRIVATE $<$<PLATFORM_ID:Linux>:-Wno-deprecated-declarations>
# PRIVATE $<$<CONFIG:Debug>:-Wno-unused-variable>
# PRIVATE $<$<CONFIG:Debug>:-Wno-unused-but-set-variable>
# PRIVATE $<$<CONFIG:Debug>:-Wno-unused-parameter>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wno-unused-function>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wextra>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wextra>
PRIVATE $<$<PLATFORM_ID:Linux>:-Wextra>
PRIVATE $<$<PLATFORM_ID:Linux>:-Wall>
PRIVATE $<$<PLATFORM_ID:Linux>:-Wno-unused-parameter>
PRIVATE $<$<PLATFORM_ID:Linux>:-Werror>
PRIVATE $<$<PLATFORM_ID:Linux>:-Wfatal-errors> # Stop after first error
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Linux>>:-Wpedantic>
PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Windows>>:/wd4100>
PRIVATE $<$<PLATFORM_ID:Linux>:-Wno-deprecated>
PRIVATE $<$<PLATFORM_ID:Windows>:/bigobj>
# PRIVATE $<$<CONFIG:Debug>:-Wall>
# PRIVATE $<$<CONFIG:Debug>:-Werror>
# PRIVATE $<$<CONFIG:Debug>:-Wextra>
# PRIVATE $<$<CONFIG:Debug>:-Wpedantic>
# PRIVATE ${GTEST_CFLAGS}
)

target_compile_features(${name}
Expand Down Expand Up @@ -213,6 +207,7 @@ macro(default_plugin_options name)
add_custom_command(
TARGET ${PROJECT_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/share/xstudio/plugin"
COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:${PROJECT_NAME}>" "${CMAKE_BINARY_DIR}/share/xstudio/plugin"
)
endif()
Expand Down Expand Up @@ -308,6 +303,7 @@ macro(default_options_qt name)
set_target_properties(${name}
PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
install(TARGETS ${name} EXPORT xstudio
LIBRARY DESTINATION share/xstudio/lib)
Expand Down Expand Up @@ -520,15 +516,9 @@ macro(add_preference name path target)

else()

if (WIN32)
add_custom_command(TARGET ${target} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${path}/${name}
${CMAKE_BINARY_DIR}/share/xstudio/preference/${name})
else()
add_custom_command(TARGET ${target} POST_BUILD
add_custom_command(TARGET ${target} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${path}/${name}
${CMAKE_BINARY_DIR}/bin/preference/${name})
endif()

if(INSTALL_XSTUDIO)
install(FILES
Expand Down Expand Up @@ -581,6 +571,7 @@ macro(create_test PATH DEPS)
default_options_gtest(${NAME})
target_link_libraries(${NAME}
PRIVATE
xstudio::global
"${DEPS}"
${GTEST_LDFLAGS}
)
Expand Down
14 changes: 0 additions & 14 deletions cmake/otio_patch.diff

This file was deleted.

Loading
Loading