Skip to content

Commit 347d90a

Browse files
tedwaineBlackhartkenmcgaughHughMacdonaldjhery-rdo
authored
Merge develop to main for 1.2.0 release (#236)
* Remove empty parent menus when menu item is deleted. Signed-off-by: Ted Waine <ted.waine@gmail.com> * Implement OIIO reader Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Add OIIO metadata Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Change openimageio version in vcpkg.json Updated version of openimageio from 2.5.19.1 to 2.5.16.0#1. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Add remove_media_source_atom and associated handler to media_actor. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Allow udta metadata tags to be passed through. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fixed incorrect keycode for MetaModifier. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fixed missing parentheses reported by compiler. This now matches the annotation_serialiser.cpp. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Exposed additional methods and constructors for MediaReference, FrameList, and Timecode. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Exposse the AltModifier to python, which was the one modifier missing. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Change to prevent sources provided by non-file URL schemes to be marked as MS_MISSING. This allows for media_sources to be provided by http(s). Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * This MacOS-only fix prevents an "stroull" error message when a .DS_Store file exists in a thumbnail cache directory. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Added empty event_atom/name_atom message handler to prevent error message. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Added missing override keyword to avoid compiler warning. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fixed typo in show_viewer_hotkey text. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Small fixes to avoid benign QML warnings. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Modified OCIOEngine::get_ocio_config() to pass the "ocio_config" metadata value through xstudio's file-path remapping mechanism. Likewise, all the search paths within the config are also passed through file path remapping. Note that any path set via the OCIO environment variable is left as-is. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Modifications to allow the "working_space" be set via the source colour management metadata. We use this to set the working_space to "raw" for media we want to remain unmanaged but still allow for the global view to be set without causing error messages. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * This adds hotkeys for changing the current OCIO view. The hotkeys are Ctrl+1 through Ctrl+9 (linux) and each select the the corresponding view for the current display. Under MacOS these are Cmd+1 through Cmd+9. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Just a couple of typos corrected. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Allow for optionally disabling SSL verification. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Sync with latest DNEG internal repo Signed-off-by: Ted Waine <ted.waine@gmail.com> * Re-instate OTIO submodule Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fix merge problems Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fix Win namespace issue Signed-off-by: Ted Waine <ted.waine@gmail.com> * Sync to DNEG internal Signed-off-by: Ted Waine <ted.waine@gmail.com> * Clang format Signed-off-by: Ted Waine <ted.waine@gmail.com> * Tweak media reader precedence Signed-off-by: Ted Waine <ted.waine@gmail.com> * fix: Use platform-specific path separators for `XSTUDIO_PLUGIN_PATH`. Signed-off-by: Hugh Macdonald <hugh@hughmacdonald.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fix slow media loading into large playlists and timelines Signed-off-by: Ted Waine <ted.waine@gmail.com> * Sync to DNEG internal repo Signed-off-by: Ted Waine <ted.waine@gmail.com> * Added support for specifying timelines to import via an URI instead of posix path to an OTIO file. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fix for an occaisional crash caused by an uncaught exception when changing the URI of the currently viewed media_source. This seemed the safest fix although there are others I tried but I was worried about the potential impact on performance. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fix event subscription to use event_group instead of event_source.remote Signed-off-by: Ted Waine <ted.waine@gmail.com> * These modifications allow the pasteing of clipboard data containing custom mime-data. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Add Windows .cmd wrappers for Python CLI scripts On Windows, extensionless shell scripts aren't executable. Add .cmd batch wrappers for xstudio-control, xstudio-inject, and xstudiopy that set PYTHONPATH and invoke the bundled Python interpreter. The existing Linux/macOS scripts are unchanged — CMake selects the right variant per platform. Remove the non-functional xstudio.bat.in template, which was a copy of the Linux shell launcher containing Linux-only constructs (LD_LIBRARY_PATH, xstudio_desktop_integration). On Windows, xstudio.exe is invoked directly and needs no wrapper. Signed-off-by: Ben De Luca <bdeluca@gmail.com> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fix cross-platform plugin path splitting on Windows Use os.pathsep instead of hardcoded ":" to split XSTUDIO_PYTHON_PLUGIN_PATH, since Windows uses ";" as the path separator and ":" would break drive letters. Signed-off-by: Ben De Luca <bdeluca@gmail.com> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Strip whitespace from plugin search paths Env var values can contain trailing whitespace depending on how they are set (e.g. cmd.exe "set VAR=value && cmd"), causing path lookups to fail. Signed-off-by: Ben De Luca <bdeluca@gmail.com> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fix Windows frame sequence scanning in frame_groups_from_sequence_spec Use generic_string() instead of string() for directory entries. path::string() returns OS-native separators (backslashes on Windows), while the regex is built from URI-decoded paths that use forward slashes. generic_string() always returns forward slashes, so the regex matches correctly. Signed-off-by: Ben De Luca <bdeluca@gmail.com> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fix Windows UNC path handling in URI conversion Add proper UNC path support for Windows: - posix_path_to_uri: Convert \\server\share\path to file://server/share/path - uri_to_posix_path: Reconstruct \\server\share\path from file://server/share/path This fixes drag-and-drop of image sequences from network shares on Windows. Also fix a pre-existing bug where reverse_remap_file_path was called on the original input parameter instead of the working copy, discarding any transformations applied earlier in the function. Signed-off-by: Ben De Luca <bdeluca@gmail.com> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fix Windows drive-letter paths producing non-standard file URIs On Windows, paths like R:\foo were passed directly to the URI builder without normalising backslashes or prepending a leading slash, producing invalid file URIs. Normalise to forward slashes and prepend / for drive-letter paths so they produce correct file:///R:/foo URIs. Signed-off-by: Ben De Luca <bdeluca@gmail.com> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Improvements to drag-n-drop within the MediaList views. This includes changing the cursor to be a grab of the item being dragged along with a badge showing the number of items being dragged. It also fixes some issues causing instabilities or awkwardness in the UI relating to drag-n-drop. Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * OpenGL compatibility for Wayland, prevent crash with incompatible GPU (#216) * Request desktop OpenGL explicitly for Wayland/EGL compatibility On Wayland, Qt uses EGL for OpenGL context creation. Without explicit request, EGL may default to OpenGL ES, but xstudio shaders require GLSL 410+ (desktop OpenGL 4.1+). Add setRenderableType(QSurfaceFormat::OpenGL) to explicitly request desktop OpenGL while maintaining native Wayland performance. Signed-off-by: Ben De Luca <bdeluca@gmail.com> * Add OpenGL version check at startup Check GPU capabilities before loading the QML engine. Logs the GL vendor, renderer and version string, and exits cleanly if the context version is below the minimum required (4.3, or 4.1 on macOS). Replaces the previous hard-coded setVersion call with shared required_gl_major/required_gl_minor constants. Signed-off-by: Ben De Luca <bdeluca@gmail.com> --------- Signed-off-by: Ben De Luca <bdeluca@gmail.com> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Adding WIP demo (data source) plugin (#203) Signed-off-by: Ted Waine <ted.waine@gmail.com> * ninja build for windows (#217) * Add Ninja build presets and /MP guard for Windows Add windows-ninja-base preset and three derived presets (Debug, Release, RelWithDebInfo) that use the Ninja generator. Guard the MSVC /MP compile option so it is only added for MSBuild generators — Ninja already parallelizes at the file level, so /MP would over-subscribe CPUs. Add CMakeUserPresets.json to .gitignore so developers can create local preset overrides (e.g. custom Qt paths) without dirtying the working tree. CMake reads CMakeUserPresets.json automatically alongside CMakePresets.json. Signed-off-by: Ben De Luca <bdeluca@gmail.com> * Add Ninja build instructions to Windows build guide Document how to use the Ninja presets as an alternative to MSBuild. Uses Enter-VsDevShell to set up the MSVC compiler, cmake and ninja on PATH from a standard Powershell session. Signed-off-by: Ben De Luca <bdeluca@gmail.com> --------- Signed-off-by: Ben De Luca <bdeluca@gmail.com> Signed-off-by: Ted Waine <ted.waine@gmail.com> * fix(windows): prefer discrete GPU on hybrid graphics systems, Add NvOptimusEnablement and AmdPowerXpressRequestHighPerformance exports to hint the NVIDIA/AMD driver to select the discrete GPU on Windows hybrid graphics system (#218) Signed-off-by: Vikas Kendre <vikaskendre1989@gmail.com> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fix for hiding drag count text (#228) When only one item is being dragged, the count badge is supposed to be hidden. While the red disk does correctly hide itself the text component wasn’t. This fixes that. Signed-off-by: kenmcgaugh <ken@mcgaugh.co.uk> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Sync all changes from DNEG internal repo Signed-off-by: Ted Waine <ted.waine@gmail.com> * Adding Blackmagic Designs Decklink SDI card video output plugin Signed-off-by: Ted Waine <ted.waine@gmail.com> * Add license stub and cleanup old files Signed-off-by: Ted Waine <ted.waine@gmail.com> * Make the doc paths relative. Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org> Signed-off-by: Ted Waine <ted.waine@gmail.com> * Update version number Signed-off-by: Ted Waine <ted.waine@gmail.com> * Re-instate OTIO submodule Signed-off-by: Ted Waine <ted.waine@gmail.com> * Fix warnings in demo plugin Signed-off-by: Ted Waine <ted.waine@gmail.com> * clang format pass Signed-off-by: Ted Waine <ted.waine@gmail.com> * Windows build compatibility fix Signed-off-by: Ted Waine <ted.waine@gmail.com> --------- Signed-off-by: Ted Waine <ted.waine@gmail.com> Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com> Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk> Signed-off-by: Hugh Macdonald <hugh@hughmacdonald.co.uk> Signed-off-by: Ben De Luca <bdeluca@gmail.com> Signed-off-by: Vikas Kendre <vikaskendre1989@gmail.com> Signed-off-by: kenmcgaugh <ken@mcgaugh.co.uk> Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org> Co-authored-by: Thomas Manceau <manceau.thomas19@gmail.com> Co-authored-by: Ken McGaugh <ken@mcgaugh.co.uk> Co-authored-by: Hugh Macdonald <hugh@hughmacdonald.co.uk> Co-authored-by: Julien Hery <julien.hery@yahoo.fr> Co-authored-by: Ben de Luca <bdeluca@gmail.com> Co-authored-by: VIKASKENDRE <30403300+VIKASKENDRE@users.noreply.github.com> Co-authored-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
1 parent d0efa97 commit 347d90a

1,027 files changed

Lines changed: 55363 additions & 11578 deletions

File tree

Some content is hidden

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

.gitignore

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
.vscode/
66
__*__
77
ignore/
8-
python/src/xstudio.egg-info/
8+
*.egg-info/
99
python/test/xstudio.log
1010
docs/conf.py
1111
python/src/xstudio/version.py
@@ -14,3 +14,9 @@ python/src/xstudio/version.py
1414
/build/
1515
xstudio_install/
1616
**/qml/*_qml_export.h
17+
<<<<<<< HEAD
18+
CMakeUserPresets.json
19+
=======
20+
__build
21+
__build_debug
22+
>>>>>>> c808bb352 (WIP)

CMakeLists.txt

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 3.28 FATAL_ERROR)
22
cmake_policy(VERSION 3.28)
33

4-
set(XSTUDIO_GLOBAL_VERSION "1.1.0" CACHE STRING "Version string")
4+
set(XSTUDIO_GLOBAL_VERSION "1.2.0" CACHE STRING "Version string")
55
set(XSTUDIO_GLOBAL_NAME xStudio)
66

77
# set(CMAKE_OSX_DEPLOYMENT_TARGET "14.5" CACHE STRING "Minimum OS X deployment version" FORCE)
@@ -16,24 +16,29 @@ option(ENABLE_CLANG_TIDY "Enable clang-tidy, ninja clang-tidy." OFF)
1616
option(ENABLE_CLANG_FORMAT "Enable clang format, ninja clangformat." OFF)
1717
option(FORCE_COLORED_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." TRUE)
1818
option(OPTIMIZE_FOR_NATIVE "Build with -march=native" OFF)
19-
option(BUILD_RESKIN "Build xstudio reskin binary" ON)
2019
option(OTIO_SUBMODULE "Automatically build OpenTimelineIO as a submodule" OFF)
2120
option(USE_VCPKG "Use Vcpkg for package management" OFF)
2221
option(BUILD_PYSIDE_WIDGETS "Build xstudio player as PySide widget" OFF)
22+
option(OPENIMAGEIO_PLUGIN "Include the OpenImageIO PLugin" ON)
23+
option(BMD_DECKLINK_PLUGIN "Include the Blackmagic DeckLink SDI Card Video Output Plugin" ON)
2324

2425
if(WIN32)
2526
set(USE_VCPKG ON)
2627
#include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/vcpkg.cmake)
2728
set(CMAKE_CXX_FLAGS_DEBUG "/Zi /Ob0 /Od /Oy-")
28-
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
29+
# /MP is for MSBuild which parallelizes at project level.
30+
# Ninja parallelizes at file level, so /MP would over-subscribe CPUs.
31+
if(NOT CMAKE_GENERATOR STREQUAL "Ninja")
32+
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
33+
endif()
2934
# enable UUID System Generator
3035
add_definitions(-DUUID_SYSTEM_GENERATOR=ON)
3136
endif()
3237

3338
set(STUDIO_PLUGINS "" CACHE STRING "Enable compilation of SITE plugins")
3439

3540
if (("${CMAKE_GENERATOR}" MATCHES "Makefiles" OR ("${CMAKE_GENERATOR}" MATCHES "Ninja" AND NOT WIN32)) AND NOT __CHECKED_CXX_FLAGS)
36-
set(__CHECKED_CXX_FLAGS TRUE CACHE INTERNAL "Whether we checked the CXX flags already")
41+
set(__CHECKED_CXX_FLAGS TRUE CACHE INTERNAL "Whether we checked the CXX flags already")
3742
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${COMMON_GCC}" CACHE STRING "" FORCE)
3843
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${COMMON_GCC}" CACHE STRING "" FORCE)
3944
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${COMMON_GCC}" CACHE STRING "" FORCE)
@@ -103,8 +108,8 @@ if (USE_SANITIZER STREQUAL "Address")
103108
if(MSVC)
104109
target_compile_options(<target> PUBLIC /fsanitize=address)
105110
else()
106-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
107-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
111+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
112+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
108113
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
109114
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=address")
110115
endif()
@@ -295,7 +300,7 @@ if(INSTALL_XSTUDIO)
295300

296301
endif ()
297302

298-
if(USE_VCPKG)
303+
if (USE_VCPKG)
299304
# To provide reliable ordering, we need to make this install script happen in a subdirectory.
300305
# Otherwise, Qt deploy will happen before we have the rest of the application deployed.
301306
add_subdirectory("scripts/qt_install")
@@ -305,8 +310,8 @@ if (WIN32)
305310

306311
include(InstallRequiredSystemLibraries)
307312

308-
set(CPACK_PACKAGE_VERSION "1.1.0")
309-
set(CPACK_PACKAGE_VERSION_MAJOR "1")
313+
set(CPACK_PACKAGE_VERSION "1.2.0")
314+
set(CPACK_PACKAGE_VERSION_MAJOR "2")
310315
set(CPACK_PACKAGE_VERSION_MINOR "1")
311316
set(CPACK_PACKAGE_VERSION_PATCH "0")
312317
set(CPACK_PACKAGE_VENDOR "DNEG / Academy Software Foundation")
@@ -343,11 +348,11 @@ if (WIN32)
343348
WriteRegStr HKCR 'XStudioSession\\\\DefaultIcon' \\\\
344349
'' '$INSTDIR\\\\bin\\\\xstudio.exe,0'
345350
WriteRegStr HKCR 'XStudioSession\\\\shell\\\\open\\\\command' \\\\
346-
'' '$INSTDIR\\\\bin\\\\xstudio.exe \\"%1\\"'
351+
'' '$INSTDIR\\\\bin\\\\xstudio.exe \\\"%1\\\"'
347352
WriteRegStr HKCR 'XStudioSession\\\\shell\\\\edit' \\\\
348353
'' 'Edit xSTUDIO Session File'
349354
WriteRegStr HKCR 'XStudioSession\\\\shell\\\\edit\\\\command' \\\\
350-
'' '$INSTDIR\\\\bin\\\\xstudio.exe \\"%1\\"'
355+
'' '$INSTDIR\\\\bin\\\\xstudio.exe \\\"%1\\\"'
351356
System::Call \\\\
352357
'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'
353358
")

CMakePresets.json

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
"CMAKE_INSTALL_PREFIX": "xstudio_install",
1212
"X_VCPKG_APPLOCAL_DEPS_INSTALL": "ON",
1313
"BUILD_DOCS": "OFF",
14-
"USE_VCPKG": "ON"
14+
"USE_VCPKG": "ON",
15+
"STUDIO_PLUGINS": "",
16+
"BMD_DECKLINK_PLUGIN": "OFF"
1517
}
1618
},
1719
{
@@ -49,6 +51,39 @@
4951
"USE_SANITIZER": "address"
5052
}
5153
},
54+
{
55+
"name": "windows-ninja-base",
56+
"inherits": "default",
57+
"condition": {
58+
"type": "equals",
59+
"lhs": "${hostSystemName}",
60+
"rhs": "Windows"
61+
},
62+
"hidden": true,
63+
"generator": "Ninja"
64+
},
65+
{
66+
"name": "WinNinjaRelease",
67+
"inherits": ["windows-ninja-base"],
68+
"cacheVariables": {
69+
"CMAKE_BUILD_TYPE": "Release"
70+
}
71+
},
72+
{
73+
"name": "WinNinjaRelWithDebInfo",
74+
"inherits": ["windows-ninja-base"],
75+
"cacheVariables": {
76+
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
77+
"USE_SANITIZER": "address"
78+
}
79+
},
80+
{
81+
"name": "WinNinjaDebug",
82+
"inherits": ["windows-ninja-base"],
83+
"cacheVariables": {
84+
"CMAKE_BUILD_TYPE": "Debug"
85+
}
86+
},
5287
{
5388
"name": "macos-base-arm",
5489
"condition": {

README.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
# Welcome to xSTUDIO - v1.1.0
1+
# Welcome to xSTUDIO - v1.2.0
22

33
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.
44

5-
This codebase will build version 1.0.0 (alpha) of xstudio. There are some known issues that are currently being worked on:
6-
7-
* Moderate audio distortion on playback (Windows only)
8-
* Ueser Documentation and API Documentation is badly out-of-date.
9-
* Saved sessions might not restore media correctly (Windows only)
5+
This codebase will build version 1.2.0 of xSTUDIO.
106

117
## Building xSTUDIO
128

cmake/macros.cmake

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,15 @@ if (BUILD_TESTING)
8484
endif (BUILD_TESTING)
8585
8686
macro(default_options_local name)
87+
8788
if (NOT CAF_FOUND)
8889
find_package(CAF COMPONENTS core io)
8990
endif (NOT CAF_FOUND)
9091
9192
find_package(spdlog CONFIG REQUIRED)
9293
9394
default_compile_options(${name})
95+
9496
target_include_directories(${name}
9597
PUBLIC
9698
$<BUILD_INTERFACE:${ROOT_DIR}/include>
@@ -100,19 +102,27 @@ macro(default_options_local name)
100102
SYSTEM PUBLIC
101103
$<BUILD_INTERFACE:${ROOT_DIR}/extern/include>
102104
)
105+
103106
if (APPLE)
104-
set_target_properties(${name}
105-
PROPERTIES
106-
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/xSTUDIO.app/Contents/Frameworks"
107-
INSTALL_RPATH "@executable_path/../Frameworks"
108-
INSTALL_RPATH_USE_LINK_PATH TRUE
109-
)
110-
else()
107+
set_target_properties(${name}
108+
PROPERTIES
109+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/xSTUDIO.app/Contents/Frameworks"
110+
INSTALL_RPATH "@executable_path/../Frameworks"
111+
INSTALL_RPATH_USE_LINK_PATH TRUE
112+
)
113+
elseif(UNIX)
111114
set_target_properties(${name}
112115
PROPERTIES
113116
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
114117
)
118+
else()
119+
set_target_properties(${name}
120+
PROPERTIES
121+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
122+
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
123+
)
115124
endif()
125+
116126
endmacro()
117127
118128
macro(default_options name)
@@ -203,7 +213,7 @@ macro(default_plugin_options name)
203213
add_custom_command(
204214
TARGET ${PROJECT_NAME}
205215
POST_BUILD
206-
COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:${PROJECT_NAME}>" "${CMAKE_CURRENT_BINARY_DIR}/plugin"
216+
COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:${PROJECT_NAME}>" "${CMAKE_BINARY_DIR}/share/xstudio/plugin"
207217
)
208218
endif()
209219
@@ -227,9 +237,15 @@ macro(add_plugin_qml name _dir)
227237
foreach(DIR ${DIRS})
228238
if(IS_DIRECTORY ${DIR})
229239
cmake_path(GET DIR FILENAME dirname)
230-
add_custom_command(TARGET ${name}_COPY_QML POST_BUILD
231-
COMMAND ${CMAKE_COMMAND} -E
232-
copy_directory ${DIR} ${CMAKE_BINARY_DIR}/bin/plugin/qml/${dirname})
240+
if (WIN32)
241+
add_custom_command(TARGET ${name}_COPY_QML POST_BUILD
242+
COMMAND ${CMAKE_COMMAND} -E
243+
copy_directory ${DIR} ${CMAKE_BINARY_DIR}/share/xstudio/plugin/qml/${dirname})
244+
else()
245+
add_custom_command(TARGET ${name}_COPY_QML POST_BUILD
246+
COMMAND ${CMAKE_COMMAND} -E
247+
copy_directory ${DIR} ${CMAKE_BINARY_DIR}/bin/plugin/qml/${dirname})
248+
endif()
233249
install(DIRECTORY ${DIR} DESTINATION share/xstudio/plugin/qml)
234250
endif()
235251
endforeach()
@@ -504,9 +520,15 @@ macro(add_preference name path target)
504520
505521
else()
506522
507-
add_custom_command(TARGET ${target} POST_BUILD
523+
if (WIN32)
524+
add_custom_command(TARGET ${target} POST_BUILD
525+
COMMAND ${CMAKE_COMMAND} -E copy ${path}/${name}
526+
${CMAKE_BINARY_DIR}/share/xstudio/preference/${name})
527+
else()
528+
add_custom_command(TARGET ${target} POST_BUILD
508529
COMMAND ${CMAKE_COMMAND} -E copy ${path}/${name}
509530
${CMAKE_BINARY_DIR}/bin/preference/${name})
531+
endif()
510532
511533
if(INSTALL_XSTUDIO)
512534
install(FILES

docs/Doxyfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ PROJECT_NAME = "xStudio"
3838
# could be handy for archiving the generated documentation or if some version
3939
# control system is used.
4040

41-
PROJECT_NUMBER = "1.1.0"
41+
PROJECT_NUMBER = "1.2.0"
4242

4343
# Using the PROJECT_BRIEF tag one can provide an optional one line description
4444
# for a project that appears at the top of each page and should give viewer a

docs/conf.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,11 @@
5151

5252
breathe_default_project = "xStudio"
5353
breathe_projects = {
54+
<<<<<<< HEAD
55+
"xStudio": "/user_data/ted/xstudio/__build2/docs/docs/doxygen/xml"
56+
=======
5457
"xStudio": "_build/doxygen/xml"
58+
>>>>>>> 0b8690b (Make the doc paths relative.)
5559
}
5660

5761

@@ -79,9 +83,9 @@
7983
# built documents.
8084
#
8185
# The short X.Y version.
82-
version = '1.1.0'
86+
version = '1.2.0'
8387
# The full version, including alpha/beta/rc tags.
84-
release = '1.1.0'
88+
release = '1.2.0'
8589

8690
# The language for content autogenerated by Sphinx. Refer to documentation
8791
# for a list of supported languages.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Tips for Developers
2+
3+
### A Faster Development Cycle on Windows
4+
5+
If you are developing xSTUDIO on Windows the build times for both **package** and **install** targets are very long even if you need to test a single line code change. A solution to this problem is to do a full package build first and then copy the contents of the **bin** folder in the target package output folder into the regular **build/bin** folder in the build output folder. This will allow you to run xstudio directly from the **./build/bin** folder after subsequent builds without specifying package or install as the build target. Likewise if your build environment is MS Visual Studio you can set your debug target to **build/bin/xstudio.exe** for a much faster code-change / build / test cycles. The steps to do this in a PowerShell will look something like this:
6+
7+
*Clear the bin and share build output folders (you only need to do this once):*
8+
9+
rm -r -fo ./bin/build
10+
rm -r -fo ./bin/share/xstudio
11+
12+
*Copy the corresponding folders from the package output back into the build folder (again, you only need to do this once):*
13+
14+
cp -r .\build\_CPack_Packages\win64\NSIS\xSTUDIO-1.2.0-win64\bin .\build\
15+
cp -r .\build\_CPack_Packages\win64\NSIS\xSTUDIO-1.2.0-win64\share\xstudio .\build\share\
16+
17+
*Now you can build and execute xstudio quickly without doing a full package/install build:*
18+
19+
cmake --build build
20+
./bin/xstudio.exe
21+

docs/reference/build_guides/linux_generic.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ Follow [these instructions](downloading_qt.md) - ensuring that you download the
1212

1313
### Download the VCPKG repo
1414

15-
To build xSTUDIO we need a number of other open source software packages. We use the VCPKG package manager to do this. All that we need to do is download the repo and run the bootstrap script before we build xstudio.
15+
To build xSTUDIO we need a number of other open source software packages. We use the VCPKG package manager to do this. All that we need to do is download the repo, run the bootstrap script and then switch to a specific git commit before we build xstudio. Run these commands in the Powershell:
1616

1717
git clone https://github.com/microsoft/vcpkg.git
1818
./vcpkg/bootstrap-vcpkg.sh
19+
git checkout c2aeddd80357b17592e59ad965d2adf65a19b22f
1920

2021
### Download the xSTUDIO repo
2122

docs/reference/build_guides/macos.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,18 @@ We require 5 packages to be installed to proceed. Run these commands in a termin
2424

2525
Follow [these instructions](downloading_qt.md)
2626

27+
> **NOTE:** Since Xcode version 26.X our specified version of Qt (6.5.3) is not strictly compatible with MacOS and you may see an error when you run the first 'cmake' command below. There are two options to resolve this. You can download Qt version 6.8.3 and use this instead of 6.5.3. Alternatively, open the file 'FindWrapOpenGL.cmake' within the Qt installation (at 6.5.3/macos/lib/cmake) and comment out lines 48 and 49 so that they look like this:
28+
29+
#target_link_libraries(WrapOpenGL::WrapOpenGL INTERFACE ${__opengl_fw_path})
30+
#target_link_libraries(WrapOpenGL::WrapOpenGL INTERFACE ${__opengl_agl_fw_path})
31+
2732
### Download the VCPKG repo
2833

29-
To build xSTUDIO we need a number of other open source software packages. We use the VCPKG package manager to do this. All that we need to do is download the repo and run the bootstrap script before we build xstudio.
34+
To build xSTUDIO we need a number of other open source software packages. We use the VCPKG package manager to do this. All that we need to do is download the repo, run the bootstrap script and then switch to a specific git commit before we build xstudio. Run these commands in a terminal:
3035

3136
git clone https://github.com/microsoft/vcpkg.git
3237
./vcpkg/bootstrap-vcpkg.sh
38+
git checkout c2aeddd80357b17592e59ad965d2adf65a19b22f
3339

3440
### Download the xSTUDIO repo
3541

0 commit comments

Comments
 (0)