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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/build-distros.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
sed -i 's/^Types: deb/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources
DEBIAN_FRONTEND=noninteractive apt-get -qq update
DEBIAN_FRONTEND=noninteractive apt-get -yqq build-dep mlt
DEBIAN_FRONTEND=noninteractive apt-get -yqq install autoconf automake git libtool pkg-config wget cmake libplacebo-dev qt6-base-dev libqt6svg6-dev
DEBIAN_FRONTEND=noninteractive apt-get -yqq install autoconf automake git libtool pkg-config wget cmake libplacebo-dev qt6-base-dev libqt6svg6-dev liblilv-dev
git clone --depth 1 --branch v0.2 https://github.com/xiph/rnnoise.git /tmp/rnnoise
cd /tmp/rnnoise
./autogen.sh
Expand All @@ -50,7 +50,7 @@ jobs:
sed -i 's/^Types: deb/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources
DEBIAN_FRONTEND=noninteractive apt-get -qq update
DEBIAN_FRONTEND=noninteractive apt-get -yqq build-dep mlt
DEBIAN_FRONTEND=noninteractive apt-get -yqq install autoconf automake git libtool pkg-config wget cmake qt6-base-dev libplacebo-dev libqt6svg6-dev
DEBIAN_FRONTEND=noninteractive apt-get -yqq install autoconf automake git libtool pkg-config wget cmake qt6-base-dev libplacebo-dev libqt6svg6-dev liblilv-dev
git clone --depth 1 --branch v0.2 https://github.com/xiph/rnnoise.git /tmp/rnnoise
cd /tmp/rnnoise
./autogen.sh
Expand All @@ -63,7 +63,7 @@ jobs:
sed -i '/^#\sdeb-src /s/^#//' "/etc/apt/sources.list"
DEBIAN_FRONTEND=noninteractive apt-get -qq update
DEBIAN_FRONTEND=noninteractive apt-get -yqq build-dep mlt
DEBIAN_FRONTEND=noninteractive apt-get -yqq install autoconf automake git libtool pkg-config wget cmake libplacebo-dev qt6-base-dev libqt6svg6-dev libqt6core5compat6-dev
DEBIAN_FRONTEND=noninteractive apt-get -yqq install autoconf automake git libtool pkg-config wget cmake libplacebo-dev qt6-base-dev libqt6svg6-dev libqt6core5compat6-dev liblilv-dev
git clone --depth 1 --branch v0.2 https://github.com/xiph/rnnoise.git /tmp/rnnoise
cd /tmp/rnnoise
./autogen.sh
Expand All @@ -76,7 +76,7 @@ jobs:
echo 'deb-src http://deb.debian.org/debian testing main' >> /etc/apt/sources.list
apt-get -qq update
apt-get -yqq build-dep mlt
apt-get -yqq install autoconf automake git libtool pkg-config wget cmake libplacebo-dev qt6-base-dev libqt6svg6-dev
apt-get -yqq install autoconf automake git libtool pkg-config wget cmake libplacebo-dev qt6-base-dev libqt6svg6-dev liblilv-dev
git clone --depth 1 --branch v0.2 https://github.com/xiph/rnnoise.git /tmp/rnnoise
cd /tmp/rnnoise
./autogen.sh
Expand All @@ -90,7 +90,7 @@ jobs:
echo 'deb http://deb.debian.org/debian bookworm-backports main' >> /etc/apt/sources.list
apt-get -qq update
apt-get -yqq build-dep mlt
apt-get -yqq install autoconf automake git libtool pkg-config wget cmake libplacebo-dev qt6-base-dev libqt6svg6-dev
apt-get -yqq install autoconf automake git libtool pkg-config wget cmake libplacebo-dev qt6-base-dev libqt6svg6-dev liblilv-dev
git clone --depth 1 --branch v0.2 https://github.com/xiph/rnnoise.git /tmp/rnnoise
cd /tmp/rnnoise
./autogen.sh
Expand All @@ -105,7 +105,7 @@ jobs:
yasm gavl-devel libsamplerate-devel libxml2-devel \
ladspa-devel jack-audio-connection-kit-devel sox-devel \
SDL2-devel fftw-devel frei0r-devel gtk2-devel libexif-devel \
qt6-qtbase-devel qt6-qtsvg-devel \
qt6-qtbase-devel qt6-qtsvg-devel lilv-devel \
libtheora-devel libvorbis-devel libvdpau-devel \
libsoup-devel liboil-devel python-devel alsa-lib \
pulseaudio-libs-devel gcc-c++ cmake ffmpeg-free-devel \
Expand All @@ -118,7 +118,7 @@ jobs:
yasm gavl-devel libsamplerate-devel libxml2-devel \
ladspa-devel jack-audio-connection-kit-devel sox-devel \
SDL2-devel fftw-devel frei0r-devel gtk2-devel libexif-devel \
qt6-qtbase-devel qt6-qtsvg-devel \
qt6-qtbase-devel qt6-qtsvg-devel lilv-devel \
libtheora-devel libvorbis-devel libvdpau-devel \
libsoup-devel liboil-devel python-devel alsa-lib \
pulseaudio-libs-devel gcc-c++ cmake ffmpeg-free-devel \
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
sudo sed -i '/^#\sdeb-src /s/^#//' "/etc/apt/sources.list"
sudo apt-get -qq update
sudo apt-get -yqq build-dep mlt
sudo apt-get -yqq install autoconf automake git libtool pkg-config wget libplacebo-dev qt6-base-dev libqt6svg6-dev libqt6core5compat6-dev
sudo apt-get -yqq install autoconf automake git libtool pkg-config wget libplacebo-dev qt6-base-dev libqt6svg6-dev libqt6core5compat6-dev liblilv-dev
git clone --depth 1 --branch v0.2 https://github.com/xiph/rnnoise.git /tmp/rnnoise
pushd /tmp/rnnoise
./autogen.sh
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/build-msys2-mingw64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ jobs:
mingw-w64-x86_64-libvpx
mingw-w64-x86_64-libwebp
mingw-w64-x86_64-libxml2
mingw-w64-x86_64-lilv
mingw-w64-x86_64-onevpl
mingw-w64-x86_64-openblas
mingw-w64-x86_64-openssl
Expand Down
39 changes: 21 additions & 18 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@ option(MOD_FREI0R "Enable Frei0r module" ON)
option(MOD_GDK "Enable GDK module" ON)
option(MOD_GLAXNIMATE_QT6 "Enable Glaxnimate module (Qt6)" OFF)
option(MOD_JACKRACK "Enable JACK Rack module" ON)
option(USE_LV2 "Enable LV2 features" ON)
option(USE_VST2 "Enable LV2 features" ON)
option(USE_LADSPA "Enable LADSPA features (GPL)" ON)
option(USE_LV2 "Enable LV2 features (GPL)" ON)
option(USE_VST2 "Enable VST2 features (GPL)" ON)
option(MOD_KDENLIVE "Enable Kdenlive module" ON)
option(MOD_MOVIT "Enable OpenGL module" ON)
option(MOD_NDI "Enable NDI module" OFF)
Expand Down Expand Up @@ -78,6 +79,7 @@ endif()

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

