Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/mltframework/mlt into pla…
Browse files Browse the repository at this point in the history
…ycast-latest

Conflicts:
	.gitignore
  • Loading branch information
gabrieljablonski committed Dec 15, 2020
2 parents 954a2ee + 880adf1 commit 38d23d8
Show file tree
Hide file tree
Showing 43 changed files with 351 additions and 177 deletions.
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,10 @@ src/examples/play
src/swig/python/mlt.i
src/swig/python/mlt.py
src/swig/.python
.project
*.qmake.stash
src/tests/Makefile
src/tests/*/*
!src/tests/*/*.cpp
!src/tests/*/*.pro
build
16 changes: 9 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.14)
project(MLT)
set(MLT_VERSION 6.23.0)
cmake_minimum_required(VERSION 3.10)
set(MLT_VERSION 6.25.0)
find_package(PkgConfig REQUIRED)
include(GNUInstallDirs)
option(GPL "Enable GPLv2 modules" ON)
Expand All @@ -23,18 +23,19 @@ elseif(MSVC)
add_compile_options(/fp:fast)
endif()
find_package(Threads REQUIRED)
find_package(FFTW QUIET)
if(NOT FFTW_FOUND)
pkg_check_modules(FFTW fftw3)
if (WIN32 AND NOT CMAKE_DL_LIBS)
find_package(dlfcn-win32 REQUIRED)
set(CMAKE_DL_LIBS dlfcn-win32::dl)
endif()
pkg_check_modules(FFTW IMPORTED_TARGET fftw3)
if(NOT FFTW_FOUND)
pkg_check_modules(FFTW fftw)
pkg_check_modules(FFTW IMPORTED_TARGET fftw)
endif()
pkg_check_modules(xml IMPORTED_TARGET libxml-2.0)
add_subdirectory(src/framework)
add_subdirectory(src/melt)
add_subdirectory(src/mlt++)
#add_subdirectory(src/swig)
add_subdirectory(src/swig)
#file(GLOB modules src/modules/*/)
set(modules
src/modules/avformat
Expand All @@ -56,6 +57,7 @@ set(modules
src/modules/resample
src/modules/rubberband
src/modules/rtaudio
src/modules/sdl
src/modules/sdl2
src/modules/sox
src/modules/vid.stab
Expand Down
2 changes: 1 addition & 1 deletion Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ PROJECT_NAME = MLT
# This could be handy for archiving the generated documentation or
# if some version control system is used.

PROJECT_NUMBER = 6.22.0
PROJECT_NUMBER = 6.24.0

# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
Expand Down
41 changes: 41 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
@@ -1,6 +1,47 @@
MLT Release Notes
-----------------

Version 6.24.0

This version is mostly fixes plus a few new filters.

Framework
* Trigger a `property-changed` event on `mlt_properties_pass_list`.
* Fixed using a video transition with a video clip on an audio track.
* Reduce the amount of service caching to 2X #tracks to reduce memory usage.

Modules
* Added the `pillar_echo` filter to the plus module.
* Added a `qtcrop` filter to the qt module.
* Added `html`, `resource`, `overflow-y`, and `_hide` properties to the `qtext` filter for rich text.
* Added the filter `choppy` to the core module.
* Added slice threading to the `brightness` filter.
* Fixed compiling with OpenCV 4.
* Fixed the colors when using `mlt_image_format=rgb24a` with `avformat` consumer.
* Fixed using WebVfx in a Docker container.
* Fixed a possible crash in the `timewarp` producer on sources with non-integer frame rates.
* Fixed a regression in version 6.22 with multiple affine filters at the same time.
* Fixed possible abort or deadlock on recursive pthread mutexes in `avformat` producer.
* Fixed a crash in `crop` filter with large `center_bias` value when `use_profile` is 1.
* Fixed a white video frame appearing on threaded rendering in `freeze` filter.
* Fixed MLT XML DRD to permit empty playlists, which may occur on empty tracks in a multitrack.
* Fixed initializing QApplication in the `qimage` producer.
* Fixed interpolation when scaling with the `affine` rect and geomety properties.
* Fixed high memory usage with high factors of pitch shifting in the `rbpitch` filter.
* Fixed a crash on files with more than 32 streams in the `avformat` producer.

Other
* Fixed CMake build on MSYS2 and Windows Craft.
* Added the Python binding to the CMake build.
* Added the `sdl` (v1) module to the CMake build.
* Removed minrate and maxrate from the `webm` avformat consumer preset.


Version 6.22.1 - July 30, 2020

This patch version only fixes the version reported in the CMake build.


Version 6.22.0 - July 30, 2020

This version fixes bugs associated with the preview scaling introduced in the
Expand Down
2 changes: 1 addition & 1 deletion configure
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/sh

export version=6.23.0
export version=6.25.0
export soversion=6

show_help()
Expand Down
4 changes: 2 additions & 2 deletions docs/framework.txt
Original file line number Diff line number Diff line change
Expand Up @@ -610,8 +610,8 @@ Multiple Tracks and Transitions:
multitrack and elect the correct frame to pass on.

Hence, MLT provides a wrapper for the multitrack, which is called a
'tractor', and its the tractors task to ensure that all tracks are pulled
evenly, the correct frame is output and that we have 'producer like'
'tractor', and it's the tractor's task to ensure that all tracks are pulled
evenly, that the correct frame is output, and that we have 'producer like'
behaviour.

Thus, a multitrack is conceptually 'pulled' by a tractor as shown here:
Expand Down
2 changes: 1 addition & 1 deletion docs/melt.1
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.38.4.
.TH MELT "1" "July 2020" "melt 6.22.0" "User Commands"
.TH MELT "1" "December 2020" "melt 6.24.0" "User Commands"
.SH NAME
melt \- author, play, and encode multitrack audio/video compositions
.SH SYNOPSIS
Expand Down
2 changes: 0 additions & 2 deletions presets/consumer/avformat/webm
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ qmax=51
qmin=11
slices=4
vb=2M
maxrate=24M
minrate=100k
arnr_max_frames=7
arnr_strength=5
arnr_type=3
Expand Down
15 changes: 3 additions & 12 deletions src/framework/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,12 @@ add_library(mlt SHARED ${mlt_src})
set_target_properties (mlt PROPERTIES SOVERSION ${MLT_VERSION} VERSION 6)
if(WIN32)
find_package(Iconv REQUIRED)
if (MSYS)
target_link_libraries(mlt dl Iconv::Iconv)
else()
find_package(dlfcn-win32 REQUIRED)
target_link_libraries(mlt dlfcn-win32::dl Iconv::Iconv)
endif()
target_link_libraries(mlt Iconv::Iconv)
if(NODEPLOY)
target_compile_definitions(mlt PRIVATE NODEPLOY)
endif()
else()
target_link_libraries(mlt dl)
endif()
target_link_libraries(mlt ${CMAKE_DL_LIBS})
if(NOT (WIN32 OR APPLE))
target_compile_definitions(mlt PRIVATE
PREFIX_DATA="${CMAKE_INSTALL_FULL_DATADIR}/mlt"
Expand All @@ -30,10 +24,7 @@ target_include_directories(mlt PUBLIC ${CMAKE_SOURCE_DIR}/src)

if(WIN32)
install(TARGETS mlt LIBRARY DESTINATION ${CMAKE_INSTALL_BINDIR})
# dll.a should be placed in lib directory for proper linking
if (MSYS)
install(TARGETS mlt ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
install(TARGETS mlt ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
else()
install(TARGETS mlt DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
Expand Down
4 changes: 2 additions & 2 deletions src/framework/mlt_multitrack.c
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,8 @@ static void resize_service_caches( mlt_multitrack self )
for ( i = 0; i < mlt_properties_count(caches); ++i )
{
mlt_cache cache = mlt_properties_get_data_at( caches, i, NULL );
if ( self->count * 3 > mlt_cache_get_size(cache) )
mlt_cache_set_size( cache, self->count * 3 );
if ( self->count * 2 > mlt_cache_get_size(cache) )
mlt_cache_set_size( cache, self->count * 2 );
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/framework/mlt_property.c
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ int mlt_property_is_clear( mlt_property self )
if ( self )
{
pthread_mutex_lock( &self->mutex );
result = self->types == 0;
result = self->types == 0 && self->animation == NULL;
pthread_mutex_unlock( &self->mutex );
}
return result;
Expand Down
2 changes: 1 addition & 1 deletion src/framework/mlt_version.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
#define MLT_STRINGIZE(s) MLT_STRINGIZE2(s)

#define LIBMLT_VERSION_MAJOR 6
#define LIBMLT_VERSION_MINOR 23
#define LIBMLT_VERSION_MINOR 25
#define LIBMLT_VERSION_REVISION 0
#define LIBMLT_VERSION_INT ((LIBMLT_VERSION_MAJOR<<16)+(LIBMLT_VERSION_MINOR<<8)+LIBMLT_VERSION_REVISION)
#define LIBMLT_VERSION MLT_STRINGIZE(LIBMLT_VERSION_MAJOR.LIBMLT_VERSION_MINOR.LIBMLT_VERSION_REVISION)
Expand Down
18 changes: 3 additions & 15 deletions src/melt/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,19 +1,7 @@
set(melt_lib mlt Threads::Threads)
find_package(SDL2 QUIET)
# in MSYS SDL2_INCLUDE_DIRS is not set, so we use pkg-config
if(SDL2_FOUND AND NOT MSYS)
add_library(sdl2 SHARED IMPORTED GLOBAL)
set_target_properties(sdl2 PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${SDL2_INCLUDE_DIRS}
IMPORTED_LOCATION ${libdir}/libSDL2.so
)
else()
pkg_check_modules(sdl2 IMPORTED_TARGET GLOBAL sdl2)
if(TARGET PkgConfig::sdl2)
add_library(sdl2 ALIAS PkgConfig::sdl2)
endif()
endif()
if(TARGET sdl2)
pkg_check_modules(sdl2 IMPORTED_TARGET GLOBAL sdl2)
if(TARGET PkgConfig::sdl2)
add_library(sdl2 ALIAS PkgConfig::sdl2)
if(MINGW)
list(APPEND melt_lib mingw32)
endif()
Expand Down
5 changes: 1 addition & 4 deletions src/mlt++/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@ target_include_directories(mlt++ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../)
target_link_libraries(mlt++ mlt)
if(WIN32)
install(TARGETS mlt++ LIBRARY DESTINATION ${CMAKE_INSTALL_BINDIR})
# dll.a should be placed in lib directory for proper linking
if (MSYS)
install(TARGETS mlt++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
install(TARGETS mlt++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
else()
install(TARGETS mlt++ DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
Expand Down
9 changes: 7 additions & 2 deletions src/modules/avformat/producer_avformat.c
Original file line number Diff line number Diff line change
Expand Up @@ -444,10 +444,14 @@ static mlt_properties find_default_streams( producer_avformat self )
case AVCOL_SPC_BT709:
mlt_properties_set_int( meta_media, key, 709 );
break;
default:
case AVCOL_SPC_UNSPECIFIED:
case AVCOL_SPC_RESERVED:
// This is a heuristic Charles Poynton suggests in "Digital Video and HDTV"
mlt_properties_set_int( meta_media, key, codec_params->width * codec_params->height > 750000 ? 709 : 601 );
break;
default:
mlt_properties_set_int( meta_media, key, codec_context->colorspace );
break;
}
if ( codec_params->color_trc && codec_params->color_trc != AVCOL_TRC_UNSPECIFIED )
{
Expand Down Expand Up @@ -3008,7 +3012,8 @@ static void producer_set_up_audio( producer_avformat self, mlt_frame frame )
{
pthread_mutex_lock( &self->open_mutex );
unsigned i = 0;
for (i = 0; i < context->nb_streams; i++) {
int index_max = FFMIN( MAX_AUDIO_STREAMS, context->nb_streams );
for (i = 0; i < index_max; i++) {
if (self->audio_codec[i]) {
avcodec_close(self->audio_codec[i]);
self->audio_codec[i] = NULL;
Expand Down
Loading

0 comments on commit 38d23d8

Please sign in to comment.