Skip to content

Commit 9ca59ed

Browse files
authored
Merge pull request #183 from AcademySoftwareFoundation/develop
Release v1.1.0
2 parents ab5e531 + 8cde0df commit 9ca59ed

File tree

562 files changed

+17900
-5798
lines changed

Some content is hidden

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

562 files changed

+17900
-5798
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,5 @@ python/src/xstudio/version.py
1212
.vs/
1313
.DS_Store
1414
/build/
15+
xstudio_install/
16+
**/qml/*_qml_export.h

CMakeLists.txt

Lines changed: 12 additions & 6 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.0.0" CACHE STRING "Version string")
4+
set(XSTUDIO_GLOBAL_VERSION "1.1.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)
@@ -109,8 +109,14 @@ if (USE_SANITIZER STREQUAL "Address")
109109
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=address")
110110
endif()
111111
elseif (USE_SANITIZER STREQUAL "Thread")
112-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread")
113-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread")
112+
if(MSVC)
113+
target_compile_options(<target> PUBLIC /fsanitize=thread)
114+
else()
115+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread")
116+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread")
117+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=thread")
118+
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=thread")
119+
endif()
114120
elseif (USE_SANITIZER STREQUAL "Undefined")
115121
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined")
116122
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined")
@@ -197,7 +203,7 @@ if (USE_VCPKG)
197203
message(FATAL_ERROR "Failed to ensurepip.")
198204
else()
199205
execute_process(
200-
COMMAND "${Python_EXECUTABLE}" -m pip install setuptools sphinx breathe sphinx-rtd-theme OpenTimelineIO-Plugins importlib_metadata myst-parser zipp
206+
COMMAND "${Python_EXECUTABLE}" -m pip install setuptools sphinx breathe sphinx-rtd-theme OpenTimelineIO-Plugins importlib_metadata zipp
201207
RESULT_VARIABLE PIP_RESULT
202208
)
203209
if(PIP_RESULT)
@@ -299,9 +305,9 @@ if (WIN32)
299305

300306
include(InstallRequiredSystemLibraries)
301307

302-
set(CPACK_PACKAGE_VERSION "1.0.0")
308+
set(CPACK_PACKAGE_VERSION "1.1.0")
303309
set(CPACK_PACKAGE_VERSION_MAJOR "1")
304-
set(CPACK_PACKAGE_VERSION_MINOR "0")
310+
set(CPACK_PACKAGE_VERSION_MINOR "1")
305311
set(CPACK_PACKAGE_VERSION_PATCH "0")
306312
set(CPACK_PACKAGE_VENDOR "DNEG / Academy Software Foundation")
307313
set (CPACK_NSIS_MUI_ICON

README.md

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,32 @@
1-
# Welcome to xSTUDIO - v1.0.0
1+
# Welcome to xSTUDIO - v1.1.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)
10+
511
## Building xSTUDIO
612

7-
This release of xSTUDIO can be built on various Linux flavours, MacOS and Windows 10 and 11. Comprehensive build instructions are available as follows:
13+
This release of xSTUDIO can be built on various Linux flavours, Microsoft Windows and MacOS. We provide comprehensive build steps here.
14+
15+
### Building xSTUDIO for Linux
16+
17+
* [Linux Generic](docs/build_guides/linux_generic.md)
18+
* [CentOS 7](docs/build_guides/centos_7.md)
19+
* [Rocky Linux 9.1](docs/build_guides/rocky_linux_9_1.md)
20+
* [Ubuntu 22.04](docs/build_guides/ubuntu_22_04.md)
21+
22+
### Building xSTUDIO for Windows 10 & 11
23+
24+
* [Windows](docs/build_guides/windows.md)
25+
26+
### Building xSTUDIO for MacOS
827

9-
* [Windows](docs/reference/build_guides/windows.md)
10-
* [MacOS](docs/reference/build_guides/macos.md)
11-
* [Linux Generic using VCPKG](docs/reference/build_guides/linux_generic.md)
12-
* [Rocky Linux 9.1](docs/reference/build_guides/rocky_linux_9_1.md)
13-
* [Ubuntu 22.04](docs/reference/build_guides/ubuntu_22_04.md)
28+
* [MacOS](docs/build_guides/macos.md)
1429

1530
### Documentation Note
1631

17-
Note that the xSTUDIO user guide is built with Sphinx using the Read-The-Docs theme and API documentation is auto-generated using the Breathe plugin for Sphinx. The package dependencies for building the docs can be challenging to build/obtain/install so we instead include the fully built docs as part of xSTUDIO's repo, as well as the source for building the docs. Our build set-up by default disables the building of the docs to make life easy!
32+
Note that the xSTUDIO user guide is built with Sphinx using the Read-The-Docs theme. The package dependencies for building the docs can be challenging to install so we instead include the fully built docs as part of xSTUDIO's repo, as well as the source for building the docs. Our build set-up by default disables the building of the docs to make life easy!

cmake/macros.cmake

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,12 @@ macro(default_options_local name)
101101
$<BUILD_INTERFACE:${ROOT_DIR}/extern/include>
102102
)
103103
if (APPLE)
104-
set_target_properties(${name}
105-
PROPERTIES
106-
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/xSTUDIO.app/Contents/Frameworks"
107-
)
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+
)
108110
else()
109111
set_target_properties(${name}
110112
PROPERTIES
@@ -204,7 +206,7 @@ macro(default_plugin_options name)
204206
COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:${PROJECT_NAME}>" "${CMAKE_CURRENT_BINARY_DIR}/plugin"
205207
)
206208
endif()
207-
209+
208210
endmacro()
209211

210212
macro(add_plugin_qml name _dir)
@@ -366,7 +368,7 @@ macro(add_python_plugin NAME)
366368
copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/${NAME} ${CMAKE_BINARY_DIR}/bin/plugin-python/${NAME})
367369

368370
endif()
369-
371+
370372
endmacro()
371373

372374
macro(create_plugin NAME VERSION DEPS)
@@ -396,11 +398,12 @@ macro(create_component NAME VERSION DEPS)
396398
create_component_with_alias(${NAME} xstudio::${NAME} ${VERSION} "${DEPS}")
397399
endmacro()
398400

401+
399402
macro(create_component_with_alias NAME ALIASNAME VERSION DEPS)
400403

401404
project(${NAME} VERSION ${VERSION} LANGUAGES CXX)
402405

403-
file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
406+
file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/*.proto)
404407

405408
add_library(${PROJECT_NAME} SHARED ${SOURCES})
406409
add_library(${ALIASNAME} ALIAS ${PROJECT_NAME})

cmake/modules/FindOpus.cmake

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# - Find opus
2+
# Find the native opus includes and libraries
3+
#
4+
# OPUS_INCLUDE_DIRS - where to find opus.h, etc.
5+
# OPUS_LIBRARIES - List of libraries when using opus.
6+
# OPUS_FOUND - True if Opus found.
7+
8+
if (OPUS_INCLUDE_DIR)
9+
# Already in cache, be silent
10+
set(OPUS_FIND_QUIETLY TRUE)
11+
endif ()
12+
13+
# find_package (Ogg QUIET)
14+
15+
find_package (PkgConfig QUIET)
16+
pkg_check_modules(PC_OPUS QUIET opus>=1.1)
17+
18+
set (OPUS_VERSION ${PC_OPUS_VERSION})
19+
20+
find_path (OPUS_INCLUDE_DIR opus/opus.h
21+
HINTS
22+
${PC_OPUS_INCLUDEDIR}
23+
${PC_OPUS_INCLUDE_DIRS}
24+
${OPUS_ROOT}
25+
)
26+
27+
# MSVC built opus may be named opus_static.
28+
# The provided project files name the library with the lib prefix.
29+
30+
find_library (OPUS_LIBRARY
31+
NAMES
32+
opus
33+
opus_static
34+
libopus
35+
libopus_static
36+
HINTS
37+
${PC_OPUS_LIBDIR}
38+
${PC_OPUS_LIBRARY_DIRS}
39+
${OPUS_ROOT}
40+
)
41+
42+
# Handle the QUIETLY and REQUIRED arguments and set OPUS_FOUND
43+
# to TRUE if all listed variables are TRUE.
44+
include(FindPackageHandleStandardArgs)
45+
find_package_handle_standard_args (Opus
46+
REQUIRED_VARS
47+
OPUS_LIBRARY
48+
OPUS_INCLUDE_DIR
49+
# OGG_FOUND
50+
VERSION_VAR
51+
OPUS_VERSION
52+
)
53+
54+
if (OPUS_FOUND)
55+
set (OPUS_LIBRARIES ${OPUS_LIBRARY})
56+
set (OPUS_INCLUDE_DIRS ${OPUS_INCLUDE_DIR})
57+
58+
if (NOT TARGET Opus::opus)
59+
add_library (Opus::opus UNKNOWN IMPORTED)
60+
set_target_properties (Opus::opus PROPERTIES
61+
INTERFACE_INCLUDE_DIRECTORIES "${OPUS_INCLUDE_DIRS}"
62+
IMPORTED_LOCATION "${OPUS_LIBRARIES}"
63+
)
64+
endif ()
65+
endif ()
66+
67+
mark_as_advanced(OPUS_INCLUDE_DIR OPUS_LIBRARY)

docs/Doxyfile

Lines changed: 6 additions & 6 deletions
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.0.0"
41+
PROJECT_NUMBER = "1.1.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
@@ -58,7 +58,7 @@ PROJECT_LOGO =
5858
# entered, it will be relative to the location where doxygen was started. If
5959
# left blank the current directory will be used.
6060

61-
OUTPUT_DIRECTORY = "/Users/tedwaine/Dev2/DNEG/xstudio/build/docs/docs/doxygen"
61+
OUTPUT_DIRECTORY = "/user_data/ted/dev/xstudio/__build/docs/docs/doxygen"
6262

6363
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
6464
# directories (in 2 levels) under the output directory of each output format and
@@ -731,7 +731,7 @@ WARN_FORMAT = "$file:$line: $text"
731731
# messages should be written. If left blank the output is written to standard
732732
# error (stderr).
733733

734-
WARN_LOGFILE = "/Users/tedwaine/Dev2/DNEG/xstudio/build/docs/docs/doxygen/log.txt
734+
WARN_LOGFILE = "/user_data/ted/dev/xstudio/__build/docs/docs/doxygen/log.txt
735735

736736
#---------------------------------------------------------------------------
737737
# Configuration options related to the input files
@@ -743,9 +743,9 @@ WARN_LOGFILE = "/Users/tedwaine/Dev2/DNEG/xstudio/build/docs/docs/doxy
743743
# spaces.
744744
# Note: If this tag is empty the current directory is searched.
745745

746-
INPUT = "/Users/tedwaine/Dev2/DNEG/xstudio/include/" \
747-
"/Users/tedwaine/Dev2/DNEG/xstudio/src/" \
748-
"/Users/tedwaine/Dev2/DNEG/xstudio/python/src/"
746+
INPUT = "/user_data/ted/dev/xstudio/include/" \
747+
"/user_data/ted/dev/xstudio/src/" \
748+
"/user_data/ted/dev/xstudio/python/src/"
749749

750750
# This tag can be used to specify the character encoding of the source files
751751
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses

docs/conf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@
7676
# built documents.
7777
#
7878
# The short X.Y version.
79-
version = '1.0.0'
79+
version = '1.1.0'
8080
# The full version, including alpha/beta/rc tags.
81-
release = '1.0.0'
81+
release = '1.1.0'
8282

8383
# The language for content autogenerated by Sphinx. Refer to documentation
8484
# for a list of supported languages.

docs/reference/build_guides/windows.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ Restart your machine after Visual Studio finishes installing.
1818

1919
Follow [these instructions](downloading_qt.md)
2020

21+
### Download and install the NSIS tool
22+
23+
NSIS is a packaging system that lets us build xSTUDIO into a Windows installer exe file. Follow the download link on the [NSIS homepage](https://nsis.sourceforge.io/Download). This will download an installer .exe file. Run this program and follow through the steps in the installer wizard with the default installation options until you hit 'Finish'. You can close the NSIS window, it doesn't need to be running for the next steps.
24+
2125
### Download the VCPKG repo
2226

2327
Start a Windows Powershell to continue these instructions, where you must run a handfull of powershell commands to build xSTUDIO. Windows Powershell is pre-installed, to start it type Powershell into the Search bar in the Start menu. You will need a location to build xSTUDIO from. We recommend making a folder in your home space, called something like 'dev', as follows:
@@ -44,6 +48,12 @@ You must run these commands to add the OpenTimelineIO submodule to the tree and
4448
git submodule update
4549
git apply cmake/otio_patch.diff
4650

51+
### Modify the CMakePresets.json file
52+
53+
Open the CMakePresets.json file (which is in the root of the xstudio repo) in a text editor. You must look for the entry "Qt6_DIR" and modify the value that follows it to point to your installation of the Qt SDK. Specifically, you need to point to a directory named 'Qt6' which is in a directory named 'cmake', which is in a directory named 'lib'. For example, on Windows where user Mary Jane downloaded Qt into the root of her C: drive the entry should look like this:
54+
55+
"Qt6_DIR": ""C:/Qt6/6.5.3/msvc2019_64/lib/cmake/Qt6",
56+
4757
### Build xSTUDIO
4858

4959
Run the first cmake command to set-up for building. Note that this cmake command ***may take several hours to complete***. This is because xSTUDIO's dependencies (particularly ffmpeg) take a long time to download and build from the source code, which is what VCPKG is doing.
34.6 KB
Loading
44.7 KB
Loading

0 commit comments

Comments
 (0)