include(CheckIncludeFile)
include(FeatureSummary)
include(GNUInstallDirs)

Expand Down Expand Up @@ -123,7 +125,6 @@ endif()
set(MLT_SUBDIR mlt)
if(NOT (WIN32 OR APPLE))
set(MLT_SUBDIR mlt-${MLT_VERSION_MAJOR})
set(MLT_SUBDIR mlt-${MLT_VERSION_MAJOR})
endif()
set(MLT_INSTALL_MODULE_DIR ${CMAKE_INSTALL_LIBDIR}/${MLT_SUBDIR})
set(MLT_INSTALL_DATA_DIR ${CMAKE_INSTALL_DATADIR}/${MLT_SUBDIR})
Expand Down Expand Up @@ -267,23 +268,24 @@ endif()

if(MOD_JACKRACK)
find_package(JACK)
pkg_check_modules(glib IMPORTED_TARGET glib-2.0)
pkg_check_modules(xml IMPORTED_TARGET libxml-2.0)
check_include_file(ladspa.h ladspa_h_FOUND)
if(NOT ladspa_h_FOUND)
set(USE_LV2 OFF)
set(USE_VST2 OFF)
if(USE_LADSPA)
if(GPL)
pkg_check_modules(glib REQUIRED IMPORTED_TARGET glib-2.0)
pkg_check_modules(xml REQUIRED IMPORTED_TARGET libxml-2.0)
if(USE_LV2)
pkg_check_modules(lilv REQUIRED IMPORTED_TARGET lilv-0)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changed a previous behavior. Before, if LV2 is not found, it is automatically disabled. Now the build fails. Here is a suggestion to restore the previous behavior:

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -273,7 +273,11 @@ if(MOD_JACKRACK)
       pkg_check_modules(glib REQUIRED IMPORTED_TARGET glib-2.0)
       pkg_check_modules(xml REQUIRED IMPORTED_TARGET libxml-2.0)
       if(USE_LV2)
