This makes use of the libebur128 port I posted a few hours ago
I've had most of this in my dir for a while, I actually got stumped on
something stupid in shotcut.
I've built and used shotcut with this without issue. I've also built
kdenlive, but I'm not too familiar with it.
Highlights:
- uses external libebur
- fix loads of warnings with clang (these patches haven been sent as
Issue to upstream)
Please test/okay
Index: Makefile
===================================================================
RCS file: /cvs/ports/multimedia/mlt/Makefile,v
retrieving revision 1.27
diff -u -p -r1.27 Makefile
--- Makefile 24 Aug 2020 14:09:54 -0000 1.27
+++ Makefile 7 Mar 2021 13:47:08 -0000
@@ -2,14 +2,14 @@
COMMENT-main = multimedia transformations framework
COMMENT-gpl2 = GPLv2-licensed modules for mlt
-VERSION = 6.22.1
+VERSION = 6.24.0
DISTNAME = mlt-${VERSION}
PKGNAME-main = ${DISTNAME}
PKGNAME-gpl2 = mlt-gpl2-${VERSION}
# XXX versions should be kept in sync together
-SHARED_LIBS = mlt 3.2
-SHARED_LIBS += mlt++ 3.2
+SHARED_LIBS = mlt 4.0
+SHARED_LIBS += mlt++ 4.0
CATEGORIES = multimedia devel
HOMEPAGE = https://www.mltframework.org/
@@ -21,12 +21,13 @@ DEBUG_PACKAGES = ${BUILD_PACKAGES}
PERMIT_PACKAGE = Yes
WANTLIB-main += ${COMPILER_LIBCXX} SDL SDL2 SDL_image X11 avcodec avdevice
-WANTLIB-main += avfilter avformat avutil c exif fftw3 fontconfig gdk-x11-2.0
+WANTLIB-main += avfilter avformat avutil c exif fftw3 fontconfig
WANTLIB-main += gdk_pixbuf-2.0 glib-2.0 gobject-2.0 jack m pango-1.0
WANTLIB-main += pangoft2-1.0 sox swresample swscale vorbisfile xml2
+WANTLIB-main += ebur128
WANTLIB += ${COMPILER_LIBCXX} Qt5Core Qt5Gui Qt5Svg Qt5Widgets
-WANTLIB += Qt5Xml SDL2 exif m mlt samplerate
+WANTLIB += Qt5Xml SDL2 m mlt samplerate
MASTER_SITES =
https://github.com/mltframework/mlt/releases/download/v${VERSION}/
@@ -43,13 +44,14 @@ RUN_DEPENDS-main = audio/ladspa \
x11/gtk+3,-guic
LIB_DEPENDS-main = audio/jack \
+ audio/libebur128 \
audio/sox \
devel/sdl-image \
devel/sdl2 \
graphics/ffmpeg \
graphics/libexif \
math/fftw3 \
- x11/gtk+2,-main
+ devel/pango
LIB_DEPENDS-gpl2 = ${BUILD_PKGPATH},-main \
${MODQT5_LIB_DEPENDS} \
Index: distinfo
===================================================================
RCS file: /cvs/ports/multimedia/mlt/distinfo,v
retrieving revision 1.9
diff -u -p -r1.9 distinfo
--- distinfo 24 Aug 2020 14:09:54 -0000 1.9
+++ distinfo 7 Mar 2021 13:47:08 -0000
@@ -1,2 +1,2 @@
-SHA256 (mlt-6.22.1.tar.gz) = o9698LiBHw0gyQLMPfPQXa19P/NtHbFsCnM40NWYmZg=
-SIZE (mlt-6.22.1.tar.gz) = 1343746
+SHA256 (mlt-6.24.0.tar.gz) = O5d8VjIyn8p2NNADQWLfbVt5zeMla6xD57qDU6zO1h4=
+SIZE (mlt-6.24.0.tar.gz) = 1351427
Index: patches/patch-src_framework_Makefile
===================================================================
RCS file: /cvs/ports/multimedia/mlt/patches/patch-src_framework_Makefile,v
retrieving revision 1.5
diff -u -p -r1.5 patch-src_framework_Makefile
--- patches/patch-src_framework_Makefile 24 Aug 2020 14:09:54 -0000
1.5
+++ patches/patch-src_framework_Makefile 7 Mar 2021 13:47:08 -0000
@@ -20,7 +20,17 @@ Index: src/framework/Makefile
else
NAME = libmlt$(LIBSUF)
TARGET = $(NAME).$(version)
-@@ -100,10 +102,12 @@ all: $(TARGET)
+@@ -92,18 +94,20 @@ OBJS += ../win32/win32.o ../win32/strptime.o
+ SRCS += ../win32/win32.c ../win32/strptime.c
+ endif
+
+-CFLAGS += $(RDYNAMIC) -DPREFIX_DATA="\"$(mltdatadir)\""
-DPREFIX_LIB="\"$(moduledir)\""
++CFLAGS += -DPREFIX_DATA="\"$(mltdatadir)\"" -DPREFIX_LIB="\"$(moduledir)\""
+
+-LDFLAGS += $(LIBDL) -lpthread -lm
++LDFLAGS += $(RDYNAMIC) $(LIBDL) -lpthread -lm
+
+ all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(SHFLAGS) -o $@ $(OBJS) $(LDFLAGS)
Index: patches/patch-src_framework_mlt_property_c
===================================================================
RCS file: /cvs/ports/multimedia/mlt/patches/patch-src_framework_mlt_property_c,v
retrieving revision 1.4
diff -u -p -r1.4 patch-src_framework_mlt_property_c
--- patches/patch-src_framework_mlt_property_c 24 Aug 2020 14:09:54 -0000
1.4
+++ patches/patch-src_framework_mlt_property_c 7 Mar 2021 13:47:08 -0000
@@ -7,22 +7,7 @@ locale functions from dumping core!
Index: src/framework/mlt_property.c
--- src/framework/mlt_property.c.orig
+++ src/framework/mlt_property.c
-@@ -90,8 +90,12 @@ struct mlt_property_s
- mlt_property mlt_property_init( )
- {
- mlt_property self = calloc( 1, sizeof( *self ) );
-- if ( self )
-- pthread_mutex_init( &self->mutex, NULL );
-+ if ( self ) {
-+ pthread_mutexattr_t attr;
-+ pthread_mutexattr_init(&attr);
-+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
-+ pthread_mutex_init( &self->mutex, &attr );
-+ }
- return self;
- }
-
-@@ -311,7 +315,7 @@ static int time_clock_to_frames( mlt_property self, co
+@@ -315,7 +315,7 @@ static int time_clock_to_frames( mlt_property self, co
s = copy;
pos = strrchr( s, ':' );
@@ -31,7 +16,7 @@ Index: src/framework/mlt_property.c
char *orig_localename = NULL;
if ( locale )
{
-@@ -353,7 +357,7 @@ static int time_clock_to_frames( mlt_property self, co
+@@ -357,7 +357,7 @@ static int time_clock_to_frames( mlt_property self, co
seconds = strtod( s, NULL );
}
@@ -40,7 +25,7 @@ Index: src/framework/mlt_property.c
if ( locale ) {
// Restore the current locale
setlocale( LC_NUMERIC, orig_localename );
-@@ -529,7 +533,7 @@ static double mlt_property_atof( mlt_property self, do
+@@ -533,7 +533,7 @@ static double mlt_property_atof( mlt_property self, do
if ( locale )
result = strtod_l( value, &end, locale );
else
@@ -49,7 +34,7 @@ Index: src/framework/mlt_property.c
char *orig_localename = NULL;
if ( locale ) {
// Protect damaging the global locale from a temporary
locale on another thread.
-@@ -547,7 +551,7 @@ static double mlt_property_atof( mlt_property self, do
+@@ -551,7 +551,7 @@ static double mlt_property_atof( mlt_property self, do
if ( end && end[0] == '%' )
result /= 100.0;
@@ -58,7 +43,7 @@ Index: src/framework/mlt_property.c
if ( locale ) {
// Restore the current locale
setlocale( LC_NUMERIC, orig_localename );
-@@ -775,7 +779,7 @@ char *mlt_property_get_string_l_tf( mlt_property self,
+@@ -779,7 +779,7 @@ char *mlt_property_get_string_l_tf( mlt_property self,
}
else if ( ! ( self->types & mlt_prop_string ) )
{
@@ -67,7 +52,7 @@ Index: src/framework/mlt_property.c
// TODO: when glibc gets sprintf_l, start using it! For now,
hack on setlocale.
// Save the current locale
#if defined(__APPLE__)
-@@ -821,7 +825,7 @@ char *mlt_property_get_string_l_tf( mlt_property self,
+@@ -825,7 +825,7 @@ char *mlt_property_get_string_l_tf( mlt_property self,
self->types |= mlt_prop_string;
self->prop_string = self->serialiser( self->data,
self->length );
}
@@ -76,7 +61,7 @@ Index: src/framework/mlt_property.c
// Restore the current locale
setlocale( LC_NUMERIC, orig_localename );
free( orig_localename );
-@@ -1033,7 +1037,7 @@ static void time_clock_from_frames( int frames, double
+@@ -1037,7 +1037,7 @@ static void time_clock_from_frames( int frames, double
char *mlt_property_get_time( mlt_property self, mlt_time_format format,
double fps, locale_t locale )
{
@@ -85,7 +70,7 @@ Index: src/framework/mlt_property.c
char *orig_localename = NULL;
#endif
int frames = 0;
-@@ -1046,7 +1050,7 @@ char *mlt_property_get_time( mlt_property self, mlt_ti
+@@ -1050,7 +1050,7 @@ char *mlt_property_get_time( mlt_property self, mlt_ti
if ( format == mlt_time_frames )
return mlt_property_get_string_l( self, locale );
@@ -94,7 +79,7 @@ Index: src/framework/mlt_property.c
// Use the specified locale
if ( locale )
{
-@@ -1105,7 +1109,7 @@ char *mlt_property_get_time( mlt_property self, mlt_ti
+@@ -1109,7 +1109,7 @@ char *mlt_property_get_time( mlt_property self, mlt_ti
else // Use smpte drop frame by default
time_smpte_from_frames( frames, fps, self->prop_string, 1 );
@@ -103,7 +88,7 @@ Index: src/framework/mlt_property.c
// Restore the current locale
if ( locale )
{
-@@ -1149,7 +1153,7 @@ static int is_property_numeric( mlt_property self, loc
+@@ -1153,7 +1153,7 @@ static int is_property_numeric( mlt_property self, loc
if ( locale )
strtod_l( self->prop_string, &p, locale );
else
@@ -112,7 +97,7 @@ Index: src/framework/mlt_property.c
char *orig_localename = NULL;
if ( locale ) {
// Protect damaging the global locale from a temporary
locale on another thread.
-@@ -1165,7 +1169,7 @@ static int is_property_numeric( mlt_property self, loc
+@@ -1169,7 +1169,7 @@ static int is_property_numeric( mlt_property self, loc
strtod( self->prop_string, &p );
@@ -121,7 +106,7 @@ Index: src/framework/mlt_property.c
if ( locale ) {
// Restore the current locale
setlocale( LC_NUMERIC, orig_localename );
-@@ -1650,7 +1654,7 @@ mlt_rect mlt_property_get_rect( mlt_property self, loc
+@@ -1654,7 +1654,7 @@ mlt_rect mlt_property_get_rect( mlt_property self, loc
char *p = NULL;
int count = 0;
@@ -130,7 +115,7 @@ Index: src/framework/mlt_property.c
char *orig_localename = NULL;
if ( locale ) {
// Protect damaging the global locale from a temporary
locale on another thread.
-@@ -1702,7 +1706,7 @@ mlt_rect mlt_property_get_rect( mlt_property self, loc
+@@ -1706,7 +1706,7 @@ mlt_rect mlt_property_get_rect( mlt_property self, loc
count ++;
}
Index: patches/patch-src_melt_Makefile
===================================================================
RCS file: patches/patch-src_melt_Makefile
diff -N patches/patch-src_melt_Makefile
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_melt_Makefile 7 Mar 2021 13:47:08 -0000
@@ -0,0 +1,17 @@
+$OpenBSD$
+
+Index: src/melt/Makefile
+--- src/melt/Makefile.orig
++++ src/melt/Makefile
+@@ -3,9 +3,9 @@ include ../../config.mak
+ OBJS = melt.o \
+ io.o
+
+-CFLAGS += -I.. $(RDYNAMIC) -DVERSION=\"$(version)\"
++CFLAGS += -I.. -DVERSION=\"$(version)\"
+
+-LDFLAGS += -L../framework -lmlt -lpthread
++LDFLAGS += $(RDYNAMIC) -L../framework -lmlt -lpthread
+
+ SRCS := $(OBJS:.o=.c)
+
Index: patches/patch-src_mlt++_Makefile
===================================================================
RCS file: /cvs/ports/multimedia/mlt/patches/patch-src_mlt++_Makefile,v
retrieving revision 1.5
diff -u -p -r1.5 patch-src_mlt++_Makefile
--- patches/patch-src_mlt++_Makefile 24 Aug 2020 14:09:54 -0000 1.5
+++ patches/patch-src_mlt++_Makefile 7 Mar 2021 13:47:08 -0000
@@ -13,6 +13,18 @@ Index: src/mlt++/Makefile
else
TARGET = $(NAME).$(version)
SONAME = $(NAME).$(soversion)
+@@ -19,9 +23,9 @@ endif
+ ifneq (, $(shell $(CXX) --version | grep -is -e g++ -e clang))
+ CXXFLAGS += -std=c++11
+ endif
+-CXXFLAGS += -I.. $(RDYNAMIC) -DVERSION=\"$(version)\" -fvisibility=hidden
++CXXFLAGS += -I.. -DVERSION=\"$(version)\" -fvisibility=hidden
+
+-LDFLAGS := -L../framework -lmlt $(LDFLAGS)
++LDFLAGS := $(RDYNAMIC) -L../framework -lmlt $(LDFLAGS)
+ ifeq ($(targetos), Linux)
+ LDFLAGS += -Wl,--version-script=mlt++.vers
+ endif
@@ -58,10 +62,12 @@ all: $(TARGET)
$(TARGET): $(OBJS)
Index: patches/patch-src_modules_qt_Makefile
===================================================================
RCS file: /cvs/ports/multimedia/mlt/patches/patch-src_modules_qt_Makefile,v
retrieving revision 1.4
diff -u -p -r1.4 patch-src_modules_qt_Makefile
--- patches/patch-src_modules_qt_Makefile 26 Apr 2019 13:39:16 -0000
1.4
+++ patches/patch-src_modules_qt_Makefile 7 Mar 2021 13:47:08 -0000
@@ -3,7 +3,7 @@ XXX Dirty hack
Index: src/modules/qt/Makefile
--- src/modules/qt/Makefile.orig
+++ src/modules/qt/Makefile
-@@ -34,6 +34,10 @@ ifdef USE_FFTW
+@@ -35,6 +35,10 @@ ifdef USE_FFTW
CFLAGS += -DUSE_FFTW
endif
Index: pkg/PLIST-main
===================================================================
RCS file: /cvs/ports/multimedia/mlt/pkg/PLIST-main,v
retrieving revision 1.11
diff -u -p -r1.11 PLIST-main
--- pkg/PLIST-main 24 Aug 2020 14:09:54 -0000 1.11
+++ pkg/PLIST-main 7 Mar 2021 13:47:08 -0000
@@ -93,6 +93,7 @@ share/mlt/core/filter_audiomap.yml
share/mlt/core/filter_audiowave.yml
share/mlt/core/filter_brightness.yml
share/mlt/core/filter_channelcopy.yml
+share/mlt/core/filter_choppy.yml
share/mlt/core/filter_crop.yml
share/mlt/core/filter_data_show.yml
share/mlt/core/filter_fieldorder.yml
@@ -194,6 +195,7 @@ share/mlt/plus/filter_lift_gamma_gain.ym
share/mlt/plus/filter_loudness.yml
share/mlt/plus/filter_loudness_meter.yml
share/mlt/plus/filter_lumakey.yml
+share/mlt/plus/filter_pillar_echo.yml
share/mlt/plus/filter_rgblut.yml
share/mlt/plus/filter_sepia.yml
share/mlt/plus/filter_spot_remover.yml
@@ -416,6 +418,7 @@ share/mlt/profiles/vcd_pal
share/mlt/profiles/vertical_hd_30
share/mlt/profiles/vertical_hd_60
share/mlt/qt/
+share/mlt/qt/filter_qtcrop.yml
share/mlt/qt/filter_qtext.yml
share/mlt/sdl/
share/mlt/sdl/consumer_sdl.yml