From 5c688f1edfb9a39f9b89faf333e052d4a8ba01e2 Mon Sep 17 00:00:00 2001 From: "FeRD (Frank Dana)" Date: Thu, 7 May 2020 11:56:44 -0400 Subject: [PATCH 01/15] Add QT_VERSION_STR define to OpenShotVersion.h The CMake process will pick up Qt's Qt5Core_VERSION_STRING and stick it in a cache variable (with forced updating each run), and a new `#define` in the header exports it to the library and to the Python bindings so that it can be queried at runtime. --- CMakeLists.txt | 12 ++++++------ include/OpenShotVersion.h.in | 5 ++++- src/CMakeLists.txt | 4 ++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bb3fe8cc..f50c575f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,12 +91,6 @@ if(DEFINED ENABLE_TESTS) set(ENABLE_TESTS ${ENABLE_TESTS} CACHE BOOL "Build unit tests (requires UnitTest++)" FORCE) endif() -########## Configure Version.h header ############## -configure_file(include/OpenShotVersion.h.in include/OpenShotVersion.h @ONLY) -# We'll want that installed later -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/OpenShotVersion.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libopenshot) - #### Work around a GCC < 9 bug with handling of _Pragma() in macros #### See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55578 if ((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") AND @@ -142,6 +136,12 @@ endif() ############## PROCESS src/ DIRECTORIES ############## add_subdirectory(src) +########## Configure Version.h header ############## +configure_file(include/OpenShotVersion.h.in include/OpenShotVersion.h @ONLY) +# We'll want that installed later +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/OpenShotVersion.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libopenshot) + ################### DOCUMENTATION ################### # Find Doxygen (used for documentation) set(DOCS_ENABLED FALSE) # Only set true if Doxygen is found and configured diff --git a/include/OpenShotVersion.h.in b/include/OpenShotVersion.h.in index e15662b2..d8cf0735 100644 --- a/include/OpenShotVersion.h.in +++ b/include/OpenShotVersion.h.in @@ -42,6 +42,9 @@ #define OPENSHOT_VERSION_SO @PROJECT_SO_VERSION@ /// Shared object version number. This increments any time the API and ABI changes (so old apps will no longer link) +// Useful dependency versioning +#define QT_VERSION_STR "@QT_VERSION_STR@" + #include namespace openshot @@ -67,4 +70,4 @@ namespace openshot openshot::OpenShotVersion GetVersion(); } -#endif // OPENSHOT_VERSION_H \ No newline at end of file +#endif // OPENSHOT_VERSION_H diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 17b73863..24ed7764 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -289,6 +289,10 @@ foreach(_qt_comp IN LISTS _qt_components) endif() endforeach() +# Keep track of Qt version, to embed in our version header +set(QT_VERSION_STR ${Qt5Core_VERSION_STRING} CACHE STRING "Qt version linked with" FORCE) +mark_as_advanced(QT_VERSION_STR) + ################### FFMPEG ##################### # Find FFmpeg libraries (used for video encoding / decoding) find_package(FFmpeg REQUIRED COMPONENTS avcodec avdevice avformat avutil swscale) From 0e79844ed96d262c91dd6dccde2d19271fdf4d91 Mon Sep 17 00:00:00 2001 From: "FeRD (Frank Dana)" Date: Sat, 9 May 2020 18:33:03 -0400 Subject: [PATCH 02/15] Add more build-config variables - HAVE_IMAGEMAGICK and HAVE_RESVG will be #defined 0 or 1 - AV{CODEC,FORMAT,UTIL}_VERSION_STR will contain the FFmpeg component versions detected by CMake when configuring the build --- include/OpenShotVersion.h.in | 9 +++++++-- src/CMakeLists.txt | 25 ++++++++++++++++++------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/include/OpenShotVersion.h.in b/include/OpenShotVersion.h.in index d8cf0735..d0b015a4 100644 --- a/include/OpenShotVersion.h.in +++ b/include/OpenShotVersion.h.in @@ -42,8 +42,13 @@ #define OPENSHOT_VERSION_SO @PROJECT_SO_VERSION@ /// Shared object version number. This increments any time the API and ABI changes (so old apps will no longer link) -// Useful dependency versioning -#define QT_VERSION_STR "@QT_VERSION_STR@" +// Useful dependency versioning / feature availability +#cmakedefine QT_VERSION_STR "@QT_VERSION_STR@" +#cmakedefine AVCODEC_VERSION_STR "@AVCODEC_VERSION_STR@" +#cmakedefine AVFORMAT_VERSION_STR "@AVFORMAT_VERSION_STR@" +#cmakedefine AVUTIL_VERSION_STR "@AVUTIL_VERSION_STR@" +#cmakedefine01 HAVE_IMAGEMAGICK +#cmakedefine01 HAVE_RESVG #include diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 24ed7764..90c74ead 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -59,11 +59,6 @@ IF (MAGICKCORE_HDRI_ENABLE) ELSE (MAGICKCORE_HDRI_ENABLE) add_definitions( -DMAGICKCORE_HDRI_ENABLE=0 ) ENDIF (MAGICKCORE_HDRI_ENABLE) -IF (OPENSHOT_IMAGEMAGICK_COMPATIBILITY) - add_definitions( -DOPENSHOT_IMAGEMAGICK_COMPATIBILITY=${OPENSHOT_IMAGEMAGICK_COMPATIBILITY} ) -ELSE (OPENSHOT_IMAGEMAGICK_COMPATIBILITY) - add_definitions( -DOPENSHOT_IMAGEMAGICK_COMPATIBILITY=0 ) -ENDIF (OPENSHOT_IMAGEMAGICK_COMPATIBILITY) # Find the ImageMagick++ library find_package(ImageMagick COMPONENTS Magick++ MagickWand MagickCore) @@ -75,6 +70,8 @@ if (ImageMagick_FOUND) add_definitions( -DUSE_IMAGEMAGICK=1 ) set(CMAKE_SWIG_FLAGS "-DUSE_IMAGEMAGICK=1") + set(HAVE_IMAGEMAGICK TRUE CACHE BOOL "Building with ImageMagick support" FORCE) + mark_as_advanced(HAVE_IMAGEMAGICK) endif() ################# LIBOPENSHOT-AUDIO ################### @@ -297,10 +294,20 @@ mark_as_advanced(QT_VERSION_STR) # Find FFmpeg libraries (used for video encoding / decoding) find_package(FFmpeg REQUIRED COMPONENTS avcodec avdevice avformat avutil swscale) -foreach(ff_comp avcodec avdevice avformat avfilter avutil postproc swscale swresample avresample) +set(all_comps avcodec avdevice avformat avfilter avutil postproc swscale swresample avresample) +set(version_comps avcodec avformat avutil) + +foreach(ff_comp IN LISTS all_comps) if(TARGET FFmpeg::${ff_comp}) - target_link_libraries(openshot PUBLIC FFmpeg::${ff_comp}) + target_link_libraries(openshot PUBLIC FFmpeg::${ff_comp}) + # Keep track of some FFmpeg lib versions, to embed in our version header + if(${ff_comp} IN_LIST version_comps) + string(TOUPPER ${ff_comp} v_name) + set(${v_name}_VERSION_STR ${${ff_comp}_VERSION} CACHE STRING "${ff_comp} version used" FORCE) + mark_as_advanced(${v_name}_VERSION_STR) + endif() endif() + endforeach() ################### Threads #################### @@ -363,6 +370,10 @@ if (TARGET RESVG::resvg) target_compile_definitions(openshot PUBLIC "-DUSE_RESVG=1") set(CMAKE_SWIG_FLAGS "-DUSE_RESVG=1") + + set(HAVE_RESVG TRUE CACHE BOOL "Building with Resvg support" FORCE) + mark_as_advanced(HAVE_RESVG) + endif() ############### LINK LIBRARY ################# From 8af624fc4ef40e188571809b4be00c2669581049 Mon Sep 17 00:00:00 2001 From: "FeRD (Frank Dana)" Date: Thu, 11 Jun 2020 17:40:53 -0400 Subject: [PATCH 03/15] Add an APPIMAGE_BUILD option to libopenshot - Defaults OFF, must be enabled during build generation - Set (cmake -DAPPIMAGE_BUILD=1) by GitLab linux builder - Stored as a symbol in the library (via OpenShotVersion.h #defines) - Also visible in Python module (`if openshot.APPIMAGE_BUILD: pass`) Also, use CMAKE_SWIG_FLAGS properly (as a list), fix some indentation --- .gitlab-ci.yml | 2 +- CMakeLists.txt | 1 + include/OpenShotVersion.h.in | 1 + src/CMakeLists.txt | 78 ++++++++++++++++++------------------ tests/CMakeLists.txt | 1 - 5 files changed, 42 insertions(+), 41 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 925bf020..d690b8e1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -16,7 +16,7 @@ linux-builder: - unzip artifacts.zip - export LIBOPENSHOT_AUDIO_DIR=$CI_PROJECT_DIR/build/install-x64 - mkdir -p build; cd build; - - cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -D"CMAKE_INSTALL_PREFIX:PATH=$CI_PROJECT_DIR/build/install-x64" -D"PYTHON_MODULE_PATH=python" -D"RUBY_MODULE_PATH=ruby" -DCMAKE_BUILD_TYPE:STRING=Release -DUSE_SYSTEM_JSONCPP=0 ../ + - cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -D"CMAKE_INSTALL_PREFIX:PATH=$CI_PROJECT_DIR/build/install-x64" -D"PYTHON_MODULE_PATH=python" -D"RUBY_MODULE_PATH=ruby" -DCMAKE_BUILD_TYPE:STRING=Release -DAPPIMAGE_BUILD=1 -DUSE_SYSTEM_JSONCPP=0 ../ - make - make install - make doc diff --git a/CMakeLists.txt b/CMakeLists.txt index f50c575f..94b09879 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,6 +76,7 @@ option(DISABLE_BUNDLED_JSONCPP "Don't fall back to bundled JsonCpp" OFF) option(ENABLE_IWYU "Enable 'Include What You Use' scanner (CMake 3.3+)" OFF) option(ENABLE_TESTS "Build unit tests (requires UnitTest++)" ON) option(ENABLE_DOCS "Build API documentation (requires Doxygen)" ON) +option(APPIMAGE_BUILD "Build to install in an AppImage (Linux only)" OFF) # Legacy commandline override if (DISABLE_TESTS) diff --git a/include/OpenShotVersion.h.in b/include/OpenShotVersion.h.in index d0b015a4..5e86e8ce 100644 --- a/include/OpenShotVersion.h.in +++ b/include/OpenShotVersion.h.in @@ -49,6 +49,7 @@ #cmakedefine AVUTIL_VERSION_STR "@AVUTIL_VERSION_STR@" #cmakedefine01 HAVE_IMAGEMAGICK #cmakedefine01 HAVE_RESVG +#cmakedefine01 APPIMAGE_BUILD #include diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 90c74ead..61892668 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -33,8 +33,8 @@ include(GNUInstallDirs) # Set some compiler options for Windows # required for libopenshot-audio headers if (WIN32) - add_definitions( -DIGNORE_JUCE_HYPOT=1 ) - set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -include cmath") + add_definitions( -DIGNORE_JUCE_HYPOT=1 ) + set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -include cmath") endif() if (APPLE) @@ -50,28 +50,28 @@ endif() ################ IMAGE MAGICK ################## # Set the Quantum Depth that ImageMagick was built with (default to 16 bits) IF (MAGICKCORE_QUANTUM_DEPTH) - add_definitions( -DMAGICKCORE_QUANTUM_DEPTH=${MAGICKCORE_QUANTUM_DEPTH} ) + add_definitions( -DMAGICKCORE_QUANTUM_DEPTH=${MAGICKCORE_QUANTUM_DEPTH} ) ELSE (MAGICKCORE_QUANTUM_DEPTH) - add_definitions( -DMAGICKCORE_QUANTUM_DEPTH=16 ) + add_definitions( -DMAGICKCORE_QUANTUM_DEPTH=16 ) ENDIF (MAGICKCORE_QUANTUM_DEPTH) IF (MAGICKCORE_HDRI_ENABLE) - add_definitions( -DMAGICKCORE_HDRI_ENABLE=${MAGICKCORE_HDRI_ENABLE} ) + add_definitions( -DMAGICKCORE_HDRI_ENABLE=${MAGICKCORE_HDRI_ENABLE} ) ELSE (MAGICKCORE_HDRI_ENABLE) - add_definitions( -DMAGICKCORE_HDRI_ENABLE=0 ) + add_definitions( -DMAGICKCORE_HDRI_ENABLE=0 ) ENDIF (MAGICKCORE_HDRI_ENABLE) # Find the ImageMagick++ library find_package(ImageMagick COMPONENTS Magick++ MagickWand MagickCore) if (ImageMagick_FOUND) - # Include ImageMagick++ headers (needed for compile) - include_directories(${ImageMagick_INCLUDE_DIRS}) + # Include ImageMagick++ headers (needed for compile) + include_directories(${ImageMagick_INCLUDE_DIRS}) - # define a global var (used in the C++) - add_definitions( -DUSE_IMAGEMAGICK=1 ) - set(CMAKE_SWIG_FLAGS "-DUSE_IMAGEMAGICK=1") + # define a global var (used in the C++) + add_definitions( -DUSE_IMAGEMAGICK=1 ) + list(APPEND CMAKE_SWIG_FLAGS "-DUSE_IMAGEMAGICK=1") - set(HAVE_IMAGEMAGICK TRUE CACHE BOOL "Building with ImageMagick support" FORCE) - mark_as_advanced(HAVE_IMAGEMAGICK) + set(HAVE_IMAGEMAGICK TRUE CACHE BOOL "Building with ImageMagick support" FORCE) + mark_as_advanced(HAVE_IMAGEMAGICK) endif() ################# LIBOPENSHOT-AUDIO ################### @@ -85,15 +85,15 @@ include_directories(${LIBOPENSHOT_AUDIO_INCLUDE_DIRS}) # Find BlackMagic DeckLinkAPI libraries if (ENABLE_BLACKMAGIC) - find_package(BlackMagic) + find_package(BlackMagic) - if (BLACKMAGIC_FOUND) - # Include Blackmagic headers (needed for compile) - include_directories(${BLACKMAGIC_INCLUDE_DIR}) + if (BLACKMAGIC_FOUND) + # Include Blackmagic headers (needed for compile) + include_directories(${BLACKMAGIC_INCLUDE_DIR}) - # define a global var (used in the C++) - add_definitions( -DUSE_BLACKMAGIC=1 ) - set(CMAKE_SWIG_FLAGS "-DUSE_BLACKMAGIC=1") + # define a global var (used in the C++) + add_definitions( -DUSE_BLACKMAGIC=1 ) + list(APPEND CMAKE_SWIG_FLAGS "-DUSE_BLACKMAGIC=1") endif() endif() @@ -148,7 +148,7 @@ set(OPENSHOT_SOURCES Fraction.cpp Frame.cpp FrameMapper.cpp - Json.cpp + Json.cpp KeyFrame.cpp OpenShotVersion.cpp ZmqLogger.cpp @@ -216,7 +216,7 @@ set_target_properties(openshot PROPERTIES # Add optional ImageMagic-dependent sources if(ImageMagick_FOUND) - target_sources(openshot PRIVATE + target_sources(openshot PRIVATE ImageReader.cpp ImageWriter.cpp TextReader.cpp) @@ -245,7 +245,7 @@ target_include_directories(openshot ################### JSONCPP ##################### # Include jsoncpp headers (needed for JSON parsing) if (USE_SYSTEM_JSONCPP) - message(STATUS "Looking for system jsoncpp") + message(STATUS "Looking for system jsoncpp") # Either an installed config or our find module will # create the IMPORTED target jsoncpp_lib if successful find_package(jsoncpp) @@ -344,7 +344,7 @@ find_package(cppzmq QUIET) # Creates cppzmq target # Link ZeroMQ library if (TARGET libzmq) - target_link_libraries(openshot PUBLIC libzmq) + target_link_libraries(openshot PUBLIC libzmq) endif() # Include cppzmq headers, if not bundled into libzmq if (TARGET cppzmq) @@ -361,7 +361,7 @@ if(DEFINED ENV{RESVGDIR} AND NOT DEFINED RESVG_ROOT) endif() # Find resvg library (used for rendering svg files) -FIND_PACKAGE(RESVG) +find_package(RESVG) # Include resvg headers (optional SVG library) if (TARGET RESVG::resvg) @@ -369,7 +369,7 @@ if (TARGET RESVG::resvg) target_link_libraries(openshot PUBLIC RESVG::resvg) target_compile_definitions(openshot PUBLIC "-DUSE_RESVG=1") - set(CMAKE_SWIG_FLAGS "-DUSE_RESVG=1") + list(APPEND CMAKE_SWIG_FLAGS "-DUSE_RESVG=1") set(HAVE_RESVG TRUE CACHE BOOL "Building with Resvg support" FORCE) mark_as_advanced(HAVE_RESVG) @@ -379,7 +379,7 @@ endif() ############### LINK LIBRARY ################# # Link remaining dependency libraries target_link_libraries(openshot PUBLIC - ${LIBOPENSHOT_AUDIO_LIBRARIES} + ${LIBOPENSHOT_AUDIO_LIBRARIES} ${PROFILER}) if(ImageMagick_FOUND) @@ -391,8 +391,8 @@ if(BLACKMAGIC_FOUND) endif() if(WIN32) - # Required for exception handling on Windows - target_link_libraries(openshot PUBLIC "imagehlp" "dbghelp" ) + # Required for exception handling on Windows + target_link_libraries(openshot PUBLIC "imagehlp" "dbghelp" ) endif() @@ -401,9 +401,9 @@ endif() add_executable(openshot-example examples/Example.cpp) # Define path to test input files -SET(TEST_MEDIA_PATH "${PROJECT_SOURCE_DIR}/src/examples/") +set(TEST_MEDIA_PATH "${PROJECT_SOURCE_DIR}/src/examples/") if (WIN32) - STRING(REPLACE "/" "\\\\" TEST_MEDIA_PATH TEST_MEDIA_PATH) + string(REPLACE "/" "\\\\" TEST_MEDIA_PATH TEST_MEDIA_PATH) endif() target_compile_definitions(openshot-example PRIVATE -DTEST_MEDIA_PATH="${TEST_MEDIA_PATH}" ) @@ -423,12 +423,12 @@ target_link_libraries(openshot-player openshot) ############### TEST BLACKMAGIC CAPTURE APP ################ if (BLACKMAGIC_FOUND) - # Create test executable - add_executable(openshot-blackmagic - examples/ExampleBlackmagic.cpp) + # Create test executable + add_executable(openshot-blackmagic + examples/ExampleBlackmagic.cpp) - # Link test executable to the new library - target_link_libraries(openshot-blackmagic openshot) + # Link test executable to the new library + target_link_libraries(openshot-blackmagic openshot) endif() ############### INCLUDE SWIG BINDINGS ################ @@ -448,13 +448,13 @@ install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/ ############### CPACK PACKAGING ############## if(MINGW) - set(CPACK_GENERATOR "NSIS") + set(CPACK_GENERATOR "NSIS") endif() if(UNIX AND NOT APPLE) - set(CPACK_GENERATOR "DEB") + set(CPACK_GENERATOR "DEB") endif() #if(UNIX AND APPLE) -# set(CPACK_GENERATOR "DragNDrop") +# set(CPACK_GENERATOR "DragNDrop") #endif() set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Jonathan Thomas") #required diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7ccddba8..53b4cace 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -80,7 +80,6 @@ if(ImageMagick_FOUND) # define a global var (used in the C++) add_definitions( -DUSE_IMAGEMAGICK=1 ) - set(CMAKE_SWIG_FLAGS "-DUSE_IMAGEMAGICK=1") endif() ################# LIBOPENSHOT-AUDIO ################### From bec21b1c7719e50d2a0e97f4fee83997cfa8f2f5 Mon Sep 17 00:00:00 2001 From: Daniel Jour Date: Fri, 12 Jun 2020 22:30:54 +0200 Subject: [PATCH 04/15] Add a note about the buffering behavior of Timeline to DummyReader Using DummyReader with a custom cache with a Timeline can lead to strange exceptions due to Timeline's buffering. Therefore adding a note to the DummyReader documentation about that. --- include/DummyReader.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/DummyReader.h b/include/DummyReader.h index e9c90968..9a75751d 100644 --- a/include/DummyReader.h +++ b/include/DummyReader.h @@ -53,6 +53,12 @@ namespace openshot * A dummy reader can be created with any framerate or samplerate. This is useful in unit * tests that need to test different framerates or samplerates. * + * @note Timeline does buffering by requesting more frames than it + * strictly needs. Thus if you use this DummyReader with a custom + * cache in a Timeline, make sure it has enough + * frames. Specifically you need some frames after the last frame + * you plan to access through the Timeline. + * * @code * // Create cache object to store fake Frame objects * CacheMemory cache; From 3157d757477edfc14f226a1e3ce430a97176e2d6 Mon Sep 17 00:00:00 2001 From: eisneinechse <42617957+eisneinechse@users.noreply.github.com> Date: Thu, 2 Jul 2020 16:54:32 -0700 Subject: [PATCH 05/15] Leave the values for qmin and qmax at their default values except for mpeg2. Changing them for the other codecs resultet in exporting with the wrong bitrate. --- src/FFmpegWriter.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/FFmpegWriter.cpp b/src/FFmpegWriter.cpp index d960d677..d8695501 100644 --- a/src/FFmpegWriter.cpp +++ b/src/FFmpegWriter.cpp @@ -1202,8 +1202,10 @@ AVStream *FFmpegWriter::add_video_stream() { ) { c->bit_rate = info.video_bit_rate; if (info.video_bit_rate >= 1500000) { - c->qmin = 2; - c->qmax = 30; + if (c->codec_id == AV_CODEC_ID_MPEG2VIDEO) { + c->qmin = 3; + c->qmax = 30; + } } // Here should be the setting for low fixed bitrate // Defaults are used because mpeg2 otherwise had problems From accc5a8deb42bcac4ae3caced2bc98a9971f00b6 Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Sun, 5 Jul 2020 20:45:41 -0500 Subject: [PATCH 06/15] Updating to gcc 8.4 for MacOS Catalina --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 925bf020..2b8d8299 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -43,7 +43,7 @@ mac-builder: - unzip artifacts.zip - export LIBOPENSHOT_AUDIO_DIR=$CI_PROJECT_DIR/build/install-x64 - mkdir -p build; cd build; - - cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -D"CMAKE_INSTALL_PREFIX:PATH=$CI_PROJECT_DIR/build/install-x64" -DCMAKE_CXX_COMPILER=/usr/local/opt/gcc48/bin/g++-4.8 -DCMAKE_C_COMPILER=/usr/local/opt/gcc48/bin/gcc-4.8 -DCMAKE_PREFIX_PATH=/usr/local/qt5/5.5/clang_64 -DPYTHON_INCLUDE_DIR=/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -DPYTHON_LIBRARY=/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib -DPYTHON_MODULE_PATH=python -DPython_FRAMEWORKS=/Library/Frameworks/Python.framework/ -D"CMAKE_BUILD_TYPE:STRING=Release" -D"CMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk" -D"CMAKE_OSX_DEPLOYMENT_TARGET=10.9" -D"CMAKE_INSTALL_RPATH_USE_LINK_PATH=1" -D"ENABLE_RUBY=0" ../ + - cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -D"CMAKE_INSTALL_PREFIX:PATH=$CI_PROJECT_DIR/build/install-x64" -DCMAKE_CXX_COMPILER=/usr/local/opt/gcc@8/bin/g++-8 -DCMAKE_C_COMPILER=/usr/local/opt/gcc@8/bin/gcc-8 -DCMAKE_PREFIX_PATH=/usr/local/qt5/5.5/clang_64 -DPYTHON_INCLUDE_DIR=/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -DPYTHON_LIBRARY=/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib -DPYTHON_MODULE_PATH=python -DPython_FRAMEWORKS=/Library/Frameworks/Python.framework/ -D"CMAKE_BUILD_TYPE:STRING=Release" -D"CMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk" -D"CMAKE_OSX_DEPLOYMENT_TARGET=10.9" -D"CMAKE_INSTALL_RPATH_USE_LINK_PATH=1" -D"ENABLE_RUBY=0" ../ - make - make install - echo -e "CI_PROJECT_NAME:$CI_PROJECT_NAME\nCI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME\nCI_COMMIT_SHA:$CI_COMMIT_SHA\nCI_JOB_ID:$CI_JOB_ID" > "install-x64/share/$CI_PROJECT_NAME" From 7b322a0948d277749f259ef730835617918bc39c Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Sun, 5 Jul 2020 20:51:18 -0500 Subject: [PATCH 07/15] Making CMake Threads not required. --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 17b73863..f0b0524f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -303,7 +303,7 @@ endforeach() # Threading library -- uses IMPORTED target Threads::Threads (since CMake 3.1) set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE) -find_package(Threads REQUIRED) +find_package(Threads) target_link_libraries(openshot PUBLIC Threads::Threads) ################### OPENMP ##################### From bfefe501d0d5a2982172c852bdb2e97a6821b009 Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Sun, 5 Jul 2020 21:09:31 -0500 Subject: [PATCH 08/15] Experimenting with Cmake and Threads failure --- src/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f0b0524f..cd2fe142 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -303,8 +303,8 @@ endforeach() # Threading library -- uses IMPORTED target Threads::Threads (since CMake 3.1) set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE) -find_package(Threads) -target_link_libraries(openshot PUBLIC Threads::Threads) +#find_package(Threads REQUIRED) +#target_link_libraries(openshot PUBLIC Threads::Threads) ################### OPENMP ##################### # Check for OpenMP (used for multi-core processing) @@ -317,7 +317,7 @@ if(NOT TARGET OpenMP::OpenMP_CXX) add_library(OpenMP_TARGET INTERFACE) add_library(OpenMP::OpenMP_CXX ALIAS OpenMP_TARGET) target_compile_options(OpenMP_TARGET INTERFACE ${OpenMP_CXX_FLAGS}) - target_link_libraries(OpenMP_TARGET INTERFACE Threads::Threads) + #target_link_libraries(OpenMP_TARGET INTERFACE Threads::Threads) target_link_libraries(OpenMP_TARGET INTERFACE ${OpenMP_CXX_FLAGS}) endif() From d2dd3d3e3f21f248043701ed275120afbdcad338 Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Sun, 5 Jul 2020 21:46:40 -0500 Subject: [PATCH 09/15] Experimenting with new include folder, since Catalina doesn't have a /usr/include/ --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2b8d8299..1835040c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -43,7 +43,7 @@ mac-builder: - unzip artifacts.zip - export LIBOPENSHOT_AUDIO_DIR=$CI_PROJECT_DIR/build/install-x64 - mkdir -p build; cd build; - - cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -D"CMAKE_INSTALL_PREFIX:PATH=$CI_PROJECT_DIR/build/install-x64" -DCMAKE_CXX_COMPILER=/usr/local/opt/gcc@8/bin/g++-8 -DCMAKE_C_COMPILER=/usr/local/opt/gcc@8/bin/gcc-8 -DCMAKE_PREFIX_PATH=/usr/local/qt5/5.5/clang_64 -DPYTHON_INCLUDE_DIR=/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -DPYTHON_LIBRARY=/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib -DPYTHON_MODULE_PATH=python -DPython_FRAMEWORKS=/Library/Frameworks/Python.framework/ -D"CMAKE_BUILD_TYPE:STRING=Release" -D"CMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk" -D"CMAKE_OSX_DEPLOYMENT_TARGET=10.9" -D"CMAKE_INSTALL_RPATH_USE_LINK_PATH=1" -D"ENABLE_RUBY=0" ../ + - cmake -DCMAKE_CXX_FLAGS=-I\ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -D"CMAKE_INSTALL_PREFIX:PATH=$CI_PROJECT_DIR/build/install-x64" -DCMAKE_CXX_COMPILER=/usr/local/opt/gcc@8/bin/g++-8 -DCMAKE_C_COMPILER=/usr/local/opt/gcc@8/bin/gcc-8 -DCMAKE_PREFIX_PATH=/usr/local/qt5/5.5/clang_64 -DPYTHON_INCLUDE_DIR=/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -DPYTHON_LIBRARY=/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib -DPYTHON_MODULE_PATH=python -DPython_FRAMEWORKS=/Library/Frameworks/Python.framework/ -D"CMAKE_BUILD_TYPE:STRING=Release" -D"CMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk" -D"CMAKE_OSX_DEPLOYMENT_TARGET=10.9" -D"CMAKE_INSTALL_RPATH_USE_LINK_PATH=1" -D"ENABLE_RUBY=0" ../ - make - make install - echo -e "CI_PROJECT_NAME:$CI_PROJECT_NAME\nCI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME\nCI_COMMIT_SHA:$CI_COMMIT_SHA\nCI_JOB_ID:$CI_JOB_ID" > "install-x64/share/$CI_PROJECT_NAME" From b7dd86e63a579c21c2325ceb79fd797312699236 Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Mon, 6 Jul 2020 02:10:35 -0500 Subject: [PATCH 10/15] Experimental ABI fix to deal with '__cxx11' --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cd2fe142..ba485e74 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -41,8 +41,8 @@ if (APPLE) # If you still get errors compiling with GCC 4.8, mac headers need to be patched: http://hamelot.co.uk/programming/osx-gcc-dispatch_block_t-has-not-been-declared-invalid-typedef/ set_property(GLOBAL PROPERTY JUCE_MAC "JUCE_MAC") add_definitions(-DNDEBUG) + add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0) set(EXTENSION "mm") - set(JUCE_PLATFORM_SPECIFIC_DIR build/macosx/platform_specific_code) set(JUCE_PLATFORM_SPECIFIC_LIBRARIES "-framework Carbon -framework Cocoa -framework CoreFoundation -framework CoreAudio -framework CoreMidi -framework IOKit -framework AGL -framework AudioToolbox -framework QuartzCore -lobjc -framework Accelerate") endif() From 6e6b60fa22f774a0717423893b798ba1cf6be8c3 Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Mon, 6 Jul 2020 02:33:26 -0500 Subject: [PATCH 11/15] Experimental ABI fix to deal with '__cxx11' (take 2) --- src/CMakeLists.txt | 3 +++ tests/CMakeLists.txt | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ba485e74..50143a6f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -45,6 +45,9 @@ if (APPLE) set(EXTENSION "mm") set(JUCE_PLATFORM_SPECIFIC_DIR build/macosx/platform_specific_code) set(JUCE_PLATFORM_SPECIFIC_LIBRARIES "-framework Carbon -framework Cocoa -framework CoreFoundation -framework CoreAudio -framework CoreMidi -framework IOKit -framework AGL -framework AudioToolbox -framework QuartzCore -lobjc -framework Accelerate") + + # Prevent compiling with __cxx11 + add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0) endif() ################ IMAGE MAGICK ################## diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7ccddba8..f75d8ab1 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -36,6 +36,11 @@ if(WIN32) set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -include cmath") endif() +if (APPLE) + # Prevent compiling with __cxx11 + add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0) +endif() + ################### UNITTEST++ ##################### # Find UnitTest++ libraries (used for unit testing) find_package(UnitTest++) From aac43ec038b93496a4fc4ab4457259b6422cb62a Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Tue, 7 Jul 2020 02:34:11 -0500 Subject: [PATCH 12/15] Removing commented out code --- src/CMakeLists.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 50143a6f..6b9dd8ee 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -41,7 +41,6 @@ if (APPLE) # If you still get errors compiling with GCC 4.8, mac headers need to be patched: http://hamelot.co.uk/programming/osx-gcc-dispatch_block_t-has-not-been-declared-invalid-typedef/ set_property(GLOBAL PROPERTY JUCE_MAC "JUCE_MAC") add_definitions(-DNDEBUG) - add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0) set(EXTENSION "mm") set(JUCE_PLATFORM_SPECIFIC_DIR build/macosx/platform_specific_code) set(JUCE_PLATFORM_SPECIFIC_LIBRARIES "-framework Carbon -framework Cocoa -framework CoreFoundation -framework CoreAudio -framework CoreMidi -framework IOKit -framework AGL -framework AudioToolbox -framework QuartzCore -lobjc -framework Accelerate") @@ -306,8 +305,6 @@ endforeach() # Threading library -- uses IMPORTED target Threads::Threads (since CMake 3.1) set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE) -#find_package(Threads REQUIRED) -#target_link_libraries(openshot PUBLIC Threads::Threads) ################### OPENMP ##################### # Check for OpenMP (used for multi-core processing) @@ -320,7 +317,6 @@ if(NOT TARGET OpenMP::OpenMP_CXX) add_library(OpenMP_TARGET INTERFACE) add_library(OpenMP::OpenMP_CXX ALIAS OpenMP_TARGET) target_compile_options(OpenMP_TARGET INTERFACE ${OpenMP_CXX_FLAGS}) - #target_link_libraries(OpenMP_TARGET INTERFACE Threads::Threads) target_link_libraries(OpenMP_TARGET INTERFACE ${OpenMP_CXX_FLAGS}) endif() From 9ef8f8478eca5b128c7bf7e6946c134e1ed82762 Mon Sep 17 00:00:00 2001 From: eisneinechse <42617957+eisneinechse@users.noreply.github.com> Date: Tue, 7 Jul 2020 10:14:02 -0700 Subject: [PATCH 13/15] Formating --- src/FFmpegWriter.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/FFmpegWriter.cpp b/src/FFmpegWriter.cpp index d8695501..e737462f 100644 --- a/src/FFmpegWriter.cpp +++ b/src/FFmpegWriter.cpp @@ -1202,10 +1202,10 @@ AVStream *FFmpegWriter::add_video_stream() { ) { c->bit_rate = info.video_bit_rate; if (info.video_bit_rate >= 1500000) { - if (c->codec_id == AV_CODEC_ID_MPEG2VIDEO) { - c->qmin = 3; - c->qmax = 30; - } + if (c->codec_id == AV_CODEC_ID_MPEG2VIDEO) { + c->qmin = 3; + c->qmax = 30; + } } // Here should be the setting for low fixed bitrate // Defaults are used because mpeg2 otherwise had problems From 6114be5e0ff9fbdd5ab439dbe98840a97afb8d7d Mon Sep 17 00:00:00 2001 From: eisneinechse <42617957+eisneinechse@users.noreply.github.com> Date: Tue, 7 Jul 2020 10:20:48 -0700 Subject: [PATCH 14/15] Fixed typo --- src/FFmpegWriter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FFmpegWriter.cpp b/src/FFmpegWriter.cpp index e737462f..158ef662 100644 --- a/src/FFmpegWriter.cpp +++ b/src/FFmpegWriter.cpp @@ -1203,7 +1203,7 @@ AVStream *FFmpegWriter::add_video_stream() { c->bit_rate = info.video_bit_rate; if (info.video_bit_rate >= 1500000) { if (c->codec_id == AV_CODEC_ID_MPEG2VIDEO) { - c->qmin = 3; + c->qmin = 2; c->qmax = 30; } } From 85b6a967254af5493f1130631da5aa99559675e3 Mon Sep 17 00:00:00 2001 From: "FeRD (Frank Dana)" Date: Wed, 8 Jul 2020 17:56:08 -0400 Subject: [PATCH 15/15] Enable IN_LIST in older CMake --- src/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 61892668..ffaa7e8b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -29,6 +29,11 @@ include(FeatureSummary) include(GNUInstallDirs) +# Enable IN_LIST in older CMake +if (POLICY CMP0057) + cmake_policy(SET CMP0057 NEW) +endif() + ################ WINDOWS ################## # Set some compiler options for Windows # required for libopenshot-audio headers