-        pkg_check_modules(lilv REQUIRED IMPORTED_TARGET lilv-0)
+        pkg_check_modules(lilv IMPORTED_TARGET lilv-0)
+        if(NOT lilv_FOUND)
+          message(WARNING "USE_LV2=ON but lilv-0 was not found via pkg-config. Disabling LV2 support. Install lilv development files or set PKG_CONFIG_PATH to include lilv-0.pc.")
+          set(USE_LV2 OFF)
+        endif()
       endif()
       check_include_file(ladspa.h ladspa_h_FOUND)
       if(NOT ladspa_h_FOUND)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know; it is intentional. Build dependencies are hard and intentional now.

endif()
check_include_file(ladspa.h ladspa_h_FOUND)
if(NOT ladspa_h_FOUND)
message(FATAL_ERROR "ladspa.h not found. Install LADSPA or set USE_LADSPA=OFF.")
endif()
else()
message(FATAL_ERROR "LADSPA support requires GPL. Set GPL=ON or USE_LADSPA=OFF.")
endif()
endif()
list(APPEND MLT_SUPPORTED_COMPONENTS jackrack)
endif()

if(USE_LV2)
pkg_check_modules(lilv IMPORTED_TARGET lilv-0)
if(NOT lilv_FOUND)
set(USE_LV2 OFF)
endif()
endif()

if(MOD_KDENLIVE)
list(APPEND MLT_SUPPORTED_COMPONENTS kdenlive)
endif()
Expand Down Expand Up @@ -633,7 +635,8 @@ add_feature_info("SWIG: PHP" SWIG_PHP "")
add_feature_info("SWIG: Python" SWIG_PYTHON "")
add_feature_info("SWIG: Ruby" SWIG_RUBY "")
add_feature_info("SWIG: Tcl" SWIG_TCL "")
add_feature_info("lv2: LV2 Plugins support" USE_LV2 "")
add_feature_info("vst2: VST2 Plugins support" USE_VST2 "")
add_feature_info("jackrack: LADSPA plugins support" USE_LADSPA "")
add_feature_info("jackrack: LV2 plugins support" USE_LV2 "")
add_feature_info("jackrack: VST2 plugins support" USE_VST2 "")

feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
60 changes: 29 additions & 31 deletions src/framework/mlt_repository.c
Original file line number Diff line number Diff line change
Expand Up @@ -230,52 +230,50 @@ void mlt_repository_register(mlt_repository self,
const char *service,
mlt_register_callback symbol)
{
mlt_properties service_list = NULL;
const char *service_type_name = "unknown";

// Add the entry point to the corresponding service list
switch (service_type) {
case mlt_service_consumer_type:
mlt_properties_set_data(self->consumers,
service,
new_service(symbol),
0,
(mlt_destructor) mlt_properties_close,
NULL);
service_list = self->consumers;
service_type_name = "consumer";
break;
case mlt_service_filter_type:
mlt_properties_set_data(self->filters,
service,
new_service(symbol),
0,
(mlt_destructor) mlt_properties_close,
NULL);
service_list = self->filters;
service_type_name = "filter";
break;
case mlt_service_link_type:
mlt_properties_set_data(self->links,
service,
new_service(symbol),
0,
(mlt_destructor) mlt_properties_close,
NULL);
service_list = self->links;
service_type_name = "link";
break;
case mlt_service_producer_type:
mlt_properties_set_data(self->producers,
service,
new_service(symbol),
0,
(mlt_destructor) mlt_properties_close,
NULL);
service_list = self->producers;
service_type_name = "producer";
break;
case mlt_service_transition_type:
mlt_properties_set_data(self->transitions,
service,
new_service(symbol),
0,
(mlt_destructor) mlt_properties_close,
NULL);
service_list = self->transitions;
service_type_name = "transition";
break;
default:
mlt_log_error(NULL, "%s: Unable to register \"%s\"\n", __FUNCTION__, service);
break;
return;
}

if (mlt_properties_get_data(service_list, service, NULL)) {
mlt_log_error(NULL,
"%s: Duplicate %s registration for \"%s\"\n",
__FUNCTION__,
service_type_name,
service);
}

mlt_properties_set_data(service_list,
service,
new_service(symbol),
0,
(mlt_destructor) mlt_properties_close,
NULL);
}

/** Get the repository properties for particular service class.
Expand Down
Loading
Loading