Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,5 @@ python/src/xstudio/version.py
.vs/
.DS_Store
/build/
xstudio_install/
**/qml/*_qml_export.h
18 changes: 12 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.28 FATAL_ERROR)
cmake_policy(VERSION 3.28)

set(XSTUDIO_GLOBAL_VERSION "1.0.0" CACHE STRING "Version string")
set(XSTUDIO_GLOBAL_VERSION "1.1.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)
Expand Down Expand Up @@ -109,8 +109,14 @@ if (USE_SANITIZER STREQUAL "Address")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=address")
endif()
elseif (USE_SANITIZER STREQUAL "Thread")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread")
if(MSVC)
target_compile_options(<target> PUBLIC /fsanitize=thread)
else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=thread")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=thread")
endif()
elseif (USE_SANITIZER STREQUAL "Undefined")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined")
Expand Down Expand Up @@ -197,7 +203,7 @@ 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 myst-parser zipp
COMMAND "${Python_EXECUTABLE}" -m pip install setuptools sphinx breathe sphinx-rtd-theme OpenTimelineIO-Plugins importlib_metadata zipp
RESULT_VARIABLE PIP_RESULT
)
if(PIP_RESULT)
Expand Down Expand Up @@ -299,9 +305,9 @@ if (WIN32)

include(InstallRequiredSystemLibraries)

set(CPACK_PACKAGE_VERSION "1.0.0")
set(CPACK_PACKAGE_VERSION "1.1.0")
set(CPACK_PACKAGE_VERSION_MAJOR "1")
set(CPACK_PACKAGE_VERSION_MINOR "0")
set(CPACK_PACKAGE_VERSION_MINOR "1")
set(CPACK_PACKAGE_VERSION_PATCH "0")
set(CPACK_PACKAGE_VENDOR "DNEG / Academy Software Foundation")
set (CPACK_NSIS_MUI_ICON
Expand Down
31 changes: 23 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,32 @@
# Welcome to xSTUDIO - v1.0.0
# Welcome to xSTUDIO - v1.1.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.0.0 (alpha) of xstudio. There are some known issues that are currently being worked on:

* Moderate audio distortion on playback (Windows only)
* Ueser Documentation and API Documentation is badly out-of-date.
* Saved sessions might not restore media correctly (Windows only)

## Building xSTUDIO

This release of xSTUDIO can be built on various Linux flavours, MacOS and Windows 10 and 11. Comprehensive build instructions are available as follows:
This release of xSTUDIO can be built on various Linux flavours, Microsoft Windows and MacOS. We provide comprehensive build steps here.

### Building xSTUDIO for Linux

* [Linux Generic](docs/build_guides/linux_generic.md)
* [CentOS 7](docs/build_guides/centos_7.md)
* [Rocky Linux 9.1](docs/build_guides/rocky_linux_9_1.md)
* [Ubuntu 22.04](docs/build_guides/ubuntu_22_04.md)

### Building xSTUDIO for Windows 10 & 11

* [Windows](docs/build_guides/windows.md)

### Building xSTUDIO for MacOS

* [Windows](docs/reference/build_guides/windows.md)
* [MacOS](docs/reference/build_guides/macos.md)
* [Linux Generic using VCPKG](docs/reference/build_guides/linux_generic.md)
* [Rocky Linux 9.1](docs/reference/build_guides/rocky_linux_9_1.md)
* [Ubuntu 22.04](docs/reference/build_guides/ubuntu_22_04.md)
* [MacOS](docs/build_guides/macos.md)

### Documentation Note

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!
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!
17 changes: 10 additions & 7 deletions cmake/macros.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,12 @@ macro(default_options_local name)
$<BUILD_INTERFACE:${ROOT_DIR}/extern/include>
)
if (APPLE)
set_target_properties(${name}
PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/xSTUDIO.app/Contents/Frameworks"
)
set_target_properties(${name}
PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/xSTUDIO.app/Contents/Frameworks"
INSTALL_RPATH "@executable_path/../Frameworks"
INSTALL_RPATH_USE_LINK_PATH TRUE
)
else()
set_target_properties(${name}
PROPERTIES
Expand Down Expand Up @@ -204,7 +206,7 @@ macro(default_plugin_options name)
COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:${PROJECT_NAME}>" "${CMAKE_CURRENT_BINARY_DIR}/plugin"
)
endif()

endmacro()

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

endif()

endmacro()

macro(create_plugin NAME VERSION DEPS)
Expand Down Expand Up @@ -396,11 +398,12 @@ macro(create_component NAME VERSION DEPS)
create_component_with_alias(${NAME} xstudio::${NAME} ${VERSION} "${DEPS}")
endmacro()


macro(create_component_with_alias NAME ALIASNAME VERSION DEPS)

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

file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/*.proto)

add_library(${PROJECT_NAME} SHARED ${SOURCES})
add_library(${ALIASNAME} ALIAS ${PROJECT_NAME})
Expand Down
67 changes: 67 additions & 0 deletions cmake/modules/FindOpus.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# - Find opus
# Find the native opus includes and libraries
#
# OPUS_INCLUDE_DIRS - where to find opus.h, etc.
# OPUS_LIBRARIES - List of libraries when using opus.
# OPUS_FOUND - True if Opus found.

if (OPUS_INCLUDE_DIR)
# Already in cache, be silent
set(OPUS_FIND_QUIETLY TRUE)
endif ()

# find_package (Ogg QUIET)

find_package (PkgConfig QUIET)
pkg_check_modules(PC_OPUS QUIET opus>=1.1)

set (OPUS_VERSION ${PC_OPUS_VERSION})

find_path (OPUS_INCLUDE_DIR opus/opus.h
HINTS
${PC_OPUS_INCLUDEDIR}
${PC_OPUS_INCLUDE_DIRS}
${OPUS_ROOT}
)

# MSVC built opus may be named opus_static.
# The provided project files name the library with the lib prefix.

find_library (OPUS_LIBRARY
NAMES
opus
opus_static
libopus
libopus_static
HINTS
${PC_OPUS_LIBDIR}
${PC_OPUS_LIBRARY_DIRS}
${OPUS_ROOT}
)

# Handle the QUIETLY and REQUIRED arguments and set OPUS_FOUND
# to TRUE if all listed variables are TRUE.
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args (Opus
REQUIRED_VARS
OPUS_LIBRARY
OPUS_INCLUDE_DIR
# OGG_FOUND
VERSION_VAR
OPUS_VERSION
)

if (OPUS_FOUND)
set (OPUS_LIBRARIES ${OPUS_LIBRARY})
set (OPUS_INCLUDE_DIRS ${OPUS_INCLUDE_DIR})

if (NOT TARGET Opus::opus)
add_library (Opus::opus UNKNOWN IMPORTED)
set_target_properties (Opus::opus PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OPUS_INCLUDE_DIRS}"
IMPORTED_LOCATION "${OPUS_LIBRARIES}"
)
endif ()
endif ()

mark_as_advanced(OPUS_INCLUDE_DIR OPUS_LIBRARY)
12 changes: 6 additions & 6 deletions docs/Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ PROJECT_NAME = "xStudio"
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = "1.0.0"
PROJECT_NUMBER = "1.1.0"

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand All @@ -58,7 +58,7 @@ PROJECT_LOGO =
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.

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

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

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

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

INPUT = "/Users/tedwaine/Dev2/DNEG/xstudio/include/" \
"/Users/tedwaine/Dev2/DNEG/xstudio/src/" \
"/Users/tedwaine/Dev2/DNEG/xstudio/python/src/"
INPUT = "/user_data/ted/dev/xstudio/include/" \
"/user_data/ted/dev/xstudio/src/" \
"/user_data/ted/dev/xstudio/python/src/"

# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
Expand Down
4 changes: 2 additions & 2 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@
# built documents.
#
# The short X.Y version.
version = '1.0.0'
version = '1.1.0'
# The full version, including alpha/beta/rc tags.
release = '1.0.0'
release = '1.1.0'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
10 changes: 10 additions & 0 deletions docs/reference/build_guides/windows.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ Restart your machine after Visual Studio finishes installing.

Follow [these instructions](downloading_qt.md)

### Download and install the NSIS tool

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.

### Download the VCPKG repo

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:
Expand All @@ -44,6 +48,12 @@ You must run these commands to add the OpenTimelineIO submodule to the tree and
git submodule update
git apply cmake/otio_patch.diff

### Modify the CMakePresets.json file

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:

"Qt6_DIR": ""C:/Qt6/6.5.3/msvc2019_64/lib/cmake/Qt6",

### Build xSTUDIO

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.
Expand Down
Binary file added docs/user_docs/images/export-to-movie-01.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/user_docs/images/export-to-movie-02.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/user_docs/images/export-to-movie-03.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/user_docs/images/export-to-movie-04.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/user_docs/images/export-to-movie-05.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions docs/user_docs/interface/playlists.rst
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ Playlist Flags

You can add colour flags to Playlists, Subsets, Contact Sheets etc. via the Set Colour sub-menu in the Context Menu. The flag acts as a simple indicator and is entirely for the user's own purposes for colour coding items in the session for their attention.

.. _subsets:

xSTUDIO Subsets
---------------

Expand Down
19 changes: 11 additions & 8 deletions docs/user_docs/release_notes/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,22 @@
Release Notes
=============

==============
v1.0.0 (Alpha)
==============
======
v1.1.0
======

**Overview**

xSTUDIO is a high performance playback and review tool designed by and for Visual Effects, Animation and Post Production professionals. The application can load and play large collections of media files. The efficient playback engine allows you to quickly load and play high resolution image formats with a wide range of file formats and encoding. Intuitive tools allow you to create and organise playlists and media sub-sets within playlists to build interactive review sessions, image and video reference libraries. A multi-track timeline editing interface provides the facility for loading or creating edits from simple to complex. xSTUDIO's python and C++ APIs provide

**Highlights**
**New in this version (v1.1.x)**

- Render playlists, timelines and contact sheets to output video quickly, easily and with any ffmpeg encoding parameters that you like.
- Set media FPS via the toolbar, right-click Viewport menu or hotkey shortcut.
- Numerous API extensions inspired by feedbaqck from the community.
- Viewport time slider auto zoom in Timeline 'focus' mode.

**xSTUDIO Highlights**

- Efficient and high perfomance playback engine.
- Compatible with a broad range of media file formats.
Expand All @@ -25,7 +32,3 @@ xSTUDIO is a high performance playback and review tool designed by and for Visua
- Colour-correction tools for grading or making grading notes.
- Python API for scripting, plugin extensions and remote control
- C++ API for high-performance plugin extensions and graphics overlays

**Notes**

The user documentation for this version of xSTUDIO is still WIP and not up-to-date.
Loading
Loading